Si aún no eres usuario, puedes crear una cuenta o entrar
Tutorial: Control de servomotores con Arduino

Hola de nuevo a todos los Brico-Fans de BricoGeek.com!

Hoy os traigo un tutorial, sobre el funcionamiento de los servomotores y control de estos sobre arduino.

Todo de una manera sencilla y gráfica para simplificar todo el proceso, siendo sin duda un buen ejemplo para iniciarse en el uso de Arduino + Servomotores.

No me ha sido posible grabar ningun video para este tutorial, pues aun no dispongo de un medio de grabación de calidad, pero pronto tendré uno, y grabaré todo el proceso + pruebas de funcionamiento.

De momento os dejo este tutorial.

Todo esto, aqui en BricoGeek.com!





Antes de nada, mencionaré los elementos necesarios para completar este tutorial, todos disponibles en la tienda:

-Arduino Duemilanove o Arduino Mega (El que se usará en este tutorial)

-Servomotor/es (En este caso he usado un servomotor miniaturizado, por su reducido consumo de energia, apto para arduino)

-Cables M/M para conexión facil, fiable y flexible entre Arduino, ProtoBoard y Servo, aunque recomiendo cojer el pack de 100, por un precio asequible y no tener que andar estirando nunca mas (Pack de 100 cables premium M/M)

-Placa de protipado (Si no se dispone ya de una)

Si tenemos todo esto, es el momento de empezar a montar...

Pero antes un poco de teoria sobre servomotores.

La interfaz de conexión del servomotor consta normalmente de 3 cables o conductores, generalmente de 3 colores distintos,a saber:

-Rojo

-Marrón o Negro

-Azul, Amarillo u otros

Donde por norma general el cable Rojo es el positivo o fase, el Marrón o Negro es el tierra o masa, y el restante de varios posibles colores es el señal, que nos permitirá controlar el servomotor con precisión.

Normalmente el señal de controla con PWM, osea pulsos de ancho modular, con los que podemos mover con precisión el servomotor a cualquier punto de su radio de ación.

Y como podemos provocar dichos pulsos?

Pues muy sencillo usando uno de los pines marcados como PWM en arduino.

Vamos pués a conectar nuestro servo con arduino:

Tal como se observa en el gráfico, se conecta el servo al positivo que nos da arduino, y al GND tmabién proporcionado por nuestro arduino, y por ultimo conectamos el señal (amarillo) al pin numero 2, marcado como PWM.

Si mas o menos te has enterado de lo explicado ya estarás deduciendo como va a funcionar :)

Ahora vamos crear un codigo que nos permita mover el servomotor, asi que atentos:

 

#include <Servo.h>
 
Servo servo1;  // Crea un Objeto servo
int posicion;    // Variable de la posicion del servo
 
void setup()
{
  servo1.attach(2);  // Selecionamos el pin 2 como el pin de control para els ervo
}
 
void loop()
{

  posicion = 150;            // Establecemos el valor de la posicion a 150º
  posicion = map(posicion, 0, 1023, 0, 179);     // Establecemos la relacion entre los grados de giro y el PWM
  /* Con el mapa de valores anterior establecemos una relacin proporcional */
  /* entre el pulso minimo 0 con el grado minimo, 0 tambien y el pulso maximo*/
  /* 1023 con el grado maximo, 179*/
  servo1.write(posicion);                  // Escribimos la posicion con el mapa de valores al servo
  delay(150);                           // Y le damos un tiempo para que sea capaz de moverse
}

 

Como veis, no es especialmente dificil, solo hace falta tener las cosas claras.

Conectamos nuestro arduino al usb del pc, cargamos este programa con las conexiones especificadas anteriormente y moveremos nuestro servo a la posicion 150º

Espero que lo disfruteis, y ya sabeis, criticas, sugerencias o pedidos de tutoriales, son bienvenido.


Comparte esto con tus amigos!

Comentarios:


Federico Peleh
Enviado el 26/09/2010 (16:08)
Muy bueno! Te felicito! yo estoy arrancando con el mundo de ARDUINO y me son muy utiles los tutoriales que suben aqui!.
Alguien sabe de algun tutarial como para principiantes? Saludos.-

