Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Komentator

Pomocna odpowiedź

lekcja 5," serwomechanizm w praktyce" drugi akapit - "konieczne są również kondesatory filtrujące". Pod spodem zrzut płytek bez kondensatorów.

Poza tym, na zrzucie płytek jest podłączona bateria jako źródło prądu, ale najpierw trzeba wgrać program sterujący przez USB. Czyli wgrywam program na USB, odłączam USB i podłączam prąd z baterii?

Link do komentarza
Share on other sites

ko4, jeśli mówimy o tym samym schemacie, to są tam kondensatory (elementy zaznaczone na niebiesko). Miało to być wyróżnieniem, ale może się nie sprawdza - wstawię wtedy standardowe brązowe.

Poza tym, na zrzucie płytek jest podłączona bateria jako źródło prądu, ale najpierw trzeba wgrać program sterujący przez USB. Czyli wgrywam program na USB, odłączam USB i podłączam prąd z baterii?

Jeśli masy są połączone, to nie trzeba nic zmieniać. Możesz spokojnie podpinać USB poz odłączania baterii.

Link do komentarza
Share on other sites

ko4, jeśli mówimy o tym samym schemacie, to są tam kondensatory (elementy zaznaczone na niebiesko). Miało to być wyróżnieniem, ale może się nie sprawdza - wstawię wtedy standardowe brązowe.
Poza tym, na zrzucie płytek jest podłączona bateria jako źródło prądu, ale najpierw trzeba wgrać program sterujący przez USB. Czyli wgrywam program na USB, odłączam USB i podłączam prąd z baterii?

Jeśli masy są połączone, to nie trzeba nic zmieniać. Możesz spokojnie podpinać USB poz odłączania baterii.

Dzięki. Na serwomechanizmie testowałem inne przeskoki (o 2 zamiast o 6) i wygląda jakby się zaciął, tzn dojechał do końca i i pracuje jakby chciał dalej się kręcić. Da się go uratować?

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

ko4, programowo raczej nie mogłeś go uszkodzić. Czy serwa nie reaguje na komendy przesunięcia się np. na środek? Czy po odłączeniu go od zasilania możesz delikatnie ręcznie przekręcić silnik?

Link do komentarza
Share on other sites

ko4, programowo raczej nie mogłeś go uszkodzić. Czy serwa nie reaguje na komendy przesunięcia się np. na środek? Czy po odłączeniu go od zasilania możesz delikatnie ręcznie przekręcić silnik?

Naprawiłem go, ale się nie chwaliłem, bo użyłem przemocy. Chyba przekręcił się trochę za ogranicznik, odłączyłem go i próbowałem delikatnie w lewo i prawo i nic. Potem na siłę przekręciłem przez ogranicznik i dalej przez arduino przywróciłem do pozycji 0. Wygląda na to że przerobię go na silnik, jak już raz rozjechałem ogranicznik...

Dziękuję za pomoc.

Link do komentarza
Share on other sites

ko4, w serwomechaniźmie znajdują się dwie blokady: mechaniczna (na obudowie) oraz w potencjometrze. Jeśli serwo działa teraz normalnie, to raczej niczego nie uszkodziłeś. Może tylko jakoś pechowo zablokowała się poprzednio przekładnia 🙂

Link do komentarza
Share on other sites

Mam servo Tower Pro mg945 ale coś mi wariuje. Cokolwiek bym nie zrobił ono i tak obraca się mniej więcej o 30-pare stopni robi 5 takich ruchów po czym próbuje jechać dalej ale nie może bo dalej sie nie da (nie wraca) pisałem różne programy i korzystałem z gotowców dla arduino ale cały czas to samo. Obecnie zasilam go ładowarką 5V 2A bo myślałem że problemem jest zbyt mały prąd z USB ale nadal zachowuje się tak samo. Co może byc problemem?

Link do komentarza
Share on other sites

mardot08, ciężko powiedzieć - dużo niewiadomych. Najlepiej byłoby gdybyś mógł wstawić oscylogramy lub podłączyć dla testu jakieś inne, małe serwo. Możesz też zbudować sterownik serwomechanizmów na NE555: Kurs elektroniki II – #9 – czujnik przeszkód, sterownik serwa

Link do komentarza
Share on other sites

W tej chwili nie mam jak sprawdzic innego serwa, ale mogę dodać że przy podłaczeniu pod usb i wgraniu programu zaczyna cały czas zrywać połączenie usb i łączy się na nowo. Myśle że po prostu arduino zamiast wykonywć pętli rozłącza i wykonuje instrukcje od początku. W porcie szeregowym też pokazuje mi się tylko wartość początkowa czyli 0 . Może to serwo pracuje na jakihs innych bibliotekach?

Link do komentarza
Share on other sites

Może to serwo pracuje na jakihs innych bibliotekach?

Raczej nie 🙂

Do którego pinu masz podłączone serwo? Jak dokładnie zasilasz całość? Przy dodatkowym zasilaczu, o którym piszesz nic nie powinno "zrywać połączenia USB".

Link do komentarza
Share on other sites

servo podłączałem do 9ki i 7ki , zasilanie z usb do 5V i druga opcja z zasilacza do Vin (5v 2A) i cały czas ten sam efekt tzn przy zasilaczu zachowuje się tak samo jak przy usb (po każdym ruchu miga dioda L na pomarańczowo)

Link do komentarza
Share on other sites

mardot08, jeśli wpinasz zasilacz do Vin i z tego zasilasz serwo, to zapewne masz już odpowiedź na pytanie, co jest problemem. Sprawdź, jak zasilałem serwo w artykule 🙂

Link do komentarza
Share on other sites

Zadanie 5.4 robiłem na bazie przykładu 'Knob'. I tak rozpisywałem dalej.

#include <Servo.h>

Servo myservo;                                            // myservo jako serwo

int val;                                           // zmienna val

void setup()
 {
 myservo.attach(9);                                       // serwo na pinie 9
 Serial.begin(9600);                                      // port szeregowy otwarty
 Serial.println("Podaj kat z zakresu 1st do 180st");
 Serial.println("//lub podaj kilka liczb z zakresu oddzielonych spacja//");
 }

void loop() 
{  
 val = Serial.parseInt();                                 // zczytanie val
 if ((val > 0) && (val <=180))                            // jesli wartosc w zakresie
   {
    myservo.write(val);                                      // obrot serwa o "val"
    Serial.print("Aktualna pozycja ");                       // Info o stanie serwa
    Serial.print(val);
    Serial.println("st");
    delay(15);  
   }  

 if (val > 180)                                              // jesli val powyzej 180
   {
    myservo.write(90);                                      // powrot serwa na 90st
    Serial.println("Bledna liczba - powrot serwa (90st)");  // komunikat o bledzie
    Serial.println("Podaj liczbe z zakresu od 1 do 180");
    delay(15);
   }
 if (val < 0)                                                //jezeli val mniejsze od 0
   {
     myservo.write(90);                                      // powrot serwa na 90st
     Serial.println("Bledna liczba - powrot serwa (90st)");  // komunikat o bledzie
     Serial.println("Podaj liczbe z zakresu od 1 do 180");
     delay(15);
   }
}

I pytanie. Przy wpisaniu wartości 'zero' nic się nie dzieje. Ma to związek z 'parseInt', czy w innym miejscu mam patrzeć?

Link do komentarza
Share on other sites

Nic się nie dzieje, bo jak 'val' będzie miało wartość 0 to żaden z warunków z if-ów nie będzie spełniony 🙂 masz wszędzie warunki val>0 lub val<0, nigdzie 0 się nie łapie.

  • Lubię! 1
Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.