Está en la página 1de 8

Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015.

Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 213

Realimentacin de velocidad con encoders de baja resolucin en


Simulink

Angel Romero, Antonio J. Muoz-Ramrez y J. Manuel Gmez-de-Gabriel


Dto. Ingeniera de Sistemas y Automtica
Universidad de Mlaga
roaguiangel@gmail.com, {ajmunoz, jmgomez}@uma.es

Resumen zan codificadores incrementales adosados al eje del


motor. En los sistemas de bajo coste estos codifi-
En ste artculo se presenta un mtodo para la ob- cadores suelen ser de baja resolucin generando un
tencin de la medida de la velocidad de un servo- nmero pequeo de pulsos por cada giro del eje del
motor con un encoder incremental de baja resolu- motor, degradando as la resolucin de las medi-
cin utilizando un Arduino Mega 2560. Se consi- das que se extraen de l. Este es el caso de sistema
deran las deficiencias tanto en resolucin a altas y motor presentado en este artculo, el EMG30, de
bajas velocidades, como en el rendimiento compu- gran implantacin dado su bajo coste y alta dispo-
tacional; y se establecen comparativas con diferen- nibilidad, una descripcin detallada se puede en-
tes mtodos de obtencin y su utilizacin dentro de contrar en [3]. Este sistema motor se ha utilizado
un modelo de un controlador de velocidad realiza- en la traccin del robot mvil PIERO (vase figu-
do en Simulink. ra 1) mencionado en [4], donde es conectado a una
placa microcontroladora Arduino Mega 2560, para
Palabras clave: Codificadores incrementales,
la lectura del codificador de posicin y el control
sensores de efecto Hall, servomotor, Arduino,
de la velocidad del motor. El conjunto presenta
Simulink
una baja resolucin en la medida y una capacidad
de clculo limitada, la conjuncin de ambas res-
tricciones sern determinantes en la calidad de la
1. Introduccin medida de la velocidad obtenida.

Dentro del control automtico es muy importan-


te el uso de seales de realimentacin obtenidas
a partir de sensores y sistemas de adquisicin de
datos. As un sistema de control de velocidad debe
disponer de una medida de la velocidad precisa y
sin retardos.
Los algoritmos para el cmputo de la velocidad se
pueden descomponer en tres grandes familias, los
basados en la cuenta de pulsos del codificador en
un tiempo de muestreo fijo (mtodo M), los basa-
dos en el tiempo entre dos eventos de la seales del Figura 1: Vista frontal de PIERO
sensor tales como periodo o flanco (mtodo T), y
los basados en un mezcla de ambos mtodos M/T
cogiendo lo mejor de cada uno.
2. Descripcin del sistema
El principal problema del mtodo M es la limita-
cin dada por la resolucin del sensor que se hace El software del sistema se desarrolla en Simulink
intolerable con valores de velocidad muy bajos. El utilizando las ventajas que este aporta a la pro-
mtodo T, por contra, tiene su principal inconve- gramacin de sistemas Arduino. Es en [5] donde
niente en la prdida de precisin a altas veloci- se encuentra un mdulo para el tratamiento de las
dades. La mejora de la precisin de la medida se seales del codificador del EMG30, dicho mdulo
puede acometer bien por una electrnica dedicada implementa una metodologa M bsica, por lo que
como en [1] o por un algoritmo de alto coste de es necesario el estudio de la calidad de medida de
computacional como los que aparecen en [2]. la velocidad en base a las caractersticas del siste-
ma motor.
Las medida de posicin y velocidad angular son
necesarias para el control en la mayora de sis- En la figura 2 se muestra la disposicin fsica de
temas mecatrnicos. Con tal propsito se utili- los sensores A y B del codificador del sistema
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 214

