ACTIVIDAD FINAL DEL MODULO
10 SERVOMOTOR
Servomotor con Arduino tutorial de programación paso a paso
click
El servomotor tiene un ángulo de giro de 0º a 180º, a no ser que se modifique su estructura interna para que este pueda girar 360º.
Funcionamiento del servomotor:
La tensión de alimentación de los servos esta comprendida entre los 4 y los 8 voltios. El control del servo simplemente consiste en indicarle la posición en la que se debe situar, mediante una señal cuadrada TTL modulada con PWM.
La duración de nivel alto de la señal indica la posición donde pondremos el eje del motor.
En la siguiente imagen podemos ver la posición del servo(ángulo) en función de la duración del pulso, estos margenes son genéricos, ya que cada servo tiene sus rangos de operación.
El rango de operación corresponde con el ancho de pulso mínimo(0º) y el máximo(180º) , que el servo entiende. Por lo general estos rangos van desde 0,3ms hasta 2,1ms.
En el ejemplo de la imagen se aprecia que la posición inicial(0º) se encuentra en 0,3 ms, la posición central(90º) en 1,5ms y la posición máxima(180º) en 2,1 ms. Si se sobrepasan los límites de movimiento del servo, este comenzará a vibrar o emitir un zumbido, pidiendo el cambio en la anchura del pulso.
El periodo que se suele utilizar suele estar entre 10ms y 30ms, aunque lo habitual es 20 ms, trabajando a una frecuencia de 50Hz. Si el periodo es menor al mínimo, esto puede interferir en la temporización interna del servo, causando zumbido y vibración. En caso contrario si fuera mayor que el máximo pasará a estado dormido entre pulsos provocando que se mueva en pequeños intervalos.
Ademas de todo esto, el servo para que mantenga la misma posición , es necesario enviarle contínuamente pulsos de anchura constante. De esta forma, el servo mantendrá su posición a pesar de que exista alguna fuerza externa que intente mover su posición.
Terminales del servo
El servo motor cuenta con tres terminales de conexión.
- Vcc: corresponde al cable de alimentación, de color rojo.
- Gnd: es el cable de masa, puede ser negro o marrón.
- Señal: es por donde se aplica la entrada de pulsos(Pwm). Puede ser de color amarillo,blanco o naranja.
¿Qué significa "crear un objeto"?
En programación, un objeto es una "cosa" que podemos controlar con comandos. En este caso, el objeto Servo representa un servomotor y nos permite ordenarle que gire a ciertos ángulos.
Piensa en un objeto en la vida real, como un control remoto de TV:
- El control remoto (el objeto) tiene botones (funciones).
- Puedes usar esos botones para cambiar de canal, subir volumen, apagar, etc.
En el código de Arduino, cuando escribimos esto:
Servo miServo;
Estamos diciendo:
"Voy a usar un servomotor, y lo llamaré miServo
para darle órdenes después."
Ejemplo con Comparación
Si quisiéramos usar un auto de juguete en un programa, podríamos hacer algo así:
Auto miAuto; // Creamos un objeto "miAuto"
miAuto.avanzar(); // Le decimos que avance
miAuto.frenar(); // Le decimos que frene
En el caso del servomotor, hacemos lo mismo:
Servo miServo; // Creamos el objeto "miServo"
miServo.write(90); // Le decimos que gire a 90°
Resumen Sencillo
- Un objeto es algo que podemos controlar en programación.
- En Arduino,
Servo miServo;
crea un objeto que representa un servomotor. - Luego, usamos
miServo.write(90);
para moverlo, como si fuera un control remoto.
Funcionamiento del servomotor.
Un servomotor o servo. Es un motor eléctrico pero con dos características especiales.

Por un lado, nos permite mantener una posición que indiquemos, siempre que esté dentro del rango de operación del propio dispositivo. Por otro lado nos permite controlar la velocidad de giro, podemos hacer que antes de que se mueva a la siguiente posición espere un tiempo.El ejemplo más típico es un coche teledirigido, esos que utilizan los niños y no tan niños. Estos juguetes suelen tener un mando a distancia donde podemos controlar la velocidad y el giro del coche. Precisamente el giro se suele hacer con un servomotor donde indicamos, en cada momento, la posición o el ángulo de giro que queremos que tenga en un preciso momento.
Características técnicas de un servomotor con Arduino
Hay varios modelos de servomotor con Arduino. En este caso vamos a utilizar un Micro Servo 9g SG90 de Tower Pro. Como siempre digo, hay que mirar la ficha técnica del producto. Todos tienen un funcionamiento muy parecido y la programación puede variar muy poco.

Cosas a tener en cuenta con este dispositivo. Lo primero, el ángulo de giro, en este caso nos permite hacer un barrido entre -90º y 90º. Lo que viene a ser un ángulo de giro de 180º.
Aunque el servo puede moverse con una resolución de más de 1 grado, este es el máximo de resolución que vamos a conseguir debido a la limitación de la señal PWM que es capaz de generar Arduino UNO.
Estos motores funcionan con una señal PWM, con un pulso de trabajo entre 1 ms y 2 ms y con un periodo de 20 ms (50 Hz). ¿Qué quiere decir todo esto? Este dato nos indica la velocidad máxima a la que podemos mover el servomotor con Arduino. Solo podremos cambiar de posición cada 20 ms. Esto dependerá del tipo y marca de nuestro servo.
El elegir una salida PWM u otra da lo mismo, todas las salidas de este tipo funcionan igual.
Conexionado con Arduino
Las conexiones dependerán del tipo de servomotor con Arduino que estemos utilizando.

