Skocz do zawartości

Sterowanie serwami przez arduino za pomocą pololu maestro servo controller


Kajeloki

Pomocna odpowiedź

Serwa są zasilane z 5V. Tylko elektromagnes jest zasilany z 12V. Wifi(zamiast BT) jest natomiast zasilane z 3,3V. Tak jak mówiłem - schemat jest aktualny tylko teraz nie wykorzystujemy pololu i zamiast BT mamy Wifi (serwa sa bezpośrednio sterowane z Arduino)

Link do komentarza
Share on other sites

Zakładając, że niebieskie przewody wychodzące z serw są brązowe, czerwone są pomarańczowe, a żółte — żółte, wygląda to rozsądnie. Nie zaznaczyłeś których pinów używasz i nie pokazałeś swojego programu testowego — tam mogą być dalsze błędy.

Nie masz może dostępu do oscyloskopu albo analizatora logicznego?

Mierzyłeś może napięcie na serwach podczas pracy?

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

Serwa cyfrowe są bardzo agresywne, szybko startują ale pobierają wtedy bardzo dużo prądu. Ja bym do prostego testu podłączył jedno serwo wprost do zasilacza 5V i tak samo zrobił z Arduino. Żadnych płytek stykowych i kabli po drodze. Poza tym zasilanie ze wspólnej linii kilku serw i komputerka to proszenie się o kłopoty. Właśnie takie. Czy zauważyłeś restarty Arduino podczas testów? Czy masz pewność, że program pracuje poprawnie? Może w setup zapal (tylko raz) diodkę lub wypisz "Hello to ja" przez serial a dopiero potem machaj serwem w loop(). Gdy zobaczysz wielokrotne mrugnięcia lub kolejne napisy, będziesz musiał zmienić schemat zasilania.

Link do komentarza
Share on other sites

Marek... - no właśnie zasilałem serwa z jednej "szyny" płytki stykowej. Jako, że aktualnie nie mam dostępu do ramienia, to dopiero jutro wypróbuje zasilić serwa poprzez osobne "szyny" (patrz załącznik)

[ Dodano: 08-11-2017, 21:50 ]

Deshipu - używam pinów PWM (9, 5 i 6), podczas testowania tych serw mierzyłem multimetrem napięcie na + serw cyfrowych - było 5V. Co do kodu:

to jest kod na wysierodkowanie serw (w domu działał jak podłączałem pojedynczo kazde serwo osobno po kolei, w szkole po podpięciu wszystkich serw na raz tylko analogowe zadziałało, a cyfrowe tykały w środku)

#include <Servo.h> //Biblioteka odpowiedzialna za serwa

Servo myservo1;
Servo myservo2;
Servo myservo3;//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() {
 // put your setup code here, to run once:
myservo1.attach(9);
myservo1.write(90);
myservo2.write(90);
myservo3.write(90);
}

void loop() {


}

A tutaj drugi kod "przykładowy" do testów (tak samo jak wcześniej: przy testach pojedynczego serwa osobno po kolei każde działało, później po podłączeniu wszystkich tylko analogowe)

int pos = 0;    // variable to store the servo position

void setup() {
 // put your setup code here, to run once:
myservo.attach(9);
}

void loop() {
 // put your main code here, to run repeatedly:
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
   // in steps of 1 degree
   myservo.write(pos);              // tell servo to go to position in variable 'pos'
   delay(15);                       // waits 15ms for the servo to reach the position
 }
 for (pos = 180; pos >= 0; pos -= 1) { // goes from 180 degrees to 0 degrees
   myservo.write(pos);              // tell servo to go to position in variable 'pos'
   delay(15);                       // waits 15ms for the servo to reach the position
 }
}

1758914643_podczenie_serw.thumb.png.acbb94c912c061f0145c6fcc1bcd6404.png

Link do komentarza
Share on other sites

Zauważyłeś magiczny zwrot " płytki stykowej"? Dużo mniej ważne jest gdzie podłączysz serwa. Kluczowym jest zasilanie procesora. Serwa "zrozumieją" trochę gorsze zasilanie, bo w modelach samolotów też nie jest idealnie. Natomiast procesor tego nie wybacza, nie możesz podpinać go do linii z których prąd ciągną serwa. Cyfrowe w szczególności.

Jeśli podłączyłeś - jak na poprzednim schemacie - Arduino równolegle do szyny zasilania serwomechanizmów, to jakikolwiek ich start powoduje nagły spadek napięcia na płytce stykowej, widziany przez procesor jak zaproszenie do resetu. Gdyby wspólne z silnikami zasilanie miało np. 12V (czego serwa nie przeżyją - dlatego piszę gdyby) to Arduino miałoby wciąż szansę zrobić z tego poprawne 5V swoim pokładowym stabilizatorem. Przy bezpośrednim wejściu na 5-woltowe Vcc każdy śmieć dostaje się wprost do procesora. Dlatego sposób zasilania musi być dobrze przemyślany. Po to masz gniazdko Vin by z niego korzystać. W Twoim przypadku warunkiem koniecznym jest użycie dwóch zasilaczy: jeden już masz - mocne 5V dla napędów, ale potrzebujesz też drugi - już dużo mniejszy, najlepiej coś w okolicach 9-12V dla Arduino. Wykorzystaj jego stabilizator do tłumienia zakłóceń, zapłaciłeś za niego. Dziwne oszczędności (zasilacz wtyczkowy 9V kosztuje pewnie mniej niż jedno serwo cyfrowe) wychodzą właśnie w takich przypadkach.

Zrób test jak napisałem: bezpośredniego zasilania serwa cyfrowego z zasilacza. One nie biorą swoich dobrych parametrów dynamicznych z powietrza. Musisz za nie zapłacić dużo większymi impulsami prądu i co za tym idzie, dużo lepiej zrobić im zasilania. Multimetr takich zapadów nie pokaże, bo ich czasy są dwa rzędy wielkości krótsze niż jego pomiar. A procesorowi wystarczy kilka us obniżki by "załapać" reset.

Link do komentarza
Share on other sites

Ok. Serwa działają 🙂 Zrobiłem oddzielne zasilanie do arduino i oddzielne do serw. Musze jeszcze przewody lepsze ogarnąć bo te nie dają rady przy łączeniu: przewody od serwa- przewody-przewody od płytki stykowej. Działają jedynie przy łączeniu: przewody od serw-przewody od płytki stykowej. No i oprócz tego musze jeszcze kod napisać do sterowania telefonem przez wifi i gotowe 😃. Jakby były jakieś problemy z kodem to ktoś mógłby pomóc?

Link do komentarza
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!

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

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.