Aprende a programar un circuito para controlar la posición de un servomotor dependiendo de la posición de un potenciómetro.
NIVEL DE DIFICULTAD: PRINCIPIANTE.
DURACIÓN DE LA ACTIVIDAD: 30 min.
MATERIALES:
- 1 Servomotor
- 1 Potenciómetro
- 1 Placa Build&Code UNO
- 1 ProtoBoard
¿Qué es un servomotor?
Un servomotor es un motor de corriente continua que, en vez de conseguir un giro continuo, está diseñado para conseguir que gire un determinado ángulo en respuesta a una señal de control, y que se mantenga fijo en esa posición.
Para controlar el servomotor se le envían pulsos cada 20 ms, es decir 50Hz. La anchura del pulso es lo que determinará el ángulo de giro, lo que se conoce como PWM. Esta anchura varía según el servomotor, pero normalmente se encuentra entre 0.5 y 2.5 ms. Esto hace que el servomotor tenga un margen de operación, y pueda moverse entre 0º (pulso con una anchura de 0.5ms) y un máximo, que suele ser de 180º (pulso con una anchura de 2,5ms).
Los servomotores pequeños, como los del kit Build&Code Plus funcionan con 5V y el control se realiza mediante un pin digital PWM de la placa Build&Code UNO, en la que la anchura del pulso determinará el ángulo que adopte el servo.
Un servo tiene 3 conectores: 1 rojo (5V), 1 marrón o negro (Ground) y 1 amarillo o blanco (Control).
CONEXIONES:
- La placa protoboard recibe la electricidad del pin de 5V de Build&Code UNO y vuelve de la protoboard a Build&Code UNO a través del pin GND (tierra). Por ello, conecta todos los GND del circuito entre sí para que todos tengan el mismo valor de GND. En la imagen verás que el color negro es el GND, donde todos los Grounds de cada componente están conectados entre sí y al GND de la placa. El cable color rojo representa los 5V, que alimentan tanto el servomotor como el potenciómetro.
- Conecta el pin de tu servomotor, que está soldado al cable amarillo, a un pin digital PWM. En la imagen verás que el servomotor está conectado al pin digital PWM 6 a través del cable naranja.
- Conecta el pin central de tu potenciómetro a un pin analógico, ya que el potenciómetro es un sensor analógico. La imagen muestra cómo del potenciómetro sale un cable verde hacia el pin analógico A0, para hacer las lecturas del sensor.
CÓDIGO DE PROGRAMACIÓN
Puedes realizar este ejercicio utilizando el programa Arduino o un software de programación por bloques compatible. A continuación encontrarás el código de programación necesario.
Código Arduino
Realizarás un programa que estará leyendo información de los potenciómetros de manera constante. En función de las lecturas que mida, el servomotor girará un determinado ángulo hacia un lado u otro. Para ello usarás la librería “#include”, que se encuentra incluida en Arduino.
El potenciómetro hará lecturas de 0 a 1023, en función de cuánto los hayas hecho girar.
El servomotor del kit Build&Code Plus puede moverse desde 0º a 180º, por lo que tendrás que establecer una relación lineal entre los 1024 estados posibles del potenciómetro y los 180º del servomotor. Para ello usarás la instrucción “map” y el resultado de este “mapeo” será el que usarás para hacer mover el servomotor.
- Descarga el software Arduino y realiza el proceso de instalación.
- Abre el programa Arduino y, una vez en él, copia el siguiente programa:
#include <Servo.h>//Cargamos la librería de control de servo Servo myservo; //Asignamos la variable myservo para trabajar con el servo int sensor = A0; //potenciómetro conectado al pin analógico A0 int valor; //variable creada para guardar los valores del sensor int grados; //variable creada para guardar los valores en grados del potenciómetro (de 0 a 180º) void setup() { myservo.attach(6); //Asignamos el servo al PIN 6 } void loop() { valor = analogRead(sensor); //instrucción para leer y guardar el valor analógico (de 0 a 1023) grados = map(valor, 0, 1023, 0, 180); // escala el valor de la lectura del sensor con los grados de giro del servo myservo.write(grados); //introduce la variable grados en el servo para hacerlo girar }
Código para software de programación por bloques compatible
- Descarga el software y realiza el proceso de instalación.
- Abre el programa y, una vez en él, copia el siguiente programa:
Algunos de los valores que aparecen en la programación surgen de establecer relaciones lineales entre los valores que pueden tomar los componentes implicados.
En este caso, 5.7 es la relación entre los valores del potenciómetro y los grados que gira un servomotor:
1024/180 = 5.7
RESULTADO DEL EJERCICIO
El programa realizado estará leyendo información de los potenciómetros de manera constante. En función de las lecturas que mida, el servomotor girará un determinado ángulo hacia un lado u otro, entre 0º y 180º.