Practica Control Motor Jacobo Hero Omar Roberto
Practica Control Motor Jacobo Hero Omar Roberto
Practica Control Motor Jacobo Hero Omar Roberto
1 Introduccin
Los controles de posicin en motores de CD, pueden ser implementados de forma analgica
utilizando amplificadores operacionales, sin embargo, la forma ms comn actualmente es la
implementacin de controladores digitales, basados en circuitos integrados como
microprocesadores, DSP, microcontroladores, FPGAs, etc. puesto que estos sistemas son
reprogramables, y basta con reajustar el controlador o programar un nuevo algoritmo de control
en sus memorias, para obtener un comportamiento diferente en la salida, mientras que en un
sistema analgico este proceso involucrara el cambio de piezas especficas en la red elctrica de
control, suponiendo un mayor costo. Otra de las ventajas de los sistemas electrnicos de control es
que el precio de los sistemas electrnicos disminuye con el tiempo, al mismo tiempo que su
capacidad de procesamiento se duplica, siguiendo el comportamiento predicho por la Ley de Moore,
lo que hace cada vez ms barato y asequible el uso de dichos sistemas.
2 Objetivos
3 Marco terico
A continuacin se describe cada una de las caractersticas de los componentes del sistema de control
implementado: Motorreductor EMG49 y su correspondiente drive, la placa MD49, as como la teora
bsica del control Proporcional.
2
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
El motor EMG49 (Encoder, motor, caja de cambios 49: 1) es un motor de 24v totalmente
equipado con codificador de dos canales y una caja reductora de engranaje planetario, con relacin
de reduccin de 49:1. Tambin incluye un condensador de supresin de ruido estndar a travs de
los devanados del motor.
3
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Al momento de utilizar las salidas del encoder, se tiene que tener las siguientes consideraciones:
Los sensores Hall aceptan voltajes entre 3.5 V y 20V.
Las salidas son de colector abierto y requieren una resistencia de pull-ups a cualquier nivel
de la seal que se requiera.
4
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
El MD49 es un robusto controlador de doble motor en serie, diseado para ser usado con el motor
EMG49. Las caractersticas principales son:
Lee los encoders de los motores y proporciona el conteo para determinar la distancia
recorrida y la direccin de la rotacin.
Puede manejar dos motores con control independiente o combinado.
Mide la corriente del motor.
Slo se requiere 24v para alimentar el mdulo.
Funcin de direccin, los motores pueden ser comandados girar en el sentido indicado.
Aceleracin variable y regulacin de potencia.
Proteccin cortocircuito en la salida, sobre corriente y el voltaje incorrecto.
Tambin se incluye un LED de error y un byte de error para el diagnstico de fallos.
En la figura 4 se observa una fotografa de la placa MD49, donde se indican los detalles de cada uno
de sus puertos.
De la figura 4 se observa que la placa cuenta con una interfaz de comunicacin serie, cuya velocidad
de transmisin de los datos puede ser determinada por un jumper, si no se coloca, la taza se
establece a 9600 baudios, y cuando est colocado como se indica, taza de transferencia es de 38400
baudios.
5
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
La placa MD49 est diseada para funcionar con un puerto serie tipo TTL (nivel de 5v) a 9600
o 38400 baudios dependiendo de la seleccin del puerto serie y acepta uno o dos bits de parada. Se
suministra un jumper para establecer la velocidad de transmisin por defecto 9600. No se puede
conectar el MD49 a RS232 directamente, si desea conectarse a RS232 debe ser con la ayuda de un
convertidor de nivel de tensin como un ST232.
Comandos de control
Un conjunto de comandos de fcil uso, proporciona todas las funciones que el MD49 tiene
para ofrecer. Los comandos se envan con un byte de sincronizacin de 0x00 al principio y luego al
comando seguido por cualquier byte de datos. El MD49 responde entonces si el comando es
aplicable. La relacin de todos los comandos se muestra en la tabla III.
6
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Velocidad 1
Dependiendo del modo en el que se encuentre, este registro puede afectar la velocidad de un motor
o ambos motores. Si est en el modo 0 o 1, ajustar la velocidad y la direccin del motor 1. Cuanto
mayor sea el nmero escrito en este registro, ms potencia se aplicar al motor. Un modo de 2 o 3
controlar la velocidad y la direccin de ambos motores (sujeto al efecto del registro de giro).
Velocidad 2 / Vuelta
Cuando en el modo 0 o 1 esto opera la velocidad y la direccin del motor 2. Cuando est en el modo
2 o 3, la velocidad 2 se convierte en un valor de giro y se combina con la velocidad1 para dirigir el
dispositivo.
Modo de giro
El modo de giro determina la velocidad 1 para decidir si la direccin es hacia delante o hacia atrs.
Luego se aplica una sustraccin o adicin del valor de giro en cualquiera de los dos motores.
Si el motor no es capaz de alcanzar la velocidad requerida para el giro (ms all de la salida mxima),
entonces el otro motor es cambiado automticamente por el programa para satisfacer la diferencia
requerida.
Cuando se emite un comando de lectura de codificador, el MD49 enviar primero un byte de 4 bytes
de alto, que se debera juntar para formar un nmero firmado de 32 bits.
Por ejemplo, un comando GET ENCODER 1 puede devolver 0x00, 0x10, 0x56, 0x32.
As que declare una variable con signo de 32 bits en su programa, para C:
7
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Resultado largo;
Resultado = serin () << 24ul; // (0x00 desplazado 24 bits a la izquierda)
Resultado + = serin () << 16ul; // (0x10 desplazado 16 bits a la izquierda)
Resultado + = serin () << 8ul; // (0x56 desplazado 8 bits a la izquierda)
Resultado + = serin (); // (0x32)
El resultado ahora equivale a 1070642 decimal o hexadecimal 0x105632. Los registros se pueden
poner a cero en cualquier momento escribiendo 0x35 en el MD49.
Voltaje de la batera
Est disponible una lectura del voltaje de la batera conectada. Devuelve el voltaje en voltios (24
para 24v).
Se dispone de una lectura gua de la corriente media a travs del motor. Lee aproximadamente diez
veces el nmero de amperios (25 en 2.5A).
Responde con el nmero de revisin del software en los mdulos Controlador PIC18F2321 -
actualmente 1 en el momento de la escritura.
Modo
El comando de modo cambia la forma en que se usan los valores de velocidad / giro. Las opciones
son:
0, (Ajuste por defecto) Si se escribe un valor de 0, los registros de velocidad son velocidades
literales en el rango de 0 (marcha atrs completa), 128 (parada), 255 (avance completo).
1, el modo 1 es similar al modo 0, excepto que los valores de velocidad se interpretan como
valores con signo. El rango es -128 (marcha atrs completa) 0 (parada) 127 (hacia delante).
3, el modo 3 es similar al modo 2, excepto que los valores de velocidad se interpretan como
valores con signo. Los datos estn en el rango de -128 (marcha atrs completa) 0 (parada)
127 (avance completo).
8
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Planta
= ()
donde:
Los Encoders son sensores que generan seales digitales en respuesta al movimiento. Estn
disponibles en dos tipos, uno que responde a la rotacin, y el otro al movimiento lineal. Cuando son
usados en conjunto con dispositivos mecnicos tales como engranes, ruedas de medicin o flechas
de motores, estos pueden ser utilizados para medir movimientos lineales, velocidad y posicin.
Estn disponibles con diferentes tipos de salidas, uno de ellos son los ENCODER INCREMENTABLES,
que generan pulsos mientras se mueven, se utilizan para medir la velocidad, o la trayectoria de
posicin. El otro tipo son los ENCODERS ABSOLUTOS que generan multi-bits digitales, que indican
directamente su posicin actual.
Los encoders pueden ser utilizados en una gran variedad de aplicaciones. Actan como
transductores de retroalimentacin para el control de la velocidad en motores, como sensores para
medicin, de corte y de posicin. Tambin como entrada para velocidad y controles de rango. A
continuacin, se enlista algunos ejemplos:
9
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Soldadura ultrasnica
Maquinas de ensamblaje
Maquinas etiquetadoras
Indicacin x/y
Equipo medico
Los encoders pueden utilizar tanto tecnologa ptica como magntica. El sensor ptico
provee altas resoluciones, velocidades de operaciones altas, y con seguridad, operacin de larga
vida en la mayora de los ambientes industriales. Los sensores magnticos, se utilizan
frecuentemente en aplicaciones de trabajo pesado como en laminadoras de papel y acero, proveen
buena resolucin, altas velocidades de operacin, y mxima resistencia al polvo, humedad, y golpe
trmico y mecnico.
Encoders pticos
Los encoders pticos utilizan un disco de vidrio con un patrn de lneas depositadas en l,
un disco metlico o plstico con ranuras (en un encoder rotatorio), o una tira de vidrio o metal (en
un encoder lineal). La luz de un LED brilla a travs del disco o tira sobre uno o ms fotodetectores,
que produce el suministrador del encoder. Un encoder de incremento tiene una o ms de estas
pistas, mientras que un encoder absoluto tiene varias pistas como bits de salida.
Encoders Magnticos
Los sensores de reluctancia variable detectan cambios en el campo magntico causado por
la presencia o movimiento de un objeto ferromagntico. El sensor rotatorio de reluctancia variable
ms sencillo, comnmente llamado magneto recolector, consiste en un carrete enrollando un imn
permanente. Este genera un pulso de voltaje cuando un diente de engrane se mueve ante este.
Fuerte, seguro, barato, este sensor se utiliza en la mayora de las veces para medir la velocidad, ya
que no trabaja a menos que el objeto se est moviendo ante la cara del sensor cerca de unas 180
pulgadas por segundo o ms rpido.
10
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Otro tipo de sensor utiliza un imn permanente y un efecto de Hall o dispositivo magneto resistivo
para producir un cambio en cualquier voltaje o resistencia elctrica en presencia de material
ferromagntico, el cual puede tener forma de diente de engrane (para un encoder rotatorio) o
banda metlica con ranuras (para un encoder lineal). Este tipo de sensor trabajar abajo a una
velocidad 0, y est disponible tanto en la forma rotatoria como en la lineal (ver Figura 7).
Otro tipo de sensor magntico usa un dispositivo magneto resistivo para detectar la presencia o
ausencia de tiras magnetizadas, ya sea sobre el borde de un tambor o sobre una tira no magntica.
Codificacin Incremental
Cuando se requiere ms resolucin, es posible para el contador computar los mrgenes de direccin
y rastreo de la serie de pulsos de un canal, el cual duplica (x2) el nmero de pulsos contados para
11
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Una salida de un encoder incremental indica movimiento. Para determinar la posicin, sus pulsos
deben ser acumulados por un contador. La cuenta est sujeta a prdida durante una interrupcin
de energa o corrupcin por transistores elctricos. Cuando comienza, el equipo debe ser dirigido a
una referencia o posicin de origen para inicializar los contadores de posicin.
Algunos encoders de incremento tambin producen otra seal conocida como el ndice,
marcador, o canal Z, Esta seal, producida una vez por revolucin de un encoder de eje o a
puntos precisamente conocidos sobre una escala lineal , Se utiliza frecuentemente para localizar
una posicin especfica, especialmente durante una secuencia de mensajes.
Encoder Absoluto
Los encoders absolutos pticos sacan provecho de una tecnologa ms avanzada que la
usada por los encoders mecnicos. El encoder absoluto ptico consta de un disco transparente, ya
sea de vidrio o plstico, la cual tiene un patrn nico, formado por reas transparentes y otras
opacas. Una luz, tpicamente infrarrojo, es emitida desde un lado del disco y leda por un receptor
foto-sensible que se encuentra del otro lado del disco. El patrn que se forma cada vez que la luz es
bloqueada por los patrones en el disco es procesador por un microprocesador como una serie de
1s y 0s. El cdigo es entonces usado para interpretar la posicin exacta del eje (Figura 10).
El cdigo producido por el encoder absoluto ptico puede ser codificado de dos maneras:
en cdigo binario o cdigo gray. El encoder binario tiene demasiadas posibilidades de error, lo que
lo hace una opcin menos preferida. El encoder gray solo tiene una sola lnea posible de imprecisin.
Los dos tipos de encoder que acabamos de ver tambin pueden ser categorizados en dos tipos ms
de encoders sin importar el fabricante: encoders de vuelta simple y encoders de vuelta mltiple.
Ventajas:
12
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
El encoder incremental lleva registro del movimiento relativo a un punto de inicio definido
al momento de arrancar. Un encoder absoluto lleva registro del movimiento dentro de su
propio marco de referencia absoluto.
Cuando se enciende un encoder incremental, este debe ser recalibrado antes de comenzar
a operar. Un encoder absoluto siempre conoce su posicin y su punto de inicio puede ser
definido electrnicamente a gusto del operador.
Los encoders incrementales son anlogos mientras los encoders absolutos son digitales. El
hecho que sean digitales le brinda mayor funcionalidad y los hace ms robustos.
Desventajas:
Resolucin
La resolucin de un encoder absoluto es definida como el nmero de bits por mensaje de salida.
Esta salida puede ser directamente en cdigo binario o Gray, el cual produce un cambio de un solo
bit en cada paso para reducir errores.
Resolucin Y Precisin
13
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
4 Implementacin
A pesar de que la placa MD49 es capaz de soportar el manejo de dos motores de CD
mediante dos puentes H, contando adems con dos puertos para la adquisicin de las seales de
los codificadores, en la implementacin solo se ocup para un solo motor. Es decir que la placa
MD49 se encarg de sensar la posicin del motor y generar la seal de control compensada en
corriente. Mientras que el algoritmo de control se program en la placa Arduino UNO, quien para
poder calcular el error y posteriormente la compensacin proporcional, establece una comunicacin
serial bidireccional con la placa MD49, utilizando para ello una serie de comandos preestablecidos
por la placa MD49. Un diagrama a bloques del sistema implementado se observa en la figura 11.
Motor 1
Comunicacin serial
bidireccional
14
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
De la figura 3 se observa que existe una comunicacin serial bidireccional entre Arduino y la
placa MD49, la cual est basada en comandos que Arduino debe mandar como consulta, a lo que la
placa responde entregndole la informacin solicitada, dichos comandos se muestran en la tabla II.
Por otra parte a la placa MD49 se le puede indicar con que velocidad se desea que se mueva
cada motor, para ello ha de configurarse el comportamiento de la placa, esto se logra mediante el
comando SET_MODE, el cual obedece a:
0: (Ajuste por defecto), si se escribe un valor de 0, los registros de velocidad son velocidades literales
en el rango de 0 (marcha atrs completa), 128 (parada) y 255 (avance completo).
1: El modo 1 es similar al modo 0, excepto que los valores de velocidad se interpretan como valores
con signo. El rango es -128 (marcha atrs completa) 0 (parada) 127 (hacia delante).
2: Escribir un valor de 2 en el modo har que la velocidad1 controle la velocidad de ambos motores,
y la velocidad2 se convierte en el valor de giro.
Los datos estn en el rango de 0 (marcha atrs completa), 128 (parada), 255 (avance completo).
3: El modo 3 es similar al modo 2, excepto que los valores de velocidad se interpretan como valores
con signo. Los datos estn en el rango de -128 (marcha atrs completa), 0 (parada) 127 (avance
completo).
Por la naturaleza del error, el cual puede ser positivo o negativo, se ajust el modo de operacin en
1, en el cual, la velocidad se indica en un rango donde: -128 (marcha atrs completa) 0 (parada) 127
(hacia delante).
De la figura 3 tambin se aprecia que la placa MD49 tiene que ser alimentada con 24 V, de no ser
as, cuenta con un indicador de error (LED), y esta no funciona correctamente. En la figura 13 se
aprecia una fotografa del sistema implementado.
Seal Encoder
Motor EMG49
24V
Comunicacin
Serial
Arduino-MD49 Seal
de potencia
Motor
Arduino UNO
Driver MD49
Figura 13. Fotografa del sistema de control implementado en la realizacin de la prctica.
15
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
A continuacin se presenta el cdigo implementado en Arduino UNO, que lleva a cabo el control de
posicin P del motorreductor EMG49.
byte enc1a, enc1b, enc1c, enc1d = 0; //Variables para guardar el contenido del encoder 1
float posM1 = 0.0; //Variable para posicin del motor 1
float Ref = 0; //Variable para seal de referencia
int Control = 0; //Variable de seal de control
float kp = 0.7; //Variable de ganancia proporcional
float t = 0.0; //Variable para generar la seal senoidal de referencia
void setup()
{
Serial.begin(9600); //Velocidad de transmisin de datos a 9600 baudios
Serial.write(CMD); //Comando de inicio de transmisin
Serial.write(RESETCONT); //Comando para reestablecer contadores
Serial.write(CMD); //Comando de inicio
Serial.write(SET_MODE); //Comando para configuracin de velocidad
Serial.write(1); //Se establece en modo 1 (-128,0,127)
Serial.write(CMD); //Comando de inicio de transmisin
Serial.write(SET_ACCEL); //Se establece aceleracin en 5
Serial.write(5);
Serial.write(CMD); //Comando de inicio de transmisin
Serial.write(SET_SPEED1); //Se establece la velocidad del motor 1 a cero
Serial.write(0);
Serial.write(CMD); //Comando de inicio de transmisin
Serial.write(RESETCONT); //Comando para reestablecer contadores
}
16
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
void loop()
{
Serial.write(CMD); //Comando de inicio de transmisin
Serial.write(GET_ENC1); //Comando para obtencin de conteo de encoder 1
delay(50); //Retraso de 50 ms para esperar el dato
if(Serial.available() > 3) //Si se cumple la condicin indica que si se recibieron los datos
{
//La placa MD49 retorna el valor del contador del encoder 1, en un paquete de 4 bytes
enc1a = Serial.read();
enc1b = Serial.read();
enc1c = Serial.read();
enc1d = Serial.read();
}
long cntE1 = 0; //Variable para reconstruir los 4 bytes del contador del encoder 1, en una sola
// variable de 32 bits, para ello se utiliza "<<"
Ref = sin(t)*90; //Esto genera la seal senoidal de referencia con el valor actual de t
Control = int((Ref - posM1)*kp); //Clculo de la seal de control
//Saturacin negativa
if(Control < -128){
Control = -128;
}
//Saturacin positiva
if(Control > 127){
Control = 127;
}
t = t + 0.1; //Incremento en "t" que se utiliza para generar la seal senoidal de control
}
Del cdigo comentado, se requiere nfasis en que la placa MD49 retorna el valor del contador del
encoder en un paquete de 4 bytes, primero enva el byte ms significativo, estos 4 bytes tiene que
ser concatenados en una sola variable de long de 32 bits, considerando que 1 byte = 8 bits. Esto se
lleva a cabo en el cdigo mediante:
17
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
Donde el smbolo << indica que se va a guardar el byte enc1a en la variable cntE1, pero recorrido
24 bits, repitiendo esto para las otras tres variables, se concatenan en una sola variable. Long entre
parntesis se denomina cast y sirve para convertir un tipo de dato en otro, en este caso pasa de un
byte a un long, puesto que la variable cntE1 es long, si no se utiliza el cast a long, el resultado de la
concatenacin es errneo.
Por otra parte, tambin es importante recalcar que es necesario agregar una etapa de saturacin,
que en el cdigo se muestra en:
//Saturacin negativa
if(Control < -128){
Control = -128;
}
//Saturacin positiva
if(Control > 127){
Control = 127;
}
La saturacin en ambos sentidos es necesaria, puesto que los mximos valores de velocidad
soportados en el modo 1 son: -128 y 127, por lo que en el caso de que la compensacin calculada
fuera mayor que eso, no se le enve a la placa MD49 un valor que no pueda interpretar, de modo que
as se asegura un buen comportamiento.
La seleccin de la ganancia proporcional se llev a cabo de forma experimental, para ello se modific
el cdigo mostrado anteriormente, de forma que la referencia fuera un valor constante (anexo A),
y as poder realizar una anlisis de la respuesta de la planta ante una entrada escaln.
Considerando una kp = 2 y una entrada escaln de amplitud 720 (dos vueltas), se obtuvo la grfica
mostrada en la figura 14. Donde se aprecia que a pesar de que la respuesta del motor converge,
presenta un comportamiento transitorio no deseado, puesto que existe un sobre impulso
considerable y oscilaciones.
Amplitud ()
Seal de referencia
Seal de respuesta del sistema
Tiempo (s)
Figura 14. Comportamiento de la planta en lazo cerrado, ante entrada escaln de amplitud 720.
18
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
De lo que se concluy que una kp mayor que 1, conduce a un sobre impulso mayor. Al utilizar kp=0.7
y una entrada escaln de amplitud 720 se obtuvo la curva mostrada en la figura 15.
Amplitud ()
Seal de referencia
Seal de respuesta del sistema
Tiempo (s)
Del resultado mostrado en la figura 6, se concluy que una kp = 0.7 daba buenos resultados, por lo
que este valor es el que se utiliz para el seguimiento de la trayectoria senoidal, la cual es el objetivo
de la prctica.
5 Resultados
Al implementar kp = 0.7 y una seal de referencia senoidal de amplitud 90, se obtuvo el resultado
mostrado en la figura 16.
Seal de referencia
Seal de respuesta del sistema
Amplitud ()
Tiempo (s)
Figura 16. Seguimiento de la trayectoria senoidal, con un controlador P.
De la figura 16 se puede observar que el motor efecta el seguimiento de la seal de referencia con
cierto error, el cual es muy difcil de reducir a un nivel cercano a cero nicamente con un control P,
19
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional
para una mejora considerable en la disminucin del error, es ms adecuado un controlador mas
robusto como por ejemplo un PD o un PID.
Conclusiones
Bibliografa
West Instruments de Mxico, S.A., Manual de aplicacin de encoders. [Consulta: 18-04-2017]. Disponible en:
http://www.westmexico.com.mx/
Quadrature Encoder Dynapar. [Consulta: 18-04-2017]. Disponible en:
http://www.dynapar.com/Technology/Encoder_Basics/Quadrature_Encoder/
http://www.robot-electronics.co.uk/htm/emg49.htm
http://www.robot-electronics.co.uk/htm/md49tech.htm
http://www.robotshop.com/media/files/pdf/md49-documentation.pdf
https://www.arduino.cc/
K. Ogata, Sistemas de Control en Tiempo Discreto, 2da Edicin, Prentice Hall, Madrid
20