Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Pomocna odpowiedź

@krzym2 Witam. Pracuje nad zadaniem 5.2 i natknąłem się na Twoją wersje. Tylko dziwne że po skopiowaniu u mnie nawet nie chce się kompilować? zastanawiam się jak to działa u  Ciebie?

Dnia 19.06.2019 o 17:18, krzym2 napisał:

wypelnienie = wypelnienie zmiana   // odjąć  5

Na pierwszy rzut oka w kodze jest o jedną klamrę za dużo na końcu, a jednej linijce brakuje ( ; )  

Dnia 7.03.2020 o 15:17, Treker napisał:

@andrzej_ip witam na forum! Pin Vin to napięcie wejściowe (tutaj z baterii 9V), a pin 5V to 5V 😉 Aby taki stabilizator zadziałał poprawnie to musi być zasilany z napięcia wyższego niż to, które ma dać na swoim wyjściu. Więcej na ten temat dowiesz się np. z tego artykułu: Kurs elektroniki – #8 – stabilizatory napięcia

Dziękuję za wyjaśnienie. Właśnie jestem w trakcie przerabiania tego kursu #8 i w ramach nauki (chyba) wystrzelił mi elektrolit 😆 , ale ja nie o tym. Chciałbym się jeszcze

dopytać czy można jednocześnie podłączyć do płytki napięcie przez USB i 9V? (bo może to było przyczyną wybuchu).

(edytowany)

Zadanie 5.4

#include <Servo.h> //Biblioteka odpowiedzialna za serwa
String ZadanaPozycja = "";//Zminna dla wprowadzenia tekstu
int pozycja = 0;//Poczatkowa pozycja serwa
int ZadanaPozycjaINT = 0;//Zmienna dla przekrztałcenia z "String" na "int"
Servo serwomechanizm; //Tworzymy objekt, dzieki ktoremu mozemy odwolac sie do serwa


void setup() {
  Serial.begin(9600);// Nawiazanie komunikacji
  serwomechanizm.attach(9);//Serwomechanizm podlaczony do pinu 9
}

void loop() {
  if (Serial.available() > 0) { //Odczytywanie zadanej pozycji
    ZadanaPozycja = Serial.readStringUntil('\n');
    ZadanaPozycjaINT = ZadanaPozycja.toInt();//Przekrztałcenie zniennej z "String" na "int" 
    if (ZadanaPozycjaINT <= 180 && ZadanaPozycjaINT >= 0) {//Gdy zadana pozycja miesci sie w zakresie
      serwomechanizm.write(ZadanaPozycjaINT);//Wykonaj ruch serwa

    } else {
      Serial.println("Zadana nie wlasciwa pozycja");// Gdy zadana pozycja poza zakresem wyswietl info
    }
  }
}

 

Edytowano przez Vova
Dnia 10.03.2020 o 16:33, andrzej_ip napisał:

Chciałbym się jeszcze

dopytać czy można jednocześnie podłączyć do płytki napięcie przez USB i 9V? (bo może to było przyczyną wybuchu).

Można. Ja często nie odpinam zasilania od Arduino jak wgrywam kolejna wersję kodu po USB. Nie powinno się zostawiać np samego usb w momencie jak w układzie masz elementy wymagające stosunkowo dużego prądu, na przykład serwomechanizm wlaśnie. Warto wtedy odłączyć jeden z przewodów dochodzący do serwa. 

Zadanie 5.5

#include <Servo.h>//Biblioteka odpowiedzialna za serwo
int potencjometr = 0;//Pozycja potencjometra
Servo silnik;//Serwo

void setup(){
  silnik.attach(9);//Konfiguracja pinu 9 pod serwo
}

void loop() {
  potencjometr = analogRead(A1);// Odczyt pozycji potencjometru z ADC
  potencjometr = map(potencjometr, 0, 1023, 1 , 180);// Przekrztaucenie odczytanych wartosci
   silnik.write(potencjometr);// Wykonaj ruch serwa
   delay(50);//Male opoznienie dla niwelacji zaklucen
}

 

  • Lubię! 1
(edytowany)

