You are on page 1of 6

Prctica 2 - Motores

INTRODUCCIN - Motores DC vs Servo motores


Un motor de corriente directa cuenta con dos conexiones. La corriente elctrica es
proporcionada a travs de estas conexiones, y por dentro fluye por cables que forman un
electroimn. Este electroimn genera un campo magntico que reacciona contra imanes
permanentes ubicados alrededor del cable logrando que la armadura comience a girar.
Por lo tanto, cuando le proporcionamos corriente al motor por una de las dos conexiones,
este comienza a girar. La mayora de los motores DC son bastante rpidos, y giran a
razn de 5000 RPM (revoluciones por minuto).

Las versiones mostradas en la imagen son motores pequeos, baratos, eficientes, fciles
de usar e ideales para aplicaciones de robtica. Con el tiempo algunos factores pueden
afectar en el rendimiento, como la friccin mecnica, que provoca que algo de energa
elctrica se gaste en forma de calor.
La velocidad de un motor DC ( nivel de potencia aplicado) puede ser controlada, esto
gracias a una tcnica llamada Modulacin de longitud de pulso. Esto se logra prendiendo
y apagando el motor de forma rpida y repetitivamente, y la clave de esto es el ciclo de
trabajo (duty cycle), que es definido por el porcentaje de tiempo encendido contra el
porcentaje de tiempo apagado. Por ejemplo, si la corriente es proporcionada solo la mitad
del tiempo, entonces el motor gira a slo el 50% de su operacin mxima. Al realizar
estos cambios rpidamente el motor aparenta funcionar ms lentamente sin detenerse. En
esta prctica aprenderemos a utilizar los motores a su mxima capacidad y las opciones
que el software IC nos proporciona para diminuir la potencia que el Handy Board le
aplica a los motores conectados.
El Handy Board proporciona salidas para 4 motores de corriente directa, las cuales se
numeran de la 0 a la 3, y cada salida cuenta con un par de leds, uno verde y uno rojo
para indicar la direccin del motor. Cabe mencionar que para cada motor hay tres
pines, de los cuales solo se utilizan los extremos (el del centro no esta conectado a nada).

Los servomotores operan de manera diferente. Un servomotor consta de un motor de


DC, una unidad de engranaje para reducir la velocidad, un dispositivo para sensar
posicin (usualmente un potencimetro) y un circuito de control.

La funcin del servomotor es recibir una seal de control, que representa la posicin
deseada del servomotor, y el circuito electrnico aplica potencia al motor DC para que
gire hacia esa posicin.

El servomotor no gira libremente, esta limitado a girar 180 grados hasta 200 en la
mayora de los casos.

El servomotor tiene tres conexiones: alimentacin, tierra y una seal de control. Las
seales de alimentacin y tierra deben estar presentes todo el tiempo, debido a que el
servomotor contiene partes electrnicas que proporcionan corriente para mover el motor.
La duracin de la seal de control (seal levantada 1 lgico) determina la posicin del
servomotor. Por ejemplo, un pulso con duracin de 1.52 milisegundos mueve el motor a
la posicin central, y un pulso con mayor duracin lo mueve ms all de la posicin
central a favor de las manecillas del reloj:

Este pulso de control debe ser repetido automticamente cada 20 milisegundos con el
objetivo de que la posicin permanezca igual hasta que le proporcionemos un pulso
diferente para cambiarlo de posicin.
Una herramienta muy til ser la librera con funciones diseadas para controlar
servomotores, ya que ofrece al usuario una forma sencilla de utilizar los servomotores
con poco cdigo fcil de entender.

Motores DC
El Handy Board proporciona puertos para 4 motores, numerados del 0 al 3. Recuerde que
cada conexin para motor consta de 3 pines, de los cuales el que esta en medio no tiene
uso. Tenga cuidado al realizar las conexiones y procure no hacer corto circuito.
La batera interna del Handy Board es de 9.6 volts y es adecuada para manejar motores
de 6 a 12 volts. Conecte el Handy Board a la computadora y corra el IC. Conecte un
motor DC en alguno de los puertos de motores del Handy Board. Desde de la lnea de
comandos del IC verifique el correcto funcionamiento de las siguientes funciones
predefinidas y que los 4 puertos para motores estn funcionando correctamente.
void fd(int m) - Girar el motor "m" hacia adelante. Ejemplo: fd(0);
void bk(int m) - Girar el motor "m" hacia atrs. Ejemplo: bk(1);
void off(int m) - Apagar motor "m". Ejemplo: off(1);
void alloff() void ao() - Apagar todos los motores. "ao" es abreviacin de "alloff".
void motor(int m, int p) - Girar motor "m" con el nivel de potencia "p". El nivel de
potencia va desde 100 para todo hacia adelante hasta -100, para todo hacia atrs.

