Pra2_Motores

6
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).

description

servomotores

Transcript of Pra2_Motores

Page 1: Pra2_Motores

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).

Page 2: Pra2_Motores

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.

Page 3: Pra2_Motores

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.

Page 4: Pra2_Motores

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.

Page 5: Pra2_Motores

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.

Page 6: Pra2_Motores

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