Andoni Diaz Puerta
Enviado el 26/09/2010 (16:19)
Hola Federico,
En nuestra seción de tutoriales, hay unos que van desde conectar el arduino pasando por el uso de pulsadores y acabando por sistemas de leds.

Un saludo

alejandro ballesta
Enviado el 26/09/2010 (20:32)
Hola Andoni,

buen ejemplo para la conexión de servos al arduino. Creo recordar que en algún sitio vi un video de conexión de 8 servos o más al arduino y todos danzando a la vez, muy vistoso.

Un comentario: he visto que en el diagrama está conectado el positivo del
servo a la toma +5Vdc de la placa arduino. ¿qué consumo es el esperado del servo? Ten en cuenta que no consume lo mismo con carga que sin carga.

La toma +5vdc de la placa como mucho te dará 500mA si está conectado por usb.

¿Qué tensión aguanta el servo? Los que yo he visto van desde 4,8 hasta 7,2V sin problemas. Yo lo conectaría el positivo a la toma Vin de la placa y usaría una fuente externa para alimentar a la placa, de este modo será la fuente externa la que alimente al servo y no el regulador de la placa o tu propio ordenador si usas el usb.



Andoni Diaz Puerta
Enviado el 26/09/2010 (20:44)
Hola Alejandro,
Por supuesto, tienes toda la razon del mundo, el servo en cuestion funciona con una tension de 6V en su nivel mas alto, pero añadir una fuente externa seria quizas complicar las cosas, en un tutorial enfocado a un nivel principiante y que sirve como aliciente para que la gente se inicie en este mundo.

Gracias por tu comentario :)

Jose Manuel Curbelo Delgado
Enviado el 31/10/2010 (21:25)
como podria hacer esto mismo, pero quiero hacerlo con 2arduino duemilanove + 2 xbee pro con dos xbee shields, es decir mover el servo desde el Pc donde esta uno de los xbee, el servo estaria en el xbee remoto, estoy detras de algun projecto parecido a esto que comento de este proyecto pero no encuentro, gracias.

Andoni Diaz Puerta
Enviado el 01/11/2010 (11:25)
Hola Jose Manuel,
Podrias montarte una interfaz de comandos sencilla, que permitiese enviar y recivir cadenas de texto (son como mucho 10 lineas con arduino + xbee) y asignar movimientos a las cadenas recividas.
Por mero hecho de velocidad y eficiencia, es mejor hacerlo con enteros envezde cadenas.

Un saludp

Manuel Izquierdo
Enviado el 20/04/2011 (20:42)
Hola,
primero me gustaría saber si es posible (imagino que sí), controlar el servo para que gire más de 360º, con quitar el tope digo yo que debería bastar. Quizá sea mejor para mi proyecto un motor paso a paso, pero mi presupuesto es limitado y ya que tengo el servo quiero aprovecharlo.
Y después de ésta parrafada viene la pregunta.
En caso de que sea posible hacer lo que explico, ¿basta con modificar los valores de grados de giro y PWM? Es decir, para que de cuatro vueltas completas ¿pongo 1440º, 8148 en PWM y a correr?
Como habréis notado, soy nuevo en esto y no tengo mucha idea, más bien ninguna.

Gracias y saludos.

Manu Gallego
Enviado el 21/04/2011 (10:18)
Vale, no hace falta que me respondais. Veo que los PWM controlan la velocidad. Sera cuestion de ir probando.

Gracias y saludos.

carlos jose calvo
Enviado el 20/09/2011 (07:14)
disculpa amigo estoy comenzando a usar arduino y quiero mover 2 servomotores e casualidad tienes por ahi como se hace que trabajen en forma de abrir y cerrar los 2 servos como si fuera una pinza


Disseny Web
Enviado el 13/10/2011 (09:30)
Hola! porque si arduino puede manejar los servos directamente la gente le instala controladoras de servos cuando realiza una cnc casera, perdonar mi ignorancia pero aún no me iniciado en la electrónica y estoy pensando en hacerlo de la mano de arduino.

Gracias!

Oscar Gonzalez Oscar Gonzalez es un colaborador!
Enviado el 13/10/2011 (09:40)
Hola Disseny, en la máquinas CNC no se utilizan servomotores normalmente sino que motores paso a paso, que sí necesitas de controladoras especiales.

Saludos!

