Pytanie:
3 Hz z kryształu zegarka
Padu Merloti
2014-08-09 09:24:08 UTC
view on stackexchange narkive permalink

Mam silnik krokowy o kącie kroku 2 stopnie. Chcę wyświetlić sekundy za pomocą igły przymocowanej do tego steppera.

Kryształ zegarka ładnie dzieli się, wytwarzając impulsy 1 Hz, więc co sekundę mogę nakazać krokowi obrócić 3 impulsy CW (360 stopni / 60 sekund = 6 stopni na sekundę. Ponieważ krokowy porusza się o 2 stopnie na krok, potrzebuję 3 takich impulsów).

Teraz przypuśćmy, że chcę użyć każdego kroku do wyświetlania sekund w bardziej płynny sposób. Musiałbym uruchamiać silnik co 1/3 sekundy lub z częstotliwością 3 Hz.

Próbuję dowiedzieć się, jaki jest najlepszy sposób, aby to zrobić.

Jedna oczywista Sztuczka polega na użyciu wyższej częstotliwości (używam 64 Hz) i tolerowaniu jittera. Czy jest jakiś inny sposób, który da mi dokładne 3 Hz z 32,768 kHz? (nawet wiedząc, że jedna nie jest podzielna przez drugą?)

BTW Używam MSP430, ale ten problem może zostać przeniesiony na dowolną inną platformę.

PLL i dzielnik częstotliwości.
A co by było, gdybyśmy użyli trzech kryształów 1 Hz, każdy przesunięty o 1/3 fazy?
Siedem odpowiedzi:
placeholder
2014-08-09 10:20:32 UTC
view on stackexchange narkive permalink

Możesz zrobić przełożenie 3: 1 i zrobić dzielnik na 32768.

32768 = 10 923 + 10 923 + 10 922, co wskazuje maszynę stanową, która najpierw liczy do 10 923 powtórzeń, a następnie zmniejsza liczbę, byłby dokładny co 3 sekundy. Najgorszy błąd bezwzględny, jaki można zobaczyć, to 31 PPM, czyli to, co może zrobić kryształ (w zależności od kryształu).

Andy aka
2014-08-09 12:46:48 UTC
view on stackexchange narkive permalink

Weź falę prostokątną 32 768 Hz i przepuść ją przez filtr pasmowo-przepustowy 98 kHz, aby pozostawić (głównie) trzecią harmoniczną - to dość trywialne. Teraz masz 3 razy 32768 Hz, które możesz podzielić z poprzednim obwodem, aby uzyskać 3 Hz.

Chris Stratton
2014-08-10 01:04:45 UTC
view on stackexchange narkive permalink

Prawdą jest, że 32768 Hz nie dzieli się przez 3 Hz, ale nie różni się zbytnio.

Potrzebujesz rozwiązania, które wydaje się wizualnie gładkie i jest dokładne średnio w czasie .

Po prostu stwórz logikę, która:

Zlicza 10923 zegarów wejściowych i wykonuje krok
Zlicza 10923 zegary wejściowe i wykonuje krok Zlicza zegary wejściowe 10922 , wykonuje krok

i powtarza.

Potrzebowałbyś oprzyrządowania lub czułego eksperymentu, aby określić, że co trzeci impuls jest. 009% krótszy / a.

user51012
2014-08-09 17:06:43 UTC
view on stackexchange narkive permalink

Cyfrowe rozwiązanie polega na wzięciu czegoś w rodzaju 8-bitowego akumulatora i dodaniu do niego 3 co 128 impulsów. Zawsze, gdy niesie, włącz silnik. Wynikający z tego jitter nie będzie zauważalny i zniknie po dłuższym czasie. Dłuższy akumulator (a co za tym idzie krótszy dzielnik wstępny) zmniejszy jitter, krótszy go zwiększy. Prawdopodobnie możesz przejść do czterobitowego akumulatora (i predyspozycji do 2048 r.) Bez większej zauważalnej różnicy: wtedy interpolowałby się, biorąc 5 zegarów do wykonania w 2 z 3 przypadków i 6 zegarów do wykonania w 1 z 3 przypadki.

Bruce Abbott
2014-08-09 11:20:45 UTC
view on stackexchange narkive permalink

Poczekaj na 1 sekundę impulsu i wykonaj pierwszy krok, a następnie opóźnij 333 ms przed wykonaniem każdego z pozostałych dwóch kroków. możesz nie uzyskać dokładnie równych kroków, ale powinno być na tyle blisko, aby nie zauważyć różnicy (a średnia częstotliwość będzie wynosić dokładnie 3 Hz).

