logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8][bascom] Sterowanie serwem modelarskim

lolcat1 02 Sie 2010 18:06 5978 6
  • #1 8357901
    lolcat1
    Poziom 10  
    Od kilku godzin próbuje zrozumieć dlaczego ten układ nie chce działać.
    Podłączyłem atmege do zasilania, a do jej pinu C.5 podłączyłem kabelek Signal od serwa. Serwo do zasilania i GND (napięcie stabilizowane 5V).

    Wszystko ładnie pięknie - przy podłączeniu zasilania serwo wykonuje jakiś ruch, jednak serwo według programu (napisanego w oparciu o help z bascoma) powinno obracać się o 1 radian(a raczej o 1/255) na sekundę.

    Podłączyłem wyświetlacz, żeby sprawdzić czy program się wykonuje. I tak wykonuje się, zwiększa liczbę i serwo powinno chodzić - a nie chodzi... Tak, więc podłączenie jest poprawne (sprawdzałem kilka razy multimetrem).

    Pewnie wina leży w kodzie, kod poniżej:
    $regfile = "m8def.dat"
    $crystal = 4000000
    
    Config Servos = 1 , Servo1 = Portc.5 , Reload = 10
    Config Portc = Output
    
    Enable Interrupts
    
    Dim I As Byte
    
    Do
    
    For I = 0 To 100
    
     Servo(1) = I
    
      Cls
     Upperline
    Lcd "Dzien dobry!"
     Lowerline
    Lcd "Pozycja: " ; I
    
    Waitms 1000
    
    Next
    
    
    
    For I = 100 To 0 Step -1
    
     Servo(1) = I
    
     Cls
     Upperline
    Lcd " Dzien dobry!"
     Lowerline
    Lcd "Pozycja: " ; I
    'pokazuje pozycje serwa
    
    Waitms 1000
    
    Next
    
    Loop
    End


    Próbowałem też zamienić zasilacz z tego (9V 0,3A) na akumulator. Ciągle to samo, tylko nie potrzebnie się stabilizator grzeje jak szalony...
  • Pomocny post
    #2 8357937
    Konto nie istnieje
    Poziom 1  
  • #3 8357963
    lolcat1
    Poziom 10  
    Teraz chyba działa, próbuje na zasilaczu 0,3A i teraz jak bit I dojdzie do liczby 3, to zasilanie się odłącza (serwo pewnie ma za duży pobór prądu).

    Więc chyba jest ok, prawda? :)

    Czas zainwestować w jakiś zasilacz uniwersalny...
  • Pomocny post
    #4 8358137
    Freddy
    Poziom 43  
    lolcat1 napisał:
    Teraz chyba działa, próbuje na zasilaczu 0,3A i teraz jak bit I dojdzie do liczby 3, to zasilanie się odłącza (serwo pewnie ma za duży pobór prądu).

    Więc chyba jest ok, prawda? :)

    Czas zainwestować w jakiś zasilacz uniwersalny...

    Hmmm, prąd 300 mA z zasilacza jest zdecydowanie za mały. W zależności od typu serwa (model, producent), prąd pobierany przez nie to 150 mA do dużo ponad 1A.
  • #5 8358166
    lolcat1
    Poziom 10  
    No właśnie, do listy zakupów dodałem zasilacz uniwersalny. Jeszcze trochę pogrzebie w częściach może coś się nada.

    Przy okazji: Na innym forum kiedyś wyczytałem, że do sterowania serwami przez Config Servos w Bascomie, potrzebny jest kwarc > 8MHz. Jednak w helpie bascoma widać przykład na wewnętrznym oscylatorze 4MHz (tak jak ja próbuje). Może to również odgrywać rolę?

    (Używam serw TowerPro SG-5010)
  • #6 8358365
    Konto nie istnieje
    Poziom 1  
  • #7 8358556
    Electix
    Poziom 21  
    A nie łatwiej byłoby Ci samemu wysterować serwo używając w tym celu PWM z mikrokontrolera? Można to zrobić w bardzo prosty sposób, uniezależniając się od częstotliwości taktowania procesora. Ważne jest tylko żeby spełnić parametry sterowania serwem. Położenie mechanizmu wykonawczego serwa określane jest impulsem o zmiennej szerokości. Położenie neutralne uzyskuje się podając na wejście sterujące impuls o szerokości 1,5 ms, powtarzany co 20ms, wychylenia są powodowane przez zmianę szerokości impulsu w granicach +/- 0,5ms. Z tego wynika że, czas trwania impulsu mieści się w zakresie od 1 do 2 ms.
    Impuls ten musi być powtarzany, ponieważ przy jego braku serwo nie ma "punktu odniesienia" i przestaje stawiać opór siłom działającym na jego ramię.
    Kierunek ruchu serwa można odwrócić TYLKO przez zmianę długości impulsu.
    Szczegółowy opis działania serw znajdziesz np. TU
REKLAMA