Skocz do zawartości

Kurs Arduino - #5 - PWM, serwomechanizmy, biblioteki


Pomocna odpowiedź

#include <Servo.h>

Servo wychylacz;
int pozycja = 0;

void setup() {
  wychylacz.attach(3);
  Serial.begin(9600);
}

void loop() {
  pozycja = analogRead(A5);
  pozycja = map(pozycja, 0, 1024, 0, 180);
  Serial.println(pozycja);
  wychylacz.write(pozycja);
  delay(50);    
}

Ustawianie serwa potencjometrem.

#include <Servo.h> //biblioteka

Servo wychylacz;
int miejsce = 0; //pozycja
int przerwa = 50;

void setup() {
  wychylacz.attach(6); //miejsce podłączenia serva, pin 6
}

void loop() {
  if(miejsce < 180) { //jeśli pozycja jest mniejsza niż 180*
    wychylacz.write(miejsce);
  } else {
      miejsce = 0;
      przerwa +=50;            
    }
  miejsce +=6;
  delay(przerwa);
}

Zwalniający serwomechanizm.

#include <Servo.h>

Servo klocek;
float pozycja = 0;

void setup () {
  klocek.attach(6);
  Serial.begin(9600);
}
void loop() {
  if(Serial.available() > 2) {
    pozycja = Serial.parseFloat();
    if (pozycja <= 180) {
      klocek.write(pozycja);
      Serial.println(pozycja);
      delay(50);
    } else {
        Serial.println("Podaj prawidłową wartość");                
      }
  }
}

Ustawianie serwa przez Uart.

Jak zwykle mam pytania 😄

Jak ustawić okres PWM na 20ms bez biblioteki <servo.h>?

Czy da radę z tej bateri 9v podpiąć drugie serwo?

18 godzin temu, LewySierpowy napisał:

Czy da radę z tej bateri 9v podpiąć drugie serwo?

Nie, baterie 9 V ogólnie nie nadają się do zasilania silników. Co inne pojedynczy test, a co innego normalna praca. Możesz spróbować, ale jest duża szansa, że nie zadziała. Wtedy warto wymienić baterią na 6xAA lub odpowiedni zasilacz.

18 godzin temu, LewySierpowy napisał:

Jak ustawić okres PWM na 20ms bez biblioteki <servo.h>?

A co dokładnie chcesz osiągnąć?

@LewySierpowy Generalnie nie da się tak od ręki zmienić częstotliwości PWM a Ardu...normalnie jest chyba coś koło 500Hz, a wszystkie inne (w tym servo.h) operują już na timerach gdzie możesz uzyskać dowolną częstotliwość (w zakresie max/min oczywiście) poszukaj pod hasłami (PWM Ardu timer) tryb ctc

  • Lubię! 1
Dnia 28.03.2023 o 11:48, Treker napisał:

A co dokładnie chcesz osiągnąć?

Chciałem zrobić sterowanie serwem w wersji trudniejszej ale bez stosowania milis i delay. Trochę ambitniej

17 godzin temu, farmaceuta napisał:

Generalnie nie da się tak od ręki zmienić częstotliwości PWM a Ardu...normalnie jest chyba coś koło 500Hz,

Z tego co wcześniej czytałem to da się ją zmienić bardziej skomplikowanym, acz dosyć krótkimi komendami, tylko, że jest to mocno ograniczone. (nie pamiętam ile jest dokładnie kombinacji z 8?9?) W tych wpisach była mowa o dzieleniu częstotliwości przez jakiś element na literę p... 😄

Co do dzisiaj. Zauważyłem, że ustawiając map() na mniejszy zakres niż możliwości przetwornika zamiast 0-1024 np 0-700 wyskakujące liczby w uarcie przekraczły te 180 stopni do których miało być skalowanie. (może jest to mój błąd, albo arduino ma fazy).

Stąd moje kolejne pytanie.  Czy da się zrobić zakresy w których serwo jest "bardziej wrażliwe". Zrobić map dla trzech zakresów np. od 0-300 jest 0-45 0d 300-400 jest 45-50 od 400-1024 jest 50-180?

