Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Control Motor Encoder2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 14






Motorreductor con Encoder


DISEÑO DE SISTEMAS MECATRÓNICOS











Integrantes:


Omar F. Guillen Gomez 201106581
Emmanuel Villarreal Sosa 201111737


Profesor:
José Pedro Sánchez Santana



29 de Octubre del 2015
2 Motorreductor con Encoder

RESUMEN

Este documento presenta el desarrollo para la obtención de la función de


transferencia del motorreductor Pololu y sus diferentes parámetros físicos. También
se incluyen las estrategias del control que posteriormente se implementarán
mediante un software para la visualización en tiempo real.

FUNCIÓN DE TRANSFERENCIA

Como recordamos del reporte anterior sobre el modelado matemático, para


generar un modelo basado en la física del motor, tenemos que considerar una
versión simplificada de su funcionamiento. La siguiente ilustración 1 representa un
circuito equivalente eléctrico de la armadura y el diagrama de cuerpo libre del
rotor.

Ilustración 1. Armadura del motor.

Por lo que vamos a asignar a la fuente de tensión (V) aplicada a la armadura del
motor como la entrada, y la velocidad de rotación 𝑑𝜃⁄𝑑𝑡 como la salida. Para
fines de modelado, el rotor y el eje se supone que son rígidos. Asumimos además
un modelo de fricción viscosa, es decir, que el par de fricción es proporcional a la
velocidad angular.

Las siguientes variables representan los parámetros físicos del motor.


(J) Momento de inercia del rotor
(b) Constante de fricción viscosa
(Ke) Constante de Fuerza electromotriz
(Kt) Constante de par del motor
(R) Resistencia de la armadura
(L) Inductancia de la armadura

Y llegamos al siguiente modelo (ecuación 1) de función de transferencia de un


motor de corriente continua donde la variable K representa tanto la constante de
3

par motor y la constante de fuerza contraelectromotriz (ya que las dos constantes
son iguales cuando se emplean unidades consistentes).

θ̇ 𝐾 (1)
=
𝑉 (𝐿𝑠 + 𝑅)(𝐽𝑠 + 𝑏) + 𝐾 2

Ahora procedemos a encontrar el valor de estas variables en la hoja de datos del


motorreductor que estamos empleando, el cual es el Pololu 75:1 Metal Gearmotor
25Dx54L mm LP 6V con 48 CPR Encoder, el cual tiene las especificaciones de la
siguiente tabla:

Parámetro Valor
Relación de transmisión: 74.83: 1
Velocidad sin carga @ 6V: 82 rpm
Corriente sin carga @ 6V: 150 mA
Corriente con carga @ 6V: 2400 mA
Torque con carga @ 6V: 85 oz · in
Longitud del cable: 8 in

Debido a la falta de información en valores importantes para el cálculo de la


función de transferencia, procedimos a usar el método experimental para hallar
dicha ecuación.

Método Experimental para la Función de Transferencia

Dicho método consiste en el empleo de la herramienta de Matlab llamada Ident,


la cual es comúnmente usada para el cálculo de la función de transferencia de
un sistema en donde al software se le tiene que ingresar una tabla de los valores
de entrada y otra de los valores de salida; para la obtención de estos valores se
requirió del programa Arduino, en donde se creó un programa para la obtención
de velocidad lo más rápido posible durante 3 segundos, en donde recolectamos
545 valores.

Los 545 valores se introdujeron en el “Workspace”, un archivo para los datos de la


entrada y otro para los de la salida, tal y como se visualiza en la ilustración 2.
4 Motorreductor con Encoder

Ilustración 2. Tabla de valores.

Posteriormente se crea la visualización gráfica de la identificación del sistema con


ayuda del Ident de Matlab (ilustración 3) con los datos previamente obtenidos. A
continuación vemos en la ilustración 4 el comportamiento del las salidas y
entradas del motor .

Ilustración 3. Interfaz gráfica.

Ilustración 4. Time plot.


5

Se genera el proceso del modelo donde se colocaron cada uno de los


parámetros del modelado para luego estimar el modelo de salida y podemos
observar los mejores ajustes del sistema donde encontramos 69.94% y 68.07% en
las dos funciones mostradas en la ilustración 5.

Ilustración 5. Modelo de salida.

Obtenemos la ecuación de función de transferencia de la función con mejor


ajuste (69.94%), la cual se muestra en la ilustración 6.

Ilustración 6. Función de transferencia.


6 Motorreductor con Encoder

