Go Down

Topic: Servo 360° funziona con Arduino UNO ma non con Pro Mini (Read 105 times) previous topic - next topic

squizzy91

Ciao.
Sto pilotando un servo (360° di fabbrica) con un semplicissimo sketch di prova:
Code: [Select]

#include <Servo.h>
Servo myservo;
 
void setup()
{
   Serial.begin(9600);
   myservo.attach(9);
}
 
void loop(){
myservo.write (30);
}


Con ARDUINO UNO, il servo fa quello che deve fare.
Con Pro Mini (atmega328, 8mhz, 3v3) il servo si muove a tratti: 10 di gradi ogni secondo circa (per intenderci).
Contemporaneamente, e allo stesso ritmo, lampeggia il LED associato al pin 13.
Se cambio valore a myservo.write non cambia assolutamente nulla di nulla.

Provato anche a fare senza libreria e sfruttando il PWM, parimento con UNO tutto ok, con Pro Mini stesso problema.


Premetto che ho discreta esperienza con Arduino e ho già pilotato servi in passato (ma mai 360 di fabbrica, al massimo modificati da me).

Any ideas?

pelletta

Stai dentro le specifiche del servo? Forse non gli bastano 3.3V di segnale.
Come lo alimenti?

cyberhs

Non dici come alimenti il servo: se lo alimenti con i 3.3V di Arduino non funzionerà.

Se, invece, lo alimenti a 5-6V, probabilmente il segnale a 3.3V è sufficiente a pilotare la logica.

squizzy91

Ecco il settaggio:
su ARDUINO UNO: gnd, 3v3, pin9
su PRO MINI 3V3: gnd, vcc, pin9 

Datasheet: http://www.goodluckbuy.com/magic-rcm-micro-servo-3-7g-5v-360-degree-high-torque-servo.html

Quindi se ho capito bene l'unica differenza è che nell'UNO il PWM esce 5V, nel PRO esce a 3,3V.

Come risolvo? Vorrei costruire un microrobot alimentato con una lipo 3,7V

cyberhs

Se stai usando PRO MINI a 3.3V la velocità di clock è 8MHz, mentre quella della UNO è 16MHz.

A parte questo, il tuo servo deve essere alimentato da una tensione compresa tra 4.8 e 6V: se lo alimenti con i 3.3V della PRO MINI potrebbe non muoversi affatto oppure stentare nel movimento.

Discorso diverso per la tensione di pilotaggio PPM che dovrebbe funzionare anche a 3.3V, ovviamente alimentando il servo a 5V.

Puoi usare un piccolo convertitore DC/DC step up in modo da portare la tensione fornita dalla LiPO ai canonici 5V e con quelli alimentare la PRO MINI che possiede al suo interno un regolatore che accetta da 3.35 a 12V ed il servo.

squizzy91

Se stai usando PRO MINI a 3.3V la velocità di clock è 8MHz, mentre quella della UNO è 16MHz.

A parte questo, il tuo servo deve essere alimentato da una tensione compresa tra 4.8 e 6V: se lo alimenti con i 3.3V della PRO MINI potrebbe non muoversi affatto oppure stentare nel movimento.

Discorso diverso per la tensione di pilotaggio PPM che dovrebbe funzionare anche a 3.3V, ovviamente alimentando il servo a 5V.

Puoi usare un piccolo convertitore DC/DC step up in modo da portare la tensione fornita dalla LiPO ai canonici 5V e con quelli alimentare la PRO MINI che possiede al suo interno un regolatore che accetta da 3.35 a 12V ed il servo.
Perdonami,
vero che nel data cè scritto 4,8-6v ma se hai letto bene quando provo con Arduino UNO io lo alimento col pin 3v3 e funziona egregiamente.

cyberhs

L'integrato regolatore di tensione MIC5205 usato dal PRO MINI eroga 3.3V con un massimo di 150mA con cui deve alimentare il processore (diciamo circa 80mA): la differenza può essere utilizzata per altri usi.

Nella UNO, invece, i 150mA del regolatore a 3.3V sono tutti a tua disposizione e forse per questo il servo funziona.

nid69ita

Ovvero, @squizzy.... non basta guardare i Volt, mooolto importanti sono anche gli ampere. 
Per i dispositivi che "consumano" elettricità, tipo i motori/servo bisogna conoscere quanta corrente si "ciucciano"  :)
my name is IGOR, not AIGOR

squizzy91

Ovvero, @squizzy.... non basta guardare i Volt, mooolto importanti sono anche gli ampere.
Per i dispositivi che "consumano" elettricità, tipo i motori/servo bisogna conoscere quanta corrente si "ciucciano"  :)
Il servo a vuoto ciuccia 50mA, inoltre per non sforzare l'arduino ho eseguito lo stesso sketch utilizzando una lipo 3,7v e mettendo a massa comune servo, lipo e Pro Mini.

Con questo settaggio invece il microservo non va a tratti, va a "manetta" e non cè verso comunque di cambiargli direzione e velocità

squizzy91

AGGIORNAMENTO:
Con Pro Mini 5v (quello che ho però è atmega168) funziona correttamente. Alimentazione: lipo 7,4v, servo alimentato direttamente dall'arduino
Esperimento ripetuto con un microservo di un altra marca. Stessi risultati (non gli piace il ProMini 3v ma accetta il ProMini 5v).
Quindi:
Pro Mini 5v atmega168: funziona correttamente
Pro Mini 3v3 atmega368: non funziona correttamente

Che sia il microcontrollore del microservo che non lavora con 3v di tensione?

cyberhs

Quote
Con Pro Mini (atmega328, 8mhz, 3v3) il servo si muove a tratti: 10 di gradi ogni secondo circa (per intenderci).
Contemporaneamente, e allo stesso ritmo, lampeggia il LED associato al pin 13.
Il pin 13 lampeggia perché il micro si resetta per il calo di tensione dovuto al servo collegato sulla linea 3.3V.

pelletta

Cominciamo a fare le cose per bene perchè andando per tentativi si risolve poco.
Usa un pacco batterie dedicato per alimentare il servo, almeno sei sicuro che l'alimentazione non c'entra.
Non è saggio usare una batteria per tutto perchè i servi portano anche dei disturbi.
Una volta che hai separato le alimentazioni provi con il segnale di controllo a 3.3V, se vedi che con quello da problemi hai risolto il mistero. Non tutti i servi accettano un segnale a 3.3V

squizzy91

Non tutti i servi accettano un segnale a 3.3V
Questa è la risposta che risolve il 3D

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy