miércoles, 13 de enero de 2016

Programar posiciones en un Micro Servo Tower Pro SG90 9G


Los servos son motores de corriente continua (CC), pero en lugar tener un giro continuo que podamos aprovechar (para mover un molino por ejemplo), están preparados para moverse a un ángulo fijo en respuesta a una señal de control, y mantenerse fijos en dicha posición. Estos servomotores son muy frecuentes en Aero modelismo y en robótica, puesto que su funcionamiento y control son muy precisos.
Un servo principalmente está formado por un conjunto reductor (engranajes), un motor de CC y por último por un circuito de control, aunque en la práctica se comporta como un bloque funcional que posiciona su eje en un ángulo preciso en función de la señal de control.
 
Composición de un Servomotor


Habitualmente los servos tiene un margen de operación, es decir, pueden moverse entre 0º y ángulo dado, que suele ser de 180º. Normalmente estos pequeños servos funcionan sobre 5V y el control se realiza mediante una señal de control PWM, en la que el ancho el pulso indica el ángulo que deseamos que adopte el eje. 

En este proyecto vamos a utilizar un  Micro Servo SG90 Tower Pro, puesto que es ideal para las primeras experiencias de aprendizaje y prácticas con servos, ya que sus requerimientos de energía son bastante bajos y se permite alimentarlo con la misma fuente de alimentación que el circuito de control, es decir, si se conecta a un Arduino, se puede alimentar durante las pruebas desde el puerto USB del PC sin mayor problema, aunque es recomendable alimentar el Arduino con una fuente de alimentación externa de más de 700 mA, para evitar problemas de corriente.


Micro Servo SG90 Tower Pro
 
A continuación os muestro las principales características de las que dispone:

Ø   Dimensiones (L x W x H) = 22.0 x 11.5 x 27 mm  (0.86 x 0.45 x 1.0 pulgadas)
Ø   Peso: 9 gramos
Ø   Longitud de cable de conector: 24.5cm
Ø   Velocidad: 0.10 seg/60° @ 4.8V
Ø   Torque: 1.8 Kg-cm @ 4.8V
Ø   Voltaje de funcionamiento: 3.0-7.2V
Ø   Temperatura de funcionamiento: -30 ~ 60
Ø   Ángulo de rotación: 180°
Ø   Ancho de pulso: 500-2400 µs
 
 
Lista de Materiales:

 
·         Arduino UNO Rev.3.
 
·         Cable USB tipo A-B.
 
·         Micro Servo TowerPro SG90 9G (180°).
 
·         Protoboard.
 
·         Cables de conexión.
 
 
Código del programa:
 


 
 
Video:
 

20 comentarios:

  1. gracias por tu aporte

    esta muy detallado

    ResponderEliminar
  2. pinServo not was declared in the scope
    eso me dice. Es un mensage de error que no se porque me sale. He copiado el programa igulal.
    ¿Me podrias ayudar?

    ResponderEliminar
  3. Si no has modificado el código te tiene que funcionar sin problemas. Utiliza el código que tienes en la descarga, porque si lo copias puedes haber cometido un error de mayúsculas/minísculas que son los más típicos, o al transcribir los nombres que no los hayas puesto exactamente igual. Saludos

    ResponderEliminar
    Respuestas
    1. Hola tengo un servo controlando el timón de un bote a control remoto, este gira perfecto en un sentido pero en el opuesto solo gira apenas unos milímetros, el servo no tiene las ruedas dentadas en mal estado, compre otro y lo sustituí y sigue sucediendo lo mismo, sera el emisor?, debería agregarle resistencias al potenciometro como he visto en otros post?, podrías ayudarme?

      Eliminar
  4. Hola tengo un servo controlando el timón de un bote a control remoto, este gira perfecto en un sentido pero en el opuesto solo gira apenas unos milímetros, el servo no tiene las ruedas dentadas en mal estado, compre otro y lo sustituí y sigue sucediendo lo mismo, sera el emisor?, debería agregarle resistencias al potenciometro como he visto en otros post?, podrías ayudarme?

    ResponderEliminar
  5. como le hago para ponerlo de 35 a 180 grados?

    ResponderEliminar
  6. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  7. Sabes a mi ne suena el servo en ciertas posiciones tengo dos y cada uno me suena como si se trabara en ciertos ángulos

    ResponderEliminar
  8. Saludos y de casualidad que codigo es el integrado del servomotor??

    ResponderEliminar
    Respuestas
    1. No tengo ni idea. Abre un servo y lo ves...lo he buscado en la WEB y no encuentro nada.

      Eliminar
  9. Buenas tardes. Mi nombre es Javier. He fabricado un brazo robótico con estos microservos y me gustaría controlar no solo el ángulo, sino pararlo en la posición que me interese. Entre otras, lo mas importante es la posición inicial.
    Muchas gracias

    ResponderEliminar
    Respuestas
    1. Te recomiendo que busques por la web algún código para brazo robótico que tenga los mismos elementos y grados de libertad que el que tu estés construyendo. Un saludo

      Eliminar
  10. Buenas tardes. Soy muy nuevo en el uso del arduino. Tengo una tarjeta arduino mega 2560; y el mismo servo que usas en el ejemplo (Sg90). Copie el código de tu pagina y mi servo no para de girar. He intentado con muchos códigos y sigue igual. No se que estaré haciendo mal. Agradezco tu orientación

    ResponderEliminar
    Respuestas
    1. Si no para de girar estas utilizando un servo de 360°, con ese simplemente controlas el sentido de giro y la parada pero no le puedes posicionar en ángulos concretos. Puede ser un sg90 que tenga el potenciometro interno deteriorado y por eso no te hace caso. Revisa la instalación de todas las maneras porque te tendría que funcionar como se demuestra en el video. Un saludo

      Eliminar
  11. HOla Mariano,
    Tengo unos servos con el problema que giran mas de 180 grados, mas o menos 190 Grados
    Esto corrige el problema?
    Gracias de antemano por tu respuesta?

    ResponderEliminar
  12. El micro servo no necesita alimentación externa? Gracias de antemano

    ResponderEliminar
  13. buenas tardes, como hago para detener el servo motor de giro 360???

    ResponderEliminar