Todos deben tener 3 cables. Uno irá a tierra, otro a la alimentación de 5 Voltios y el tercero a un pin PWM. También puedes utilizar un shield para controlar servomotores, como el de Adafruit.
¿Cómo programar un servo desde el entorno de Arduino?
Ahora vamos a ir a lo interesante, la programación. Para ello tenemos que hacer uso de una librería externa para poder controlar el servo desde Arduino. Para incorporar la librería tenemos que ir a Programa/Include Library/Servo.

El código para girar el motor de 0º a 180º
Esta acción ya nos ha hecho un include en nuestro código que nos permite controlar el servo. Os dejo a continuación un código básico para posicionar el servo en los ángulos 0º, 90º y 180º.
De la librería Servo.h hemos declarado un objeto o variable servoMotor y hacemos uso de dos métodos. Por un lado el attach, que nos permite indicar en que pin tenemos conectado nuestro servo, y por otro lado el write, donde indicamos en qué ángulo queremos posicionar nuestro servomotor.
Girando grado a grado el servomotor
Vamos a realizar otro ejemplo un poco más complicado, en este caso queremos que el servo haga un barrido desde el 0 al 180º y luego en sentido contrario. Vamos a utilizar los mismos métodos pero incorporamos dos bucles for, uno para cada sentido.
Actividad Sumativa 3:
Aquí tienes un código para usar un sensor DHT11 junto con un servomotor en Arduino.
Funcionamiento
- El DHT11 mide la temperatura.
- Si la temperatura supera 25°C, el servomotor gira a 90°.
- Si la temperatura baja de 25°C, el servomotor regresa a 0°.
Código Arduino
#include <Servo.h> // Librería para el servomotor
#include <DHT.h> // Librería para el sensor DHT11
#define DHTPIN 2 // Pin donde está conectado el DHT11
#define DHTTYPE DHT11 // Tipo de sensor (DHT11)
DHT dht(DHTPIN, DHTTYPE); // Crear objeto DHT
Servo miServo; // Crear objeto Servo
void setup() {
Serial.begin(9600); // Iniciar monitor serie
dht.begin(); // Iniciar sensor DHT11
miServo.attach(9); // Conectar servomotor al pin 9
}
void loop() {
float temperatura = dht.readTemperature(); // Leer temperatura en °C
Serial.print("Temperatura: ");
Serial.print(temperatura);
Serial.println(" °C");
if (temperatura > 25) {
miServo.write(90); // Si la temperatura es mayor a 25°C, mueve el servo a 90°
} else {
miServo.write(0); // Si es menor o igual a 25°C, vuelve a 0°
}
delay(2000); // Esperar 2 segundos antes de medir otra vez
}
Conexión del DHT11 y Servomotor
Explicación del Código
- Incluimos las librerías
Servo.h
yDHT.h
. - Definimos el pin del DHT11 y el tipo de sensor.
- Creamos los objetos
dht
(para el sensor) ymiServo
(para el motor). - En
setup()
:- Iniciamos el monitor serie.
- Activamos el sensor DHT11 y el servomotor.
- En
loop()
:- Leemos la temperatura del DHT11.
- Si la temperatura es mayor a 25°C, el servomotor gira a 90°.
- Si es menor o igual a 25°C, vuelve a 0°.
- Esperamos 2 segundos y repetimos el proceso.
Prueba el código en Tinkercad o en un Arduino real. Si necesitas ajustes, dime.
Conclusión
Controlar un servo desde Arduino es una tarea muy sencilla gracias al uso de la librería Servo.h. Te recomiendo que sigas practicando con esta librería.
9 Sensores Análogos de Arduino
Sensor de sonido KY-037
Módulo que detecta sonidos .mediante un micrófono electret y entrega señales analógicas y digitales. Tiene dos potenciómetros para ajustar la sensibilidad del micrófono y el umbral de detección del canal digital.0
¿Qué es un micrófono electret?
Un micrófono electret es un tipo de micrófono de condensador que usa un material electret (un dieléctrico con carga eléctrica permanente) para detectar sonidos y convertirlos en señales eléctricas.
Funcionamiento del micrófono electret
- Captación del sonido:
- Una membrana delgada vibra con las ondas sonoras.
- Variación de la capacitancia:
- La membrana está cerca de una placa fija, formando un condensador.
- Cuando la membrana vibra, la capacitancia cambia, generando variaciones de voltaje.
- Amplificación con FET interno:
- Un pequeño transistor de efecto de campo (FET) amplifica la señal, ya que el micrófono genera una corriente muy débil.
- Salida de la señal:
- La señal amplificada puede ser procesada por un circuito externo, como un sensor de sonido KY-037 o una tarjeta de sonido en dispositivos de grabación.
Ejemplo de aplicación KY 037
- En el KY-037, el micrófono electret detecta sonidos y genera una señal analógica proporcional a la intensidad del sonido, que se puede leer con Arduino.
- También se usa en micrófonos de celulares, audífonos, cámaras y equipos de grabación por su pequeño tamaño y bajo consumo.
Características principales del sensor
- Salida digital (D0): Se activa cuando el sonido supera el umbral ajustado.
- Salida analógica (A0): Proporciona un voltaje proporcional a la intensidad del sonido.
- Tensión de operación: 3.3V - 5V (compatible con Arduino).
JIJIJIJIJI
ACTIVIDAD FINAL DEL MODULO
PARTE 1 : SIMULACION Enunciado Diseñar un circuito con Arduino que mida la temperatura usando un sensor TMP36 y controle un servomotor, movi...
-
Guía de Ejercicios en Tinkercad: Uso de Interruptores de Deslizamiento, LED y Lógica Booleana Descripción General En esta guía de 10 ejerc...
-
Servomotor con Arduino tutorial de programación paso a paso click ¿ QUE ES UN SERVOMOTOR ? Un servomotor esta constituido por un pequeño m...