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

Dwupozycyjny sterownik serwomechanizmu.

And! 04 Gru 2016 19:26 7242 10
  • Dwupozycyjny sterownik serwomechanizmu.
    Czasami potrzebne jest dobudowanie sterowania mechanicznym elementem np. zaworem, przepustnicą istniejącego urządzenia. Można użyć silnik z przekładnią oraz wyłączniki krańcowe, lecz przy obecnej niskiej cenie serwomechanizmów modelarskich warto rozważyć ich zastosowanie. Serwomechanizm do działania potrzebuje zasilanie oraz sygnał sterujący o czasie trwania stanu wysokiego 1ms do 2ms powtarzany co 20-25ms. Dla czasu trwania 1.5ms serwomechanizm ustawia oś w położeniu "0", przy sterowaniu czasem trwania 1-2ms serwo pozycjonuje położenie osi wyjściowej, proporcjonalnie do odchylania od 1.5ms. Serwomechanizm pozwoli na proste dwupołożeniowe sterowanie elementem mechanicznym urządzenia.
    Serwomechanizmy różnią się od siebie możliwościami (siła jaką może działać serwo), wymiarami, wytrzymałością itp.
    Zastosowanie serwa pozwoli także na łatwą zmianę zakresu dwupołożeniowego sterowania elementem mechanicznym, serwo śledzi położenie swojej osi także nie potrzebne są dodatkowe czujniki. Do sterowania serwem można zastosować prosty układ analogowy, jednak przy obecnej cenie mikrokontrolerów, w bardzo prosty sposób można generować sygnał sterujący 8-mio pinowym mikrokontrolerem.
    W brew pozorom nie jest to rozwiązanie przesadzone, gdyż można łatwo przystosować układ sterujący do np. komunikacji cyfrowej z innymi systemami oraz zmiany zachowania układu na drodze programowej. Także dobrym rozwiązaniem jest zarówno układ analogowy jak również cyfrowy.
    Przykładowy schemat rozwiązania opartego o mikrokontroler ATtyny13.
    Dwupozycyjny sterownik serwomechanizmu.

    Mkrokontroler taktowany jest wewnętrznym oscylator RC 9.6MHz poprzez wewnętrzny dzielnik /8 co daje częstotliwość taktowania 1.2MHz.
    Przyciski S1 oraz S2 pozwalają na zasilenie układu. Potencjometry P1 i P2 ustalają położenie serwa przy przyciśnięciu S1 lub S2.
    Sygnał sterujący serwem generowany jest na wyjściu PB0 (pin5) mikrokontrolera.
    W zależności od napięcia na suwakach P1 i P2 program generuje odpowiednie czasy trwania sygnału dla serwa.
    Rezystory R3 i R4 tworzą dzielnik napięcia pozwalający na sygnalizację niskiego napięcia zasilającego układ.
    Układ przystosowany jest do zasilania napięciem bateryjnym 4.5V (2xAAA), niski stan napięcia zasilającego sygnalizowany jest poprzez świecenie diody LED. W układzie testowym zostało wykorzystane miniaturowe serwo SG92R.
    Dwupozycyjny sterownik serwomechanizmu.
    Przykładowy program sterujący można ściągnąć tutaj: SerwoDualPos.hex SerwoDua..s.zip Download (485 bajtów)


    Fajne!
  • Arrow Multisolution Day
  • #2 05 Gru 2016 14:14
    pawel1029384756
    Poziom 20  

    Attiny 13 jest dobry, ale sterowanie dwoma położeniami można wykonać przy pomocy jednego pinu;
    0 to w prawo, a 1 to w lewo, więc w takim przypadku dałbym po prostu NE555 i klucze na tranzystorach, które zmieniałyby rezystancję.
    Często w małych projektach też stosuje ten mikrokontroler, jednak tutaj to przerost trochę. Czasy są zbliżone do siebie, więc łatwo jest dobrać wartości elementów, a cena była by sporo niższa, bo produkcja jednej sztuki to trochę ponad 1 zł.

  • Arrow Multisolution Day
  • #4 05 Gru 2016 20:01
    And!
    Admin grupy Projektowanie

    Gdy padło pytanie o dwupozycyjne sterowanie wałem, na odległość przy pomocy dwóch przycisków w pierwszej chwili pomyślałem o NE555 i serwomechaniźmie.
    Jednak spodziewając się zmian w założeniach i rozbudowy wymagań wybrałem mikrokontroler.
    Wiedziałem że mogę położenia serwomechanizmu zapisać w pamięci eeprom lub w pamięci programu, dodatkowo łatwo rozbudować urządzenie o więcej niż dwa położenia.
    Jeżeli byłaby taka potrzeba mikrokontroler może być zasilany cały czas i w trybie uśpienia oczekiwać na zdarzenie.
    Łatwo dodać sterowanie sekwencyjne (np. kilkukrotne zwieranie styku) lub logikę wykrywającą długie/krótkie przyciśnięcie.
    Jeżeli potrzebna będzie większa odległość przycisków sterujących lub enkodera dla wielu położeń, możliwe będzie przekazanie informacji szeregowym interfejsem cyfrowym, podobnie współpraca z innym urządzeniem cyfrowym będzie uproszczona.
    Dlatego zdecydowałem się na mikrokontroler.
    Ponieważ produkcja była jednostkowa to mogłem sobie pozwolić na taką rozrzutność, no i opcjonalny wskaźnik rozładowania baterii gratis ;)

    Mikrokontroler w obudowie DIP8 (podobnie jak NE555), może w swoim programie zmieścić wiele zaskakujących i wręcz kosmicznych funkcji, np. zliczać ilość ruchów i zasygnalizować konieczność przeglądu/serwisu (np. migając LED) po przekroczonej określonej ilości (jeżeli byłoby to potrzebne), właśnie ta elastyczność ostatecznie przekonała mnie do tego wyboru.

  • #5 05 Gru 2016 23:58
    grala1
    Specjalista grupy V.A.G.

    Jeżeli dobrze rozumiem to do sterowania serwa potrzebny jest sygnał PWM gdzie czas trwania stanu wysokiego 1,5ms ustawi serwo w pozycji "0" zaś czas 1 lub 2 spowoduje jego maksymalne wychylenie w jedną lub drugą stronę.
    Czy po osiągnięciu skrajnego położenia trzeba ściągnąć sygnał sterowania czy może on być cały czas podawany?
    Jak długo ma być podawany ten sygnał?

  • #6 06 Gru 2016 07:04
    goldi74
    Poziom 43  

    grala1 napisał:
    Czy po osiągnięciu skrajnego położenia trzeba ściągnąć sygnał sterowania czy może on być cały czas podawany?
    Jak długo ma być podawany ten sygnał?

    Nie tyle może co musi być ten sygnał podawany cały czas. Tak długo jak serwo odbiera impulsy o danym czasie trwania tak długo pozostaje ono w zadanym położeniu.

  • #7 06 Gru 2016 10:33
    drlukasz
    Poziom 12  

    Nie do końca.
    Jeśli na serwo nie działa zewnętrzna siła obracająca wał/ramię to serwo utrzyma swoją pozycję po zdjęciu impulsów (ew. zasilania). Jasne, że siła trzymająca jest niewielka - wynika tylko z mechanicznego oporu przekładni i silnika.

  • #8 06 Gru 2016 12:28
    grala1
    Specjalista grupy V.A.G.
  • #9 06 Gru 2016 12:43
    pawel1029384756
    Poziom 20  

    grala1 napisał:
    Czyli nie ma mowy o uszkodzeniu serwa gdy sygnał będzie podawany ciągle, np cały czas pozycja "0"?

    Uszkodzenie może zajść, jeżeli serwo będzie cały czas chciało utrzymywać tą samą pozycje a siła zewnętrzna będzie większa niż wytrzymałość przekładni. Może ulec połamaniu, albo jeżeli przekładnia wytrzyma może spalić się silnik lub sterownik, ale to w przypadku dobrania zbyt słabego serwomechanizmu do konkretnego zadania.

    Jak się tylko dokopię po przeprowadzce do elementów, to zmontuje coś takiego na ne555. Ale jak to rozwiązanie sprzętowe nie będzie się tego dało łatwo przerobić na dodatkowe funkcję i tu pojawia się zaleta mikrokontrolera. Przy dobrze zaprojektowanym układzie ogranicza nas tylko pomysłowość programisty.

  • #10 06 Gru 2016 13:08
    goldi74
    Poziom 43  

    grala1 napisał:
    Czyli nie ma mowy o uszkodzeniu serwa gdy sygnał będzie podawany ciągle, np cały czas pozycja "0"?

    Na pewno się nie uszkodzi bo elektronika wyłączy silnik w momencie uzyskania zadanego położenia. Włączy go ponownie dopiero po odebraniu impulsów o innym czasie trwania (co odpowiada innemu położeniu) lub w momencie gdy zewnętrzna siła przesunie nieco ramię serwomechanizmu. Jako, że jego oś jest sprzężona z potencjometrem odczytu położenia to elektronika odczyta taką zmianę pozycji i będzie dążyć do ustawienia osi serwa we wcześniejszej pozycji.

  • #11 10 Gru 2016 19:29
    22053
    Użytkownik usunął konto