Motor EMG30. Cada vez que se produce un cierto el valor de la posicin que se encuentre grabado en
estmulo magntico en el sensor, ste se excita y ese momento. El Arduino Mega 2560 est basado
genera un nivel bajo (salida a colector abierto). La en un microcontrolador Atmel AtMega 2560 con
salida a velocidad constante es la que se muestra una velocidad de reloj de 16M Hz y 256kB de me-
en la figura 3. Sin embargo, los algoritmos son moria de cdigo. Otro elemento a destacar es que
aplicables a todos aquellos sensores incrementales la mxima resolucin de su reloj viene dada por 4
cuya medida se base en pulsos, como por ejemplo, microsegundos con su instruccin micros() como
sensores pticos. se ve en [6]. Dada estas limitaciones se ha conside-
rado como idneo utilizar un tiempo de muestreo
de 10ms, que permita un ciclo de control suficien-
temente rpido para corregir el error, pero si so-
brecargar la capacidad de cmputo del microcon-
trolador.

3. Clculo de la velocidad del


motor

Los diferentes algoritmos que se usan en el clculo


de la velocidad son los siguientes:

Velocidad calculada a partir de la derivada de


Figura 2: Fotografa de los dos sensores de efecto
Hall desfasados 90 la posicin (mtodo M).
Velocidad calculada internamente, tomando
Observando la figura 3 se verifica que existe un el ltimo valor que se calcul antes del mues-
desfase de 90 entre las seales A y B, fruto treo (mtodo T).
de la situacin relativa de los sensores. El uso
del segundo sensor de efecto Hall, adems de Velocidad calculada promediando las veloci-
aportar el doble de pulsos o flancos por vuelta, dades dentro de un mismo tiempo de mues-
permite conocer el sentido de giro del motor. Se treo (mtodo T con filtro de la media).
producen entre las seales A y B un total de 6
Velocidad que se calcula, dependiendo del ca-
pulsos o 12 flancos por giro del motor que, junto
so, usando el mtodo T con o sin filtro.
con el factor de multiplicacin de la reductora
30:1, hace un total de 360 flancos por giro del eje
de la rueda tenindose una resolucin de un grado. 3.1. Velocidad derivando la posicin

Es el algoritmo ms bsico, tambin llamado m-


todo M. La implementacin del algoritmo se va
a describir en dos partes: las rutinas de interrup-
cin, y el cdigo de actualizacin de salidas, que
se repite cada tiempo de muestreo.

En las rutinas de interrupcin.

Se ha programado el microcontrolador para


que las rutinas de interrupcin se ejecuten
cada vez que cambie la seal, es decir, cada
vez que se detecte un flanco de subida o de
bajada.
Figura 3: Salida de los sensores de efecto Hall A y B

En esta rutina se realiza lo siguiente:


Las seales del codificador son conectadas a dos
entradas digitales del Arduino Mega con capaci-
dad de interrupcin, el software necesita supervi- 1. Se lee el estado de ambas seales, la que
sar dichas entradas mediante interrupciones para ha provocado la interrupcin y su anlo-
llevar a cabo la contabilidad de flancos cada vez ga.
que estos se produzcan y as determinar la posi- 2. Se identifica cul ha sido el flanco, si de
cin, por ltimo cada intervalo de muestreo se lee subida o de bajada, y en qu seal.
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 215

3. Se comprueba cual fue el estado de la


otra seal en el momento del cambio.
1400

Segn esto, se obtiene el sentido de 1350

Velocidad angular (grados/segundo)


giro del motor, y se suma o se resta 1300

una unidad a la variable asociada a la 1250

posicin. 1200

1150

En el cdigo de actualizacin de salidas. 1100

0.1 0.2 0.3 0.4 0.5 0.6

Cada tiempo de muestreo se actualizan los va-


Tiempo (s)

lores de posicin angular acumulados en las


Figura 5: Velocidad ante escaln usando la derivada
rutinas de interrupcin, y se calcula la deri- (detalle)
vada discreta con la expresin 1.

pos(n) pos(n 1) La solucin podra darse de varias formas.


