Controllando un servo con Arduino y un potenciómetro

Hoy escribí un pequeño código para controlar un Servo usando Arduino.

La idea es que conectamos un potenciómetro a la tarjeta y un Servo. El trabajo del potenciómetro es controlar la posición del Servo a medida que lo rotamos.

El potenciómetro está conectado al pin análogo 0 en la tarjeta, éste leerá el valor (valor el cual va de 0 a 1023) y lo traducirá en grados para controlar el Servo.

Ahora, ¿cómo funciona una lectura análoga?

Okay, el Servo necesita 5 voltios para funcionar, el potenciómetro tiene tres pines el de la izquierda esta conectado a +5V el derecho a tierra y por último el central va a análgo 0. La manera que en traducimos el voltaje en posición es de esta manera. Ya sabiendo que el valor de cualquier sensor análogo va de 0 a 1023 y que el voltaje de salida es +5V lo que se hace es que dividimos esos 5 voltios en 1023 partes iguales, de manera que el pin análogo lee los valores de 0 a 1023, el código que cargamos en la tarjeta traduce esos valores de 0 a 1023 en grados (0° a 180°), ésta señal es luego enviada al pin 9 el cual tiene capacidad de PWM y envía esa señal regulada al microcontrolador del Servo la cual hace mover el Servo de derecha a izquierda.

Ahora para hacer todo más fácil el esquema 😀

Necesitaremos:

Un potenciómetro de 100k Ohm

Un Servo standard de 180° 0 incluso de rotación continua (360°) y jugar con los valores del código para mover el Servo cuántos grados queramos y en la dirección que queramos.

Image

¡Y el código para hacer todo esto funcionar! 😀

/* Escrito por Pablo Andrade Mejía

http://www.arduinolab.wordpress.com
*/

#include <Servo.h>

Servo ServoPablo; //Declaramos que queremos controlar un Servo, al cual le vamos a poner un nombre cualquiera

int pot = 0; //El pin análogo donde va conectado el Potenciómetro
int val; //El valor a leer por el puerto análogo

void setup()
{
ServoPablo.attach(9); //El pin al cual conectaremos nuestro Servo
}

void loop()
{
val = analogRead(pot); //Aquí le decimos que lea el valor del potenciómetro, valor el cual oscila entre 0 y 1023
val = map(val, 0 ,1023, 0, 180); //Traduce la lectura análga (0, 1023) a grados (0°, 180°)
ServoPablo.write(val); //Mueve el Servo según la lectura análoga
delay(15);
}

Anuncios
Esta entrada fue publicada en Con Arduino y etiquetada , , , , , , , , , , , , , , , , , , , , , , , , , , , , . Guarda el enlace permanente.

15 respuestas a Controllando un servo con Arduino y un potenciómetro

  1. Excelente!! me funciono a la perfección. Gracias por compartir

  2. Buen ejemplo, me funciono a la primera, gracias

  3. noelio2007 dijo:

    Exelente me funciono , y me sirvio para aprender algunas funciones y “jugar” con ellas. Gracias por compartir

  4. Antonio dijo:

    soy nuevo en el mundo arduino. Como hago para que gire constantemente el servo pudiendo variar la velocidad y sentido de giro con el potenciómetro? gracias

    • nosoybob dijo:

      Para eso necesitas un servo de giro continuo o de 360 grados. El problema es que esos potenciómetros carecen de control de velocidad en comparación a un servo de 180. Para eso que me dices es mejor un motor paso a paso.

      Saludos

  5. joshuacg dijo:

    Una pregunta, que pasa si uso otro valor de potenciometro del que mencionas, habría que hacer algún ajuste?
    Gracias por tu trabajo, me sirve de mucho 🙂

  6. fercraft dijo:

    hola amigo, en cuanto el potenciometro no importa si utilizo uno de 10k Ohm??
    Si quisiera mover mas servomotores, todos los conectaria a la corriente de 5 volts del arduino?

  7. Luis Nano dijo:

    Una pregunta cmo haria si quiero controlar 3 servos te agradeceria mucho

  8. Aldahir dijo:

    ‘val’ does not name a type
    Me aparece este problema, me podrías ayudar a solucionarlo por favor

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s