Cześć, ja mam taki problem. Zaobserwowałem, że moje serwo nie przemieszcza się w pełnym zakresie 0-180, tylko mniej. W funki sterującej oczywiści podaję argument 0 i 180, ale wyraźnie widać, że zakres ruchu jest mniejszy. Prawdę mówiąc to samo zaobserwowałem podczas wykonywania kursu elektroniki z zastosowaniem NE555, wtedy nie zgłębiałem tematu, ale teraz już widzę, że muszę. Czy ktoś potrafi mi wyjaśnić o co chodzi?

Edytowano przez Radek77
literówka

@Radek77 część, serwa mają to do siebie że nie zawsze wykonują pełne 180*, ale błąd ten jest zazwyczaj niewielki. Gwarantowany zakres ruchu to jedynie +-45*.

Witajcie serdecznie

To mój pierwszy wpis na forum - zatem kłaniam się wszystkim. Od razu przejdę do problemu:

Przerabiam razem z 12 letnim synem lekcję po lekcji. Wszystko szło dobrze aż do części o servo. 

5 razy zdemontowałem i zamontowałem wszystkie elementy, ale serwo jak milczało tak milczy. Zmieniłem płytkę, zmieniłem zasilanie z baterii na zasilacz. Nadal cisza. 

Lekcja 5, całość zakupiona w Botlandzie jako zestaw do części I.

Co robię źle??? 

Pozdrawiam

 

Grzegorz

 

IMG_2931.jpg

IMG_2932.jpg

@gmoszkowicz witam na forum 🙂

Możesz sprawdzić napięcie na wyjściu stabilizatora?

Jeżeli nie to dla testu (podkreślam dla testu) możesz podłączyć serwo gołym kablem do wyjść zasilających Arduino. Weź 2 kabelki podłącz + do 5V, - do GND. Przy samym podłączeniu serwko powinno drgnąć od dostania zasilania. Następnie podłącz kabelek sygnałowy.

Jeżeli nie działa, wybierz inne kabelki, może te są trefne i nie łączą (bywa i tak).

Jeżeli to nie pomogło to najlepiej sprawdź czy kabelki przewodzą (znowu miernik by się przydał) jak nie masz, to zbuduj jakiś układ ze świecącym LEDem i sprawdź czy kabelek przewodzi.

Jeżeli żaden z ww. nie pomógł to pewnie serwo jest uszkodzone i możesz złożyć reklamację 😞 

9 godzin temu, Gieneq napisał:

możesz podłączyć serwo gołym kablem do wyjść zasilających Arduino.

Witam.

Arduino to przeżyje? Mimo wszystko to jest silnik...

Na chwilę nie zaszkodzi, przy zasilaniu z kabla zasilanie będzie szło przez stabilizator.

Zastanawiam się tylko jak kolega @gmoszkowicz robi zadania z kursu. W systemie masz zakupione zestawy, ale na zdjęciu klon Arduino. Może z płytką jest coś nie tak.

  • Lubię! 1
13 godzin temu, Gieneq napisał:

Na chwilę nie zaszkodzi, przy zasilaniu z kabla zasilanie będzie szło przez stabilizator.

Zastanawiam się tylko jak kolega @gmoszkowicz robi zadania z kursu. W systemie masz zakupione zestawy, ale na zdjęciu klon Arduino. Może z płytką jest coś nie tak.

No zdjęcie było już z 2 płytki. Mam oczywiście tą z zestawu, ale nie działało, więc wymieniałem po kolei wszystko. Jedyne czego nie mogłem wymienić to ten stabilizator LM7805.

Resztę sprawdziłem - nawet serwo wymieniłem (mam 2 identyczne).

No dobra - robię raz jeszcze.

Dzięki za podpowiedzi.

  • Lubię! 1

Jest sukces. Ponownie zmontowałem całość od początku do końca i tym razem działa.

Ale mam pytanie: Ruch servo nie jest o pełne 180 stopni a na dodatek nawet przestawianie go np o 30 stopni to kolejne pozycje dość istotnie różnią się od zadanych 30 stopni. Na dodatek jeśli zatrzymam serwo w pozycji 0 to ono tak jakby drży dopiero przy pozycji 5 jest spokojne - później jest ok aż do kolejnej skrajnej pozycji czyli od 176-180 znów zaczyna drżeć.

To kwestia jakości servo? czy są jakieś lepsze? 

Pozdrawiam

Grzegorz

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...