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 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.
¿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:
- Tamaño del servo motor insuficiente.
- Fuente de alimentación insuficiente.
- Interferencia física.
- Las interferencias eléctricas.
- 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:
El esquema anterior se puede implementar en los robot Andromina que se muestran a continuación:
Otra ventaja de servos con retroalimentación:
- 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.
Esquema de un Arduino UNO controlando 4 servos con retroalimentación |
Foto del robot Andromina OFF ROAD, al cual se le pueden montar 4 servos con retro alimentación. |
Foto del robot Andromina ON ROAD, al cual se le pueden montar 4 servos con retroalimentació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.
Esquema de un servo estándard RC con retroalimentación dentro del servomotor. |
Otro esquema de un servo estàndard RC. |
Esquema de un servo con retroalimentación fuera del servo. |
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)
-------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------
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)
-------------------------------------------------------------------------------------------------------------------------
SERIA BUENO QUE AGAN UN ESQUEMA GRAFICO CON LOS 4 SERVOMOTORES A LA VEZ
ResponderEliminarexcelente trabajo
ResponderEliminar