Aiuto, testa multisensore Servo 360

Ho costruito una testa multi-sensore, meccanizzata con servi 180°, per fare delle sperimentazioni di logica del preferibile che avevo studiato nella mia tesi triennale e non ho avuto nessun problema fino ad adesso e tutto funziona alla perfezione.

Volevo adesso montare la testa su un supporto mobile per farla muovere. Così ho preso due servo 360 dall'arduino store. Ne ho collegato uno alla volta ad arduino, ho caricato lo sketch Sweep ma sento solo un ronzio nel servo quando dovrebbe girare ma non si muove! Per tutti e due i servo è così, ho provato anche ad alimentare arduino a 12V col trasformatore, con pila 9V, con 4 pile stilo 6V, niente sempre la stessa cosa. Ho controllato più volte i fili dei pin ma sono tutti corretti, bianco al pin 9 PWM, rosso al positivo, nero al negativo. Non riesco a capire perché non mi funzionano. Forse i servo 360 si controllano in modo diverso rispetto a quelli 180?

Quale può essere il problema? Di codice o del servo? :(

Grazie in anticipo della risposta

con servo 360 Gradi non intendono che la corsa é 360 gradi anziche 180 dei Servo normali ma che girano di continuo senza finecorsa. Quei Servo non vanno bene per i Tuoi scopi.
Devi trovare altri servo oppure prendere un ingranaggio 1 a 2.
Ciao Uwe

Cioè intendi che girano di continuo come una ruota? Perché se fosse così mi va bene, li userei come due ruote purché si possa cambiare la loro direzione di rotazione... se invece girassero in un solo verso, gli potrei dare la direzione con altre due ruote davanti collegate a un servo 180.

Ho visto su internet che quelli a rotazione continua possono essere usati come ruote. Ho trovato il datasheet del servo: http://www.pololu.com/file/0J336/SM-S4303R.pdf però non c'è scritto l'amperaggio.

Per controllarlo gli ho dato vari valori dal pin 9, si sente il ronzio ma non gira, non si muove, che mi consigliate di fare? Dov'è che sbaglio?

Pilotalo con la libreria servo.h. Plotandolo 0 gradi gira in un verso e con 180 gradi nell'altro. Intorno a 90 gradi dovrebbe star fermo. Ciao Uwe

Ho usato la libreria Servo.h solo che non si muove, fa solo a 180 un tipo di ronzio, sotto i 90 un altro tipo di ronzio e a 0 gradi non fa nessun rumore. In tutti e tre i casi non si muove.

Forse si deve calibrare? O forse non ha abbastanza potenza? O forse è difettoso, però entrambe i servi mi danno lo stesso problema...

Leggendo il datasheet vedo che c'è un rest point adjustment, forse devi regolarlo. Non ho mai usato questi servi ma mi pare non sia a rotazione continua (ha un middle point stop) ma a rotazione di 360 gradi in un senso e nell'altro. Cioè ha un finecorsa. Almeno così mi sembra...

dauwak: Ho usato la libreria Servo.h solo che non si muove, fa solo a 180 un tipo di ronzio, sotto i 90 un altro tipo di ronzio e a 0 gradi non fa nessun rumore. In tutti e tre i casi non si muove.

Forse si deve calibrare? O forse non ha abbastanza potenza? O forse è difettoso, però entrambe i servi mi danno lo stesso problema...

Forse hai invertito sul conettore del Servo il pin di alimentazione con quello del segnale. Ciao Uwe

Grazie Matteo, no è a rotazione continua, ho risolto il problema :) Grazie Uwe, ho provato a invertire, il datasheet diceva che il rosso era il positivo e il bianco il segnale. In realtà è al contrario, il rosso è il segnale e il bianco è il positivo, il nero è sempre il negativo.

Poi per pilotarlo la libreria Servo.h non va bene, sto usando il comando writeMicroseconds e mi sto scrivendo una libreria personale per controllarlo. Con 1500ms sta fermo, se più di 1500 gira in un verso, se meno nel verso opposto.

Quando ho finito di scrivere per me la libreria, magari la pubblico nelle voci Servo del playground con le istruzioni e lo schema così magari chi ha lo stesso servo e lo stesso problema lo trova già risolto...

