You are on page 1of 9

UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 1

Informe 0: Introducción al manejo de la plataforma


Arduino y el comando del motor NXT.
Cindy Juliana Ochoa Fonseca, Juan David Pira Roa, Manuel Octavio Acevedo Iles
{cijochoafo, jdpirar, moacevedoi}@unal.edu.co

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.

II. M ARCO TE ÓRICO


A. Arduino Nano
Arduino es una plataforma electrónica de código abierto
cuyos principios son contar con software y hardware fáciles de
usar. Los entornos de desarrollo del lenguaje de programación Figure 2: Puente H con transistores.
y las placas han sido desarrolladas de la mano, por lo que se
asegura la compatibilidad como la sencillez en su manejo. En la figura 2 se muestra la configuración del puente
en H, se construye con 4 transistores que funcionan como
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 2

interrruptores. Si se aplica una señal positiva en la entrada D. Encoders


”adelante” el transistor Q1 se pone en conducción saturándose, Es un transductor rotativo que mediante una señal eléctrica
la corriente de colector de Q1 circula por la base de Q2 y la sirve para indicar la posición angular de un eje, velocidad
de emisor por la de Q5 lo que provoca que al terminal positivo y aceleración del rotor de un motor. A medida que el eje
del motor llegue Vcc , debido a la saturación de Q2 y que el rota, el emisor infrarrojo emite luz que es recibida por el
negativo quede conectado a tierra por la saturación de Q5 . Si, sensor óptico generando los pulsos digitales a medida que
en cambio, se aplica una señal positiva en la entrada ”atrás” la luz cruza a través del disco o es bloqueada en diferentes
conducirá el transistor Q6 que cierra su corriente por las bases secciones de éste. Esto produce una secuencia que puede
de Q4 y Q3 . En este caso se aplica Vcc al terminal negativo ser usada para controlar el radio de giro, la dirección del
del motor y es el terminal positivo el que queda conectado movimiento e incluso la velocidad.
a tierra, haciendo que el motor gire en sentido contrario al
anterior. Los diodos son utilizados como protección contra las • En cuadratura: Utiliza dos sensores ópticos posicionados
corrientes inversas producidas por cargas inductivas. con un desplazamiento de 1/4 de ranura del uno del otro,
C. Modulación PWM generando dos señales de pulso desfasadas en 90o . A las
señales de salida se denominan A y B. Si A adelanta a B,
La modulación PWM es una técnica en la que se modifica el toma valor ”1” antes que B y se dice que rota en sentido
ciclo de trabajo de una señal periódica, ya sea para transmitir horario. En la figura 8 se muestran las señales de salida
información a través de un canal de comunicaciones o para para los dos sentidos de giro.
controlar la cantidad de energı́a que se envı́a a una carga.

El ciclo de trabajo de una señal periódica es el ancho


relativo de su parte positiva en relación con el periodo. En la
figura 3 se muestra una señal con dos ciclos útiles diferentes,
quienes a su vez, generan un valore medio diferente.
τ
D= (1)
T
Donde:
• τ : Tiempo en que la función es positiva.

• T: Periodo de la función.

• D: Ciclo de trabajo.

Figure 4: Señales de salida del encoder de cuadratura para


cada sentido de giro.

III. P ROCEDIMIENTOS Y METODOLOG ÍA


De manera general la practica se estructura en 2 partes:
La primera correspondiente a la caracterización de cada uno
de los elementos a usar a lo largo de la practica (motor,
driver, optoacopladores, encoders) y la segunda, enfocada en
observar los efectos de la modulación PWM para el control
de un motor, ası́ como el uso de los encoders para caracterizar
las condiciones de operación del motor (sentido de giro,
Figure 3: Señal cuadrada con ciclo útil de 60% y 20%. velocidad).
La primera parte inicia con la caracterización del motor
La modulación por ancho de pulso de un motor de corriente Lego, el cual es energizado con valores variables entre
continua está basada en el hecho de que si se recorta la 7V y 9V, a partir de los cuales se puede caracterizar
corriente de alimentación en forma de una onda cuadrada, la cualitativamente el comportamiento del motor a estos valores
energı́a que recibe el motor disminuirá de manera proporcional de tensión de alimentación variables. Posteriormente se
a la relación entre la parte alta (habilita corriente) y baja (cero energiza el encoder conectando la fuente a sus terminales
corriente) del ciclo de la onda cuadrada. Controlando esta de alimentacion (terminales roja y verde, ver figura 5) del
relación se logra variar la velocidad del motor de una manera motor y establecimiento una velocidad de giro constante
aceptable. del motor, se observa la señal producida por los encoders,
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 3