Disseny Web
Enviado el 13/10/2011 (14:29)
Mucha gracias por la respuesta Oscar!

hermann becker ramirez castillo
Enviado el 15/11/2011 (04:08)
hola Andoni mira recién he adquirido un arduino uno y me guastaría saber cómo puedo controlar servomotores pero cada uno se mueva independiente con su respectivo potenciómetro en internet eh encontrado pero solamente eh visto con un solo servomotor te ..mi objetivo es controlar 4 servomotores?bueno agradecería tu ayuda ?.saludos


Andoni Diaz Puerta
Enviado el 15/11/2011 (14:02)
Hola Hermann,
Es tan sencillo como asignar a cada Servo un pin con PWM, y una entrada analógica para cada potenciometro, leer cada una de estas entradas y escribir el valor a su PWM correspondiente.
Todos los servos (los 4 que propones) pueden ir amarrados a una fuente común, como la que proporciona Arduino (5V y GND, dependiendo de cada caso).

Saludos

hermann becker ramirez castillo
Enviado el 22/11/2011 (00:31)
hola ANDONI He hecho tal como me has dicho pero me arroja falla al momento q quiero compilar la programación le asigne su pin correspondiente de entrada análoga al igual q sus salidas de pwm pero no he tenido éxito?.me podrás ayudar pasándome la programación de por lo menos dos servos como ejemplo como te dije quiero q cada servo se maneje con su respectivo potenciómetro ..Bueno ojala puedas ayudarme

Juan Padrón Martín
Enviado el 22/11/2011 (16:53)
http://www.olimex.cl/tutorial/Guia%20MCI%20-%20Servo%20motor%20con%20Arduino.pdf

Exe Exe
Enviado el 17/12/2011 (21:39)
Hola, estoy en un proyecto personal de armado de un quadcoptero. Estoy utilizando la placa arduino duemilanove y necesito unos datos:
1- ¿Que servos comprar?, dado que necesito 4 para poder maniobrar una estrella de metal de alrededor de 1,5 kg. (Veo que hay mucha variedad y desconozco la relacion peso-dimension-fuerza)
2- Que tipo de bateria poder ponerle al quadcoptero para alimentar a la placa arduino y los 4 servos para este proyecto. (Pueden ser varias pilas tipo duracell de las grandes)
3- Para poder controlarlo remotamente, veo que viene el modulo XBee para agregarle a la placa arduino y poder manejarlo desde una notebook por ejemplo pero no encuentro como se llama el tipo de placa que va a la pc y se comunica con la XBee que se adapta a la placa arduino.

Como veran, en mi consulta soy bastante pretencioso con lo que solicito. En verdad necesito una orientacion sobre que comprar y como ensamblarlo, soy principiante en el mundo arduino, pero ya tengo la placa duemilanove conectada a la pc y unos ejemplos realizados con Delphi (mi entorno d programacion favorito) funcionando.

Cualquier pista y/o ayuda que me pueda dar, como pasar algun link se los agradecere.
Desde ya muchisimas gracias por su tiempo, saludos! :)

Andoni Diaz Puerta
Enviado el 19/12/2011 (15:08)
Hola Exe,
Ten en cuenta que para elevar el quadcopter NO puedes usar servomotores, pues no tienen velocidad de giro suficiente.
En todo caso podrías usarlos para orientar los motores/hélices.

Saludos

josue perez castro
Enviado el 04/01/2012 (00:47)
Hola Andoni¿Cuantos motores puedo controlar al mismo tiempo con un aurdino UNO?, puedo usar motores servo normales(no micro)?.Saludos

Andoni Diaz Puerta
Enviado el 04/01/2012 (14:06)
Hola Josue,

Puedes controlar tantos servos, como salidas PWM tiene tu arduino :)
Para usar servos mas grandes, se necesita mas tensión Vcc y como ya sabrás arduino solo puede entregar niveles lógicos (5v y 3.3v), por lo que por si solo es un tanto limitado de controlar, pero con transistores, puedes hacerlo sin problemas.

Saludos

josue perez castro
Enviado el 07/01/2012 (03:02)
¿Con que funcion puedo cambiar la velocidad al momento de dar el giro?; por ejemplo : de 0 grados a 90 grados en una y de 90 a 180 en otra velocidad. Saludos!!

