Salve a tutti, per un esame all'università io e il mio gruppo stiamo realizzando un ragno a 4 zampe con 2 servomotori ciascuna(tutti TowerPro SG90), e ovviamente Arduino (uno REV3).
Stiamo riscontrando strani problemi purtroppo.
Allora, innanzitutto tutti i servo sono collegati (per ora tramite una breadboard, poi se avremo tempo si passerà a una millefori) a un alimentatore che eroga 4.30V e un massimo di 600 mAh (tutti in parallelo) e ai vari pin di Arduino, alimentato tramite l'usb.
Partendo da un programma del genere:
#include <Servo.h>
Servo a1,a2,b1,b2,c1,c2,d1,d2;
void setup () {
a1.attach(4);a1.write(50);delay(20);
a2.attach(5);a2.write(40);delay(20);
b1.attach(3);b1.write(100);delay(20);
b2.attach(2);b2.write(90);delay(20);
c1.attach(6);c1.write(50);delay(20);
c2.attach(7);c2.write(40);delay(20);
d1.attach(8);d1.write(100);delay(20);
d2.attach(10);d2.write(90);delay(20);
}
void loop () { }
si riscontrano subito i primi problemi:
- E' necessario caricare lo sketch più volte (3 o 4) affinché i servo si muovano correttamente
- Durante un primo caricamento di uno sketch come quello di cui sopra, i servo iniziano a ruotare a piacimento
Sembra che i delay dopo la chiamata della funzione write siano necessari altrimenti i servo fanno tutto di testa propria e iniziano a muoversi! :S
Insieme al prof. abbiamo provato con vari alimentatori (1 ampere, 2 ampere,...) tutti da 5V, notando che la tensione ai capi del generatore si abbassa a 2-2.5V dopo che questo viene collegato al circuito, e conseguentemente i servo si muovono a loro piacimento.'Come je pare' diremmo qui a Roma, e in effetti lo sketch caricato su Arduino è sempre quello che ho postato sopra, quindi non dovrebbero far altro che arrivare all'angolo indicato e poi fermarsi li, bah...
Il prof ha proposto di provare con regolatori di tensione (che dovrebbero mantenere stabile la tensione erogata), uno ogni 2 servo, ma purtroppo il comportamento dei motori rimane sempre lo stesso: si muovono a piacimento, ed è necessario resettare Arduino con l'apposito bottone circa 3 o 4 volte affinché eseguano quello che lo sketch gli dice di fare.
Leggendo in rete e parlando con il prof sembra che la soluzione sia di usare un diodo per ogni servo in modo da far fluire corrente solo dall'alimentatore verso il servo e non viceversa, oppure di utilizzare ad esempio il TLC5940 che ha 16 pin PWM ed è in grado di controllare fino a 16 servo.
Noi non sappiamo più che fare, sono circa due settimane che ci vediamo molto spesso per portare avanti il progetto e ci rimane poco più di un mese per completare il progetto.
Diodi?TLC5940?
Per far funzionare i servo correttamente sono necessari SOLO pin in grado di generare un segnale di tipo PWM? E quindi l'uso del TLC5940 sarebbe proficuo, o solo perdita di soldi e tempo? E' sbagliato il circuito(composto in pratica dagli 8 servo in parallelo a un generatore con la massa in comune col GND di arduino)???
Non abbiamo più idee
Grazie a tutti!