= (1) Aumentando el tiempo de muestreo, pero sta
Ts
solucin hara al sistema de adquisicin mucho
donde pos(n) indica la posicin en este ins- ms lento y por tanto degradara ms al sistema
tante, pos(n 1) la del instante anterior, y Ts de control. Otra posible solucin sera aumentar
es el tiempo de muestreo, que en este caso es el nmero de pulsos por vuelta, pero esta variable
igual a 0,01 s. est fijada mecnicamente, no se puede modificar.
La ltima solucin, que es la implantada, es
modificar el algoritmo de adquisicin de datos
En la figura 4 se muestra la medida de la veloci- para que en las rutinas de interrupcin se tenga
dad del motor ante la entrada a mxima potencia en cuenta el tiempo y se calcule la velocidad, esto
(pwm de 255) utilizando este algoritmo. De los es, el mtodo T.
valores obtenidos se desprende que el nmero m-
ximo de flancos por ciclo de muestreo es de 14
(1400*0.01). 3.2. Velocidad basada en el valor ms
actual
Salida
1500

Mediante ste mtodo, tambin llamado mtodo


1000

500
Grados

T, en lugar de basar la velocidad en la medida de


0

500

la posicin, se consigue obtener directamente la


1000

1500
0 2 4 6 8 10 12

medida de la velocidad a partir de la informacin


Tiempo (s)

Entrada
300

200

100
temporal relacionada con los eventos producidos
por flancos de la seal de los sensores.
PWM

100

200

300
0 2 4 6 8 10 12

Esto significa que hay que leer el tiempo 360 veces


Tiempo (s)

Figura 4: Velocidad ante escaln usando la derivada por vuelta de rueda. Sin embargo, como el tiempo
de muestreo es constante e igual en este caso a
0,01 segundos, la actualizacin de la medida de
El principal problema de este mtodo (mtodo
la velocidad se produce cada 0,01 segundos. Por
M) para el caso estudiado, esto es, utilizan-
tanto, el valor que se mostrar externamente ser
do codificadores de baja resolucin, es que
el ltimo valor calculado antes de que se produzca
la medida de la velocidad se hace altamente
la actualizacin.
dependiente del tiempo de muestreo, pudiendo
slo tomar valores cuantizados que van en saltos
de, como mnimo, T1s y que en este caso, sera A continuacin se pasa a describir el algoritmo
1 grad/0,01 s = 100 grad/s, como se muestra en ms detalladamente.
la figura 5. Esto significa que la velocidad ir au-
mentando de 100 grad/s en 100 grad/s, lo que se
traduce a su vez una gran prdida de resolucin. En las rutinas de interrupcin.
El error a mxima velocidad podra ser aceptable
por ser inferior al 10 % ((100/1400)*100), mien-
tras que en bajas velocidades supera con creces el 1. Primero se lee el tiempo en microsegun-
100 % oscilando entre el valor 0 y 100. dos al que se ha realizado el cambio en
la seal pertinente.
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 216

2. Se lee el estado de ambas seales, la que


ha provocado la interrupcin y su anlo-
1500

ga. 1450

3. Se identifica cul ha sido el flanco, si de

Velocidad angular (grados/segundo)


1400

subida o de bajada, y en qu seal. sto 1350

servir para calcular el sentido de giro, 1300

es decir, el signo de la velocidad. 1250

4. Se calcula la diferencia entre el tiempo al 1200

que se dio el cambio anterior, y el tiem- 1150

po al que se ha dado este cambio, y se 1100

almacena esta diferencia en una variable 0.1 0.2 0.3 0.4


Tiempo (s)
0.5 0.6

