Como controlar un servomotor con un potenciómetro


servopot.jpg

Video

En esta práctica programaremos un control de giro para un servomotor SG90 usando un potenciómetro y un Arduino UNO.

Como controlar un servomotor con un potenciómetro y Arduino


- Materiales:


Para realizar el circuito necesitas:

• 1 Arduino UNO,
• 1 Servomotor SG90,
• 1 potenciómetro 10K,
• 1 Protoboard y Jumpers.

- Código


Comenzaremos el sketch incluyendo la librería para el servomotor que ya tiene instalado el IDE de Arduino. Podemos añadirla desde la pestaña Programa->Incluir Librería -> Servo. Automáticamente se incluirá en el código.

Una vez que se tengamos la librería, abriremos un nuevo objeto de tipo “Servo” con el nombre de “servo1” (tú puedes nombrarlo como gustes).

#include <Servo.h>
Servo servo1;

Antes de entrar al void setup(), definiremos las variables que utilizaremos en todo el programa. Para el servo, usaremos dos parámetros, el pin donde estará conectado el cable de datos y el ángulo.
Y para el potenciómetro también tomaremos dos parámetros, el pin análogo donde estará puenteado y el valor que arroje el componente al Arduino. Dando un total de cuatro variables de tipo entera.

int servopin = 8;
int angulo = 0;
int pot = A0;
int potvalue=0;

Dentro del void setup(), declararemos como se comportarán dichos pines. Iniciando con el servo, mediante la función .attach, le diremos a la librería Servo.h que ahí está mi servomotor conectado. Y con la función pinMode que el pin del potenciómetro será de entrada.
Finalizando la configuración, mandaremos al servo al ángulo 0 cada vez que se ejecute el programa usando .write.

void setup() {
servo1.attach(servopin);
pinMode (pot,INPUT);
servo1.write(angulo);
}

Para el void loop(), estructuraremos todas las instrucciones que debe hacer el Arduino. Primero obtendremos el valor que esta mandando el potenciómetro a la placa.
Usando la función map() procesaremos dicho valor para que tengamos el rango permitido por el servomotor (de 0 a 180).

potvalue= analogRead(pot);
angulo=map(potvalue,0,1023,0,180);

Para que finalmente lo mandemos al pin de datos del servo para que ejecute el giro correspondiente. Opcionalmente podemos poner un delay de 10 milisegundo.

void loop() {
potvalue= analogRead(pot);
angulo=map(potvalue,0,1023,0,180);
servo1.write(angulo);
delay(10);
}

- Instrumentación


Empezaremos conectando las tres patas del potenciómetro a 3 pistas de la protoboard, no importa en qué dirección esté la perilla. Realizaremos un puente de conexión entre la pata de en medio del potenciómetro al pin A0 del Arduino UNO mediante un jumper. Posteriormente conectaremos las patas extremas a 5v del Arduino y a tierra por el pin GND, como se muestra en la imagen.
Puenteamos el pin de 5v del Arduino a la línea Vcc y GND a la línea de tierra de la protoboard para alimentar el pot.

Para la conexión del servomotor, identificamos primero los cables de alimentación, para el SG90 son rojo y café, y estos los conectaremos a las líneas de voltaje de la protoboard. Finalizando con el cable de datos (cable naranja) puenteado al pin 8 digital del Arduino.

DESCARGAS


LINK DE DESCARGA

Imágenes

servopot.jpg
servopot2.jpg
servopot3.jpg

APRENDE LO QUE NECESITAS

NUESTROS CURSOS


cursoarduinoyandroid.jpg

Creación de un HMI en Android Studio y Arduino

Nivel: Básico 2 horas y 30 min (146 min.)

Diseña, maqueta y programa un HMI completo en Android Studio vinculado a un Arduino mediante Bluetooth.

cursodispensadorautomatico.jpg

CONSTRUYE un DISPENSADOR AUTOMÁTICO CASERO sin ARDUINO desde CERO

Nivel: Básico 27 minutos

Construye desde cero un dispensador automático casero sin Arduino desde cero, utilizando pura electrónica.

cursocarritorobot4wd.jpg

Creación de carrito robot desde cero usando mando de PS4

Nivel: Básico 2 horas y 19 min (139 min.)

Construye desde cero un carrito robot con arduino manipulado por un control de PS4 y un teléfono Android.