Eric Astudillo Larenas
Enviado el 25/01/2012 (01:59)
Hola a todos. Tengo una consulta, ¿importa si el servomotor es digital o analógico para usarlo en la arduino?.

Gracias
Saludos.

Oscar Gonzalez Oscar Gonzalez es un colaborador!
Enviado el 25/01/2012 (10:29)
Hola Eric,
Realmente es lo mismo, salvo que el servomotor internamente funciona de forma analógica o digital. El digital será siempre más preciso pero el pinout será el mismo.

Saludos!

Eric Astudillo Larenas
Enviado el 26/01/2012 (00:18)
Muchas gracias por la respuesta :).
Excelente.

oceotl ramirez
Enviado el 01/02/2012 (17:39)
Hola a todos, bueno yo soy un estudiante de mecatrónica y pues apenas empiezo, quisiera saber ¿cual es el programa para programar los arduinos?

Eric Astudillo Larenas
Enviado el 02/04/2012 (01:04)
Hola oceotl ramirez. El programa lo bajas de www.arduino.cc en la sección "Download"

Eric Astudillo Larenas
Enviado el 02/04/2012 (01:09)
Hola a todos, deseaba hacer una consulta, tengo los servos funcionando bien con la Arduino, pero en algunos momentos algunos vibran, o cuando se enciende el interruptor de luz de la cocina de mi casa, vibra también. Veo que es una interferencia. Tengo la alimentación aparte de la arduino, es un eliminador de pila. ¿Necesito poner un diodo u otro elemento para evitar la interferencia?. Estaría muy agradecido por la aclaración. Gracias.

Oscar Gonzalez Oscar Gonzalez es un colaborador!
Enviado el 03/04/2012 (13:31)
Eso es muy raro. Qué tipo de servo es? Quizás es probable que la interferencia esté en la señal PWM y no en el servo al usar cables demasiado largos.

Eric Astudillo Larenas
Enviado el 03/04/2012 (20:18)
Entiendo, sí, es extraño. Hace poco adquirí unos microservos, los conecté al mismo eliminador de pila de los otros servos más grandes, y vibraban, decidí sacarlos y los puse aparte, y se quitó la vibración. Entonces probaré cambiando la alimentación, los cables no son tan largos. ¿Es efectivo eso de la ferrita que leí en un artículo para los cables largos?. Gracias por responderme :).

Eric Astudillo Larenas
Enviado el 03/04/2012 (20:20)
Ah, se me olvidó responder: es un Servo Analógico marca Hitec. Es estándar. Soporta 3 kilos al centímetro. Gracias

fabian lalaleo saltos
Enviado el 25/06/2012 (20:48)
hola saludos, estoy iniciando conarduino en realidad no se casi nada me podrian ayudar para poder mover un servo con un pulsador??? para iniciar quiero presionar el pulsador y q el servo se mueva 180 grados presiono nuevamente y que regrese a la posicion de inicio, esto seria el principio para seguir aprendiendo mas acerca de arduino. Saludos

manuel mendoza
Enviado el 30/07/2012 (02:36)
soy principiante con arduino Uno y tengo problemas para mover 2 servos con sus respectivos potenciometros, me aparecen errores cuando verifico?? me guio de un ejemplo que hay en internet dejo el link http://www.youtube.com/watch?v=mOEF1mMKI-A

Oscar Gonzalez Oscar Gonzalez es un colaborador!
Enviado el 30/07/2012 (12:40)
Hola Manuel,
Cual es el error de compilación exactamente?

Jesús Manuel Bojorquez Olivo
Enviado el 27/11/2012 (01:52)
Me podrían ayudar a controlar un servomotor 360 lo estoy utilizando para controlar un brazo robotico y su finalidad es hacer actividades repetitivas

Miguel Esteban Echeverry Felizzola
Enviado el 11/12/2012 (19:42)
Hola soy nuevo en este blog, tambien soy nuevo en el Arduino, estoy trabajando con servos pero solo logro moverlos a la derecha, queria preguntar como controlo un servo hacia la izquierda; ejemplo -45; -90 no se como hacerlo.Gracias por compartir sus conocimientos.

Eber Cortès
Enviado el 04/04/2013 (17:20)
Hola, tambien soy nuevo en arduino, mi pregunta es si puedo controlar 4 o 5 servos de manera independiente con el arduino uno? no tienes ese tutorial en tu blog?, estarè muy agradecido con tu respuesta, un saludo y excelenete blog

