Está en la página 1de 6

Prctica 6. Controlar un servomotor a travs de un potencimetro.

6.1 Objetivo General:


Controlar el movimiento de giro del eje de un servomotor utilizando un potencimetro.

6.2 Materiales y Mtodos:

1. Una tarjeta Arduino Uno-R3 o Arduino Mega 2560.


2. Un cable USB impresora.
3. Un computador.
4. Cables para el montaje del circuito.
5. Tarjeta Protoboard.
6. Un Potencimetro rotatorio.
7. Un servomotor.

Un servomotor (tambin llamado servo) es un dispositivo similar a un motor de corriente


continua pero que tiene la capacidad de ubicarse en una posicin especfica dentro de su
rango de operacin. Adems, puede mantenerse estable en dicha posicin ya que
dispone de un circuito electrnico de control. Dependiendo del tipo de servomotor, este
puede ser controlado tanto en velocidad como en posicin.

Los servomotores hacen uso de la modulacin por ancho de pulsos (PWM) para controlar
la direccin o posicin de los motores de corriente continua. La mayora trabaja en la
frecuencia de los cincuenta hertz, as las seales PWM tendrn un periodo de veinte
milisegundos. La electrnica dentro del servomotor responder al ancho de la seal
modulada. Si los circuitos dentro del servomotor reciben una seal de entre 0,5 a 1,4
milisegundos, ste se mover en sentido horario; entre 1,6 a 2 milisegundos mover el
servomotor en sentido antihorario; 1,5 milisegundos representan un estado neutro para
los servomotores estndares.

6.3 Montaje de la prctica:


Con el fin de comprender de una manera ms fcil el funcionamiento del circuito, as
como verificar todas las conexiones existentes, se realiza en primer lugar el montaje del
circuito mediante el uso del programa Fritzing.
Los servomotores tienes tres cables: alimentacin (rojo), tierra (que puede ser negro o
marrn) y seal (que puede ser blanco o amarillo). Normalmente cable seal va a un pin
en Arduino que permita seales con PWM.

1
Figura 1. Montaje del circuito en el programa Fritzing.

De la figura se puede observar que el cable rojo va conectado al pin de 5V la cual enva la
alimentacin al servomotor. El cable amarillo que sale del servo al Arduino va conectado
al pin 9. Se eligi el pin 9 ya que en la tarjeta Arduino al lado del pin hay un smbolo ( ) ,
esos puertos o pines que tienen al lado este tipo de smbolo nos permiten mandar seal
modulada.

Luego el cable blanco que sale del potencimetro al Arduino va conectado al pin A5 y
finalmente los cables rojos desde el servo al potencimetro hasta llegar al Arduino van
conectados a tierra.

Figura 2. Servomotor utilizado en la prctica.

2
Luego de conocer cmo se construye el circuito en el programa Fritzing, se desarrolla el
programa en el IDE de Arduino.

6.4 Cdigo IDE Arduino:


Se debe seleccionar en la IDE de Arduino el tipo de tarjeta con el que vamos a trabajar
siendo Arduino Uno-R3 o Arduino Mega 2560.
Se selecciona el Puerto Serial, es decir el puerto USB se va a conectar la tarjeta
Arduino con el computador.

Se realiza el cdigo:

Inicialmente debemos identificar el programa que se est desarrollando, por tanto