accesible externamente.
Figura 7: Velocidad ante escaln usando el
En el cdigo de actualizacin de salidas. algoritmo del ltimo valor (detalle)
Como cada flanco se corresponde con 1 grado
de giro de la rueda, teniendo acceso al tiempo
que ha habido entre cambios, se tiene la (el ltimo antes de realizar la actualizacin de sa-
velocidad. De esta forma, la inversa de este lidas), entra en juego el carcter aleatorio de las
tiempo de cambio ser igual a la velocidad, caractersticas mecnicas de la reductora, del mo-
directamente. As con este mtodo se obtiene tor y de la rueda, ofreciendo as para velocidades
cada 0.01 s la velocidad asociada al ltimo constantes medidas apreciablemente dispersas (el
pulso de seal que gener interrupcin antes bajo coste tiene sus desventajas). Esta dispersin,
de actualizar la salida. sto se consigue con como se ve en la figura 7, llega a superar los 200
la expresin 2. grad/s en algunos casos. Sin embargo, la resolu-
cin s que ha aumentado, pues ahora el escaln
mnimo es de unos 10-12 grados/s. debido a la re-
1 solucin del reloj del microcontrolador (como se
= 106 grados/s (2) coment en el apartado anterior), frente a los 100
s Tn
grados/s que se tenan anteriormente. Adems, co-
donde T es el tiempo en microsegundos me- mo se ver ms adelante, ste mtodo mejora mu-
dido entre pulsos consecutivos, el subndice cho la medida de la velocidad ante altas tasas de
n indica que se est usando el ltimo tiem- cambio de la misma.
po adquirido y s vale -1 o 1 dependiendo del
sentido de giro de la rueda en ese instante. Para mejorar la respuesta sin sobrecargar al mi-
Dimensionalmente, como cada pulso equivale crocontrolador, en el siguiente algoritmo se incluye
a un grado de giro del eje de salida, las uni- un filtro de la media en este clculo. Se ha elegi-
dades quedan en grados por segundo. do el filtro de la media porque ofrece resultados
suaves respecto a la medicin, y es relativamente
Salida
simple de implementar respecto al de la media-
na, para el cual sera necesario ordenar los valores
1500

1000

500

antes de aplicarlo.
Grados

500

1000

1500

2000
0 2 4 6 8 10 12
Tiempo (s)

300
Entrada
3.3. Clculo usando el valor medio
200

Como el algoritmo anterior slo tena en cuenta


100
PWM

el ltimo valor calculado, en este caso se utilizan


100

200

todos los dems valores calculados en ese mismo


300
0 2 4 6 8 10 12
Tiempo (s)

tiempo de muestreo, y se les aplica a todos la


Figura 6: Velocidad ante escaln usando el media aritmtica, que es la que se ha sacado hacia
algoritmo del ltimo valor
la salida.
Con este algoritmo, la salida velocidad al aplicar
una entrada escaln a mxima potencia en bucle
abierto a cualquiera de los dos motores, es la que En las rutinas de interrupcin.
se muestra en la figura 6. En la figura 7 se muestra
esta salida ampliada. 1. Primero, se lee el tiempo en microsegun-
En este caso, el problema es que, como se ve en la dos al que se ha realizado el cambio en
figura 7, como se est tomando la velocidad ins- la seal pertinente.
tantnea procedente de un solo valor de velocidad 2. Se lee el estado de ambas seales, la que
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 217

ha provocado la interrupcin y su anlo- Con este algoritmo, la salida velocidad al aplicar


ga. una entrada escaln es la que se muestra en la
3. Se identifica cul ha sido el flanco, si de figura 8.
subida o de bajada, y en qu seal. Se-
gn esto, se obtiene el sentido de giro del En la figura 9 se muestra esta salida ampliada
motor, y el signo de la velocidad. a la zona que se encuentra a velocidad mxima.
4. Se calcula la diferencia entre el tiempo al Se puede apreciar que el resultado ofrece una
que se dio el cambio anterior, y el tiempo mejora muy significativa en lo que a precisin de
al que se ha dado este cambio. la velocidad se refiere, manteniendo la resolucin
5. Se actualiza la variable que contendr la de 10-12 grados/s, y disminuyendo mucho la
suma de todos los tiempos-diferencia an- dispersin de los valores frente al algoritmo
teriores. Adems, se incrementa en una basado en el ltimo valor.
unidad el nmero de muestras adquiri-
das.

En el cdigo de actualizacin de salidas. 1355

Este cdigo se ejecuta cada 0.01 segundos, y

Velocidad angular (grados/segundo)


1350

hace lo siguiente: 1345

1340
1. Primero, si el nmero de muestras es 0 se
1335
calcula la velocidad utilizando la diferen-
cia entre tiempo actual y el tiempo en el
1330

cual se dio el ltimo flanco. 1325

2. Si el nmero de muestras es mayor que 1320

0, se calcula la media aritmtica de los 0.1 0.2 0.3 0.4 0.5 0.6
Tiempo (s)
tiempos. La inversa de este tiempo es di-
rectamente proporcional a la velocidad Figura 9: Velocidad ante escaln usando el filtro de
angular. la media (detalle)

