Enkoder obrotowy wykorzystywany jest do pomiaru aktualnego położenia wału (zwykle silnika elektrycznego), informacja ta może być wykorzystywana do precyzyjnego ustawiania wału w zadanej pozycji lub/i pomiaru jego prędkości obrotowej. Mikrokontroler LM3S2965 wyposażony został w dwa hardwarowe dekodery sygnałów z dwóch enkoderów, co w zupełności wystarcza np. gdy chcemy zbudować za jego pomocą sterownik silnika BLDC. W moim przypadku uC ma posłużyć jako sterownik czterech silników DC. W związku z czym obsługę pozostałych dwóch enkoderów musiałem zrealizować softwarowo. Ponieważ docelowo enkodery będą niskiej rozdzielczości (100 pozycji na obrót), skorzystałem z funkcji uC która pozwala na wywołanie przerwania na wejściu przy wykryciu zbocza narastającego.
Enkoder posiada dwa kanały A i B a ich sygnały są przesunięte względem siebie o 90 stopni w fazie, ustawiając przerwanie na kanale A zostaje ono wywoływane przy pojawieniu sie narastającego zbocza (zmiana sygnału z niskiego na wysoki), następnie sprawdzany jest poziomu sygnału na kanale B. W zależności od podłączenia, podczas obrotów w lewo będziemy zawsze odczytywać stan wysoki na kanale B a dla obrotów w prawo zawsze stan niski, w zależności od tej wartości inkrementujemy lub dekrementujemy licznik dla danego enkodera.
Kategorie
Ksiązki
Tunel
— Jan Kraśko
Dnia 10.10.2008 w Elektronika
2 komentarze »
2 komentarze do “Stellaris® LM3S2965 Evaluation Board – Osługa czterech obrotowych enkoderów”
How do you handle soft encoder decoding. Could you please send ypur code.
Best regards
Napisane przez Ahmet, dnia 10.11.2012 o 09:44
I cant find this code but it was done very quick and dirt. I set up interrupt and wait for rising edge on channel A, when it occurred I was checking state of channel B. Nothing special.
Napisane przez admin, dnia 12.11.2012 o 23:40