Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Sterownik 2 serw na ATtiny10

Klima 09 Gru 2010 23:08 3306 0
  • Sterownik 2 serw na ATtiny10 Sterownik 2 serw na ATtiny10 Sterownik 2 serw na ATtiny10

    Jako eksperyment z zastosowaniem ATtiny10 wymyśliłem sobie sterownik serw. Nie ukrywam, że natchnął mnie jeden z wcześniejszych projektów z Elektrody. Też chciałem się przekonać, że na takiej małej pchełce można zrobić coś bardziej użytecznego niż migacz diodą.
    Założyłem sobie, że sterowanie wychyleniem serw musi odbywać się cyfrowo, zatem jakiekolwiek kombinacje z potencjometrami nie wchodziły w grę. Do implementacji wybrałem transmisję szeregową, aby sterownik można było podłączyć bezpośrednio do UARTa innego mikrokontrolera lub do portu szeregowego komputera za pośrednictwem układu MAX232-podobnego (na tym scenariuszu zależało mi najbardziej).
    Sterownik 2 serw na ATtiny10
    Schemat układu jest tak banalny, że nie ma się co nad nim zastanawiać. Wyprowadzenia mikrokontrolera podłączone są następująco.
    Dwa wyjścia Output compare z timera podłączone są do linii sterowania 2 serw, dwa piny służą do podłączania zasilania, jeden pin (INT0) jest linią wejściową sygnału sterującego. Jeden pin (reset) jest nieużywany w aplikacji, pełni swoją rolę resetu i jest podciągnięty do plusa zasilania. I tu od razu pierwsza uwaga - dobranie zbyt dużej pojemności kondensatora dołączonego pomiędzy reset a masę uniemożliwi programowanie. Ja dałem standardowe dla mnie 100nF, co okazało się wartością zbyt wielką. Zrezygnowałem zatem w ogóle z kondensatora. Układ działa.
    Sygnał sterujący to transmisja szeregowa z 1 bitem startu, 1 stopu, bez parzystości, o prędkości 9600 b/s. Każde z 2 serw może być ustawione na jedną ze 128 pozycji. Najstarszy bit bajtu sterującego wybiera serwo, 7 pozostałych ustawia pozycję. wartość 0 na tych bitach odpowiada długości impulsu 1 ms na wyjściu dla danego serwa, a wartość 127 odpowiada 2 ms impulsom na wyjściu.
    Odbiór danych realizowany jest za pomocą procedury wykorzystującej opóźnienia programowe. Pozwoliłem sobie na to, gdyż procesor i tak nie ma nic innego do roboty - serwa sterowane są przez timer.

    Płytka wykonana za pomocą noża do tapet, czy do czego on tam jest. Nie polecam tej metody. Choć początkowo wiele sobie po niej obiecywałem, to jednak zastosowany układ ma nóżki zbyt blisko i szukanie zwarć na płytce trwa potem dość długo, zanim się wszystko oczyści.

    I to w zasadzie wszystko. Kod jest na tyle krótki, że powinien zmieścić się i w ATtiny4 (ale kod nie jest całkowicie wymienny - w kodzie dla 10 ADC jest wyłączany, a w ATtiny4 nie ma ADC).

    Poza tym, co zostało opisane, urządzenie nie robi nic więcej. Z pewnością usprawnieniem byłoby dodanie automatycznego ustawiania prędkości transmisji (autobaud), gdyż w tej chwili zrobione jest to na sztywno.
    Możliwe jest też dodanie informacji zwrotnej na linii reset przełączonej w tryb pinu I/O. Miejsce na kod jest, ale na moje potrzeby wystarczył taki prosty, żeby nie rzec, banalny, soft.

    Do kompletu jest aplikacja sterująca napisana pod FLTK. I znów - prostota aż razi, ale do mojego zastosowania wystarczała.

    Fajne! Ranking DIY
    Potrafisz napisać podobny artykuł? Wyślij do mnie a otrzymasz kartę SD 64GB.