3.4. Seleccin automtica del modo de


n
106 si n > 0 clculo



n
P
(s T i)

= i=1 [grados/s] Con la intencin de mejorar an ms la medida


1 de la velocidad, como el algoritmo basado en el
106 si n = 0 ltimo valor ofrece informacin mucho ms fiable



s Tnow en cambios rpidos de velocidad, y el algoritmo
(3)
basado en la media la ofrece cuando la velocidad
La expresin 3 define la velocidad angular, no cambia demasiado rpido, se ha ideado una so-
en donde Ti es el tiempo medido entre pul- lucin con la cual a partir de un cierto umbral de
sos consecutivos, en microsegundos, Tnow es tasa de cambio en la velocidad, se calcula con un
el tiempo que ha transcurrido desde que se mtodo u otro. Los resultados son los mostrados
dio el ltimo pulso hasta el muestreo actual y en la figura 10
s un nmero que vale 1 o -1 dependiendo del
sentido de giro de la rueda en ese momento. 1500
Salida

1000

500
Grados

500
Salida
1500 1000

1000
1500
0 2 4 6 8 10 12
500 Tiempo (s)
Grados

0
Entrada
500
300

1000 200

1500 100
0 2 4 6 8 10 12
Tiempo (s)
PWM

0
Entrada
300 100

200 200

100
300
0 2 4 6 8 10 12
PWM

0 Tiempo (s)

100

200

Figura 10: Velocidad ante escaln usando el


300
0 2 4 6 8 10 12
Tiempo (s)

algoritmo automtico
Figura 8: Velocidad ante escaln usando el filtro de
la media Aparentemente la diferencia con el anterior es nu-
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 218

la, pero si acercamos ambas grficas al punto en el cualquier motor tenga un cambio, ya sea de subida
cual el cambio de velocidad es mximo, se podr o de bajada. Esto significa que si, por ejemplo,
observar bien la diferencia. Vase la figura 11. Se ambos motores van a 200 rpm, como cada motor
puede comprobar cmo la velocidad calculada con ofrece 360 pulsos por vuelta, se tendrn 1200 inte-
el algoritmo automtico se aproxima muchsimo rrupciones por segundo y por motor, un total de
ms, en los cambios, a una exponencial, que la 2400 interrupciones por segundo contando ambos
calculada usando nicamente la media aritmtica. motores. Es por ello que el gasto computacio-
nal en cada una de las mismas ha de ser el mnimo.
Es necesario resaltar que este umbral es completa-
mente experimental, y dependiendo del motor que Para ello se han analizado las rutinas de inte-
se est usando valdr un valor u otro. Por ejemplo, rrupcin minuciosamente y se ha detectado una
si un motor tiene por defecto un ruido mayor que mejora muy significativa en la funcin digital-
el valor del umbral, ste ruido har que siempre se Read(pin) que incluye la librera de Arduino. El
use el modo de clculo basado en el ltimo valor, principal problema que esta funcin tal y como
por lo que la mejora introducida en el clculo de est implementada en esta librera es que resuelve
la media no se estar usando. la traduccin del nmero de pin al puerto del
AVR correspondiente en tiempo de ejecucin.
1500 Esto quiere decir que cada vez que se lee un
pin con esta funcin, primero se ha de traducir
1000
el pin que se ha escrito como argumento al pin
Velocidad angular (grados/segundo)

correspondiente en el puerto correspondiente, y


500
sto depende de la placa usada, modelo y versin.
0

500
Para hacerlo mucho ms rpido, se han sustituido
las funciones que leen los pines por unas senten-
1000 cias en lenguaje ensamblador escritas en entorno
C. Esto es, el lenguaje de bajo nivel para el AVR
especfico que se est usando. Estas instrucciones
1500
2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3
Tiempo (s)
son las ms directas y rpidas para leer el pin, son
(a) Filtro de media instrucciones en cdigo mquina, y no contienen
ms cdigo que el que se est escribiendo. El
principal inconveniente es que el cdigo deja de
ser intercambiable para todos los modelos de
1000
Arduino, y que se limita en cierta medida la
Velocidad angular (grados/segundo)

