Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

pytanko laika xplain - servo

unnamed7 21 May 2011 13:31 1643 9
  • #1
    unnamed7
    Level 10  
    Witam, jakiś czas temu wpadła mi w ręce płytka ewaluacyjna xplain z xmegą na pokładzie, wygląda to tak:
    pytanko laika xplain - servo

    dzisiaj natomiast dostałem servo (futaba s3003) i teraz moje pytanko, czego jeszcze potrzebuje aby zakręcić tym silnikiem z użyciem xplain'a ?

    oczywiście wiem, że muszę zaprogramować xmegę, chodzi mi o to, czy servo podłączam pod piny na płytce i tyle, czy po drodze powinno być coś jeszcze ?

    dzięki za pomoc i pozdrawiam.
  • #2
    bogdan_p
    Level 39  
    Serwo musi być zasilanie napięciem w przedziale 4,8÷6V , Twoja płytka ewaluacyjna xplain zasilana jest z portu USB ale jest to zbyt mała wydajność prądowa , tak więc potrzebny jest Ci dodatkowy zasilacz 5V o wydajności prądowej co najmniej 1A oczywiście napięcie stałe . Serwo zasilisz z dodatkowego zasilacza z płytki wykorzystasz tylko sygnał sterujący , masa wspólna ( serwo , płytka ) .
  • #3
    McRancor
    VIP Meritorious for electroda.pl
    Sprawdź czy tam przypadkiem 3.3V logiczne nie panuje, w takim przypadku konieczne będzie (poza zasilaniem jak kolega wyżej napisał) użycie konwertera poziomu który da wymagane 5V dla logiki serwa. Z doświadczenia wiem, że zdarza się że serwa działają na 3v3 ale znakomita większość będzie robiła problemy.
  • #4
    unnamed7
    Level 10  
    dzięki za wskazówki dzisiaj się udało go poruszyć, choć narazie skacze sobie tylko, ale to kwestia tego, że nie do końca jeszcze ogarniam timery. ale jak na 3 dni zabawy z programowaniem mikrokontrolerów to myślę, że jest ok, jutro walczę dalej :)
  • #5
    pitlab
    Level 13  
    McRancor wrote:
    Sprawdź czy tam przypadkiem 3.3V logiczne nie panuje, w takim przypadku konieczne będzie użycie konwertera poziomu który da wymagane 5V dla logiki serwa.

    Praktycznie wszystkie współczesne odbiorniki modelarskie dają sygnał sterujący na poziomie 3,3V. Serwo spokojnie będzie działało sterowane impulsami o napięciu 3,3V.
    Właśnie sprawdziłem najstarsze ze swoich serw HS-425. Pracuje do 2,8V przy zasilaniu wszystkiego z jednego źródła: testera serw i samego serwa.
  • #6
    McRancor
    VIP Meritorious for electroda.pl
    Może się coś pozmieniało ostatnio, mam serwa graupnera, do poprawnej pracy przy 3V musiałem użyć servo boostera (własnej konstrukcji) bo serwo nie pozycjonowało prawidłowo. Słyszałem o podobnych problemach z serwami TowerPro.
  • #7
    pitlab
    Level 13  
    Przyznam się że nie słyszałem o takich problemach. Dzięki za info.
  • #8
    unnamed7
    Level 10  
    po kilku dniach walki z serwem i kombinowania coś zaczynam z tego wszystkiego rozumieć, teraz pytanko, jak określić dobrze maksymalne wychylenie serva lewo/prawo ? Teraz niby coś nim mogę poruszać, ale działa mi to coś tylko w jedną stronę i osiągając maksymalne wychylanie podskakuje. Może mnie ktoś naprowadzić co mam szukać lub jak naprawić problem ? servo futaba s3003 sterowane z xmegi
  • Helpful post
    #9
    pitlab
    Level 13  
    unnamed7 wrote:
    jak określić dobrze maksymalne wychylenie serva lewo/prawo ? Teraz niby coś nim mogę poruszać, ale działa mi to coś tylko w jedną stronę i osiągając maksymalne wychylanie podskakuje.

    Jeżeli serwo jedzie w jedną stronę. to znaczy że impuls sterujący jest zbyt długi lub zbyt krótki. Nominalna szerokość impulsu to 1,5ms, aktywny jest stan wysoki.
    Typowe wartości brzegowe to 1,0ms (-125%) i 2,0ms (+125%), jednak zwykle można przeciągnąć impuls o jeszcze 0,2ms w każdą stronę. Trzeba tylko sprawdzić czy serwo nie dochodzi do ogranicznika mechanicznego, bo wtedy silnik zostanie zablokowany a elektronika serwa będzie chciała jeszcze kręcić dalej. Efekt nie będzie zdrowy dla serwa. Te podskoki, które teraz obserwujesz to być może efekt działania takiego stanu.

    Zobacz też na oscyloskopie, czy sygnał sterujący jest stabilny - bo może masz kaszankę w sterowaniu. Nie znam xmegi, ale typowy kontroler powinien mieć PWM. W zależności od możliwości PWMa albo definiujesz dwa rejestry, jednym ustawiasz stan wysoki a drugi stan niski po upłynięciu czasu impulsu. W wersji ekonomicznej czasami można dać wspólne dla wszystkich serw ustawianie sygnału wysokiego a potem jednym rejestrem na serwo zerujesz impuls. W ten sposób można obsłużyć więcej serw.

    Rozwiązanie pierwsze jest rozsądniejsze, bo sterowanie wielu serw jest rozłożone czasie i przynajmniej teoretycznie powinno mniej szarpać prądem. W praktyce czas pracy silnika zwykle jest dłuższy od odległości pomiędzy kolejnymi impulsami wynoszącej 50ms dla zwykłego sygnału i silniki kilku serw przez sporą część czasu pracują równocześnie. W rozwiązaniu drugim (ekonomicznym) wszystkie serwa startują razem.

    W swoim urządzeniu sterowanym ARMem steruję 12 serwami a teoretycznie nawet do 24, za pomocą 6-kanałowego PWM i 3 multiplekserów. Sześcioma kanałami PWM generuję trzy serie impulsów a kolejne impulsy w serii rozdzielam na poszczególne serwa multiplekserem przełączanym w przerwaniu kanału 0 PWM. Timer PWMa poganiam zegarem 1MHz i mam rozdzielczość sterowania 1us (0,25%).
  • #10
    unnamed7
    Level 10  
    dzięki za pomoc, ogarnąłem sobie już wszystko, miałem problem z zegarem xmegi, już jest ok, servo działa jak mu każe :) teraz usart do nauczenia, ale to już raczej nowy temat założe jak będę miał problemy.

    jeśli ktoś chce kod do xplain jak uruchomić servo, zapraszam na pw.
    temat można uznać za zamknięty :)