Wpis z mikrobloga

Mircy sprawa jest następująca:

Posiadam enkoder inkrementalny HC-020K - 3 piny: VCC, GND i OUT. Na wyjściu mam generowany sygnał prostokątny.

Chcę go teraz obsłużyć przez mikrokontroler STM32F4. Wymyśliłem sobie, że będę badał wystąpienie zbocza narastającego w czasie za pomocą Timera1 i na tej podstawie odczytam prędkość obrotu tarczy. Wartości wyświetlam na LCD-ku.

Niestety odczyt nie działa jak należy. Wartości się zmieniają, jednak nie ma tam żadnej reguły, wartość odczytu skacze o dziesiątki, a nawet setki jednostek. Proca taktuję na 168MHz. Częstotliwość pomiarów powinna wynosić ok. 100 kHz.

Pytanie podstawowe - czy timer jest dobrze skonfigurowany na odczyt wartości? Czy zakłócenia związane z zasilaniem mogą aż tak mącić wynik? Co jeszcze może mieć wpływ?

Jestem wdzięczny za każdą pomoc i poradę, siedzę nad tym już trzeci dzień.

Mój kod: http://pastebin.com/QCZsBs8c

#stm32 #mikrokontrolery #elektronika
  • 10
@Malchos:

Zupełnie nie odnośnie stm32 - ale tak ogólnie.

Nie możesz zapodać tego sygnału na jakieś wejście sprzętowego przerwania (generujące przerwanie sprzętowe)?

W przerwaniu od timera - zliczasz sobie czas (jakiś rejestr/zmienną inkrementujesz). Powiedzmy że masz przerwania od timera co 1us. Czyli zliczasz us w zmiennej "Tliczone"

W przerwaniu od sygnału z enodera - przepisujesz wartosc zmiennej "T
liczone" do "Tzmierzone" i zerujesz "Tliczone"

W Tzmierzone masz
@Malchos: 1. ustawiasz przerwanie od wejścia z enkodera,

2. Ustawiasz timer żeby liczył z oczekiwaną rozdzielczością

3. W obsłudze przerwania odczytujesz i zerujesz timer, wartość odczytana łatwo przeliczania na obroty jest.

4. Dodatkowo przepełnione tunera może generować sygnał o zatrzymaniu enkodera.
@Malchos: tak bym zrobił bo najprościej. Można też poprosić timer aby zliczal okres impulsów za ciebie, i obsługiwać przerwanie timera od końca pomiaru okresu. Rozwiązań jest wiele, wszystko zależy od inwencji. Najgorsze co możesz zrobić to wpieprzac te nieszczęsne delaye.
@aloalo83: Ok, dzięki, powalczę z tym najpewniej jutro. W teorii wszystko wydaje mi się proste i sam miałem kilka pomysłów na pomiar prędkości. Schody się zaczynają gdy program zamiast działać wywala krzaki, a ja nie wiem dlaczego. Dzięki za wszystkie pomysły, gdyby ktoś jeszcze miał coś do dodania chętnie poczytam.