Nunca cambies la direccin de un motor bruscamente; asegrate de apagar


los motores un instante antes de cambiar de direccin.
Es preferible no prender ms de dos motores al mismo tiempo.

Ejercicios
Cmo podra un robot con dos motores conectados con engranes a llantas avanzar hacia
adelante?
_______________________________________________________________________
_______________________________________________________________________
Cmo podra el mismo robot dar un giro a la derecha?
_______________________________________________________________________
_______________________________________________________________________

Suponiendo que contamos con un robot mvil de dos motores, desarrolle una librera de
funciones, que contenga una funcin para ir hacia adelante, otra para ir hacia atrs, otra
para girar a la derecha y por ltimo a la izquierda. Las funciones recibirn un parmetro
tipo float que representar la duracin del movimiento. La funcin sleep(float x) nos
sirve para esperar un determinado tiempo, donde "x" representa los segundos que van a
pasar. Las funciones para girar deben utilizar la mitad de la potencia disponible. Cada
funcin debe desplegar en la LCD la direccin que representa. Al finalizar todas las
funciones debe cerciorares de apagar todos los motores.
Simule un robot bailarn y cantante utilizando las funciones previamente diseadas y las
funciones para generar sonidos [como beep( ) y tone ( x, y) ]. Debe de contar con una
funcin main y un ciclo con llamadas a funciones.

2da parte - Servomotores


Necesitamos instalar el Exansion Board del Handy. Gracias al Expansion Board
podemos tener salidas para 6 servo-motores. Las tres conexiones necesarias se muestran
en el diagrama y son ideales para insertar servomotores con conector de tipo hembra:

El Interactive C carga automticamente las libreras necesarias para utilizar todas las
funciones adicionales del Expansion Board.
La siguiente funcin es la que utilizaremos para habilitar y deshabilitar los servomotores:
init_expbd_servos(int action) - Si la accin es cero las seales de control de los servos
son deshabilitadas; si la accin es diferente de cero las seales de control son habilitadas.
Las seales de control se deshabilitan por default cada vez que el Handy Board es
reiniciado.
Seis variables globales son proporcionadas para controlar la posicin de los seis
servomores. Estas variables son llamadas servo0, servo1, servo2, servo3, servo4 y
servo5, para cada salida de servo respectivamente. Para modificar estas variables
simplemente podemos asignarles un valor, por ejemplo: servo3=1500.
Los valores que tienen estas variables determinan la longitud del pulso que se le
proporciona a cada servo. Los valores validos van de 0 a 6000, dependiendo del servo
motor. Un valor ms grande slo causar que el servo quiera llegar a una posicin que no
puede alcanzar.

Examine y cargue en su Handy Board el siguiente cdigo:


void main()
{
int period=0;
/*minimo valor disponible, y el mximo es 6000*/
init_expbd_servos(1);
/*habilitar servos*/
while(1)
{
servo0=period;
/*mover servo 0*/
printf("posicin= %d\n", period);
msleep(200L);
period = period + 200;
/*aumentar gradualmente la posicin*/
if(period>5000)
period=0;
/*regresar posicion original*/
}
/*del while*/
init_expbd_servos(0);
/*deshabilitar servos*/
}
/*de la funcion*/

Ejercicios
1.- El cdigo anterior nos muestra un aumento gradual en el periodo proporcionado al
servomotor. Complemente la funcin para que ahora al llegar al valor mximo, el
servomotor pueda regresarse gradualmente, con la misma razn de cambio, a su posicin
original, y desplegando de igual manera el periodo actual.
2.- El knob (la perilla giratoria) del Handy Board, es un potencimetro que por medio de
la funcin knob( ) regresa su posicin como un nmero entero en un rango de 0 a 255.
Realice una funcin que tome en cuenta el valor de la perilla, para proporcionarle la
posicin al servomotor (si aumento la posicin de la perilla, aumenta la posicin del
servo motor).

************************************************************************
Para obtener ms informacin sobre el Expansion Board visite el siguiente enlace:
http://handyboard.com/hbexp30/software.html

You might also like