Była mowa o precyzji w liczbach. Czy da się zrobić coś w miarę podobnego w kwesti liter, chodzi mi  by println pisał określoną liczbę liter z komunikatu.

PS. Zauważyłem, że jeśli dam precyzję 1 cyfry po przecinku, a liczba będzie np 25,25 to program zrobi przybliżenie i wyśle mi 25,3.

Tak wiem dużo Xd

Witam

Mam pytanie za pierwszym razem podłączyłem zasilanie ze serwomechanizmu do 5V potem poprawiłem podłączyłem do Vin, jak to zostało zaprezentowane w tej lekcji, tylko silnik nie działa poprawnie idzie to jakoś naprawić, wysyłam gif bo słowami trudno opisać. 

ezgif-4-76b1eb6f35.gif

@wobyty jak rozumiem serwo zachowuje się w taki sposób, gdy teoretycznie powinno robić obrót o 180*, Tak? Czy serwo wydaje jakieś dziwne dźwięki o/lub nie chodzi płynnie? Czy podczas tego pierwszego uruchomienia działało poprawnie?

  • Lubię! 1
(edytowany)

@Treker Strasznie świszczy i nie chodzi płynnie, pierwsze uruchomienie było dość dawno i już wtedy były pewne problemy, ale wydaje mi się że za którymś razem działało poprawnie, potem znowu zaczęło się dziwnie zachowywać. Aktualnie się nie porusza tylko drga. A jeszcze jedna rzecz kupiłem kiedyś inne serwa myślałem że to wina serwa, to chciałem wymienić ale one zachowują się tak samo albo nie obracają się albo chodzą nie regularnie.

Edytowano przez wobyty

@wobyty upewnij się, że to nie jest kwestia rozładowanej baterii. Jeśli robiłeś dużo testów to mogła się ona po prostu rozładować. Najlepiej zmierzyć miernikiem czy na wyjściu stabilizatora jest zawsze 5 V. Jeśli tak to zgłoś reklamację do sprzedawcy (zapewne do Botlandu) - pomogą i wymienią serwomechanizm 🙂

  • Lubię! 1

@Treker Napięcie sprawdziłem jest było 4,5V, wymieniłem baterie było tak że chodził dość płynnie obracał się, ale o 90 stopni i wracał do pozycji początkowej ale tylko przez chwilę, potem znowu zaczął się dziwnie zachowywać,  jeszcze kwestia tego, że dość dawno kupowałem zestaw to wymienią nawet jeśli upłynęło więcej czasu niż dwa lata?

@wobyty jeśli serwo jest uszkodzone to nie powinno być problemu z wymianą 😉 Chociaż to wygląda bardziej na problemy z zasilaniem. Nie masz może zasilacza pod ręką? Jest np. w zestawie do drugiego poziomu kursu Arduino.

  • Lubię! 1

@Treker Mam jeszcze jedno pytanie jak kupuje zasilacz do Arduino jakimi parametrami powinienem się kierować, np. takie mogą być?

Napięcie wyjściowe: 12 V DC

Prąd wyjściowy maks: 2 A

Wtyczka wyjściowa DC 5,5 x 2,1

Moc: 24 W

Wtyczka EU

Napięcie zasilania: 90-264 AC

Długość przewodu: 1,2 m

Polaryzacja z plusem w środku

Temperatura pracy: 0~40 °C

Wymiary: 76,5 x 34 x 43 mm

@wobyty taki zasilacz może być bez problemu...kieruj się zawsze tym co będziesz podłączał prócz Arduino i tak dobrać wszystko żeby prądów nie brakowało...ten zasilacz to do Ardu, a potrzebujesz jeszcze przetwornicy step down do zbicia napięcia na 5v właśnie dla serwa...wrzuć kod na którym serwo swiruje

  • Lubię! 1

@wobyty jeśli układ ma zasilać tylko Arduino to zamiast 12 V możesz też wybrać 9 V - będzie również dobre do innych projektów i mniej obciążysz stabilizator wbudowany w Arduino.

  • Lubię! 1

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