Práctica 7: Control de giro y velocidad de un servomotor
2015
Práctica 7: Control de giro y velocidad de un servomotor 1. Objetivo El objetivo de esta práctica es controlar el cambio e incluso velocidad en el giro de un servomotor usando S4A. Los tres terminales del servomotor de rotación continua se conectarán de la siguiente forma a la placa arduino: el rojo (Vcc) a 5V, el negro (GND) a tierra y el blanco (entrada de datos) al pin digital 8 de la placa arduino. En cuanto al potenciómetro: los extremos irán a Vcc y GND y el pin intermedio se conectará a la entrada analógica 0. 2. Montaje eléctrico Los componentes electrónicos que requiere el montaje eléctrico son los siguientes: 1 servo de rotación continua (podríamos usar un servo de 180⁰) y 1 potenciómetro. Servomotor Los motores servo son similares a motores de corriente continua con la capacidad de permitir crear toda clase de movimientos de forma controlada y además, conseguir mover cargas pesadas. Comercialmente, podemos encontrarlos en tres “versiones”. A saber:
Servos normales (con una rotación de 180º) Servos rotativos (limitados a unas pocas vueltas) Servos de rotación continua (giran 360⁰).
Los servos de rotación continua son interesantes porque, además de la fuerza que lleva implícita todo servo, pueden girar de forma continua en un sentido u otro, consiguiendo implementar una vuelta completa. Evidentemente, se pueden comprar y añadirlos a nuestro proyecto para, por ejemplo, conseguir que muevan unas ruedas y formar así un sencillo vehículo autónomo o un robot. Eso sí, el precio de estos servos es muy superior a otros de media vuelta de rotación. Podemos subsanar el “problemilla pasta” convirtiendo un servo de media vuelta (180⁰), mucho más económico, en uno de rotación continua. Esto se consigue haciendo un hack al servo, que no es más que trucarlo a rotación continua. A mayores, trucándolos aprendemos más.
Susana Oubiña Falcón
Página 1 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Un servo se compone de tres partes principales: motor, reductora y circuito de control con un potenciómetro que permite controlar el ángulo de giro del servo motor, que por lo general suele estar entre 0 y 180 grados, aunque como ya dije, los hay de rotación continua. Cuando modificamos o trucamos un servomotor para conseguir un motor de corriente continua, éste adquirirá la fuerza, velocidad y la baja inercia de los servos, pero eso sí, perderá la capacidad de control de sus giros. Hay que pensar que al hacer el hack eliminamos el tope mecánico del engranaje de salida y así este piñón puede girar libremente. Los servos, para su conexión, poseen 3 terminales que son: el terminal positivo (4 a 8V, de color rojo), el negativo (tierra de color marrón o negro) y la señal de entrada de datos (de color blanco, naranja o amarillo). Estos colores dependen de cada fabricante. Para controlar un servo, es decir, conseguir modificar la posición del mismo según deseemos, se usa la modulación por anchura de pulsos PWM (Pulse Width Modulation), que consiste en generar una onda cuadrada en la que se varía el tiempo que el pulso está a nivel alto, manteniendo el mismo período (normalmente). En la siguiente imagen se observa el tiempo en el que la onda cuadrada está a nivel alto consiguiendo diferentes giros. Cada servo motor, dependiendo de la marca y modelo, presenta sus propios márgenes de operación: 0.3ms
1.2ms 1.5ms
2.1ms 2.5ms
T
PWM para recorrer el rango de operación del servo Futaba S3003 (0⁰, 90⁰ y 180⁰)
Para el servomotor Futaba S3003 los valores posibles de la señal en alto están entre 0,3 y 2,1 ms, que posicionan al motor en ambos extremos de giro (0° y 180°, respectivamente). El valor 1,2 ms indica la posición central, y otros valores de duración del pulso dejarían al motor en la posición proporcional a dicha duración. Podemos conocer la duración del pulso alto para un determinado giro o ángulo de posición θ grados. Esta duración viene dada por la siguiente fórmula: (ms)
Susana Oubiña Falcón
Página 2 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Por lo tanto, en el motor Futaba la duración del pulso alto para conseguir un ángulo de posición θ grados estará dada por la fórmula: (ms) Los siguientes vídeos muestran cómo hacer un hack en un servo de media vuelta para convertirlo en uno de vuelta entera: https://www.youtube.com/watch?v=wXqn1ATzSwY https://www.youtube.com/watch?v=UKBdr6GrKv8 https://www.youtube.com/watch?v=phMV591infI Potenciómetro Es una resistencia variable cuya función es limitar el paso de la corriente eléctrica a su través. Por lo tanto, nos da una medida de ohmios que afectará al valor de la intensidad de corriente que pasa por ella. Los potenciómetros más simples son los reóstatos y en ellos, el valor de la resistencia se varía de forma mecánica. Usando, por ejemplo, un destornillador. Los potenciómetros disponen de tres terminales que podemos llamar A, B y C. Unos de ellos se puede mover o desplazar de forma manual (reóstato) provocando un gran abanico de valores diferentes de resistencias posibles. Uno de los tres terminales del potenciómetro se conecta a la fuente de electricidad y otro es conectado a un punto neutral (toma de tierra – un punto con voltaje cero y sin resistencia). El tercer terminal se conecta a una resistencia. Esta resistencia generalmente está construida en una pieza cuya resistividad (nivel de resistencia) va creciendo desde un extremo hasta el otro. Este tercer terminal es el que manipula el usuario a través de un mando o palanca. Su símbolo eléctrico es el siguiente:
Susana Oubiña Falcón
Página 3 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Símbolos de un potenciómetro
Físicamente, se observa en las siguientes imágenes:
El pequeño circuito eléctrico que vamos a implementar para controlar el servomotor puede verse en la siguiente imagen:
Susana Oubiña Falcón
Página 4 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Esquema en la placa protoboard. Susana Oubiña Falcón (CC-BY)
3. Objetos en el entorno S4A En este caso, usamos un único objeto arduino, el cual estará fijo en el escenario y no presenta movilidad ninguna. La imagen del mismo es la siguiente: Susana Oubiña Falcón
Página 5 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Escenario de la práctica con el objeto arduino. Susana Oubiña Falcón (CC-BY)
4. Programación en el entorno S4A. Para controlar un servomotor del tipo 180⁰ de ángulo de giro, el entorno S4A dispone del comando:
Comando para el servomotor. Susana Oubiña Falcón (CC-BY)
Donde el ángulo es un valor entero comprendido entre 0⁰ y 180⁰. En nuestro circuito, el cable de control se usa para comunicar el ángulo y este ángulo va determinado por la duración del pulso de modo que la longitud del
Susana Oubiña Falcón
Página 6 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
pulso determinará los giros del servomotor de la siguiente forma: (para un servo Futaba S3003)
Un pulso de 1,2ms hará que el motor vaya a 90⁰ (que es lo que denomina posición neutra). Un pulso mayor que 1,2ms hará que el motor se acerque a 180⁰ Un pulso inferior a 1,2ms hará que el motor se acerque a 0⁰
Nosotros no visionaremos los pulsos en el escenario de S4A. El valor Analógico 0 del potenciómetro será nuestro sensor aportándonos un valor entre 0 y 1023. A partir de él, crearemos el valor del ángulo del servomotor, de modo que un ángulo de 90⁰hará que el servo se pare y si es superior o inferior a noventa hará que gire hacia un lado u otro. Por lo tanto, necesitamos crear dos variables, que llamaremos “Potenciómetro” y “angulo”. Estas variables, dejaremos que se muestren en el escenario:
Variables en el escenario. Susana Oubiña Falcón (CC-BY)
El programa del objeto arduino es el siguiente: En él se observa un comando separado del programa principal. Como indica su nota adjunta, ese comando se usará para apagar el servo (primero debemos hacer clic en la bandera roja).
Comando para parar el servomotor. Susana Oubiña Falcón (CC-BY)
Susana Oubiña Falcón
Página 7 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
Programa de nuestro objeto arduino. Susana Oubiña Falcón (CC-BY)
Inicialmente, fijamos la posición de reposo del motor a 0⁰ (podríamos escoger noventa). A continuación, dentro de un bucle “Por siempre” definimos las variables Potenciómetro y angulo enviándole al servo el ángulo de giro (número entero, por eso utilizo el redondeo) que debe girar. Ese ángulo, se convierte en un giro a la derecha o izquierda, con una velocidad determinada. La fórmula del ángulo a partir del potenciómetro (ver siguiente imagen) se debe a que la variable potenciómetro nos dará un valor entre 0 y 1024, pero la variable ángulo, necesariamente, debe ser un valor entero entre cero y 180 grados. Por lo tanto, por una regla de tres, debo conocer el valor del potenciómetro para variarlo un grado. Para ello, dividimos 180 grados entre 1023i y ese resultado, aproximado a tres decimales, es 0.176:
Susana Oubiña Falcón
Página 8 de 9
Práctica 7: Control de giro y velocidad de un servomotor
2015
5. Vídeo demostrativo del funcionamiento de la práctica El vídeo que muestra el funcionamiento de la práctica “Control de giro y velocidad de un servomotor” se visiona en el siguiente link: https://vimeo.com/121811334
“Control de giro y velocidad de un servomotor” en S4A. Susana Oubiña Falcón (CC-BY)
i
Lo correcto sería hacer la división de 180 entre lo que abarca el canal, que son 1024, pero no aprecian cambios si se hace entre 1023.
Susana Oubiña Falcón
Página 9 de 9