Práctica 2 - Motores INTRODUCCIÓN

Anuncio
Práctica 2 - Motores
INTRODUCCIÓN - Motores DC vs Servo motores
Un motor de corriente directa cuenta con dos conexiones. La corriente eléctrica es
proporcionada a través de estas conexiones, y por dentro fluye por cables que forman un
electroimán. Este electroimán genera un campo magnético 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 mayoría de los motores DC son bastante rápidos, y giran a
razón de 5000 RPM (revoluciones por minuto).
Las versiones mostradas en la imagen son motores pequeños, baratos, eficientes, fáciles
de usar e ideales para aplicaciones de robótica. Con el tiempo algunos factores pueden
afectar en el rendimiento, como la fricción mecánica, que provoca que algo de energía
eléctrica se gaste en forma de calor.
La velocidad de un motor DC (ó nivel de potencia aplicado) puede ser controlada, esto
gracias a una técnica llamada Modulación de longitud de pulso. Esto se logra prendiendo
y apagando el motor de forma rápida 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 sólo el 50% de su operación máxima. Al realizar
estos cambios rápidamente el motor aparenta funcionar más lentamente sin detenerse. En
esta práctica aprenderemos a utilizar los motores a su máxima 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 dirección 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
posición (usualmente un potenciómetro) y un circuito de control.
La función del servomotor es recibir una señal de control, que representa la posición
deseada del servomotor, y el circuito electrónico aplica potencia al motor DC para que
gire hacia esa posición.
El servomotor no gira libremente, esta limitado a girar 180 grados ó hasta 200 en la
mayoría de los casos.
El servomotor tiene tres conexiones: alimentación, tierra y una señal de control. Las
señales de alimentación y tierra deben estar presentes todo el tiempo, debido a que el
servomotor contiene partes electrónicas que proporcionan corriente para mover el motor.
La duración de la señal de control (señal levantada ó 1 lógico) determina la posición del
servomotor. Por ejemplo, un pulso con duración de 1.52 milisegundos mueve el motor a
la posición central, y un pulso con mayor duración lo mueve más allá de la posición
central a favor de las manecillas del reloj:
Este pulso de control debe ser repetido automáticamente cada 20 milisegundos con el
objetivo de que la posición permanezca igual hasta que le proporcionemos un pulso
diferente para cambiarlo de posición.
Una herramienta muy útil será la librería con funciones diseñadas para controlar
servomotores, ya que ofrece al usuario una forma sencilla de utilizar los servomotores
con poco código fácil de entender.
Motores DC
El Handy Board proporciona puertos para 4 motores, numerados del 0 al 3. Recuerde que
cada conexión 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 batería 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 línea de
comandos del IC verifique el correcto funcionamiento de las siguientes funciones
predefinidas y que los 4 puertos para motores estén funcionando correctamente.
void fd(int m) - Girar el motor "m" hacia adelante. Ejemplo: fd(0);
void bk(int m) - Girar el motor "m" hacia atrás. Ejemplo: bk(1);
void off(int m) - Apagar motor "m". Ejemplo: off(1);
void alloff() ó void ao() - Apagar todos los motores. "ao" es abreviación 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 atrás.
•
•
Nunca cambies la dirección de un motor bruscamente; asegúrate de apagar
los motores un instante antes de cambiar de dirección.
Es preferible no prender más de dos motores al mismo tiempo.
Ejercicios
¿Cómo podría un robot con dos motores conectados con engranes a llantas avanzar hacia
adelante?
_______________________________________________________________________
_______________________________________________________________________
¿Cómo podría el mismo robot dar un giro a la derecha?
_______________________________________________________________________
_______________________________________________________________________
Suponiendo que contamos con un robot móvil de dos motores, desarrolle una librería de
funciones, que contenga una función para ir hacia adelante, otra para ir hacia atrás, otra
para girar a la derecha y por último a la izquierda. Las funciones recibirán un parámetro
tipo float que representará la duración del movimiento. La función 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
función debe desplegar en la LCD la dirección que representa. Al finalizar todas las
funciones debe cerciorares de apagar todos los motores.
Simule un robot bailarín y cantante utilizando las funciones previamente diseñadas y las
funciones para generar sonidos [como beep( ) y tone ( x, y) ]. Debe de contar con una
función 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 automáticamente las librerías necesarias para utilizar todas las
funciones adicionales del Expansion Board.
La siguiente función es la que utilizaremos para habilitar y deshabilitar los servomotores:
init_expbd_servos(int action) - Si la acción es cero las señales de control de los servos
son deshabilitadas; si la acción es diferente de cero las señales de control son habilitadas.
Las señales de control se deshabilitan por default cada vez que el Handy Board es
reiniciado.
Seis variables globales son proporcionadas para controlar la posición 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 más grande sólo causará que el servo quiera llegar a una posición que no
puede alcanzar.
Examine y cargue en su Handy Board el siguiente código:
void main()
{
int period=0;
/*minimo valor disponible, y el máximo es 6000*/
init_expbd_servos(1);
/*habilitar servos*/
while(1)
{
servo0=period;
/*mover servo 0*/
printf("posición= %d\n", period);
msleep(200L);
period = period + 200;
/*aumentar gradualmente la posición*/
if(period>5000)
period=0;
/*regresar posicion original*/
}
/*del while*/
init_expbd_servos(0);
/*deshabilitar servos*/
}
/*de la funcion*/
Ejercicios
1.- El código anterior nos muestra un aumento gradual en el periodo proporcionado al
servomotor. Complemente la función para que ahora al llegar al valor máximo, el
servomotor pueda regresarse gradualmente, con la misma razón de cambio, a su posición
original, y desplegando de igual manera el periodo actual.
2.- El knob (la perilla giratoria) del Handy Board, es un potenciómetro que por medio de
la función knob( ) regresa su posición como un número entero en un rango de 0 a 255.
Realice una función que tome en cuenta el valor de la perilla, para proporcionarle la
posición al servomotor (si aumento la posición de la perilla, aumenta la posición del
servo motor).
************************************************************************
Para obtener más información sobre el Expansion Board visite el siguiente enlace:
http://handyboard.com/hbexp30/software.html
Descargar