Вы находитесь на странице: 1из 20

Universidad Veracruzana

Faculta de ingeniera | Boca del rio


Maestra en Ingeniera Aplicada | Sensores y actuadores

Practica 4: Control Proporcional


Equipo 1:
Hero Molina Snchez
Jacobo Torres Figueroa
Juan Omar Gamboa Cruz
Roberto Cazares Centeno
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional

1 Introduccin

El control de posicin de motores elctricos es ampliamente utilizado en diversas


aplicaciones industriales y productos de uso cotidiano, por ejemplo en mquinas herramientas de
precisin (Tornos y Fresadoras CNC), hasta dispositivos comunes como cmaras, celulares y lectores
de Blu-ray.

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.

Por tanto, en esta prctica se aborda el diseo e implementacin de un control de posicin


P (Proporcional) digital, en un motor de CD, particularmente el motorreductor EMG49, el cual
retroalimenta su posicin por medio de un codificador de efecto hall de dos canales. El sistema de
control es embebido en la placa de desarrollo Arduino UNO, que enva una seal digital de control
(compensada) por medio de comunicacin serial al servodrive MD49, el cual cuenta con un sistema
de control interno, que traduce la seal digital de entrada, en una seal PWM proporcional, que al
inducirla a un puente H interno, realiza el control de la carga (motor de CD). La placa MD49 tambin
funge como interfaz entre el codificador de efecto hall acoplado al motorreductor EMG49, puesto
que mediante un puerto, esta es capaz de llevar el conteo de los pulsos de forma bidireccional, este
dato es enviado a Arduino cuando lo solicite, mediante un comando en la comunicacin serial
establecida entre Arduino y el servodrive MD49.

2 Objetivos

Disear e implementar un controlador Proporcional, en Motor de CD EMG49.


Utilizar la placa MD49 como servodrive.
Obtener seales de respuesta de la planta, en el seguimiento de la trayectoria senoidal.

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

3.1 Motorreductor EMG49

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.

Figura 1. Motorreductor EMG49.


En la tabla I se muestras las especificaciones tcnicas ms relevantes del motor.
Tabla I. Especificacin Motor
Tensin nominal 24v
El par nominal 16 kg / cm
Velocidad nominal 122rpm
Corriente nominal 2100mA
Velocidad sin carga 143 rpm
Corriente sin carga 500mA
Corriente de paro 13A
Potencia nominal 34.7W
Cuentas por revolucin (encoder) 980

En la figura 2 se observa la curva caracterstica del motor EMG49, en trminos de Potencia,


Eficiencia, Corriente y Velocidad, respecto del torque de salida. Las dimensiones del motor en mm
se muestran en la figura 3.

3
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional

Figura 2. Curva caracterstica del motorreductor.

Figura 3. Dimensiones del motor EMG49.


Conectores
De la figura 3 se observa que el motor posee dos tipos de conectores, uno para la potencia y otro
para la salida de los sensores. Los conectores de potencia del motor, est conectado con una
terminal de dos vas de paso de 3,96 mm, tipo Excon 3961 y tiene 300 mm de longitud de cable,
donde: Negro (1): - Motor, Rojo (2): + Motor (ver figura 3). Los codificadores se conectan mediante
un conector JST4 de cuatro hilos, siguiendo la relacin mostrada en la tabla II.

Tabla II. Descripcin de los hilos del encoder


Color del hilo Conexin
Prpura (1) Sensor Hall B Vout
Azul (2) Sensor Hall A Vout
Verde (3) Tierra para el sensor Hall Vout
Caf (4) Corriente para el sensor

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

3.2 Driver MD49

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.

Figura 4. Placa controladora MD49.

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

Control de la placa MD49

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.

Tabla III. Relacin de comandos para controlar la placa MD49