Spehro Pefhany
2014-08-09 22:19:01 UTC
view on stackexchange narkive permalink

Stepper porusza się dyskretnymi krokami za każdym razem, gdy zmieniasz stan na cewkach, więc pewna „skokowość” jest nieunikniona, jeśli sterujesz krokiem w ten sposób.

Jeśli wykonasz mikro-krok silnik, możesz uzyskać dużą liczbę kroków na obrót, zasadniczo całkowicie unikaj skoków (będzie pewna nieliniowość ruchu, ale powinna być niezauważalne, chyba że twoja igła jest bardzo, bardzo długa) i uzyskaj płynny ruch igły (święty Graal wśród niektórych miłośników zegarków). Pozwoliłoby to również uniknąć jakichkolwiek wibracji z powodu niedostatecznego tłumienia.

Jeśli chcesz pozostać przy krokach 2 °, możesz dodać 0x0C do 8-bitowego rejestru przy 64 Hz i za każdym razem zwiększać prędkość silnika masz nosić.

Oto jak wygląda jitter - mniej niż +/- 8 milisekund, które nie będą widoczne:

Czas = 0,328125 delta = 0,328125 Czas = 0,656250 delta = 0,328125 Czas = 0,984375 delta = 0,328125 Czas = 1,328125 delta = 0,343750 Czas = 1,656250 delta = 0,328125 Czas = 1,984375 delta = 0,328125 Czas = 2,328125 delta = 0,343750 Czas = 2,656250 delta = 0,328125 Czas = delta = 0,328125 Czas = 0,328125 Czas = 3,656250 delta = 0,328125 Czas = 3,984375 delta = 0,328125 Czas = 4,328125 delta = 0,343750 Czas = 4,656250 delta = 0,328125 Czas = 4,984375 delta = 0,328125 Czas = 5,328125 delta = 0,343750 Czas = 5,656250 delta = 0,328125 = 0,328125 6,328125 delta = 0,343750 Czas = 6,656250 delta = 0,328125 Czas = 6,984375 delta = 0,328125 Czas = 7,328125 delta = 0,343750 Czas = 7,656250 delta = 0,328125 Czas = 7,984375 delta = 0,328125 Czas = 8,328125 delta = 0,343750 Czas = 8,656250 delta = 0,328125 Czas = 8,984375 delta = 0,328125 Czas = 9,328125 delta = 0,343750 Czas = 9,656250 delta = 0,328125 Czas = 9,984375 delta = 0,328125 Czas = 10,328125 delta = 0,343750 Czas = 10,656250 delta = 0,328125 Czas = 10,984375 delta = 0,328125 Czas = 11,328125 delta = 0,343750 Czas = 11,65125 czas = 0,328125 = 0,328125 12,328125 delta = 0,343750 Czas = 12,656250 delta = 0,328125 Czas = 12,984375 delta = 0,328125 Czas = 13,328125 delta = 0,343750 Czas = 13,656250 delta = 0,328125 Czas = 13,984375 delta = 0,328125 Czas = 14,3284125 delta = 0,343750 Czas = 13,656250 delta = 0,328125 Czas = 13,984375 delta = 0,328125 Czas = 14,3284125 delta = 0,34125 delta = 14,3284125 delta = 0,32812550 = 0,328125Czas = 15,328125 delta = 0,343750Czas = 15,656250 delta = 0,328125Czas = 15,984375 delta = 0,328125

Tej samej metody można użyć do sterowania silnikiem krokowym, tylko z drobniejszymi krokami, takimi jak jako 2 ° / 16.

EM Fields
2014-08-10 12:37:18 UTC
view on stackexchange narkive permalink

Dla tych z Was, którzy lubią sprzęt, poniżej znajduje się schemat rozwiązania licznika podwójnego modułu zastępczego, ale bez możliwego błędu 31PPM.

Jeśli chcesz bawić się obwodem, lista obwodów LTspice a pliki pomocnicze znajdują się tutaj.

Poniższy schemat przedstawia ustawienia wstępne zegara 32768 Hz, podczas gdy w wersji LTspice liczba - i taktowanie - zostały drastycznie skrócone, aby zachować sim działa wiecznie, ale nadal pokazuje działanie licznika podwójnego modułu.

enter image description here



To pytanie i odpowiedź zostało automatycznie przetłumaczone z języka angielskiego.Oryginalna treść jest dostępna na stackexchange, za co dziękujemy za licencję cc by-sa 3.0, w ramach której jest rozpowszechniana.
Loading...