mikrokontroler z zaimplementowanym dekoderem kwadraturowym ?

Oct 19, 2008 15 Replies

Witam chcia³bym pobawiæ siê i zrobiæ amatorski serwodriver znacie jakis uC ze sprzêtowym dekoderem kwadraturowym? problem jest taki : chcia³bym zrobiæ uk³ad w którym do procka np :(jaki¶ atmega ) pod³±cze enkoder który generuje sygna³y A i B przesuniete w fazie z maks czêstotliwo¶cia ~60 kHz czyli (50 obr /sek maksymalna prêdko¶c wa³u silnika * 1024 imp/obr -rozdzielczo¶æ enkodera ) i chcia³bym zliczaæ wszystkie 4 zbocza zmierzam siê z 2 ma problemami narazie nie wiem jak zrobic detekcje 4 zboczy za pomoca uC i mam watpliwo¶ci czy taki ATmega siê wyrobi ew proszê o sugestie i pomys³y



pozdrawiam



Chyba trzeba narzeźbić w jakimś HDL albo przeprosić się ze starymi TTL.

Robie coś podobnego. Na razie na ATmega8/2313 daje radę osiągnąc nieco ponad około 40kHz próbkowania przy zegarze 12MHz ale nie starałem się specjalnie więcej bo u mnie fmax to około 10kHz. Możliwe że osiągniesz te 60kHz wkładając coś dającego rade pomykać na 20MHz. Licznik jest wielostopniowy tak żeby zredukować czas krytycznych obliczeń do minimum. W efekcie dostaje dowolnie dużą pojemność (akurat ja mam 4 bajty).

Robie to poolingiem (żadnych przerwań poza timerem). Sprawdza się od paru lat w maszynkach pracujacych 24/dobe. Na razie brak poszlak o gubieniu impulsów.

Zaraz zaraz, te impulsy to ilośc dziurek czy ilośc zmian zboczy ? Żeby Ci nie wyszło 200kHz :) Swoją drogą po co taka dokładność przy takich obrotach?

dekodujesz wszystkie 4 zbocza czy tylko 1 ?

szperaj±c wynalaz³em co¶ takiego

formatting link
zaimplementowany dekoder

znalaz³em te¿ sprzetowy dekoder hctl-2000 pewnie nie do dostania

w ostateczno¶ci mog³o by byæ cos na ttl ale pod warunkiem ze zmie¶ci siê w 1 czy 2 scalaczkach

Oczywiście 4. Inaczej nie miało by to sensu. Licznik musi liczyć w obydwie strony.

74192 chyba się nada.

I przy okazji jest grubą przesadą, to duży ARM.

nie wiem co docelowo chcesz robiæ, mo¿e spojrzysz na LM628/629 ... du¿a rzecz, ale mo¿e czê¶æ napêdow± (je¶li jakas jest) da siê na niego przerzucic ..

@

Podepnij te linie pod piny INT procesora i ustaw je na przerwania wyzwalane zboczem. W procedurach obslugi prosta maszyna stanu i powinienes wyciagnac duzo wiecej niz 60kHz.

dsPICe serii Motor Control (Microchip) to mają. Moduł nazywa się QEI.

ae

Użytkownik T.M.F. napisał:

Potwierdzam. A pisząc procedurę w assemblerze na zmiennych w rejestrach da się wyciągnąć sporo więcej (przy zegarze 16MHz).

Pozdrawiam Grzegorz

U¿ytkownik "Grzegorz Kurczyk" snipped-for-privacy@control.slupsk.pl> napisa³ w wiadomo¶ci news:gdg4e7$ipc$ snipped-for-privacy@nemesis.news.neostrada.pl...

a¿ takim asem nie jestem ¿eby w asm co¶ zadzia³aæ wiêc które z rozwi±zañ polecacie? wszystko spróbowaæ wpakowaæ w kontroler czy dorzucaæ zewnêtrzne dekodery (ale znaj±æ zycie albo wogóle nie bêda dostêpne albo drogie )

ale chyba w ten sposób nie zdekoduje wszystkich 4 zboczy ??? a na tym mi zalezy zeby nie zminiejszac rozdzielczosci i tak juz malego enkodera

Każdy swoje poleci :). Jeśli chcesz pooling - zgłoś się na priv. Przy okazji: i tak Cie pewnie czeka 2x Schmitt na wejściach więc scalak tak czy siak powinien być.

Dasz radę zapewne tylko w software.

Szumek pisze:

ADUC7128 Analoga?

Dlaczego nie, oba zbocza moga wyzwalac przerwanie. Nawet assembler nie jest potrzebny, spokojnie w C to napiszesz. Dla 60kHz masz przy zegarze

16MHz az 266 taktow pomiedzy impulsami, to przeciez cala wiecznosc.

Mała uwaga. Czasami, w wyniku zapewne drgań, odstępy mogą być znacznie bardziej gęste niż 1/60kHz. Trzeba uważać a może nawet pomierzyć na wszelki wypadek w działającym układzie.

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required