Bytes Bytes
Comando Nombre enviados retornados Descripcin:
al MD49 del MD49
0x21 GET SPEED 1 2 1 Retorna velocidad motor 1
0x22 GET SPEED 2 2 1 Retorna velocidad motor 3
0x23 GET ENCODER 1 2 4 Conteo encoder motor 1, 4 bytes (con signo)
0x24 GET ENCODER 2 2 4 Conteo encoder motor 2, 4 bytes (con signo)
0x25 GET ENCODERS 2 8 Retorna 8 bytes, encoder1, encoder2
0x26 GET VOLTS 2 1 Retorna el voltaje entregado por la batera
0x27 GET CURRENT 1 2 1 Retorna corriente en el motor 1
0x28 GET CURRENT 2 2 1 Retorna corriente en el motor 2
0x29 GET VERSION 2 1 Retorna la versin de software MD49
0x2A GET ACCEL 2 1 Retorna el valor actual de aceleracin
0x2B GET MODE 2 1 Retorna el modo actual seleccionado
0x2C GET VI 2 3 Retorna el voltaje en batera y la corriente de
ambos motores
0x2D GET ERROR 2 1 Retorna un byte de errores en la placa
0x31 SET SPEED 1 3 0 Establece una velocidad para motor 1
0x32 SET SPEED 2 / 3 0 Establece velocidad en motor 2 o un giro
TURN
0x33 SET ACCEL 3 0 Establece nueva aceleracin
0x34 SET MODE 3 0 Establece el modo de operacin
0x35 RESET ENCODERS 2 0 Reestablece los contadores de los encoders
0x36 DISABLE 2 0 Salida de potencia sin cambios ante
REGULATOR retroalimentacin de encoder
0x37 ENABLE 2 0 Salida de potencia regulada ante
REGULATOR retroalimentacin de encoder
0x38 DISABLE TIMEOUT 2 0 MD49 continuar la salida aun sin
comunicacin
0x39 ENABLE TIMEOUT 2 0 MD49 frenar la salida despus de 2s sin
comunicacin

6
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional

Ejemplo de consulta a la placa MD49


Para leer el voltaje de la batera, enve:

0x00 - byte de sincronizacin


0x26 - Comando GET VOLTS
Y la placa MD49 respondera con:
0x18 - byte devuelto (24 decimal) 24v

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.

As que si la direccin es hacia adelante


Velocidad del motor1 = velocidad1 - vuelta
Velocidad del motor2 = velocidad1 + vuelta

De lo contrario la direccin es inversa as que


Velocidad del motor1 = velocidad1 + vuelta
Velocidad del motor2 = velocidad1 - vuelta

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.

Lea el codificador 1, lea el codificador 2 o lea los encoders

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

Corriente del motor 1 y 2

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

Nmero de revisin del software

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

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

8
MIA 6 - 2017| Sensores y actuadores | Implementacin de control proporcional

3.3 Control Proporcional

El control proporcional es uno de los controladores ms bsicos que se pueden implementar


en un sistema de control lineal, puesto que se basa en la compensacin del error de posicin
nicamente al ser amplificado por una constante kp, Un diagrama de bloques de un control
proporcional, se muestra en la figura 5.

Planta

Figura 5. Diagrama de bloques de un sistema de control Proporcional.

En el algoritmo de control proporcional, la salida del controlador es proporcional a la seal


de error, que es la diferencia entre el punto objetivo que se desea y la variable de proceso. En otras
palabras, la salida de un controlador proporcional es el resultado del producto entre la seal de
error y la ganancia proporcional. Esto puede ser expresado matemticamente como:

= ()

donde:

: Es la salida del controlador proporcional.


: Ganancia proporcional.
(): El error de proceso instantneo, definido como: () = .
SP = Punto de referencia establecido, el valor que se desea obtener en la planta.
PV = Es la medida real de la variable del proceso que se desea controlar.

3.4 Codificadores (Encoders)

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:

Dispositivo de control de puertas


Robtica
Plotter

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

La tecnologa magntica es muy resistente al polvo, grasa, humedad, y a otros


contaminantes comunes en los ambientes industriales, as como a los golpes y vibraciones. Existen
varios tipos de sensores magnticos (ver Figura 6).

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.

Figura 6. Encoder con sensores de efecto hall.

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.

Figura 7. Encoder manetoresistivo.

Codificacin absoluta vs incremental

Codificacin Incremental

Los encoders incrementales proveen un nmero especfico de pulsos equitativamente


