Professional Documents
Culture Documents
Abstract—In the following report, based on the character- Arduino Nano es una pequeña y completa placa basada en
ization of a LEGO MINDSTORM motor, is described the el microcontrolador ATmega328 que se usa conectándola a
behaivor of the necessary basics elements for control of two una protoboard, no posee conector para alimentación externa
variables of motor: speed of rotation (controlled by PWM signals
programmed using Arduino) and the direction of rotation ( y funciona con un cable USB mini-B. En la figura 1 se muestra
bridge ’H’), also the operation of an encoder as a measuring el esquema de los pines de la tarjeta.
element of the variables that describe the operation of the motor
these are stored and interpreted by Arduino board. Additionally,
the operation of protection elements such as optocouplers are
characterized, these make the control system and the plant
independent.
Below it shows a general description of each element used during
the practice and in the same way, the PWM modulation concept,
followed by the presentation of the detailed procedure used
throughout the practice
I. I NTRODUCCI ÓN
En el siguiente informe, partiendo de la caracterización de
un motor LEGO MINDSTORM, se describen los compor-
tamientos de los elementos básicos necesarios para controlar
dos variables del motor: la velocidad de giro (controlado por
medio de señales PWM programadas usando Arduino) y la
dirección del giro (puente ’H’), ası́ como el funcionamiento
de un encoder como elemento de medición de las variables que
describen la operación del motor, las cuales son almacenadas e
interpretadas por medio de una placa Arduino. Adicionalmente Figure 1: Distribución de pines en tarjeta arduino Nano.
se caracteriza el funcionamiento de elementos de protección
como lo son los optoacopladores, por medio de los cuales se B. Puente en H
independizan el sistema de control y la planta. El puente en H es un circuito electrónico que permite a
A continuación se presentara una descripción general de un motor eléctrico DC girar en ambos sentidos, avanzar y
cada uno de los elementos utilizados durante la practica, retroceder.
ası́ como el concepto de modulación PWM.Seguido por la
presentación del procedimiento detallado usado a lo largo de la
practica.Posteriormente se detallaran los resultados obtenidos,
a partir de imágenes y observaciones cualitativas del com-
portamiento de cada uno de los elementos. Finalmente se
presentara el análisis de los resultados obtenidos explicando
las relaciones principales de funcionamiento de cada uno de
los elementos.
• T: Periodo de la función.
• D: Ciclo de trabajo.
int led = 9;
int brightness = 0;
int fadeAmount = 5;
...
void loop() {
analogWrite(led, brightness);
brightness = brightness + fadeAmount;
Figure 6: Diagrama de conexión octoacoplador.
if (brightness <= 0 || brightness >= 255)
{
fadeAmount = -fadeAmount; Conociendo ya el funcionamiento individual de cada uno
} de los elementos se procede al desarrollo de la segunda parte,
} observar el comportamiento del motor a causa de señales
Tras conocer el comportamiento básico de las señales PWM.
PWM, se hace uso del archivo ”pwm 10bits”, este archivo de Inicialmente se conecta el motor a la salida del driver y
igual manera que el anterior genera modulación PWM, pero conectando las señales provenientes del encoder del motor, se
es necesario observar las diferencias entre los dos códigos, generan variaciones en la señal PWM de control generada por
motivo por el cual se repite el procedimiento desarrollado el arduino, con esto es posible caracterizar cualitativamente el
para el código anterior, teniendo un cambio en la variable que giro del motor y compararlo con las respuestas obtenidas de los
controla el ciclo útil esta vez con el nombre ”sendPWM10”, encoders. Para esta parte se asignaran ciclos útiles negativos y
ademas como se puede ver aunque recibe cualquier valor, positivos, buscando adicionalmente el valor mı́nimo que debe
se asignan valores entre 0 y 1023, tal como se muestra a tener la señal PWM para generar movimiento en el motor. Para
continuación. comprender de mejor manera todas las conexiones realizadas,
se debe tener en cuenta la figura 7.
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 4
Finalmente se procede a analizar las señales obtenidas de Si se efectúa un cambio en la polaridad de la alimentación
los encoders haciendo uso de la interfaz de arduino. Para esto del motor, las señales de salida se invierten, es decir: para la
a traves de dos pines del arduino se muestrean las señales imagen 8 la señal 1 adelanta a la señal 2, pero al efectuarse
producidas por los encoders. Con estas señales inicialmente la inversión de la polaridad, la señal 2 adelanta a la señal 1.
se determina la relación existente entre los valores medidos Por comparación se llega a la conclusión que se cuenta con
(dan información sobre la posición angular) y la variación de un encoder de cuadratura.
la modulación PWM de la señal de control; posteriormente ha- Al analizar las señales medidas, se observa un desfase de
ciendo uso de lógica combinacional se establece una relación 0.4ms (correspondiente a un desfase de 90◦ ) independiente de
para determinar el sentido de giro del motor y se establecen la forma de polarización del motor, resultado esperado para
relaciones para la posición y la velocidad del motor. un encoder en cuadrtura.
Partiendo de que los encoders en cuadratura están formados
por dos canales (CH A y CH B), nombraremos la terminal azul
como canal A y la terminal amarilla como canal B. El motivo
de establecer de esta manera la convención de los canales
responde a los principios de funcionamiento de un encoder en
cuadratura: Se sabe que si el CH B adelanta a el CH A se tiene
un sentido de giro antihorario, condición que para nuestro caso
IV. R ESULTADOS se cumple cuando la señal de la terminal amarilla adelanta a
la señal de la terminal azul. En el caso contrario (el CH A
adelanta a el Ch B), se tendrá un sentido de giro horario
Adicionalmente se busca determinar la relación que existe
entre los pulsos del encoder con el giro del motor, para esto se
energiza el motor con una tensión de 2.5V y se contabiliza el
El comportamiento basico del motor se observa al conectar tiempo que le toma dar 10 vueltas completas.Por otra parte, al
entre las terminales blanca y negra del mismo una fuente DC conectar el encoder al osciloscopio, se cuenta con la frecuencia
a la cual se le varia la tensión. de la señal, que para este caso particular es de 135Hz, que con
Se observa que si se conecta a la terminal blanca el positivo fines prácticos se tomará como 135pulsos/s”.
de la fuente y a la terminal negra el negativo de la fuente, el Conociendo que la velocidad de giro del motor es constante, es
sentido de giro del motor es antihorario y se verifica que al posible conocer el tiempo que le toma al motor dar una vuelta:
cambiar la polaridad el motor gira en sentido horario. Para nuestro caso se tiene que en 13.2s se dan 10 vueltas, con
Por otra parte, al efectuar cambios en el voltaje de ali- lo que se necesitaran 1.32s para dar una vuelta.
mentación del motor se genera una variación en la velocidad Ahora bien si:
angular del mismo.
1.32s 135pulsos 178.5pulsos
Adicionalmente el motor LEGO cuenta con un encoder. ∗ =
Para terminar de caracterizar el motor, se energiza el encoder vuelta s vuelta
por medio de las terminales verde (tension de 3.3v) y roja Se llega a que aproximadamente se generan 180 pulsos por
(tierra) y se conectan las salidas azul y amarilla del motor vuelta, es decir que un canal del encoder genera un pulso por
cada una a un canal del osciloscopio. Las señales de salida cada dos grados y conociendo que el desfase entre los dos
observadas al establecer una velocidad constante en el motor canales es de 90◦ , se tendrá que el encoder generara un pulso
son las presentadas en la figura 8 donde la señal 1 corresponde cada grado.
a la terminal amarilla y la señal 2 corresponde a la terminal Conociendo esta relación es posible ahora determinar la
azul. velocidad del motor, conociendo únicamente la tensión de
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 5
Table I: Velocidad de giro de motor para 3 valores de tensión Figure 10: Señal con ciclo útil del 40%
Figure 9: Señal con ciclo útil 10%. Figure 12: Señal con ciclo útil del 24%
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 6
Figure 13: Señal con ciclo útil del 80% Como se puede observar, se habı́a asignado a la señal de
entrada un ciclo útil menor al 50%, esto con el fin de observar
su comportamiento, al analizar la señal de salida se puede
observar que al pasar por el octoacoplador, la señal de entrada
se invierte, dando como resultado un ciclo útil mucho mayor,
por lo cual podrı́amos inferir que el octoacoplador se comporta
como un inversor.
Adicionalmente si se generan señales PWM de valores
positivos y negativos (se establece para los dos casos un ciclo
util del 50%), se tendrá que las salidas de los optoacopladores
serán:
Siguiendo con un procedimiento parecido al de caracterización y si cambiamos el signo del ciclo útil se obtiene la siguiente
de los optoacopladores, se conecta la salida de los señal:
optoacopladores al driver y se observa la señal de salida del
mismo:
Figure 21: Señal de salida de los encoders Como se puede observar, entre mayor es el valor de ciclo
útil de la señal, la velocidad de giro es mayor, con lo que
Conociendo las caracterı́sticas de las señales de salida nor- el encoder llegara a un valor de 360◦ mucho más rápido en
males de los encoders, es posible observar que las formas de comparación a el caso en el que el ciclo útil es bajo.
onda obtenidas corresponden a un sentido de giro antihorario, De forma complementaria, partiendo de las señales obtenidas
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 8
anteriormente del encoder del motor, se propone un código después de los cuales se reinicializa la variable de posición.
a partir del cual es posible determinar el sentido de giro del
motor:
V. A N ÁLISIS DE RESULTADOS Y CONCLUSIONES
{
VantA=0; //Valor anterior del canal A Se puede observar que el voltaje de alimentación del
VantB=0; //Valor anterior del canal B encoder es de vital importancia para el manejo de la
VA=valor leido del canal A; velocidad y la direccion de giro del motor lego, ya que por
VB=Valor leido del canal B; medio de este se controlan estas variables; ademas teniendo
if(VantA=0 && VantB=1 && VA=0 && VB=0) en cuenta que se cuenta con un encoder de cuadratura, es de
//Sentido de giro Antihorario resaltar que el desfase de los canales es determinante para
else la dirección de giro. Por otra parte, la relación obtenida de
//sentido de giro horario 1 pulso por grado, es fundamental para poder calcular la
velocidad de giro de acuerdo a la tensión aplicada de manera
if(VantA=1 && VantB=0 && VA=0 && VB=0) tal que facilite el desarrollo de proyectos.
//Sentido de giro horario
else Nos damos cuenta que al variar los valores del ciclo útil
//sentido de giro antihorario de la señal, la frecuencia de salida no cambia, esto se debe a
que el ciclo útil solo representa el periodo de la señal que se
if(VantA=0 && VantB=0 && VA=0 && VB=1) encuentra en estado alto, de esta manera lo que si se observa
//Sentido de giro horario es que controlando el tiempo en que la señal esta en alto,
else podemos controlar la potencia que le aplicamos a la señal,
//sentido de giro antihorario por lo consiguiente podemos regular la velocidad con la que
el motor gira. Se advierte ademas que dentro del arduino se
if(VantA=1 && VantB=1 && VA=0 && VB=1) tiene la posibilidad de modificar la señal PWM hasta una
//Sentido de giro Antihorario precisión de 10 bits, ademas se debe tener en cuenta que
else está dado en un rango de entre 0 y 1023, observando que
//sentido de giro horario su resolución es de 0.094%, por otra parte, dependiendo
del código empleado podemos observar que la resolución
VantA=VA; de PWM para otros casos es de 0.39% lo cual nos indica
VantB=VB; que funciona para valores de ciclo útil muy bajos y tiene un
valor máximo de ciclo útil es de 255, estos valores se pueden
Ahora bien, el funcionamiento de este codigo se basa deber a la posibilidad de que haya interferencias generadas
en comparar los valores actuales de los canales del encoder por radiofrecuencia, esto implicarı́a que para nuestro sistema,
con los valores anteriores, siendo necesaria una inicialización valores por fuera de la resolución, no activarı́an el sistema,
de los valores anteriores para el funcionamiento del por lo cual es importante tener bien definida esta resolución
programa. Las condiciones de cada uno de los condicionales, para el buen funcionamiento de nuestros sistemas de control.
se determinan analizando las señales caracterı́sticas de los
canales para cada uno de los sentidos de giro. Es fundamental entender que el código acepta rangos de
ciclo útil negativos, ya que al poseer las dos salidas, el código
Adicionalmente la posición del motor estará determinada asigna el valor de 0 para alguna de las salidas y activa la
por las variaciones en los valores de las señales de los otra (dependiendo si es positivo o negativo) esto a su vez
encoders. modifica el sentido de giro, debido a que el driver cuenta
A partir de los resultados obtenidos durante la practica, con dos entradas, y teniendo en cuenta que, dependiendo la
sabemos que se genera un pulso cada 2 grados, y si tomamos entrada que se alimente el motor gira en sentido horario o
en cuenta también los pulsos de bajada, tendremos que se antihorario; por lo tanto la asignación de valores de ciclo útil
genera un pulso cada grado, esto para un canal del encoder. positivos o negativos, genera una variación en los pines que
Ahora conociendo que el desfase entre los canales del encoder se alimentan respectivamente, generando ası́ los cambios de
es de 90◦ , si medimos cualquier cambio en los canales del sentido de giro del motor.
encoder tendremos que cada cambio se producirá cada 0.5◦ .
Lo que hace falta es sumar o restar en 0.5 una variable que Por otra parte es fundamental apreciar los cambios que se
lleve el registro de la posición del motor, se tendrá una suma generan en la señal al pasar por los octoacopladores, ya que
cuando el valor de cualquiera de los dos canales cambie y el se debe tener en cuenta la inversión que se genera en la señal
canal A este en adelanto al canal B ( siguiendo el principio para escoger los valores adecuados de la señal de entrada, para
usado para determinar el sentido de giro), en caso de que evitar cambios no deseados en el momento que se realice la
los canales cambien, pero se tiene al canal A en atraso al inversión.
canal B se restara en 0.5 el valor de la posición angular. Es de mucha ayuda saber que arduino permite observar ciertas
Adicionalmente es posible limitar los valores de la variable de varibles fisicas en función del tiempo o ver valores punto a
posición estableciendo como limites valores de 360◦ y −360◦ punto, brindándonos las opciones ”serial ploter” o ”monitor
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 9
R EFERENCES
[1] National Instruments. ”¿Que es una Señal Modulada por Ancho
de Pulso (PWM) y Para Qué es Utilizada?”[online].Publicado: 26
de Mayo 2014. Disponible en: http://digital.ni.com/public.nsf/allkb/
AA1BDEA4AA224E3E86257CE400707527
[2] J. Vanegas. ”Encoders”. [online],Mayo 2009. Disponible en: http://
ramos.elo.utfsm.cl/∼elo212/docs/Encoders-jvr-v01.pdf
[3] AG Electrónica. ”MB0016: OEM ARDUINO NANO
V3.0”[online].Publicado: 20 de Octubre 2017.Disponible en:
http://agelectronica.com/AG/
[4] Documentación genérica plataforma Guadalbot. ”Control de motores de
Corriente Continua-Puente en H”. Publicado: Mayo 2011.