Witam.
Zdaje sobie sprawę, że temat ten był poruszany na elektrodzie wielokrotnie, jednak po przeczytaniu kilkudziesięciu wątków nie znalazłem rozwiązania które może mi pomóc. Otóż potrzebuje mierzyć położenie obracającego się wału silnika w czasie, uzyskując wynik do dalszych obliczeń w kaskadowej strukturze sterowania. Ponieważ posiadam (niestety) jedynie teoretyczną wiedzę na ten temat właściwie nie wiem w jaki sposób się do tego problemu zabrać.
Otóż:
Do wału silnika podłączony jest enkoder MPL10 dający 512 impulsów na obrót.
W jak sposób podłączyć ten enkoder do Atmega8 (korzystać z przerwań czy liczników?) aby "on-line" czyli ciągle odczytywać w jakimś rejestrze położenie silnika.
Sam enkoder daje na wyjściu 2 sygnały prostokątne przesunięte względem siebie o 90 stopni (w celu rozróżnienia kierunku obrotów).
Logiczniejsze wydaje mi się użycie przerwań i zliczanie wystąpienia zbocza narastającego dla każdego sygnału (A i B). Jednak nie mogę wymyślić jak te informacje przetworzyć na położenie wału.
Jestem pewien że wiele osób z tego forum zna rozwiązanie mojego problemu proszę więc o szybką pomoc jak w asemblerze sobie z takim problemem poradzić. Właściwie wystarczy mi sam algorytm takiego "rozkodowania" położenia wału, ze stworzeniem kodu na jego podstawie prawdopodobnie dam sobie radę.
Zdaje sobie sprawę, że temat ten był poruszany na elektrodzie wielokrotnie, jednak po przeczytaniu kilkudziesięciu wątków nie znalazłem rozwiązania które może mi pomóc. Otóż potrzebuje mierzyć położenie obracającego się wału silnika w czasie, uzyskując wynik do dalszych obliczeń w kaskadowej strukturze sterowania. Ponieważ posiadam (niestety) jedynie teoretyczną wiedzę na ten temat właściwie nie wiem w jaki sposób się do tego problemu zabrać.
Otóż:
Do wału silnika podłączony jest enkoder MPL10 dający 512 impulsów na obrót.
W jak sposób podłączyć ten enkoder do Atmega8 (korzystać z przerwań czy liczników?) aby "on-line" czyli ciągle odczytywać w jakimś rejestrze położenie silnika.
Sam enkoder daje na wyjściu 2 sygnały prostokątne przesunięte względem siebie o 90 stopni (w celu rozróżnienia kierunku obrotów).
Logiczniejsze wydaje mi się użycie przerwań i zliczanie wystąpienia zbocza narastającego dla każdego sygnału (A i B). Jednak nie mogę wymyślić jak te informacje przetworzyć na położenie wału.
Jestem pewien że wiele osób z tego forum zna rozwiązanie mojego problemu proszę więc o szybką pomoc jak w asemblerze sobie z takim problemem poradzić. Właściwie wystarczy mi sam algorytm takiego "rozkodowania" położenia wału, ze stworzeniem kodu na jego podstawie prawdopodobnie dam sobie radę.