espaciados por revolucin (PPR) o por pulgada o milmetro de movimiento lineal. Se utiliza un solo
canal de salida para aplicaciones donde el sentido de la direccin de movimiento no es importante
(unidireccional). Donde se requiere el sentido de direccin, se utiliza la salida de cuadratura
(bidireccional), con dos canales de 90 grados elctricos fuera de la fase; el circuito determina la
direccin de movimiento basado en la fase de relacin entre ellos. Esto es til para procesos que se
pueden revertir, o para mantener la posicin de red cuando se encuentra inmvil u oscilando
mecnicamente. Por ejemplo, la vibracin de la maquina mientras este detenido podra ocasionar
que un encoder unidireccional produzca una corriente de pulsos que seran contados errneamente
como movimiento. El controlador no sera engaado cuando se utilice la cuadratura de conteo
(Figura 8).

Figura 8. Funcionamiento interno de un codificador incremental absoluto.

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 rotacin o pulgada de movimiento. Al contar ambos mrgenes de direccin y de rastreo de


ambos canales darn una resolucin x4 (ver figura 9).

Figura 9. Ejemplo de tren de pulsos en la salida de un encoder incremental.

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

Figura 10. Encoder absoluto ptico.

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:

El encoder absoluto tpico especifica un solo cdigo de ngulo.


El encoder absoluto es ms costoso.

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

Resolucin es el nmero de segmentos de medicin o unidades en una revolucin de un eje


de encoder o una pulgada o milmetro de una escala lineal. Los encoders de eje estn disponibles
con resoluciones arriba de los 10,000 pulsos por revolucin (PPR) directamente, y 40,000 PPR por
deteccin de margen de los canales A y B, mientras que los encoders lineales estn disponibles con
resoluciones medidos en microns.

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.

Figura 11. Sistema de control implementado.


Por otra parte el diagrama de conexin elctrico completo del sistema se muestra en la figura 12.

Motor 1

Comunicacin serial
bidireccional

Figura 12. Diagrama elctrico entre Arduino UNO y la placa MD49.

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

3.1 Implementacin del controlador en Arduino UNO

A continuacin se presenta el cdigo implementado en Arduino UNO, que lleva a cabo el control de
posicin P del motorreductor EMG49.

#define CMD (byte)0x00 //Comando para comenzar la comunicacin


#define GET_ENC1 0x23 //Comando para obtener el contador del encoder 1
#define SET_ACCEL 0x33 //Comando para establecer la aceleracin de los motores
#define SET_SPEED1 0x31 //Comando para establecer la velocidad del motor 1
#define RESETCONT 0x35 //Comando para reestablecer los contadores de ambos encoders
#define SET_MODE 0x34 //Comando para establecer el modo de codificacin de la velocidad

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
}

El cdigo contina en la siguiente pgina.

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 "<<"

cntE1 += (long)enc1a << 24;


cntE1 += (long)enc1b << 16;
cntE1 += (long)enc1c << 8;
cntE1 += (long)enc1d;

posM1 = cntE1 * 0.3673; //Conversin de conteo de pulsos a grados

//Cdigo para graficado en el Serial Plotter


Serial.println();
Serial.print((sin(t)*90));
Serial.print(',');
Serial.println(posM1);
//Fin de graficado

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;
}

Serial.write(CMD); //Comando de inicio de transmisin


Serial.write(SET_SPEED1); //Comando para establecer la velocidad del motor 1
Serial.write(Control); //Se indica que la velocidad del motor est dada por la seal de control

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:

cntE1 += (long)enc1a << 24;


cntE1 += (long)enc1b << 16;
cntE1 += (long)enc1c << 8;
cntE1 += (long)enc1d;

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.

3.2 Ajuste de la ganancia proporcional

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)

Figura 15. Respuesta del sistema en lazo cerrado con kp = 0.7.

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

En esta prctica se logr la implementacin de un control Proporcional, de forma


satisfactoria, puesto que se cumpli con el objetivo de que el motor EMG49 siguiera una trayectoria
senoidal variable. Por otra parte tambin se revis informacin pertinente a la forma de
comunicacin necesaria para la tarjeta de control MD49, la cual est basada en comandos
preestablecidos por el fabricante, de lo cual se apreci una gran ventaja, de si por ejemplo esto se
hubiera implementado desde cero.

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

Вам также может понравиться