se asigna un nombre al programa, esto se hace empleando el
smbolo //. Tambin permite colocar comentarios a lo largo del cdigo para poder
facilitar la comprensin de la instruccin que realiza cada lnea
Se deben declarar las variables globales que sern utilizadas en el programa.
Antes de eso debemos llamar a un paquete dentro de la IDE de Arduino llamado
Servo (#include<Servo.h>), con esta instruccin se cargan comandos que trabajan
solamente con este tipo de dispositivo; a esto se le llama programacin orientada
a objetos. El comando para llamar al paquete es #include, y luego se indica el
nombre del paquete.
Luego es necesario crear un objeto del tipo Servo (Servo myServo;), adems se
declara la constante de tipo entero llamada PotPin y se le asigna el pin A5.
Seguidamente, se declara de tipo entero el valor que ya vaa a leer el
potencimetro PotVal. Por ltimo, se declara una variable angle de tipo entero, ya
que se va a emplear un potencimetro rotatorio y se requiere saber en qu
posicin est midiendo el potencimetro en 0 grados, 180 grados, etc.
Seguidamente se realiza la declaracin de las configuraciones de las variables o la
inicializacin de la comunicacin serie dentro de los corchetes que delimitan el
bloque de programa void setup (). Se debe indicar al programa donde est
conectado el servomotor mediante la instruccin myServo.attach(9);
, es decir, esa seal que se le suministra estar en el pin 9. Para la realizacin de
esta prctica, se trabaja con la monitor o puerto serie, es decir, la comunicacin de
datos con el computador. Para abrir el puerto serie, se utiliza el
comando Serial.begin(9600) indicando dentro de los parntesis la velocidad de
comunicacin con el computador, esta generalmente es 9600 bits por segundo,
aunque otras tasas pueden ser soportadas.
Luego de inicializada la comunicacin serie, se procede con el bloque de
programacin que se encuentra ubicado en el interior de los corchetes del
comando void loop () el cual se ejecuta continuamente leyendo las entradas y
generando las salidas. En las primeras instrucciones del bloque de programa se
quiere leer la seal enviada por el Potencimetro al pin A5 y mostrar a travs del
monitor la seal captada. Para realizar estas acciones, primero se necesita
declarar una variable la cual ser llamada PotVal. Para ejecutar la lectura de la
seal, se realiza mediante el comando PotVal=analogRead(PotPin); (debido a que
se trata de una seal analgica), indicndole adems el pin en el que debe leer la
entrada, la cual se almacena en la variable PotVal. Posteriormente se empleara la
funcinSerial.print() para imprimir el valor medido a travs del monitor, en el
interior de los parntesis se debe colocar el valor, si se quieren escribir palabras o
frases estas deben ir delimitadas mediante los comillas, es

3
decir Serial.print(PotVal:);. Seguidamente para que pueda mostrar el valor de la
seal debemos imprimir la variable, es decir Serial.print(PotVal);
Para mostrar en el monitor el valor del ngulo correspondiente con la posicin en
que se encuentra el potencimetro se utiliza la rutina para mapear, es decir, que
el leer la seal de cero (0) a 1023; y un ngulo de cero (0) hasta 179. Se utiliza
el valor guardado en la variable PotVal la cual est a una escala de cero (0) a
1023 y se requiere a una escala de cero (0) a 179. Se mapea mediante el
comando angle=map(PotVal,0,1023,0,179);. Se utilizar nuevamente el
comando Serial.print ();
para permitir la visualizacin de los datos. Para ensear el valor medido a travs
del monitor, en el interior de los parntesis se debe colocar el valor, si se quieren
escribir palabras o frases estas deben ir delimitadas mediante los comillas, es
decir Serial.print (angle= ), y luego para que pueda mostrar el valor de la seal
debemos leer la variable, es decir Serial.println (angle). Note que println se utiliza
para indicar que el siguiente valor a imprimir en el puerto serial lo realice en la
siguiente lnea.
Para la prctica se debe indicar que los valores del ngulo los enviar al
servomotor a travs del comandomyServo.write(angle). Por ultimo, se indica
un delay para poder dar tiempo a visualizar los valores verdaderos enviados al
monitor serial.
Finalmente se debe verificar que al final de cada instruccin se haya colocado el
respectivo punto y coma, de lo contrario habrn errores a la hora de compilar.
Una vez compilado el programa se ejecuta el mismo. Si las conexiones se hicieron
de manera correcta el seor capta y enva las seal a la tarjeta y esta
posteriormente al monitor. Sin embargo, para poder observar estos datos es
necesario activar el monitor serial, esto se realiza oprimiendo click izquierdo en la
barra de herramientas del IDE de Arduino que sealiza el monitor serial en la parte
superior derecha (Figura 3).

NOTA: Para que el IDE de Arduino pueda entender los comandos es necesario que al
final de cada instruccin se coloque punto y coma (;).

En el siguiente algoritmo se muestra como quedo plasmado en el IDE de Arduino, los


procedimientos anteriormente sealados:

// Uso de potenciometro y seales analgicas

#include<Servo.h>

Servo myServo;

int const PotPin=A5;

int PotVal;

int angle;

4
void setup(){

myServo.attach(9);

Serial.begin(9600);

void loop(){

PotVal=analogRead(PotPin);

Serial.print("PotVal:");

Serial.print(PotVal);

angle=map(PotVal,0,1023,0,179);

Serial.print ("angle= ");

Serial.println (angle);

myServo.write(angle);

delay (15);

Algoritmo 1. Cdigo de Lectura de un valor de tensin en un pin analgico a travs


de un Servomotor a travs de un potencimetro.

Figura 3. Botn para activar el Monitor Serial.

5
6.5 Conclusin:
El control de un servo se reduce a indicar su posicin mediante una seal PWM de
voltaje. El ngulo de ubicacin del motor depende de la duracin del nivel alto de la seal.
Cada servomotor, dependiendo de la marca y modelo utilizado, tiene sus propios
mrgenes de operacin.

Para utilizar los servos se debe tener los catlogos (datasheet) disponibles, el catlogo
indica las especificaciones en cuanto a la capacidad para trabajar. El catalogo indica las
especificaciones de la velocidad mxima hasta dnde puede llegar el servo, el par torsor
mximo y su velocidad especifica que cuenta al estar conectado a una fuente de poder.

También podría gustarte