jueves, 18 de febrero de 2016

Robot con 4 servos. Tutorial sobre la retroalimentación de los 4 servo motores del robot Andromina.

En este tutorial vamos a enseñar cómo funciona la retroalimentación "Feedback" de los 4 servos que controlan el giro de las 4 ruedas de los robots Andromina. El robot Andromina OFF ROAD y el robot Andromina ON ROAD pueden suministrarse con los 4 servos con retroalimentación "Feedback". Esta es una opción muy interesante que se puede añadir a los dos robot. Ya que podemos medir el ángulo de giro de las 4 ruedas, a través del cable de Feedback de los 4 servomotores. Con el Arduino podemos ir midiendo el ángulo a medida que va variando según vamos girando el servomotor, este valor es en  tiempo real. 
A continuación se muestra el montaje que se tiene que realizar con el servomotor con Feedback y el Arduino UNO o MEGA.
Esquema eléctrico con un servo con retroalimentación
Esquema del montaje del servo con retroalimentación, Feedback.
En la foto siguiente se puede ver un servo motor RC con retroalimentación. este servo motor tiene 4 cables eléctricos, en vez de 3. Los 3 típicos cables de un servo motor RC; 5v , GND y el de la posición. A más tiene el cuarto cable que es el que nos marca la señal eléctrica analógica de retroalimentación. El cual va conectado a los pines analógicos de Arduino. Los servos con retroalimentación pueden ser o servos digitales o analógicos. En el caso del robot Andromina OFF ROAD tenemos 4 servos digitales y en el caso del robot Andromina On Road 4 servos analógicos.
Servo RC con Retroalimentación
Un servomotor con el cable de retroalimentación "Feedback" en color blanco.
¿Por que es necesario un servo con retroalimentación "Feedback"?
Los servos RC por lo general hacen lo que se les dice que hagan, pero hay muchos casos en que un servomotor puede fallar. Estos fallos pueden ser debidos a:
  1. Tamaño del servo motor insuficiente.
  2. Fuente de alimentación insuficiente.
  3. Interferencia física.
  4. Las interferencias eléctricas.
  5. Pérdida de conexión.
En estos casos, la retroalimentación podría avisarle del problema. Pero incluso si el servomotor es de tamaño adecuado y funcionando normalmente, todavía necesita algún tiempo para responder a un comando de posición, y en muchas aplicaciones es igual de importante saber cuándo se alcanza la posición deseada.
Otra ventaja de servos con retroalimentación:
  1. Esta propiedad de los servomotores nos permite saber y memorizar las posiciones de giro de las 4 ruedas en cualquier posición. Para luego volver a colocar los servos en las posiciones memorizadas.
El siguiente esquema eléctrico es de un Arduino UNO con 4 servo motores con retroalimentación. Como puede verse las 4 señales de retroalimentación esta conectadas a 4 pines analógicos. En el esquema inicial de este "post" alimentamos el servo motor directamente de la placa Arduino, ya que al haber un solo servo motor conectado este consume del orden de 250 mili amperios y no hay problema que Arduino suministre esta corriente. Se coloca un condensador en los pines 5v y GND para que suministre una corriente extra justo en el momento de activar el servo. Para que el voltaje se mantengo más continuo. Pero en el esquema eléctrico con 4 servo motores conectados directamente a un Arduino UNO, debemos de vigilar de no activar los 4 servos al mismo tiempo. Ya que esto provocaría un consumo excesivo de mili amperios que sobrepasaría los que puede aportar Arduino UNO. Provocando una baja de tensión en la placa la cual se apagaría por falta de voltaje. Por lo tanto debemos de activar los servos por separado y con un tiempo suficiente para que el voltaje no baje mucho.
Esquema para un robot con 4 servo motores retroalimentados
Esquema de un Arduino UNO controlando 4 servos con retroalimentación
El esquema anterior se puede implementar en los robot Andromina que se muestran a continuación:
Robot 4x4 con 4 servos
Foto del robot Andromina OFF ROAD, al cual se le pueden montar 4 servos con retro alimentación.
Robot 4WD con 4 servos
Foto del robot Andromina ON ROAD, al cual se le pueden montar 4 servos con retroalimentación.
El problema con el control de un servomotor RC estándar con respecto a un microcontrolador es que se trata de 'bucle cerrado' dentro de la caja del servomotor, pero es un "bucle abierto" con respecto a el micro controlador Arduino. Arduino no puede saber en qué posición está realmente el servomotor. Ver foto siguiente. Tú puedes decirle al  circuito de control del servo la posición que deseas para el servo, pero tú no tienes manera de confirmar si el servo se ha puesto en esa posición.
Un sistema de "bucle cerrado" puede utilizar la señal de realimentación para ajustar la velocidad y la dirección del motor para lograr el resultado deseado. En el caso de un motor servo RC, la retroalimentación se hace por medio de un potenciómetro conectado al eje de salida del motor. La salida del potenciómetro es proporcional a la posición (ángulo) del eje del servo.

un servo estándard RC con retroalimentación interior
Esquema de un servo estándard RC con retroalimentación dentro del servomotor.
Otro esquema de un servo estàndard RC. 
Los servos con retroalimentación (Feedback) permiten cerrar este bucle abierto externo al proporcionar también la señal de realimentación al microcontrolador exterior, por ejemplo a Arduino. Ver foto siguiente:
Servo con Feedback
Esquema de un servo con retroalimentación fuera del servo.
Sketck de Arduino UNO o MEGA para leer el valor de retroalimentación del servomotor del robot Andromina:
Programa de prueba de uno de los 4 servomotores del robot Andromina con retroalimentación Feedback. Con este "sketch" podemos leer el ángulo de giro del servomotor de las ruedas, en cualquier posición que lo coloquemos manualmente. Vamos girando el servomotor y nos va dando la medida del potenciómetro que está situado a la salida del eje del servo. Para usar este "sketck" debemos de conectar el servomotor tal y como muestra el esquema eléctrico del inicio de este "post".
--------------------------------------------------------------------------------------------------------------------------
/// Declaración de las variables ////////////////////////////////////////////////////
const int feedback_value = 0; // Pin analogico 0, donde esta conectado la retroalimentación "Feedback" del servomotor
//// Configuración del Arduino ////////////////////////////////////////////////////////
void setup(){ 
  Serial.begin(115200);} // Velocidad de conexión entre el PC y el Arduino
//// Inico de programa //////////////////////////////////////////////////////////
void loop(){
  delay(500);
  int val = analogRead(feedback_value); // Lee el valor que entra por el pin analogico 0 donde esta conectado el potenciómetro del servo
  Serial.print("Valor potenciometro : ");   // Imprime este texto en el puerto serie. 
 Serial.println(val);}                                 // Imprime valores del potenciómetro.
//// Fin del programa ////////////////////////////////////////////////////
--------------------------------------------------------------------------------------------------------------------------
Si añadimos la función siguiente dentro del "Void setup". Se obtiene el doble de resolución en el potenciómetro del servo:
-------------------------------------------------------------------------------------------------------------------------
analogReference(INTERNAL2V56); // Configura la tensión de referencia utilizada a 2,56v por la entrada analógica. ( Solo en el ARDUINO MEGA)
-------------------------------------------------------------------------------------------------------------------------

2 comentarios :

  1. SERIA BUENO QUE AGAN UN ESQUEMA GRAFICO CON LOS 4 SERVOMOTORES A LA VEZ

    ResponderEliminar

Google analytics