[51] procedurki i problem z goniacym ogonem z AD i potencjometrem

  1. Jest jakaś zmyślniejsza procedura na '51 niż przyrównywanie wyniku po kolei dla 0, 1, 2 i 3 jak również dodawanie do wyniku #0fch 3 i oglądanie CY? Jeśli różnica między x i y =< 4 to skok (chodzi mi o procedurę z przesuwaniem bitów i logiką).

  1. Przy okazji są gdzieś spisane w jednym miejscu procedury ''proste jak drut ale sam bym na to nie wpadł''?

  2. 0804 czyta potencjometr (tylko 7 bitów), od czasu do czasu (w zależności od ustawienia suwaka) wartość goni 2-3 jednostek. Poradziłem sobie analizując, czy sąsiednie wartości nie są większe od tych 2-3 (jeśli większe - potencjometr przestawiono) ale jakoś to nie elegancko. Jakieś inne sugestie?
Reply to
Janko Muzykant
Loading thread data ...

Już się robi ;)

Jeśli x-y =< 4 to skok gdzies tam

1 metoda (chyba raczej bez sensu):

clr cy mov a, x subb a, y cjne a, #03, dalej1 ajmp roznica_mniejsza_od_czterech dalej1: cjne a, #02, dalej2 ajmp roznica_mniejsza_od_czterech dalej2: cjne a, #01, dalej3 ajmp roznica_mniejsza_od_czterech dalej3: cjne a, #00h, roznica_wieksza_lub_rowna_cztery ajmp roznica_mniejsza_od_czterech

2 metoda:

clr cy mov a, x subb a, y add a, #0fch jc roznica_wieksza_lub_rowna_cztery roznica_mniejsza_od_czterech:

A da się inaczej?

Reply to
Janko Muzykant

No ja też mam sporą przerwę dlatego pytam. Szukam takich różnych tipsów typu ''przesuwamy bity i or-ujemy'', bo często można zaoszczędzić na czasie i kodzie...

Reply to
Janko Muzykant

No i tak zrobiłem i działa w porządku ale mam niedosyt. Straszne śmieci widać oscyloskopem. Może to problem ''pająka'' - trzeba będzie masy poprowadzić jak należy...

Reply to
Janko Muzykant

A masz może pod ręką jakieś efektywne algorytmy? Jeśli chodzi o szybkość

- potrzeba mi kilka tysięcy pomiarów/s więc raczej dość sporo, czasu na uśrednianie niewiele... Stabilną sytuację mam dopiero przy sześciobitowej rozdzielczości (tj. jeśli sąsiednie wartości >4 to stwierdzam, że potencjometrem ruszono. Przy 3 czasem sieje sam z siebie, przy 2 niestety bardzo często). Nie wiem czy to wina ADC i czy tak ma być ale coś za mała ta dokładność...

A może są inne przetworniki, preferowane do odczytu wartości z potencjometrów?

Reply to
Janko Muzykant

Jesli masz takie szumy, to sprobuj dac RC na wejscie. Znaczy daj

470R rezystor i C=220n ale _jak_najblizej_ nogi przetwornika. R ma byc szeregowo, potem C do masy... ale masa tez musi byc dobrze poprowadzona na plytce. Cos takiego: +---+ we---| R |--+---do nogi ADC +---+ | = C | GND
Reply to
jerry1111

On Behalf Of jerry1111

Dla kilku kHz nie przejdzie :-( Będzie zaniżało wynik o superzmienną Kowalskiego ;-) Są tylko dwa wyjścia z tej sytuacji:

  1. Lepszy przetwornik.
  2. Lepsze ekranowanie przetwornika i kabli.

No jest jeszcze trzecie wyjście FFT i DSP ;-)

pzdr Artur

Reply to
ziel

Ja zrozumialem, ze to wejscie ma czytac potencjometr. Dasz rade tak szybko krecic? :-)

Reply to
jerry1111

On Behalf Of jerry1111

A może buduje super szybkie CNC? ;-) Odczytałem ilość pomiarów jako częstotliwość mierzoną. Ale jeszcze jestem w zaświatach, więc proszę o wyaczenie ;-) A swoją drogą po co mierzyć potencjometr z taką częstotliwością? Ktoś da radę tak szybko kręcić? ;-)

pzdr Artur

PS No chyba, że to typowy user/lamer - Oni potrafią ;-)

Reply to
ziel

Już wyjasniam z tym kręceniem - mam być do 64 potencjometrów, przełącznych czterema 4067, częstotliwość pomiarów ograniczana przepustowością wysyłania danych o owych pomiarach przez łącze szeregowe (31250bps) czyli nie większa jak 3 tyś pom/s; w praktyce 1 tysiąc. Dane wysyłane tylko po stwierdzeniu zmiany wartości (dlatego tak szybko, że zależy mi na dokładnej dynamice ruchu potencjometrem, nie tylko sama wartość docelowa jest ważna jak również sposób zmiany połoznenia potencjometru)

Teraz w czym problem - rozdzielczość potrzebna mi 7 bitów więc teoretycznie 0804 będzie ok (1LBS dokładności). Ale figa, bo czasem wartości gonią w kółko wg: n, n+1, n+2, n+1 Dopiero (jeśli różnica pomiarów =>3 to wysyłaj pomiar) wszystko pracuje stabilnie.

RC na wejściu nie dadzą się zastosować, bo częstotliwość przełącznia będzie spora. (tzn. mogą być na tyle małe, że nie wpływa to na stabilność). Główny problem to nieemitowanie samoistnie sąsiednich wartości przy 7 bitach rozdzielczości.

Chyba zastosuję przetwornik 10 bitów z olaniem zupełnym 2 ostatnich bitów i w/w filtrem cyfrowym dla 8 bitów ( jeśli różnica pomiarów =>2 to wysyłaj pomiar) Czy macie jakieś propozycje co do konkretnego A/D 10 bitów, taniego, dostępnego i do w/w warunków? (na jedno napięcie 5V i ttl)

Reply to
Janko Muzykant

On Behalf Of Janko Muzykant

Symulator dinonozaura? ;-) Mam nadzieję, że zeszłeś poniżej 40kpln.

No to dwa obroty w prawo i porównanie.

Jeśli to dino, to zapomnij o potencjometrach. Weź generatory LC i mierz ich częstotliwość. Ale uwaga, potrzeba 64 przetworników f/bin, z tym że odpada problem z zakłóceniami.

pzdr Artur PS W wersji uproszczonej to dyskryminator i normalne przetworniki A/D, mogą być kluczowane.

Reply to
ziel

Eeee... to ma być sterownik midi. Ileż może kosztować 64 potencjometrów i sześć scalaków po kilka zł? :)

Kiedy jak się gra, to się kręci do nutek a nie dwa razy w prawo :)

Reply to
Janko Muzykant

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.