500 posibilidad de cambiar fcilmente la conexin de


la salida de los encoders al Arduino. Sin embargo,
0
en el caso del Arduino Mega, al tener solamente
500
6 entradas que aceptan interrupciones, como ya
se estn utilizando 4 de ellas, la prdida de inter-
1000 cambiabilidad es mnima. De hecho, las otras dos
entradas de interrupciones que no se usan (pines
1500
2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 3 20 y 21) estn reservadas para comunicacin I2C,
Tiempo (s)
por lo que si se usaran se perdera la posibilidad
(b) Clculo automtico de comunicacin I2C.

Figura 11: Comparativa de resultados con ambos


Se muestra a continuacin el trozo de cdigo
algoritmos
ensamblador que establece el pin 2 (que se
corresponde en el Arduino Mega con el puerto
E, pin 4) como entrada y activa la resistencia de
4. Aumento de la velocidad de pull-up interna, y el cdigo que realiza la lectura
cmputo en el clculo del pin correspondiente.

Una vez implantado el algoritmo completo, se


Sustituto de la funcin pinMode(2):
ha buscado su optimizacin, enfocando la misma
sobre todo en el interior de las rutinas de inte- DDRE = DDRE & (0xff(1 << 4));

rrupcin, que son las que se van a ejecutar cada


vez que la seal de salida de cualquier sensor de Sustituto de la funcin digitalWrite(2,HIGH):
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 219

PORTE = PORTE | (1 << 4); 5. Comparacin de los resultados

Sustituto de la funcin digitalRead(2): Se van a comparar los resultados calculando la


velocidad con los distintos algoritmos ante la
boolean drB = PINE & (1 << 4);
misma entrada, y al mismo tiempo. Para ello se
ha realizado un modelo de pruebas de la funcin
Destacar que la funcin de lectura devuelve en drB del encoder, que ofrece todas las salidas al mismo
un valor lgico segn el pin seleccionado est a tiempo, como se muestra en la figura 13.
nivel alto (true) o a nivel bajo (false).
Para mostrar en cunto mejora ste cambio en el
cdigo la velocidad de respuesta del sistema, se va
a realizar un experimento. Se va a disponer un bu-
cle for que ejecute 1000 veces una lectura del pin 2
mediante ambos mtodos anteriormente descritos.
Se medir el tiempo que tarda el microcontrolador
en ejecutar el bucle en cada caso.

Figura 13: Modelado del encoder con todas las


salidas en paralelo

Ante entrada escaln entre 255 y -255, es decir,


desde el mximo al mnimo, la respuesta es la que
se muestra en la figura 14.

Figura 12: Tiempos de ejecucin de las rutinas de


interrupcin (s)

En la figura 12 se muestran los resultados de un


anlisis estadstico del tiempo de ejecucin de las
rutinas de interrupcin con los distintos algorit-
Figura 14: Todas las salidas ante escaln mximo
mos. El ensayo se ha hecho ejecutando 1000 veces (grad/s)
cada rutina de interrupcin, y midiendo el tiem-
po en microsegundos. De izquierda a derecha, la
En esta respuesta (figura 14) se aprecia ya una
primera grfica se corresponde con el algoritmo
mejora bastante notable respecto a lo que se
original bsico usando el mtodo M. El siguien-
tena en un principio. Se pasa a mostrar ahora la
te se corresponde con la sustitucin de la funcin
respuesta de las dos ruedas ante entrada mnima,
de lectura digital nativa de Arduino por el cdigo
es decir, el mnimo valor de consigna del motor
anlogo en ensamblador. Esto supone una dismi-
en el cual ambos empiezan a moverse. Vase la
nucin del tiempo de ejecucin de estas rutinas de
captura 15.
aproximadamente un 85 %. Los dos siguientes son,
respectivamente, los resultados obtenidos usando
el mtodo T, algoritmos del ltimo valor y del va-
lor medio, con la mejora en el cdigo de lectura
ya implementada. Resaltar que el cdigo con ms
necesidad computacional, que es el usado para el
valor medio, no llega a superar en tiempo de ejecu-
cin al cdigo original, por el hecho de ste ltimo
realizar las lecturas con cdigo nativo. De los tiem-
pos de ejecucin se desprende que para un tiempo
de muestreo o ciclo de 10 ms. y dos motores se es-
t dedicando aproximadamente 2.5 % de CPU al Figura 15: Todas las salidas ante escaln mnimo
clculo de la velocidad (0.00862*14*2*100/10) lo (grad/s)
que permite al Arduino llevar a cabo su verdadera
labor de control de forma holgada. En este caso la diferencia entre los tres algoritmos
Actas de las XXXVI Jornadas de Automtica, 2 - 4 de septiembre de 2015. Bilbao
ISBN 978-84-15914-12-9 2015 Comit Espaol de Automtica de la IFAC (CEA-IFAC) 220