caracterizando su naturaleza (a que encoder corresponde) ası́ void loop(){


como determinando la relación que existe entre el encoder y sendPWM10(100);
el giro del motor, a partir de la comparación entre el tiempo }
que le toma al motor dar una vuelta y la frecuencia de los
...
pulsos de los encoders.

void sendPWM10(int value)


{
if (value > 1023) value = 1023;
if (value < -1023) value = -1023;
if (value >= 0){
analogWrite10(pinPWM1, value);
analogWrite10(pinPWM2, 0); ;
}
if (value < 0)
analogWrite10(pinPWM1, 0);
analogWrite10(pinPWM2, abs(value)); ;
}

Figure 5: Diagrama de conexión encoder. Caracterizado el funcionamiento de las señales PWM y


su forma de control, se observa el comportamiento de los
Siguiendo con la caracterización de los elementos se hace optoacopladores y el driver. Primero se conecta la señal PWM
necesario introducir señales PWM con el fin de caracterizar a la entrada del optoacoplador y haciendo uso del osciloscopio
el funcionamiento de los demás elementos a utilizar. Para se compara con la señal de salida. Posteriormente se conecta
esto se parte del archivo de prueba ”Fade” del cual se observa a los pines de entrada del driver las señales provenientes de
la forma de modificar el ciclo útil de una señal. Los cambios los optoacopladores y se observa la señal obtenida a la salida
generados por las modificaciones se observan a partir de un del mismo, para diferentes valores de ciclo util de la señal
osciloscopio y variando la variable que controla el ciclo útil PWM, iniciando en un valor de 50%, teniendo en cuenta
se llega a la caracterización de la señal PWM (frecuencia, siempre el esquematico del octoacoplador ver figura 6.
resolución), esto se hacia mediante la variable ”fadeAmount”
que como se que se muestra en las siguientes lineas de codigo
puede tomar valores entre 0 y 255

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

Figure 7: Diagrama de conexión driver.

Figure 8: Señal de salida del encoder.

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

alimentación y la frecuencia de la señal producida por los


encoders, a manera de ejemplo si se establecen tres niveles de
tensión diferentes se tendrá: Es posible observar, que al variar

Frecuencia Velocidad de Velocidad de


Tension (V)
Encoder (Hz) Giro (vueltas/s) Giro (rad/s)
2.5 135 0.75 4.71
3.5 201 1.12 7.04
7.1 414 2.3 14.45

Table I: Velocidad de giro de motor para 3 valores de tensión Figure 10: Señal con ciclo útil del 40%

A partir de estas imágenes es posible verificar que la


frecuencia de las señales de salida se mantiene constante
la tensión, la frecuencia de la señal del encoder varia, y esto (490Hz) aunque el ciclo útil cambie. Además, se observa
es claro conociendo que el encoder siempre generara un pulso que el valor mı́nimo que se le puede asignar a la variable
cada grado, por ejemplo, si aumento la velocidad de giro del dentro del programa es de 1 (resolución de la señal PWM),
motor, la frecuencia con la que son generados los pulsos del obteniendo ası́ un ciclo útil del 0.39%, que corresponde a un
encoder debe ser mayor con el fin de mantener la relación de valor de 19.5mV.
un pulso por cada grado.
Para las siguientes partes de la practica será necesario el uso El código ’PWM10bits’ también corresponde a un programa
de señales PWM, motivo por el cual se desarrolla un pequeño para generación de señales PWM, pero con la posibilidad de
análisis de la forma como son controladas estas a travez de tener una mayor resolución de la señal PWM, su rango de
un arduino: valores oscila entre 1023 y 0, donde corresponden a 100% y
Inicialmente se identifican en el Arduino nano que los pines 0% de ciclo útil respectivamente. Algunos ejemplos de señales
compatibles con señales PWM son: D3, D5, D6, D9, D10 y generadas usando este código son:
D12.
Ahora bien, usando uno de los códigos de ejemplo brindados
por el programa Arduino (”Fade.ino”) se procede a caracterizar
la forma de generación de la señal PWm. Al trabajar con
el archivo ”Fade” se observa que este código genera una
señal que varia su ciclo útil desde 0 hasta 255, donde 255
representarı́a un 100% de ciclo útil, es decir una tensión de
5v y 0 representa un ciclo útil de 0% (tensión de 0v). Dentro
del código el ciclo útil se establece a través de la variable
’fadeAmount’ y ’brightness’ y se carga al pin con la señal por
medio de la función ’analogWrite()’. El pin establecido como
salida es el pin 9, del cual se conecta el osciloscopio con fines
de observar el efecto de la modulación PWM:
Figure 11: Señal con ciclo útil del 1%

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 16: Señal de salida octoacoplador

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:

