Servo no funciona con Arduino

2

He conectado un servo (AS-18 acoms) a mi arduino y he cargado el ejemplo de barrido en él. Pero nada pasa . Aquí hay una foto. He conectado el terminal positivo del servo a 5 V en la placa, negativo a tierra y el cable de pulso al pin digital 9. ¿Es eso correcto?

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo 
            // a maximum of eight servo objects can be created 

int pos = 0;    // variable to store the servo position 

void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 


void loop() 
{ 
  for(pos = 0; pos < 180; pos += 1)  // goes from 0 degrees to 180 degrees 
  {                                  // in steps of 1 degree 
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
  } 
  for(pos = 180; pos>=1; pos-=1)     // goes from 180 degrees to 0 degrees 
  {                                
    myservo.write(pos);              // tell servo to go to position in variable 'pos' 
    delay(15);                       // waits 15ms for the servo to reach the position 
 } 
} 
    
pregunta Ghost

2 respuestas

1

El AS-18 genera 6.5 kg-cm ( 0.6374 N-m ) par, y gira a aproximadamente 180 degrees per second , descargado. Esto equivale a una potencia nominal estimada de 2 Watts ( de calculadora aquí ) .

Suponiendo una eficiencia del 75% sin carga, el consumo de energía al comienzo del movimiento (cuando se está superando la inercia) es de aproximadamente 2,67 vatios.

A 5 voltios y 2,67 vatios, la corriente requerida es 534 Milliamps . Esto está por encima de la corriente que puede proporcionar una línea de 5 voltios de Arduino. De la pregunta se desprende que la fuente de alimentación de Arduino es USB: las limitaciones del puerto USB de 500 mA reducen la corriente disponible al servo, ya que la placa de Arduino consumirá parte de los 500 mA disponibles.

Idealmente, el pin de alimentación del servo debe ser alimentado por una fuente separada de 5 (o 6) voltios de CC, con la conexión a tierra de esta fuente externa conectada a la tierra de Arduino. 4 pilas alcalinas AA deberían ser suficientes.

Si esto no es viable, entonces se podría intentar alimentar la placa Arduino con una fuente de alimentación de CC de 1 a 12 voltios externa o mejor, a través del conector de barril de entrada de CC en la placa.

Sin embargo, tenga en cuenta que el Arduino tiene un fusible reajustable de 500 mA a bordo. Si bien el fusible no debe explotar con una carga momentánea de 500 mA, como cuando el servo comienza a girar, si se usa para conducir una carga significativa, la corriente sostenida requerida puede exceder el punto de disparo del fusible. Por lo tanto, tal acuerdo es marginal en el mejor de los casos.

Esto nos lleva de nuevo a la recomendación de encender externamente el servo.

    
respondido por el Anindo Ghosh
0

¿Estás seguro de que la carga al Arduino se realizó correctamente? Para asegurarse de que el código se está ejecutando, puede poner algunas impresiones en serie en el código y luego abrir el monitor en serie para verlo. Por ejemplo, puedes imprimir cada paso agregando la línea Serial.println (pos, DEC); Justo después de myservo.write (pos). No te olvides de Serial.begin (9600); en configuración ()

    
respondido por el BrianK

Lea otras preguntas en las etiquetas