Dentro del sistema de Matlab también se pueden mostrar los ceros y polos de
nuestra función de transferencia (ilustración 7). Dando como resultado 𝑆 =
−7.3872 la raíz.

Ilustración 7. Ceros y polos.

Por último se muestran la respuesta transitoria (ilustración 8), la cual si observamos


se encuentra estabilizando por arriba de 1.26 con un cierto pico al principio, por lo
que con ayuda del control debe estabilizarse a 1 para poder ser un sistema ideal.

Ilustración 8. Respuesta transitoria.


7

ANÁLISIS DE ESTRATEGIA PARA CONTROL DE UN MOTOR DC

Un método para aplicar el control P, PI o PID consiste en generar un modelo para


el motor DC controlado en base a su respuesta a una entrada escalón. Por lo
tanto, vamos a generar un modelo para el motor en función de su respuesta
observada, sin tener en cuenta la física subyacente del motor analizada
anteriormente. Esto se refiere a veces como un modelo de caja negra o un
modelo basado en datos. Después de que hayamos generado un modelo de
este tipo, vamos a tratar de explicar lo que hemos observado en base a nuestra
comprensión de la física subyacente.

Durante el proceso vamos a interactuar con un motor de corriente equipado con


un encoder de cuadratura como ya lo veníamos haciendo.

Circuito

Entonces lo que vamos a hacer es controlar nuestro motor a través de una salida
digital del Arduino. Este microcontrolador no puede suministrar suficiente corriente
(sólo unos 40 miliamperios) para hacer girar directamente a la mayoría de los
motores, por lo que vamos a utilizar la señal de baja potencia de la placa para
conectar y desconectar el motor a una fuente de mayor poder, es decir, a una
fuente de alimentación. En concreto, la salida digital se utiliza para cambiar un
transistor de encendido y apagado.

Cuando el transistor se active se comportará como un interruptor cerrando así el


circuito y haciendo que el motor gire. Cuando el transistor esté apagado va a
actuar como un interruptor abierto de tal forma que la corriente no fluya a través
del circuito y así el motor no girará.

Puesto que el motor es una carga inductiva, cuando tratamos de detener el


motor, éste continuará girando (debido a su inercia), el motor generará una
fuerza contraelectromotriz (un voltaje). Esta fem puede dañar nuestro transistor.
Con el fin de prevenir que esta fuerza contraelectromotriz cause daños, vamos a
poner un diodo en paralelo con nuestro motor. El diodo sólo permitirá que la
corriente fluya en una dirección, protegiendo así el resto del circuito.

El esquema del circuito mencionado previamente se muestra en la ilustración 9.


8 Motorreductor con Encoder

Ilustración 9. Circuito para el control de velocidad.

En el circuito mostrado, empleamos un MOSFET de potencia, donde el


microcontrolador impulsa a la compuerta “G”. Cuando la tensión se suministra a
la compuerta, se cierra el circuito entre los pines de la fuente “S” y el drenaje “D”.
Hemos añadido una resistencia de 1000 entre la placa y el pasador de la
compuerta para limitar la cantidad de corriente consumida por el transistor. La
elección de la resistencia no es importante, siempre y cuando no sea demasiado
grande que limita la corriente a un nivel que la junta no puede activar el transistor.
La elección del MOSFET de potencia fue el IRF520 (ilustración 10) y un diodo con la
matricula 1N4007.

Ilustración 10. MOSFET IRF520


9

Con ese circuito estamos en condiciones de lograr el control de la velocidad del


motor DC mediante el empleo de modulación por ancho de pulsos (PWM). El
PWM puede activar y desactivar alternamente un motor. Dado que el motor tiene
una dinámica (inercia, fricción, etc.), por lo que no llega instantáneamente a la
velocidad máxima cuando se enciende y no se detiene de inmediato cuando se
desactiva, se necesita tiempo para que el motor reaccione. Esto puede ser usado
como nuestra ventaja si la frecuencia PWM es suficientemente rápida. De esta
manera, la velocidad del motor puede ser controlada continuamente variando el
porcentaje de tiempo que la señal PWM está en alto en comparación con el
período completo (el ciclo de trabajo).

También vamos a emplear la placa de Arduino para detectar la velocidad del


motor. Existen diferentes medios para lograr esto, uno de los más populares es el
sensor de efecto Hall. Un sensor de efecto Hall es capaz de detectar un campo
magnético, al detectar el paso de los dientes de engranaje o un imán (ilustración
11), el sensor de efecto Hall generará una salida de tren de pulsos similar. Los
sensores de efecto Hall emplean el offset para generar una salida en cuadratura
para determinar la dirección del movimiento.

