Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Pomocna odpowiedź

Pytanie: jaki parametr wbudowanego stabilizatora nie pozawala na podłączenie serwomechanizmu bezpośrednio do 5V arduino? Można gdzieś przeczytać jaki jest limit?

W dokumentacji arduino Uno jest:

Cytat

DC Current per I/O Pin20 mA

Natomiast w opisie serwomechanizmu dołączonego do zestawu, niestety nie ma ile prądu pobiera :https://botland.com.pl/serwomechanizmy/484-serwo-towerpro-sg-90-micro-180-stopni.html

Reasumując? Po czym poznać, że nie można podłączyć czegoś do arduino?

(edytowany)

@Roman28 Witam na forum 🙂

Nie jest to jawnie podane w kodzie Arduino jako wypełnienie czy angielskie duty. Wypełnienie oznacza wartość PWM czyli analogWrite. Wartość 0 to 0 wypełnienia - sygnał niski, 255 to 100% wypełniania - stan wysoki.

@pawelmb

6 godzin temu, pawelmb napisał:

Natomiast w opisie serwomechanizmu dołączonego do zestawu, niestety nie ma ile prądu pobiera

Z tym raczej się nie spotkasz, bo rozrzut jest dość duży. Zachowanie serwa zależy od tego jak je obciążysz, ciężko też o określenie biegu jałowego jak to jest w wielu silnikach DC. Zazwyczaj podaje się pewne orientacyjne wartości i stosuje się spory zapas.

Płytka Arduino UNO Rev3 ma ograniczenie dla zasilania z USB - 500mA bzpiecznik i drugie 800 mA narzucone przez układ 1117:

image.png.57c01ecac06ed6673ca4c2821726a8cc.png

Dodatkowy stabilizator ma większy maksymalny prąd, chyba 1,5 A. Oczywiście jest szansa, że nie wykorzystasz tego zapasu, albo tylko przez krótką chwilę gdy serwo się obraca - wtedy pobór jest największy.

Edytowano przez Gieneq
  • 4 tygodnie później...

Witam, mam problem ze sterowaniem serwem, po wgraniu na Arduino programu z ćwiczenia reaguje ono raz na jakiś czas przestawieniem w losową pozycję. Samo serwo wydaje się być sprawne, korzystając z układu z kursu elektroniki II opartego o NE555 pracuje normalnie.

@Gieneq program jest aktualnie 1:1 przeklejony z artykułu, bo podejrzewałem że może coś po drodze źle zrobiłem. 
Na górze płytki jest generator PWM na NE555, zasilanie serwa przez step up-down, zasilanie Arduino z USB.

#include <Servo.h> //Biblioteka odpowiedzialna za serwa
 
Servo serwomechanizm;  //Tworzymy obiekt, dzięki któremu możemy odwołać się do serwa 
int pozycja = 0; //Aktualna pozycja serwa 0-180
int zmiana = 6; //Co ile ma się zmieniać pozycja serwa?
 
void setup() 
{ 
  serwomechanizm.attach(11);  //Serwomechanizm podłączony do pinu 9
  Serial.begin (9600);
} 
 
void loop() 
{  
  if (pozycja < 180) { //Jeśli pozycja mieści się w zakresie
    serwomechanizm.write(pozycja); //Wykonaj ruch
  } else { //Jeśli nie, to powrót na początek
    pozycja = 0;
  }    
  Serial.println(pozycja);
  pozycja = pozycja + zmiana; //Zwiększenie aktualnej pozycji serwa
  delay(1000); //Opóźnienie dla lepszego efektu                        
}

 

162478824_909819106497990_906911062788802529_n.jpg

  • Lubię! 1

@jacokwasek  (uprzedzam, że jestem początkujący) na pierwszy rzut oka pomysły: nie masz połączonych mas obu zasilań - to źle - coś jakbyś nie miał zamkniętego obwodu z arduino. Tu pewnie pewnie przydałoby się jakieś dobre wytłumaczenie, nie znam, ale podobno tak się nie powinno robić.

I drugie, w kodzie masz serwo podłaczone do pin 11. Jak dobrze widzę, to na zdjęciu do 10.

  • Lubię! 1
  • Pomogłeś! 1
  • 2 tygodnie później...
  • 4 tygodnie później...

Cześć

Czy też mieliście problem z zadaniem 5,4? 

Zadeklarowałem zmienna int dane = 0; potem if(Serial.available() > 0){ dane = Serial.read(); }

I właśnie z tym jest największy problem bo serwo zaczęło dziwnie pracować, przerobiłem program aby wyświetlał mi wartość zapisana w zmiennej 

Serial.println(dane); i np po wpisaniu 10 wyskakiwały głupoty rzedu 53 49 39 to tylko przykład, próbowałem też do zapisywania do zmiennej zapisać DEC ale nic to też nie dało, próbowałem wiele sposobow i mam problem z zapisaniem właściwej liczby do zmiennej, oraz jej prawidłowe wyświetlenie, czy wiecie jak zapisać liczbę do zmiennej przez UART?

@nikolas2020 witam na forum 🙂 Tak, tutaj jest mały haczyk - trzeba poszukać w dokumentacji Arduino funkcji, która będzie tutaj pomocna. Daj znać, jeśli nic nie znajdziesz to podpowiemy.

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