Servomotor Con Arduino Tutorial de Programación Paso A Paso

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 16

27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

 CURSOS BLOG PODCAST ¿QUIÉN SOY? CONTACTAR

 ACCEDER Buscar en este sitio …

Estás aquí: Inicio/Tutoriales/Fragmentos/Arduino/Servomotor con Arduino tutorial de programación


paso a paso

Servomotor con Arduino tutorial de programación paso a paso


Comentarios(130)
Luis del Valle Hernández

En este artículo te voy a enseñar cómo utilizar un servomotor con Arduino. Antes de
continuar es importante saber qué es 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
Utilizamos cookies propios y de terceros para mejorar nuestros servicios y experiencia de usuario. Si continua navegando,
velocidad de giro, podemos hacer que antes de que se mueva a la siguiente posición
consideramos que acepta su uso. Aceptar Política de privacidad y cookies
espere un tiempo.
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 1/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

Indice de contenidos

1 Características técnicas de un servomotor con Arduino


2 Conexionado con Arduino
3 ¿Cómo programar un servo desde el entorno de Arduino?
4 Conclusión

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.

https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 2/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

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.

¿Quieres montar tu primer proyecto con Arduino?


Con este curso gratuito crearás un Sistema de Riego Automático con Arduino, paso a
paso y en sólo una semana.

Nombre

Email

UNIRSE AL CURSO

Aceptas que almacene tu nombre y email para poder enviarte información de Programarfacil.

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


https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 3/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

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.

https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 4/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

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º.