dauwak: Grazie Matteo, no è a rotazione continua, ho risolto il problema :) Grazie Uwe, ho provato a invertire, il datasheet diceva che il rosso era il positivo e il bianco il segnale. In realtà è al contrario, il rosso è il segnale e il bianco è il positivo, il nero è sempre il negativo.

Ok, ma allora non capisco cosa è quel middle point stop, qualcuno sa spiegarmi? XD

Praticamente è il valore in millisecondi del PWM che fa stare fermo il servo (in questo caso è settato a 1.5 ms o, usando i microsecondi di Arduino, 1500, ma può essere cambiato muovendo una vite speciale nel servo con un cacciavite). Se i microsecondi sono meno di 1500 gira in un verso, se sono di più di questo valore in un altro. La velocità di rotazione è data da quanto maggiori o minori sono i valori rispetto al middle point stop (1500 come abbiamo detto). Per esempio con 1200 il servo va più veloce che col valore 1400. Allo stesso modo, per il verso opposto, con 1810 gira più lento che col valore di 1940, ecc... Spiegato? :) XD

Ciao!

dauwak: Praticamente è il valore in millisecondi del PWM che fa stare fermo il servo (in questo caso è settato a 1.5 ms o, usando i microsecondi di Arduino, 1500, ma può essere cambiato muovendo una vite speciale nel servo con un cacciavite). Se i microsecondi sono meno di 1500 gira in un verso, se sono di più di questo valore in un altro. La velocità di rotazione è data da quanto maggiori o minori sono i valori rispetto al middle point stop (1500 come abbiamo detto). Per esempio con 1200 il servo va più veloce che col valore 1400. Allo stesso modo, per il verso opposto, con 1810 gira più lento che col valore di 1940, ecc... Spiegato? :) XD

Ciao!

Ah ok , ecco un altra cosa che non sapevo. Grazie!! XD

Di nulla!

Purtroppo invece quando tutto sembrava risolto, ecco un altro problema XD: quando collego due servi (pin 9 e 10) e li comando contemporaneamente non riesco più a controllarli, girano entrambe nello stesso verso per quanto cambi i valori PWM tramite writeMilliseconds con libreria Servo.h oppure senza l’uso della libreria col semplice analogWrite…
In sostanza, se li uso singolarmente o uno alla volta mi rispondono ai comandi ma contemporaneamente no!
E’ normale una cosa del genere quando si usano più servo? Quale è il problema sennò?

Ciao, attento ad alimentare i servi direttamente dall'arduino, di solito arduino impazzisce e girano a caso, non so se ti sta capitando questo ma... Usa una seconda fonte di alimentazione con GND comune ad Arduino. Dai un occhio qui: http://www.gioblu.com/tutorials/azionamenti/94-come-modificare-un-servomotore http://www.gioblu.com/tutorials/azionamenti/188-modifica-rotazione-continua-microservi http://www.gioblu.com/tutorials/azionamenti/166-modifica-rotazione-continua-microservi-parte-ii http://www.gioblu.com/tutorials/azionamenti/166-modifica-rotazione-continua-microservi-parte-iii http://www.gioblu.com/tutorials/azionamenti/167-eliminare-interferenze-date-dai-servomotori

e qui un progetto simile al tuo: http://www.gioblu.com/tutorials/programmazione/221-image-scanner-con-sensore-erer-tiltpan-e-processing

Grazie, sìsì perfetto mi impazzisce letteralmente e non risponde più ai comandi girando in un solo verso e alla stessa velocità, ho provato con due diodi come l'esempio però non sono sicuro del risultato, domani provo meglio anche l'altra soluzione con l'alimentazione esterna...

Interessantissimo il progetto del visore con led Ir! Mi serviva una cosa di questo tipo per il mio progetto, sto lavorando sulla traduzione in algoritmi ed eventuale verifica di alcuni assunti di filosofia estetica e psicologia (su cui avevo riflettuto per la mia tesi triennale) che se applicati possono permettere a una macchina di imparare senza far ricorso agli algoritmi genetici. Quindi uno strumento a portata di mano che permette di "percepire visivamente" l'ambiente circostante calza a pennello per le mie sperimentazioni!

Grazie ci sono riuscito, oggi ho riprovato come diceva la guida che mi hai mandato, col diodo senza alimentazione esterna e tutto funziona correttamente adesso!

Ciao