Figure 14: Señal con ciclo útil del 92%

De manera análoga al código ’Fade’, la frecuencia de las


señales se mantiene constante sin importar el ciclo útil que se Figure 17: Señales de salida de los optoacopladores ante una
establezca, con la diferencia que para el código ’PWM10bits’ señal de entrada con ciclo útil positivo
la frecuencia es de 15,64kHz y de igual manera la resolucion
es de 1 para el codigo, pero este valor corresponde a un ciclo
util de 0.097%, es decir la señal tiene una mayor resolución.

Conociendo el procedimiento para generar señales


PWM, pasamos a caracterizar el comportamiento de los
optoacopladores y el driver.
La forma como se desarrollo el análisis del comportamiento
de los optoacopladores consistió en observar las diferencias
que se tenı́an entre las señales de entrada y salida, las cuales
se evidencian en las siguientes imágenes:

Figure 18: Señales de salida de los optoacopladores ante una


señal de entrada con ciclo útil negativo

El comportamiento que se observa, es que para cada una


de las opciones (ciclo útil positivo o ciclo útil negativo)
las señales de salida se alternan, es decir, cuando se tiene
un ciclo útil positivo la señal del canal uno toma un valor
aproximado de cero y el canal 2 presenta una señal que sigue
la señal PWM, y se presenta el comportamiento alterno al
Figure 15: Señal de entrada octoacoplador aplicar un ciclo útil negativo.
UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERÍA ELÉCTRICA Y ELECTRÓNICA 7

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 22: Señal de salida de los encoders

Que corresponde a un sentido de giro horario (siguiendo


Figure 19: Señal de entrada driver con el análisis de funcionamiento de los encoders).
De manera adicional, al variar el ciclo útil de la señal de
entrada, se llega a que el valor mı́nimo necesario para iniciar
el funcionamiento del motor corresponde a 270 dentro del
código, es decir un ciclo útil de 26.4% y -277 cuando se
establece un ciclo útil negativo, es decir un ciclo útil de 27%.
Para finalizar, usando el programa ’Encoder.ino’, se procede a
obtener las señales de los encoders usando dos pines digitales
del arduino.
Tras inicializar el ’serial’ de Arduino y establecer un ciclo útil
de señal de control del motor, se muestrean los valores de los
encoders y se muestran en Arduino.
Figure 20: Señales de salida del driver Como anotación adicional, la tasa de muestreo del Arduino se
configura a un valor de 9600Baduinos, lo cual hace referencia
En la figura 19 se muestra la señal de entrada del driver, a 9600 unidades de señal por segundo.
por otra parte en la figura 20 se observa de salida, teniendo Los valores maestreados corresponden a una suma acumulativa
en cuenta que el driver posee dos entradas, se pudo observar de la posición angular del motor, donde el valor observado
que dependiendo la entrada que se energice cambia la señal de en la plataforma corresponde al resultado progresivo de esta
salida, es decir, para la señal de entrada mostrada en la figura acumulación. El procedimiento de muestreo se desarrolla para
19 esta señal pasara a tener el ciclo de valor máximo positivo dos diferentes valores de ciclo útil y se observan las señal
o negtivo, todo esto dependiendo la entrada del driver que se obtenidas:
alimente.
Conociendo la forma de operación de todos los elementos
necesarios, se procede conectando el motor a la salida del
driver y las salidas de los encoders del motor a cada uno de
los canales del osciloscopio. Variando el valor de ciclo útil de
la señal (incluyendo valores negativos). Se observa la siguiente
respuesta:

Figure 23: Señales de posición angular para dos valores de


PWM muestreadas usando Arduino

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

serie”, ademas nos brinda la posibilidad de modificar la


frecuencia de muestreo de los datos, esta frecuencia se expresa
en Baduinos, la cual representa la cantidad de datos que se
reciben por segundo. A partir de las señales muestreadas pro-
ducidas por el encoder, es posible determinar las condiciones
de operación del motor: Para determinar la velocidad de giro,
basta con observar la frecuencia de las señales del encoder,
y conociendo la relación de que por cada grado se genera un
pulso, se llega a determinar la velocidad. La posición del motor
se determina a partir de observar el valor anterior y actual de
las señales del encoder, ante cualquier variación de estas se
le suma (o resta dependiendo de la relación existente entre el
valor actual y el anterior) 0.5◦ al valor actual de la posición del
motor obteniendo ası́ la posición instantánea y para determinar
el sentido de giro es necesario comparar de igual manera dos
valores de los canales de los encoders, donde dependiendo de
la secuencia de cambio de los mismos se tendrá si el giro es
horario o anti horario.

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.

You might also like