1 /*
2   Creado: Luis del Valle ([email protected])
3   https://programarfacil.com
4 */
5  
6 // Incluímos la librería para poder controlar el servo
7 #include <Servo.h>
8  
9 // Declaramos la variable para controlar el servo
10 Servo servoMotor;
11  
12 void setup() {
13   // Iniciamos el monitor serie para mostrar el resultado
14   Serial.begin(9600);
15  
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 5/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

16   // Iniciamos el servo para que empiece a trabajar con el pin 9


17   servoMotor.attach(9);
18 }
19  
20 void loop() {
21   
22   // Desplazamos a la posición 0º
23   servoMotor.write(0);
24   // Esperamos 1 segundo
25   delay(1000);
26   
27   // Desplazamos a la posición 90º
28   servoMotor.write(90);
29   // Esperamos 1 segundo
30   delay(1000);
31   
32   // Desplazamos a la posición 180º
33   servoMotor.write(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.

1 /*
2   Creado: Luis del Valle ([email protected])
3   https://programarfacil.com
4 */
5  
6 // Incluímos la librería para poder controlar el servo
7 #include <Servo.h>
8  
9 // Declaramos la variable para controlar el servo
10 Servo servoMotor;
11  
12 void setup() {
13   // Iniciamos el monitor serie para mostrar el resultado
14   Serial.begin(9600);
15  
16   // Iniciamos el servo para que empiece a trabajar con el pin 9
17   servoMotor.attach(9);
18  
19   // Inicializamos al ángulo 0 el servomotor
20   servoMotor.write(0);
21 }
22  
23 void loop() {
24  
25   // Vamos a tener dos bucles uno para mover en sentido positivo y otro en sentido nega
26   // Para el sentido positivo
27   for (int i = 0; i <= 180; i++)
28   {
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 6/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
29     // Desplazamos al ángulo correspondiente
30     servoMotor.write(i);
31     // Hacemos una pausa de 25ms
32     delay(25);
33   }
34

¿Quieres montar tu primer proyecto con Arduino?


Con este curso gratuito crearás un Sistema de Riego Automático con Arduino, paso a
paso y en sólo una semana.

Nombre

Email

UNIRSE AL CURSO

Aceptas que almacene tu nombre y email para poder enviarte información de Programarfacil.

Conclusión
Controlar un servo desde Ardunino es una tarea muy sencilla gracias al uso de la librería
Servo.h. Te recomiendo que sigas practicando con esta librería. Si te ha gustado el artículo,
compártelo. Si tienes alguna duda, deja un comentario abajo de este artículo.

Solo programando se aprende a programar.

Gracias a Shutterstock por ceder los derechos de la imagen

206 Comentarios Programar Fácil con Arduino


https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/

1 Acceder
7/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
206 Comentarios Programar Fácil con Arduino 
1 Acceder

 Recomendar 15 t Tweet f Compartir

Ordenar por los mejores

Únete a la conversación...

INICIAR SESIÓN CON

O REGISTRARSE CON DISQUS ?

Nombre

MUNDO GAIMS Y MAS • hace un año


tengo una duda no se si me puedas ayudar es que estoy
haciendo un brazo robotico y queria ver si se puede hacer
diferentes secuencias sin necesidad de bluetooth si no con
pura programacion con arduino osea que dijamos porgrame
que gire y recoga un objeto y lo mueva a otro lugra y lo deje y
regrese a esta 0 y despues de ahi empieze con otra secuencia
3△ ▽ • Responder • Compartir ›

Juan Pablo Trejos Cardona > MUNDO GAIMS Y MAS


• hace 7 meses
#include <servo.h>

Servo servo_1; // Definimos el nombre de los servo que


vamos a usar
Servo servo_2;
Servo servo_3;

int pos_servo_1 = 0; // definimos lasvariables de


posición
int pos_servo_2 = 0;
int pos_servo_3 = 0;

int tiempo = 20; // definimos el tiempo entre pasos del


servo (velocidad)
int pasos = 2;

void setup() {

servo_1.attach(7); // conectamos el servo_1 al pin 7

ver más

2△ ▽ • Responder • Compartir ›
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 8/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
2 Responder Compartir ›

Luis del Valle Moderador > MUNDO GAIMS Y MAS


• hace un año
Hola, pues la verdad es que no he entendido muy bien
que necesitas de mi. Si puedes especificar por favor,
gracias.
△ ▽ • Responder • Compartir ›

Juan Pablo Trejos Cardona > Luis del Valle


• hace 7 meses
Necesita el codigo el hombre, eso no mas
amigo.
△ ▽ • Responder • Compartir ›

Luis del Valle > Juan Pablo


Moderador
Trejos Cardona • hace 6 meses

Pues yo no realizo códigos, puedo ayudar


a corregir errores pero no hago los
códigos principalmente por falta de
tiempo. Me encantaría poder ayudaros a
todos pero es inviable a no ser que tenga
alguna máquina que detenga el tiempo :)
△ ▽ • Responder • Compartir ›

Miguel Palomo Palau • hace 2 meses


Buenas, quiero sustituir un mando mecánico por un servo de
tres posiciones; se trata del cable que mueve la palanca del
inversor de la caja de cambios de un motor marino. en la
posición central de la palanca está en punto muerto, en la
posición +45º engrana la marcha adelante y en la -45º la
marcha atrás.

Colocaría un interruptor de tres posiciones activado por la


palanca existente que podría dar 12 voltios en la posición que
hiciera mover el servo a +45º, 0 voltios para la posición 0º y 12
voltios en la posición opuesta de la palanca para conseguir la
posición -45º.

Nunca he trabajado con servos ni Arduino, la pregunta es,


¿dónde puedo encontrar información para poder configurar el
sistema? me da la sensación que con algún conocimiento debe
ser un montaje muy sencillo...

Saludos y gracias de antemano.

Miguel
△ ▽ • Responder • Compartir ›

https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 9/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

Luis del Valle Moderador > Miguel Palomo Palau


• hace un mes
Con este artículo sobre el servomotor y Arduino puedes
llegar a hacerlo. Sólo tienes que poner los ángulos que
necesitas.
1△ ▽ • Responder • Compartir ›

Miguel Palomo Palau > Luis del Valle


• hace un mes
Muchas gracias por tomarte tiempo para
contestar!

Entiendo el artículo que has hecho, es muy claro


y se entienden todos los pasos.

Lo que veo es que cambias el ángulo con una


orden directa indicando un ángulo; ¿dónde
puedo encontrar la nomenclatura el idioma de
programación de Arduino?, ya que no quiero
robarte tiempo; ya que yo necesitaría una
especie de "if", cuando el voltaje en una entrada
sea 12V o 5V, lo que acepte Arduino, "then"
ServoMotor. Write (45), i se queda ahí mientras
la netrada tenga corriente. Si no hay entrada
then, write (0) i si imput en otra entrada es 12 V
(0 5V), then write (-45). si se queda ahí mientras
siga teniendo voltaje la entrada. Es físicamente
i ibl h +12 V l d t d
ver más

△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Miguel


Palomo Palau • hace un mes

Hola Miguel, gracias a ti por tus palabras.


Entiendo cual es el problema que intentas
resolver con Arduino y un servomotor y
hay múltiples soluciones.

Aquí te dejo el principal diccionario para ir


aprendiendo sobre Arduino
https://www.arduino.cc/refe... Es la
documentación oficial sin embargo, no se
tratan fundamentos de programación.

Si de verdad quieres entender lo que


haces te recomiendo mi curso que lo
puedes encontrar aquí
https://campus.programarfac... Con esto
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 10/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

ya no sólo entenderás cómo hacer tu


proyecto, podrás enfrentarte a
prácticamente cualquier cosa.
1△ ▽ • Responder • Compartir ›

Jason Mndz • hace 2 meses


Tengo una pregunta, estoy haciendo un proyecto con servos,
en donde, cuando yo presione un pulsador el servo tiene que
girar 180 grados y luego de eso tiene que regresar a 0 grados.
Podrias ser tan amable de ayudarme con la programacion.
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Jason Mndz • hace un mes

Junta este artículo donde hablo de cómo programar el


servomotor y este otro artículo donde hablo de los
pulsadores https://programarfacil.com/...
△ ▽ • Responder • Compartir ›

millaray fabriga • hace 2 meses


tengo una gran duda, es que estoy haciendo una maquina
expendedora y cuando conecto los servo al arduino estos no
me funcionan. cuando les pongo la coriente solo giran algunos
en un momento pero luego se detienen ¿el arduino estara
malo? ¿yo estoy mal?
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > millaray fabriga


• hace 2 meses
O el servomotor está estropeado a lo mejor :) También
puede ser falta de energía que no llegue a todos los
servomotores.
△ ▽ • Responder • Compartir ›

brian • hace 3 meses


mi proyecto es una caja fuerte cuando a esta se le pone una
contraseña se enciende un led verde, yo quiero que el servo
gire cuando eso pase. Seguido a esto yo cubro con mi mano
un sensor de movimiento el cual prende el led rojo. Cómo haría
para que cuando el led rojo se encienda el servo vuelva a girar
a su estado normal osea devolverse?
△ ▽ • Responder • Compartir ›

LOKYPLAY YTub > brian • hace 3 meses


Se me ha ocurrido una idea que podría gustarte. Una
contraseña la cual no dependiese de los números que
teclees, sino de valores que les asignas a cada botón.
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 11/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
, q g
Así puede haber distintas combinaciones haciendo la
caja más segura. Una vez asignado valores a los
botones, podrías poner como condicional el 10 (por
ejemplo) y que cuando alcance ese valor, que el servo a
servoMotor.write(180); (por ejemplo) y que a la vez
ledVerde(HIGH);, ledRojo(LOW);. Y por último el sensor.
Podrías ponerlo de tal forma que al detectar algo a
menos de 5cm cambie a servoMotor(0);,
ledVerde(LOW);, ledRojo(HIGH); y que el contador pase
a 0.

No se si esto te ha ayudado pero en caso de que


necesites más ayuda puedes contactarme al siguiente
correo: [email protected] .

PD: no soy muy bueno en esto.

Un saludo y a seguir programando


△ ▽ • Responder • Compartir ›

Paul Angelo Pinto Carpio • hace 3 meses


Como seria para rotarlo 90º durante 5 segundos y que rote de
nuevo al grado 0º y que pare el bucle
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Paul Angelo Pinto Carpio


• hace 3 meses
Hola Paul, con un delay de 5000 para el servomotor con
Arduino durante 5 segundos. Luego rotas a 0º y si no
quieres que haga nada más tienes dos opciones. Creas
una variable boolean centinela que detecte cuando
pasa una vez y la ponga a false o un bucle infinito al
final while(1)
△ ▽ • Responder • Compartir ›

Alessandro Pinto • hace 4 meses


Quiero que rote unos 90º, que se quede ahi por 3 min y que
vuelva a 0º
△ ▽ • Responder • Compartir ›

Tu mama :V > Alessandro Pinto • hace 4 meses


pues el delay seria de 180000
△ ▽ • Responder • Compartir ›

Paul Angelo Pinto Carpio > Tu mama :V


• hace 3 meses
y como se hace para que pare el bucle
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 12/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Paul Angelo


Pinto Carpio • hace 3 meses

Con while(1)
△ ▽ • Responder • Compartir ›

James Waldir Chavez Soto • hace 4 meses


Hola, buen día, quisiera saber el código para que el servomotor
pueda abrir y cerrar un contenedor, en combinación con un
Sensor Ultrasonido HC-SR04, cuando el sensor de ultrasonido
detecte a alguien en frente del contenedor (basurero
inteligente)?
Muy agradecido de antemano!
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > James Waldir Chavez Soto


• hace 4 meses
Sólo tienes que combinar tu código con el servomotor y
Arduino con este otro código de este artículo
https://programarfacil.com/...
△ ▽ • Responder • Compartir ›

Luis Diaz • hace 4 meses


Oyes quería sabe si me podías ayudar a como puedo
programar dos servo, es que estoy haciendo un girasol solar ?
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Luis Diaz • hace 4 meses

Pues algo parecido al código de arriba pero duplicando


el servomotor con Arduino :)
△ ▽ • Responder • Compartir ›

Christian Pastormerlo • hace 4 meses


Hola, hay algun comando que me devuelva la posicion actual
del servo? Gracias.
△ ▽ • Responder • Compartir ›

Tu mama :V > Christian Pastormerlo • hace 4 meses


Eso se resuelve con el ciclo for, cuando entre en la
posicion que indiques le añades la condicion
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Christian Pastormerlo


• hace 4 meses
Que yo sepa no hay ningún comando para hacer eso
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 13/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
con un servomotor con Arduino.
△ ▽ • Responder • Compartir ›

Christian Pastormerlo • hace 4 meses


Hola, Si tengo tres botones. como hago para que el servo se
mueva 20 grados con el boton 1 30 grados con el boton2 etc
etc.?
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Christian Pastormerlo


• hace 4 meses
Tienes que programar la lógica, inténtalo y me dices.
△ ▽ • Responder • Compartir ›

Miguel Díaz • hace 5 meses


Hola,
Estoy en proceso de hacer una plataforma para una
incubadora y inclinar los huevos con el servo sg90. Tengo
hecho el código más simple del mundo:

void loop() {
for( x=0 ;x<90; x++)
{
motor.write(x);
delay(100);
}
for( x=90; x>0; x--)
{
motor.write(x);
delay(100);
}
}
El problema es que hace el primer bucle bien, luego regresa
hacia atrás bien. Pero cuando debería volver a hacer el primer
bucle hacia adelante da una vuelta completa. Alguien tiene
sugerencias.
Un saludo
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Miguel Díaz • hace 4 meses


Hola Miguel, si da una vuelta completa tu servomotor
con Arduino es debido a que es de rotación continua
¿qué modelo es tu servomotor?
△ ▽ • Responder • Compartir ›

Humberto Alonso • hace 5 meses


muuuuchas gracias
https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 14/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso
muuuuchas gracias
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Humberto Alonso


• hace 4 meses
De nada Humberto :)
△ ▽ • Responder • Compartir ›

Eduardo Barrera • hace 5 meses


Hola disculpa me podrías ayudar con la programación del
arduino quisiera que al aplastar ejemplo= "a" sea 0 grados y al
aplastar ejemplo= "b" sea 45 grados y luedo de cumplir esos 45
grados vuelva a 0 grados
△ ▽ • Responder • Compartir ›

Luis del Valle Moderador > Eduardo Barrera


• hace 4 meses

Introducción a Node-RED y Raspberry Sistema de riego automático con


Pi con un sistema de alarma con Arduino
Arduino En el capítulo de hoy, hablaré del sistema de
Node-RED es una herramienta creada por el riego automático con Arduino. Va a ser un
grupo de Servicios de Tecnologías Emergentes capítulo diferente ya que no voy a hacer un
de IBM. Al contrario de lo que pueda parecer, artículo detallado …
se trata de un …
[+ info...]
[+ info...]

COPYRIGHT © 2018 · PROGRAMAR FÁCIL · AVISO LEGAL

https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 15/16
27/10/2018 Servomotor con Arduino tutorial de programación paso a paso

https://programarfacil.com/tutoriales/fragmentos/servomotor-con-arduino/ 16/16

También podría gustarte