Santiago Juanico
Enviado el 03/08/2013 (20:57)
Que tal genios?
El tutorial muy interesante....pero yo necesito justo lo contrario.
¿seria posible instalar un servomotor en el eje de una veleta y que te indique el componente? (de donde sopla el viento)
Por cierto soy Santy, y acabo de iniciarme en este mundillo...mi proposito final es una estacion metereologica controlada por mi arduino que registre la infrmacion cada 30 min. Durante las 24h. Del dia.
Estoy haciendo esto manualmente y como es de imaginar hago un registro cada cuatro horas, lo que sucede entre medio lo calcula la excel.
¿Alguien me hecha una manita con la arduinoveleta?
Agradezco vuestra atencion.

Silvestre Hernandez
Enviado el 02/10/2013 (05:45)
hola a todos
como puedo hacer un controlador pid para un servomotor en el arduino, saludos

Carlos Rosales Taibo
Enviado el 02/11/2013 (22:56)
Hola a todos, mi duda es un poco principiante pero es porque estoy recien comenzando con arduino y me ha gustado mucho su interactividad. ¿Cómo puedo hacer que el servomotor haga mas de 1 vuelta completa? lo hará si en el programa de barrido (incluído en la librería de arduino) pongo que pase de 0 a 720º? todo esto asumiendo que el servomotor que uso es de rotación continua. Muchas gracias por su atención.

Jose Alberto alvarez
Enviado el 27/02/2014 (21:20)
Disculpa se puede realizar esta práctica con Arduino UNO? o es necesario Arduino Mega
saludos!!

Oscar Gonzalez Oscar Gonzalez es un colaborador!
Enviado el 05/03/2014 (09:32)
Hola Jose,
También funciona con el UNO sin problema.

Saludos!

Alejandra Ruiz
Enviado el 29/07/2014 (18:10)
Hola,

Estoy trabajando en un proyecto de evasión para drones de ala rotativa, necesito enviar al drone el movimiento que quiero que haga a través del protocolo MavLink.

Encontré en la API de MavLink cómo enviarle el número de PWM a los servos, el problema es que me aoarece servo 1 servo 2 hasta el 14, no se cuales el de cual motor, o si es el de la cámara.

También de lo que encontré en el API, al parecer solo puedo crear un paquete para que mueva un solo servo no hay como mover más de uno (creo), si alguien sabe les agradecería la ayuda!

carlos guerrero vazquez
Enviado el 07/09/2014 (02:12)
buenas tardes oscar disculpa es que yo quiero controlar un servo motor el cual este girando indefinidamente de 0 a 180 grados eso ya lo hice pero mi proyecto sera un cañon detector de colores y lo que quiero es que si detecta un color el servo se pare en ese punto y dispare aun no se como va a disparar pero estoy viendo lo del movimiento primero y lo quiero controlar con arduino uno podrias ayudarme gracias :)


Enviar comentario

Debes disponer de una cuenta de usuario para publicar un comentario.

Si aún no dispones de una cuenta, únete a la comunidad de BricoGeek.com y registrate ahora, te llevará tan solo un minuto y es gratis. También puedes identificate si ya dispones de una cuenta de usuario.
rss

Conecta con BricoGeek.com

Canales sociales

Nos gusta mucho estar en contacto con nuestros lectores y saber más acerca de sus proyecto e inventos.


También puedes sugerir una noticia en el blog
Tienda de Electrónica DIY y Arduino

Lo que se cuece...

Comentarios recientes Más comentado Top noticias
Feed de novedades

Tienda BricoGeek.com

Electrónica para tus proyectos!

Estás preparando un proyecto o quieres iniciarte en la electrónica? Encuentra todo lo que necesitas en la tienda.

Visita la tienda BricoGeek!

La familia de BricoGeek.com

Conoce toda la gente que hace que BricoGeek.com sea posible cada día:

Alejandro Mallo
Colaborador
Puedes hacer click sobre un autor para ver todas sus noticias


Etiquetas más populares:

Descubre todo el contenido de bricogeek.com con las etiquetas más populares:


© BricoGeek.com 2005-2014

Demuestra lo que sabes hacer!