Este tipo de configuración típicamente conocido como cuadratura es cuando el


disco está girando, si es en sentido anti-horario el disco se encontrará a la salida A
primero y segundo a la salida B, cuando el disco está girando hacia la derecha,
el canal B será detectado primero. Este tipo de configuración es típicamente
conocido como cuadratura.

Ilustración 11. Efecto Hall con un engrane.


10 Motorreductor con Encoder

Este motor con encoder de efecto Hall puede ser accionado por una batería de
6V. El encoder proporciona 48 conteos por revolución (si se cuentan los dos
flancos ascendente y descendente) y proporciona 3591.84 conteos por
revolución del eje de salida de la caja de cambios, ya que tiene una relación de
74.83:1.

La configuración del motor con encoder y su conexión con la placa Arduino se


muestra a continuación. (ilustración 12)

Ilustración 12.Conexión entre el Arduino, Motor con encoder y la batería.


11

Programación

Ya que tenemos la parte física, procedemos a emplear el software Simulink para


controlar el motor a través de la conmutación del transistor leyendo la salida del
encoder y para representar los datos en tiempo real. En particular, vamos a utilizar
el paquete de Arduino IO de MathWorks. Posteriormente construimos el modelo
que se muestra en la ilustración 13.

Ilustración 13 Modelo para el conteo del Encoder

Al correr el modelo anterior durante algunos segundos generará la ilustración que


se muestra a continuación del conteo del encoder en función del tiempo. La
ilustración 14 muestra que el motor está inicialmente en reposo, después el motor
está encendido (el transistor está encendido) y el número de conteos del
encoder incrementa y también gira el motor. Tenga en cuenta que alrededor de
un tiempo transcurrido, el número de conteos del encoder "da la vuelta". Esto
sucede porque el búfer que mantiene el registro del número de conteos sólo
puede representar números entre -32.768 y 32.767 (es decir, se utiliza 16 bits, 15 bits
para el número y 1 bit para el signo).
12 Motorreductor con Encoder

Ilustración 14 Conteos del Encoder en tiempo real

Puesto que en última instancia deseamos controlar la velocidad del motor en


base de estos conteos, de alguna manera tenemos que direccionar ese
desborde. En concreto, vamos a construir el subsistema "Rollover" que se muestra
en el siguiente modelo (ilustración 15 ).

Ilustración 15. Modelo de Simulink con "Rollover".


13

Este subsistema “Rollover” compara el número actual de conteos para el número


de conteos de la muestra anterior con el fin de determinar si se ha producido un
desborde (el 32.767 o el -32.768) y luego se modifica el número acumulado de
recuento para eliminar el mal direccionamiento del desborde. La lógica de esto
se visualiza en la ilustración 16.

Ilustración 16 Subsistema Rollover con lógica para el desborde

Al volver a ejecutar nuestro modelo de Simulink con la corrección de desborde,


ahora obtenemos la siguiente respuesta (ilustración 17) con los conteos del
encoder en función del tiempo, la cual es la forma correcta.

Ilustración 17. Contador binario.


14 Motorreductor con Encoder

Ya que hemos logrado el modelo en Simulink para realizar el conteo de las


interrupciones, ahora lo siguiente será añadir bloques para que con estos conteos
se calcule la velocidad, ya sea en RPM o en radianes por segundo, según lo
deseado.

Como hemos comentado, para el control de la velocidad en el motorreductor se


modificará el ciclo de trabajo del PWM y así aumentar o disminuir la frecuencia
con la que se mandan los pulsos de activación. Posterior a esto, se añadirán
bloques con las constantes K para el control de la velocidad al valor indicado.

CONCLUSIÓN

En dicho proyecto se implementó el desarrollo de la función de transferencia


donde el análisis se facilitó con ayuda del software Matlab, el cual nos
proporcionó diferentes características del modelado matemático. El control de
velocidad se basará en los conteos del motor del modelado realizado en Simulink
con “Rollover” y futuras modificaciones de bloques.

REFERENCIAS

1. “Ident Matlab”[online] https://www.youtube.com/watch?v=t6SPSRacD_0

2. “Pololu Robotics &


electronics”[online]https://www.pololu.com/product/2286

3. “Análisis de tiempo-respuestas de un motor


DC”[online]https://translate.google.com.mx/translate?sl=en&tl=es&js=y&pre
v=_t&hl=es-419&ie=UTF-
8&u=http%3A%2F%2Fctms.engin.umich.edu%2FCTMS%2Findex.php%3Faux%
3DActivities_DCmotorA&edit-text

También podría gustarte