Problemi realizzazione ragno 4 zampe/8 servomotori

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 :frowning:

Grazie a tutti!

La tensione va da 4.0 a 7.2. Secondo me 4.8 sono pochini per lo sforzo che devono fare.

Grazie per la risposta, proverò ad aumentare il voltaggio. Potrebbe essere questa la spiegazione allo strano comportamento di arduino e dei servi?

Il problema non é la tensone ma la potenza massima che puó erogare l' alimentatore.
Non sapendo quali servo hai dirrei che a ogni Servo servono fino a 1A.
Ciao Uwe

They draw about 0.6 amps at stall current.
Uno, sono 8...

uwefed:
Il problema non é la tensone ma la potenza massima che puó erogare l' alscattore.
Non sapendo quali servo hai dirrei che a ogni Servo servono fino a 1A.
Ciao Uwe

TowerPro SG90... ma se i servo richiedono più corrente di quella che può erogare l'alimentatore allora nn dovrebbero stare fermi, o magari muoversi a scatti, ma comunque seguire quello che arduino dice di fare?
Il problema è che i servo si muovono, però non secondo i comandi che gli passa arduino...
Non capisco il nesso tra bassa corrente e movimenti senza senso dei servo....

Hai provato a testarli solo uno per volta ?

Si, e funzionano tutti a dovere :slight_smile: Inoltre, come ho scritto prima, i servo seguono perfettamente il codice che carico su arduino solo dopo 3/4 reset della scheda, quindi diciamo che 'funzionano'. Però una volta su 5, il che è stressante :frowning:

Ma l'alimentatore che usi eroga solo 600mAh oppure eroga 600mAh per tutti i servo quindi circa 5 Ampere in totale?

gbyolo:

uwefed:
Il problema non é la tensone ma la potenza massima che puó erogare l' alscattore.
Non sapendo quali servo hai dirrei che a ogni Servo servono fino a 1A.
Ciao Uwe

TowerPro SG90... ma se i servo richiedono più corrente di quella che può erogare l'alimentatore allora nn dovrebbero stare fermi, o magari muoversi a scatti, ma comunque seguire quello che arduino dice di fare?
Il problema è che i servo si muovono, però non secondo i comandi che gli passa arduino...
Non capisco il nesso tra bassa corrente e movimenti senza senso dei servo....

Se l'alimentatore non puó dare la corrente che i servo chiedono si abbassa la tensione. L' eletronica dei Servo non funziona sotto una certa tensione. Praticamente la tensione si abbassa, l' elettronica non funziona piú. Il motorio non viene piú pilotato e percui assorbe meno tensione. La tensione si alza di nuovo. ecc

Ciao Uwe

Con un diodo in serie tra ogni servo e l'alimentatore e un regolatore di tensione siamo riusciti a far funzionare i servo a 'vuoto', senza peso, in modo giusto :slight_smile:

Ora, ho un alimentatore per pc, dai 12V otterrei un massimo di 20 ampere (secondo l'etichetta) il che è più che perfetto immagino.
A questo punto pensavo di utilizzare un regolatore di tensione ogni 2 servo in modo da abbassare la tensione a 6V e limitare la corrente a un massimo di 1.5A (secondo datasheet), penso che andrebbe bene :slight_smile:

Tuttavia mi chiedevo se fosse necessario fare qualche altra considerazione prima di collegare l'alimentatore direttamente al circuito con regolatori/diodi/servi, magari qualche circuitino di protezione, non saprei :S
Ad esempio ho visto che con i regolatori di tensione si usa spesso collegarli con due condensatori come in allegato... che ne dite?

I due condensatori sono d'obbligo per avere un minimo di sicurezza. Io consiglierei di metterne 4, due con capacità piccola per i disturbi ad alta frequenza e due medi per le interferenze a frequenza più bassa. A questo punto però potresti considerare l'acquinsto di controller già assemblati dove collegare molti più servo.

in serie agli altri due dici?
Visto che dovrò mettere i 4 regolatori in parallelo col generatore mi sembra piu sicuro cosi come dici tu.
Grazie! :slight_smile:

Non puoi mettere dei regolatori in paralello. Vietato!!!!!
Puoi collegare a ogni regolatore solo un certo numero di servo. Questo funziona perché hai tutte le masse in comune.
Ciao Uwe

uwefed:
Non puoi mettere dei regolatori in paralello. Vietato!!!!!
...

Di solito e' vero ... c'e' una sola eccezione, quando sei assolutamente sicuro che tutti i regolatori provengono dallo stesso lotto di produzione, ed anche in quel caso, massimo 2 o 3 ... comunque come regola generale e' sempre bene evitarlo ovunque sia possibile.

Se ti serve un regolatore che regga piu corrente, usa una versione "K" in TO3 (se disponibile), oppure usa il regolatore per pilotarci uno o piu transistor di potenza connessi come regolatori in serie (ovviamente se piu di un transistor, ognuno dovra avere la sua brava resistenza di potenza da 0,1 ohm o simile sull'emettitore :slight_smile: ) ...

intendevo usare un regolatore ogni due servo altrimenti avrei solo 1,5A per tutti i servo il che è poco :S quindi dovrei prendere un regolatore che regga più corrente, ci piazzo due condensatori e sto a posto :slight_smile:
Grazie a tutti!

gbyolo:
intendevo usare un regolatore ogni due servo altrimenti avrei solo 1,5A per tutti i servo il che è poco :S quindi dovrei prendere un regolatore che regga più corrente, ci piazzo due condensatori e sto a posto :slight_smile:
Grazie a tutti!

1 regolatore per 2 Servo va bene. Basta collegare tutte le masse.
Altrimenti prendi un aaliemntatore switching di potenza e tensione adeguata.

Ciao Uwe

uwefed:
1 regolatore per 2 Servo va bene. Basta collegare tutte le masse.
Altrimenti prendi un aaliemntatore switching di potenza e tensione adeguata.

Ciao Uwe

Un regolatore ogni due servo, quindi 4 regolatori con Vin che è sempre quella del generatore, la massa in comune con servo e arduino, e la Vout va ad alimentare i due servo. Grazie per la pazienza!

Etemenanki:
oppure usa il regolatore per pilotarci uno o piu transistor di potenza connessi come regolatori in serie (ovviamente se piu di un transistor, ognuno dovra avere la sua brava resistenza di potenza da 0,1 ohm o simile sull'emettitore :slight_smile: ) ...

Uhm, questa cosa mi interessa...

Ti ho buttato giu uno schema di principio ... i condensatori elettrolitici vanno bene da 220uF in su, a parte l'ultimo che deve essere dimensionato in base alla corrente totale che ti serve (regola "spannometrica", sui 2000uF per ogni A, se e' di piu non fa male), i condensatori non elettrolitici possono essere normali 100nF poliestere, il transistor puo anche essere un vecchio 3055, o un MJE, o comunque uno NPN che regga piu della corrente che ti serve, la resistenza sulla base mettila da 1 ohm 3 o 5 W se il transistor e' bello robusto.

Il risultato migliore si ottiene usando un regolatore variabile, tipo LM117 o simili, cosi la regolazione compensa anche le cadute (anche con un regolatore fisso puoi comunque compensare la caduta sul transistor, mettendo un diodo 1N4007 fra il terminale GND del regolatore fisso e la massa, catodo a massa ... non e' il massimo ma funziona :wink: )

Etemenanki:
Ti ho buttato giu uno schema di principio ...

e buttalo subito nel cestino.
Con un transistore messo cosí non avrrai mai una tensione stabile sull'uscita.

http://www.circuit-zone.com/?electronic_project=697

Ciao Uwe