no es muy notable, debido a que se estn midien- esto es debido a que a estas velocidades las no
do muy bajas velocidades en bucle abierto. Hay linealidades del motor son ms notables, menos
que tener en cuenta que en la figura 15 las dos despreciables. Adems el modo automtico de
ltimas grficas tienen una escala distinta a las clculo lleva asociado un umbral experimental que
dos primeras, por lo que da la sensacin de que es vara de un robot a otro, haciendo que el cdigo
ms ruidosa. En la siguiente grfica (figura 16) se no sea completamente intercambiable. Estas
aprecia en mayor medida el suavizado introducido. desventajas son poco relevantes en comparacin
con la calidad de los resultados obtenidos al usar
el algoritmo.
La salida de los motores ante una entrada si-
nusoidal de amplitud mxima se muestra en la
figura 16, con el objetivo de afianzar resultados y
comprobar definitivamente la mejora que ofrece Referencias
el algoritmo desarrollado.
[1] R.Petrella, M.Tursini, 2008, .An Embedded
System for Position and Speed Measure-
ment Adopting Incremental Encoders", IEEE
Transactions on industrial Applications, vol
33, no. 5, pp 1436-1444
[2] Brown, H.; Schneider, C.; Mulligan, G.;
Analysis of algorithms for velocity estimation
from discrete position versus time data. IEEE
Transactions on Industrial Electronics, Vol.
39, No. 1, pp 11-19, 1992.
Figura 16: Todas las salidas ante entrada senoidal
(grad/s) [3] J. Gonalves, y otros, (2013) "Modeling and
Simulation of the EMG30 Geared Motor
Por ltimo a modo ilustrativo se presentan en la with Encoder Resorting to SimTwo: The Of-
figura 17 las grficas de la velocidad al principio ficial Robot@Factory", Advances in Sustai-
(derivada de la posicin, azul), y al final (modo nable and Competitive Manufacturing Sys-
automtico de clculo, naranja). tems.Lecture Notes in Mechanical Enginee-
ring. pp 307-314. Springer
[4] Lozano, JE Gil and Ramrez, AJ Munoz and
1400 Lpez, V Torres and de Gabriel, JM Gmez,
(2014), so de Simulink y Arduino para Prc-
Velocidad angular (grados/segundo)

1200
ticas de Robtica". Jornadas de Automtica
1000
2014, Valencia, Espaa.
800
Derivada posicin [5] Giampiero Campa, Device Drivers,
Clculo automtico
600 2012, [En lnea], [Fecha de con-
400 sulta: 15 mayo 2015]. Disponible:
http://www.mathworks.com/matlabcentral
200
/fileexchange/39354-device-drivers
0.1 0.2 0.3 0.4 0.5
Tiempo (s)
0.6 0.7 0.8 0.9
[6] Arduino - Micros, Arduino, [En lnea], [Fe-
cha de consulta: 15 mayo 2015]. Disponible:
Figura 17: Comparacin de resultados antes y [https://www.arduino.cc/en/Reference/Micros
despus de implementar el algoritmo de clculo

6. Conclusiones

Teniendo en cuenta los resultados obtenidos,


resaltar que la mejora en la medida de la ve-
locidad ha sido muy significativa, tanto en la
resolucin (mejora en un factor de 10) como en
la eficiencia computacional (mejora en un factor
del 85 % para el mismo algoritmo). Si bien es
cierto que a velocidades medias aumenta el ruido,