Skocz do zawartości
Komentator

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki

Pomocna odpowiedź

Sefir, tak są to kondensatory ceramiczne. Została użyta tutaj stara biblioteka do rysowania schematów 🙂

Udostępnij ten post


Link to post
Share on other sites

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?

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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ć?

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
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.

Udostępnij ten post


Link to post
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 🙂

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
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?

Udostępnij ten post


Link to post
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".

Udostępnij ten post


Link to post
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)

Udostępnij ten post


Link to post
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 🙂

Udostępnij ten post


Link to post
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ć?

Udostępnij ten post


Link to post
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

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...