Skocz do zawartości

Hobbistyczny robot - pająk Arduino+PCA9685


kamkol1

Pomocna odpowiedź

Drodzy koledzy chciałbym prosić o pomoc:

Hobbistycznie buduje robota na wzór:

image.thumb.png.46c7ab1f588fe798ec7c0b4cabd496e3.png

W zasadzie interesuje mnie samo podwozie. Wydrukowałem i złożyłem wszystko w całość.

Całość waży: 910g (podwozie, okablowanie, arduino uno, PCA9685, kabel do programowania)

Zastosowałem:

1. Źródło energii ogniwa 3x 18650 4,2V DC 1200mA (waga: 150g - na tą chwile jest poza podwoziem)

2. 18x Servo MG-90S specyfikacja:

image.thumb.png.bb308b6068d49667057bfd331f6727a7.png

3. Płyta Arduino UNO

4. Kontroler PCA9685 nakładka na Arduino uno

image.thumb.png.e556d33649dbff247cff207b52647a7b.png

5. Redukcja dla serv: 300W 20A DC-DC Buck Converter Step Down Module

image.thumb.png.d20bfe256c078d03a5c399aca2523bcd.png

image.thumb.png.6d23b048ef84d74f505a6e1235b5268d.png

6. Całość złożona:

image.thumb.png.3334d31926604c3c9605d57b49089944.png

Na potrzeby startu:

Arduino zasilone bateria 9V

PCA9685 zasilone poprzez step down ustawiony na 5,5V

Program:

#include <Wire.h>                       
#include <Adafruit_PWMServoDriver.h>    

Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver(0x40); // I2C 0x40

#define SERVOMIN  100                   // 0 stopni
#define SERVOMAX  600                   // 180 stopni 400 - 90 stopni
#define SERVO_1 0                       
#define SERVO_2 1
#define SERVO_3 2                       
#define SERVO_4 3
#define SERVO_5 4
#define SERVO_6 5
#define SERVO_7 6
#define SERVO_8 7
#define SERVO_9 8
#define SERVO_10 9
#define SERVO_11 10
#define SERVO_12 11
#define SERVO_13 12
#define SERVO_14 13
#define SERVO_15 14
#define SERVO_16 15

void setup() 
{
  pwm.begin();                          
  pwm.setPWMFreq(60);                   
  delay(10);                            

// pozycja startowa Noga 1

  pwm.setPWM(SERVO_11, 0, 120);
  delay(250);

  pwm.setPWM(SERVO_12, 0, 490);
  delay(250);

  pwm.setPWM(SERVO_13, 0, 400);
  delay(250);

// pozycja startowa Noga 3

  pwm.setPWM(SERVO_1, 0, 350);
  delay(250);

  pwm.setPWM(SERVO_2, 0, 100);
  delay(250);

  pwm.setPWM(SERVO_3, 0, 150);
  delay(250);

// pozycja startowa Noga 6

 pwm.setPWM(SERVO_14, 0, 315);
 delay(250);

 pwm.setPWM(SERVO_15, 0, 600);
 delay(250);

 pwm.setPWM(SERVO_16, 0, 600);
 delay(250);

// pozycja startowa Noga 4

 pwm.setPWM(SERVO_4, 0, 370);
 delay(250);

 pwm.setPWM(SERVO_5, 0, 600);
 delay(250);

 pwm.setPWM(SERVO_6, 0, 575);
 delay(250);

// pozycja startowa Noga 2

//  pwm.setPWM(SERVO_4, 0, 370); // brak wolnego slota
//  delay(250);

 pwm.setPWM(SERVO_7, 0, 150);
 delay(250);

 pwm.setPWM(SERVO_8, 0, 100);
 delay(250);

// pozycja startowa Noga 5

//  pwm.setPWM(SERVO_4, 0, 370); // brak wolnego slota
//  delay(250);

 pwm.setPWM(SERVO_9, 0, 550);
 delay(250);

 pwm.setPWM(SERVO_10, 0, 450);
 delay(250);

}

Mój problem:

Robot podczas zasilenia nie wstaje do końca mimo małej masy

Teraz pytanie czy źle zasilam shield?

Czy dałem za małe opóźnienie pomiędzy serwami podczas podnoszenia się do pozycji startowej i za dużo serw naraz pracuje?

Kod działa poprawnie gdy nie ma obciążenia 

 

Proszę o sugestie z góry dziękuje 

  • Lubię! 1
Link do komentarza
Share on other sites

Na pewno warto zacząć od zmierzenia napięcia, które idzie na serwa podczas ich pracy. Sprawdź czy przy ruchach wszystkich serw napięcie nie siada zbyt mocno 🙂

  • Lubię! 1
Link do komentarza
Share on other sites

Ja bym dodatkowo sprawdził napięcie na akumulatorach i prąd jaki idzie na przetwornicę - te serwa potrafią szarpnąć ponad amper przy obciążeniu. Oczywiście w czasie ruchu serw.

