Aiuto urgente con servo che impazzisce

Ciao ragazzi, sto facendo una specie di robot di sorveglianza ma ho riscontrato un problema con i due servi che uso per muovere il supporto della webcam.

Spiego brevemente.
Sto usando la Adafruit MotorShield v2.3 per controllare i 4 motori ed i due servi.
La motor shield è alimentata da un pacco batterie da 7.5V, separatamente dall'Arduino YUN (alimentato da una batteria USB esterna).

Ora, stando a quanto è scritto sul sito Adafruit, l'alimentazione diretta della MotorShield (quella che fa accendere il piccolo LED su di essa) finisce solamente ai motori, mentre i servi usano l'alimentazione di Arduino (qui: Using RC Servos | Adafruit Motor Shield V2 | Adafruit Learning System ).

Ebbene, quando eseguo lo sketch di "test" (qui il codice: #include <Wire.h>#include <Servo.h>#include <Adafruit_MotorShield.h>#inclu - Pastebin.com ) i servi (che sono la prima cosa che prova) funzionano bene e fanno entrambi (uno dopo l'altro) il loro corretto movimento di "pan".

Il problema arriva quando partono le procedure dei motori: appena viene chiamata "avanti()", i servi vanno sparati alla loro corsa massima, come se da quel momento smettessero di prendere energia dall'Arduino ma la prendessero dalla shield.

Il tutto, se lo eseguo con la shield non alimentata (eseguirà tutto lo sketch, servi, motori avanti, indietro.. ecc ecc), funziona correttamente: i servi rimangono nella posizione centrale per tutto il tempo per cui i motori "funzionerebbero" (motori che non vanno perchè la shield è appunto senza alimentazione), per poi riprendere il loro "pan" una volta reiniziato il "void loop()".

Ricapitolando, solo se ho la shield alimentata, al momento di far partire i motori, i servi impazziscono. Servi che dovrebbero essere indipendenti dall'alimentazione dei motori.

E' un po' che faccio varie prove ("myServoS1.detach()" prima di far partire i motori non cambia niente) ma non ho concluso niente...

Qualcuno di voi saprebbe aiutarmi a risolvere? O almeno a diagnosticare meglio il problema...

Grazie mille! :slight_smile:

Hai rimosso il jumper Vin?

Yes, altrimenti si sarebbe già fottuto l'intero YUN credo :grin: :grin:

Boh non riesco proprio a capire cosa sia... :confused:

Nessuno? :slight_smile:

Please :cry:

Vi prego, una manina, non riesco ad andare avanti :cry: :cry: :cry: :cry:

bho, usi una YUN ma nell'esempio usano una UNO
l'unica cosa che vedo diverso da YUN a UNO sono gli interrupt invertiti.
non so se nel tuo caso si fa uso di questi.

http://www.arduino.cc/en/Reference/AttachInterrupt

comunque eventualmente aspetta gli esperti cosa dicono su questo

l'alimentazione non centra niente, i servo hanno 3 pin, due per l'alimentazione e uno per il segnale, il servo si muove solo se dai degli impulsi al segnale.
Prova ad azionare un motore alla volta, ovvero fai andare un servo e un motore, due servo e stesso motore, etc etc etc.
anche io penso ci sia incompatibilità tra le due schede, la yun non ha a bordo una due?

una leonardo, comunque si va a tentativi...

forse può interessare il commento "2"

Grazie mille a tutti, appena posso provo e vi faccio sapere!

@camperos: ho visto che quella libreria però è della Adafruit Motor Shield v1, mentre io ho la v2(.3), dove non parlano di nessun problema... Adafruit_Motor_Shield_V2_Library/Adafruit_MotorShield.h at master · adafruit/Adafruit_Motor_Shield_V2_Library · GitHub :frowning:

@vbextreme: questo video è il comportamento dei servi con i quattro motori che si accendono in successione a distanza di 3 secondi ognuno... effettivamente l'effetto pazzo dei servi sembra aumentare con l'aumento dei motori che si accendono (l'interruttore è collegato al pacco batterie che alimenta solo la shield ed in teoria solo i motori).
Lo sketch usato è questo: Arduino servo test - Pastebin.com

@entrambi: nella pagina del prodotto (qui) la schield è dichiarata comunque compatibile sia con Arduino UNO, che DUE, che Leonardo... possibile che sia parzialmente incompatibile con lo YUN?

Grazie mille ancora a tutti!

edit: inoltre ho notato che a volte sullo YUN da così http://i.imgur.com/DgJAClC.jpg diventa così http://i.imgur.com/JfvcDZP.jpg , e praticamente quando il LED "USB" (casualmente) si spegne, da PC non riesco ad accedere allo YUN, nè tramite browser, nè tramite IDE, nè in altri modi... poi non capisco perchè abbiano chiamato "USB" quel LED che invece a me pare indicare se connesso o no ad una rete Wi-Fi.
Che sta a significare esattamente il LED "USB"? E' normale che random si spenga e si riaccenda dopo trenta secondi? (me ne sono accorto perchè, insieme ad esso, si spegne/riaccende anche il LED della webcam attaccata allo YUN via USB - che nel video è scollegata). E' normale tutto ciò?

ti prego lascialo così mi fa morire :slight_smile:
è stupendo!!!!!!!ahahahahh

Molto probabilmente è un problema di alimentazione, quando tirano i motori arrivano delle distorsioni che fanno impazzire i servo...
Per quello ti si spegne la luce della yun...
Posta uno schema su come hai collegato il tutto e le caratteristiche delle batterie e tutto quello che potrebbe servire.

matteventu:
E' normale tutto ciò?

Assolutamente no.
Il led USB indica quando la parte Linux della stessa è operativa, circa 70-90 secondi (dipende da cosa deve caricare) dopo l'accensione, o un reset della stessa.
Il led USB può essere riprogrammato con altre funzionalità dalla pagina web di configurazione della Yun.
Il comportamento dei servo, ma anche dei led, indica chiaramente un problema di alimentazione della Yun, sei sicuro che la batteria USB è in grado di fornire sufficiente corrente per far funzionare la Yun, che di suo consuma abbastanza per via della parte Linux/WiFi, e i servo ?

La batteria che uso per lo YUN è una Anker da 3200mAh con 1A di output... Mi sembrerebbe strano che non ce la faccia (prima lo alimentavo con una EasyAcc da 10000mAh, ma era enorme e pesante, ed in ogni caso aveva pure lei 1A di output e non aveva mai dato problemi).

Riguardo all'alimentazione tramite batterie della shield e motori, come posso postare uno schema logico? C'è qualche programma o qualcosa che renda "comprensibile" i collegamenti vari?

Thanks :3

PS: lo spegnimento del LED "USB" (e quindi presumo il riavvio di OpenWRT) comunque NON è coincidente con l'impazzire dei servi, tanto che alcune volte accade anche mentre la parte shield/motori è proprio spenta...

edit: rimangio tutto quello del "PS", l'azionamento dei motori (anche solo uno) coincide con il riavvio di OpenWRT (spegnimento del LED "USB")... dannazione :frowning:

puoi usare fidocad, il paint o disegnarlo su carta e poi scannarizzarlo.

matteventu:
La batteria che uso per lo YUN è una Anker da 3200mAh con 1A di output..

Poco per la Yun e due servo visto che quel modello è 1 A in input (allo switching), in out fornisce solo 600 mA, 100 mA in più del massimo previsto per la USB, poi c'è da vedere quanto sono puliti i 5V visto che quelle "batterie" sono realizzati con una singola cella LiPo (4.2V a piena carica) e uno switching step up.

@astrobeed si possono collegare in parallelo piu batterie di quel tipo?

Ecco ho detto una caxxata, la batteria EasyAcc da 10000mAh che usavo prima, e con cui non si riavvia OpenWRT, è da 2.1A e non 1A come la Anker (ho verificato ora, stesso sketch e "tempo di esecuzione", prima una e poi l'altra batteria, con quella 3200mAh/1A si riavvia all'accensione dei motori/impazzimento dei servi, mentre con quella da 10000mAh/2A non si riavvia - nonostante i servi comunque impazziscano all'accensione dei motori).
Per fortuna l'ho presa da Amazon, la rimando indietro e ne prendo una con uscita da 2A (per la capacità dite che vanno bene 3000mAh? O sono comunque pochi e si consumerebbe velocemente a causa dell'alto consumo dei servi?).
Sono indeciso fra EasyAcc Classic 3000mAh (con 2.1A di output) o Anker Astro E1 5200mAh (capacità maggiore, ma mi fa paura l'uscita da 2A con "PowerIQ", temo che magari non funzioni bene il "sistema intelligiente" ed eroghi troppa poca corrente allo YUN), quale dite sia meglio voi?

Sto scannerizzando lo schema con i collegamenti, adesso arriva! :slight_smile:

Scusate se sembra più lo sfogo di un bambino di 5 anni :sweat_smile:


(ovviamente i servi sono collegati, poi fra il pacco batterie AA e la shield c'è un interruttore, ed ovviamente la shield è applicata sullo YUN)

Leggevo nelle faq che certi motori generano parecchio rumore che possono disturbare tutto lo shield.
Consigliano di collegare 3 condensatori da 0.1uF su ogni motore, dovranno essere collegati cosi:

  1. un capo su un ingresso e l'altro sull'altro ingresso
  2. un capo su in ingresso e l'altro alla carcassa
  3. un capo sull'altro ingresso e alla carcassa