Druga sprawa - nie używałem tego konkretnego shielda tylko modułu, ale tam jest jakiś mosfet na zasilaniu (który zresztą poszedł z dymem bardzo szybko). Dlatego serwa zasilam bezpośrednio z przetwornic, a z modułu biorę tylko PWM/GND (sygnałowe).

Edytowano przez ethanak
  • Lubię! 1
Link do komentarza
Share on other sites

42 minuty temu, ethanak napisał:

Ja bym dodatkowo sprawdził napięcie na akumulatorach i prąd jaki idzie na przetwornicę - te serwa potrafią szarpnąć ponad amper przy obciążeniu. Oczywiście w czasie ruchu serw.

Druga sprawa - nie używałem tego konkretnego shielda tylko modułu, ale tam jest jakiś mosfet na zasilaniu (który zresztą poszedł z dymem bardzo szybko). Dlatego serwa zasilam bezpośrednio z przetwornic, a z modułu biorę tylko PWM/GND (sygnałowe).

Może zasadne było by w takim razie rozdzielenie serw na 2 moduły w ten sposób:

image.thumb.png.aea3673d4ba98a4eb7043caca8145b29.png

Co myślicie? 

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

1 godzinę temu, Treker napisał:

Na pewno warto zacząć od zmierzenia napięcia, które idzie na serwa podczas ich pracy. Sprawdź czy przy ruchach wszystkich serw napięcie nie siada zbyt mocno 🙂

Sprawdzę pomiary jak tylko wieczorem uśpię dzieci, i napisze ile jest

Link do komentarza
Share on other sites

3 minuty temu, ethanak napisał:

Ja mam 11 serw (różnych), zasilanie z dwóch przetwornic.

No i przewody od przetwornic do serw to 2mm²...

Boje się o wagę  czy te serwa to podniosą?

niby 2.1 - 2.5 kg

Link do komentarza
Share on other sites

(edytowany)
4 godziny temu, Treker napisał:

Na pewno warto zacząć od zmierzenia napięcia, które idzie na serwa podczas ich pracy. Sprawdź czy przy ruchach wszystkich serw napięcie nie siada zbyt mocno 🙂

Hej 

@TrekerJuż mam pomiary

Podłączenie:

image.thumb.png.b0f6e69db24baad6a2fdd1944c7d1b7a.png

Pomiar ile idzie na servo:

image.thumb.png.b3eb8b6458cc1c840f253270949a1eb1.png

Pomiar ile wychodzi z Step down:

image.thumb.png.c12425bff7c2fda7fb117648593359ef.png

Czyli wychodzi, że serwa dostają za mało 

1. Podkręcić trochę V wychodzące z Step down?

Przy 6V wychodzących ze Step down

Na serwach mam 4,57V w tym przypadku

 

BEZ obciążenia Step down 6,00V serwa 5,99V

 

* nie wiem czy mogę więcej dawać na shield

2. Rozdzielenie serw na 2 moduły - wydaje się zasadne

 

Edytowano przez KamilKolesnik
Link do komentarza
Share on other sites

Jakie dwa moduły? Daj im porządne zasilanie i to wszystko.

Jak mniemam, nie potrafisz podłaczyc zasilania serw poza wtyknięciem wtyczki w moduł i patrzeniem jak się ścieżki jarają przy 20A? Zrób sobie przejściówkę.

Link do komentarza
Share on other sites

25 minut temu, ethanak napisał:

Jakie dwa moduły? Daj im porządne zasilanie i to wszystko.

Jak mniemam, nie potrafisz podłaczyc zasilania serw poza wtyknięciem wtyczki w moduł i patrzeniem jak się ścieżki jarają przy 20A? Zrób sobie przejściówkę.

Jaką przejściówkę masz na myśli?

  • Lubię! 1
Link do komentarza
Share on other sites

12 godzin temu, KamilKolesnik napisał:

Jaką przejściówkę masz na myśli?

Ja mam po prostu goldpiny wlutowane w płytkę. W Twoim przypadku dałbym jeden komplet na każdą nogę (czyli po trzy gniazda). Do tego wystarczy przewód nawet 0.75² bezpośrednio do przetwornicy.

Aha, przy rozdzieleniu zasilania na kilka przetwornic może być lekki problem jeśli przetwornice mają rezystorek na OUT-.

  • Lubię! 1
Link do komentarza
Share on other sites

Aktualizacja

PCA9685 Arduino uno Shield zastąpiłem dwoma 

Moduł sterownika PWM 16 kanałów PCA9685:

image.thumb.png.0c66318f23f17e9876c73e80b8a5bacc.png

Zasiliłem je każdy oddzielnie z 300W 20A DC-DC Buck Converter Step Down Module

Dodatkowo do każdego podłączone jest tylko po 9 serw 

image.thumb.png.cbb90ba174d1de2caeb13e4e801fdfe8.png

Robot stoi stabilnie na 3 nogach i bez problemu wstaje

Teraz czas na zaprogramowanie ruchu

 

  • Lubię! 1
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.