´ NICA ´ ELECTRICA ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIERIA Y ELECTR O
1
Informe 0: Introduccion o´ 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
—In the follo followin wing g repor report, t, based based on the charac character ter- Abstract—In izat izatio ion n of a LEGO LEGO MIND MINDST STOR ORM M motor motor,, is desc descri ribe bed d the the behaiv behaivor or of the necess necessary ary basics basics eleme elements nts for contr control ol of two variables of motor: speed of rotation (controlled by PWM signals progr programm ammed ed using using Arduin Arduino) o) and the direct direction ion of rotat rotation ion ( bridge bridge ’H’), also the operatio operation n of an encode encoderr as a measur measuring ing element element of the variables variables that describe describe the operation of the motor these are stored and interpreted by Arduino board. Additionally, the operation operation of protecti protection on elements elements such as optocouple optocouplers rs are charac character terize ized, d, these these make make the contr control ol system system and the plant plant independent. Below it shows a general description of each element used during the practice and in the same way, the PWM modulation concept, follow followed ed by the prese presenta ntatio tion n of the detail detailed ed proce procedur duree used used throughout the practice
Arduino Nano es una peque˜na na y completa placa basada en el microcont microcontrola rolador dor ATmega328 Tmega328 que se usa conect conect andola a´ ndola a una protoboard, no posee conector para alimentaci on o´ n externa y funciona con un cable USB mini-B. En la figura 1 se muestra el esquema de los pines de la tarjeta.
´ I. I NTRODUCCI ON En el siguiente informe, partiendo de la caracterizaci´on de un motor motor LEGO LEGO MINDST MINDSTORM ORM,, se descri describen ben los compor compor-tamientos de los elementos b asicos a´ sicos necesarios para controlar dos variables del motor: la velocidad de giro (controlado por medio de senales n˜ ales PWM programada programadass usando usando Arduino) Arduino) y la direcci´on on del giro (puente (puente ’H’), as´ı como el funciona funcionamien miento to de un encoder como elemento de medici on o´ n de las variables que describen la operaci on o´ n del motor, las cuales son almacenadas e interpretadas por medio de una placa Arduino. Adicionalmente se caracter caracteriza iza el funcionam funcionamient iento o de elemento elementoss de protecci protecci on o´ n como lo son los optoacopladores, por medio de los cuales se independizan el sistema de control y la planta. A continuac continuaciion o´ n se presen presentar taraa una descri descripci pci´on o´ n gene genera rall de cada cada uno de los elemen elementos tos utiliz utilizado adoss durant durantee la practi practica, ca, as´ as´ı como como el concep concepto to de modula modulaci ci´on o´ n PWM.Se PWM.Segui guido do por la presentaci´on on del procedimiento detallado usado a lo largo de la practica.Posteriormente se detallaran los resultados obtenidos, a partir de im agenes a´ genes y observac observaciones iones cualitat cualitativ ivas as del comportam portamien iento to de cada cada uno de los elemen elementos tos.. Finalm Finalment entee se presentar presentaraa el an´ analisis a´ lisis de los resultados resultados obtenidos obtenidos explican explicando do las relaciones principales de funcionamiento de cada uno de los elementos.
Figure 1: Distribuci on o´ n de pines en tarjeta arduino Nano. B. Puente en H
El puente en H es un circuito electr onico o´ nico que permite permite a un motor motor el´ectric ectrico o DC girar girar en ambos ambos sentid sentidos, os, avanz avanzar ar y retroceder.
´ I I . M ARCO TE ORICO A. Arduino Nano
Arduino Arduino es una plataform plataformaa electr electr onic o´ nicaa de c odigo ´ abierto abierto cuyos principios son contar con software y hardware f ´ f aciles a´ ciles de usar. Los entornos de desarrollo del lenguaje de programaci on o´ n y las placas han sido desarrolladas de la mano, por lo que se asegura la compatibilidad como la sencillez en su manejo.
Figure 2: Puente H con transistores. En la figur figuraa 2 se mues muestr traa la confi configu gura raci ci´on o´ n del del puen puente te en H, se constr construye uye con 4 transi transisto stores res que funcio funcionan nan como como
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
interrruptores. Si se aplica una se n˜ al positiva en la entrada ”adelante” el transistor Q1 se pone en conducci´on satur´andose, la corriente de colector de Q1 circula por la base de Q2 y la de emisor por la de Q5 lo que provoca que al terminal positivo del motor llegue V , debido a la saturaci o´ n de Q2 y que el negativo quede conectado a tierra por la saturaci o´ n de Q 5 . Si, en cambio, se aplica una se˜nal positiva en la entrada ”atr´as” conducir´a el transistor Q 6 que cierra su corriente por las bases de Q4 y Q3 . En este caso se aplica V al terminal negativo del motor y es el terminal positivo el que queda conectado a tierra, haciendo que el motor gire en sentido contrario al anterior. Los diodos son utilizados como protecci´on contra las corrientes inversas producidas por cargas inductivas. cc
cc
C. Modulaci´ on PWM
La modulaci´on PWM es una t´ecnica en la que se modifica el ciclo de trabajo de una se nal ˜ perio´ dica, ya sea para transmitir informaci´on a trav´es de un canal de comunicaciones o para controlar la cantidad de energ´ıa que se env´ıa a una carga.
2
D. Encoders
Es un transductor rotativo que mediante una se˜nal el´ectrica sirve para indicar la posici o´ n angular de un eje, velocidad y aceleraci o´ n del rotor de un motor. A medida que el eje rota, el emisor infrarrojo emite luz que es recibida por el sensor o´ ptico generando los pulsos digitales a medida que la luz cruza a trav´es del disco o es bloqueada en diferentes secciones de e´ ste. Esto produce una secuencia que puede ser usada para controlar el radio de giro, la direcci o´ n del movimiento e incluso la velocidad. •
En cuadratura: Utiliza dos sensores ´opticos posicionados con un desplazamiento de 1/4 de ranura del uno del otro, generando dos se n˜ ales de pulso desfasadas en 90 o . A las se˜nales de salida se denominan A y B. Si A adelanta a B, toma valor ”1” antes que B y se dice que rota en sentido horario. En la figura 8 se muestran las se˜nales de salida para los dos sentidos de giro.
El ciclo de trabajo de una se˜nal peri´o dica es el ancho relativo de su parte positiva en relaci o´ n con el periodo. En la figura 3 se muestra una se n˜ al con dos ciclos u´ tiles diferentes, quienes a su vez, generan un valore medio diferente.
D=
τ T
(1)
Donde: τ : Tiempo en que la funci o´ n es positiva. •
•
T: Periodo de la funci o´ n.
•
D: Ciclo de trabajo.
Figure 4: Se˜nales de salida del encoder de cuadratura para cada sentido de giro. III. P ROCEDIMIENTOS Y METODOLOG´IA
Figure 3: Se n˜ al cuadrada con ciclo u´ til de 60% y 20%. La modulaci´on por ancho de pulso de un motor de corriente continua est´a basada en el hecho de que si se recorta la corriente de alimentaci o´ n en forma de una onda cuadrada, la energ´ıa que recibe el motor disminuir a´ de manera proporcional a la relaci o´ n entre la parte alta (habilita corriente) y baja (cero corriente) del ciclo de la onda cuadrada. Controlando esta relaci´on se logra variar la velocidad del motor de una manera aceptable.
De manera general la practica se estructura en 2 partes: La primera correspondiente a la caracterizaci on ´ 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´on PWM para el control de un motor, as´ı como el uso de los encoders para caracterizar las condiciones de operaci o´ n del motor (sentido de giro, velocidad). La primera parte inicia con la caracterizaci o´ n del motor Lego, el cual es energizado con valores variables entre 7V y 9V, a partir de los cuales se puede caracterizar cualitativamente el comportamiento del motor a estos valores de tensi´o n de alimentaci´on variables. Posteriormente se energiza el encoder conectando la fuente a sus terminales de alimentacion (terminales roja y verde, ver figura 5) del motor y establecimiento una velocidad de giro constante del motor se observa la sen˜ al producida por los encoders
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
caracterizando su naturaleza (a que encoder corresponde) as ´ı como determinando la relaci´on que existe entre el encoder y el giro del motor, a partir de la comparaci o´ n entre el tiempo que le toma al motor dar una vuelta y la frecuencia de los pulsos de los encoders.
3
void loop(){ sendPWM10(100);
} ... 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 o´ n encoder. Siguiendo con la caracterizaci o´ n de los elementos se hace necesario introducir se˜nales PWM con el fin de caracterizar el funcionamiento de los dem´as elementos a utilizar. Para esto se parte del archivo de prueba ”Fade” del cual se observa la forma de modificar el ciclo u´ til de una se n˜ al. Los cambios generados por las modificaciones se observan a partir de un osciloscopio y variando la variable que controla el ciclo ´util se llega a la caracterizaci o´ n de la sen˜ al PWM (frecuencia, resoluci´on), 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
Caracterizado el funcionamiento de las se n˜ ales PWM y su forma de control, se observa el comportamiento de los optoacopladores y el driver. Primero se conecta la se˜nal PWM a la entrada del optoacoplador y haciendo uso del osciloscopio se compara con la sen˜ al de salida. Posteriormente se conecta a los pines de entrada del driver las se n˜ ales provenientes de los optoacopladores y se observa la se n˜ al obtenida a la salida del mismo, para diferentes valores de ciclo util de la se˜nal PWM, iniciando en un valor de 50%, teniendo en cuenta siempre el esquematico del octoacoplador ver figura 6.
int led = 9; int brightness = 0; int fadeAmount = 5;
... void loop() { analogWrite(led, brightness); brightness = brightness + fadeAmount; if (brightness <= 0 || brightness >= 255)
Figure 6: Diagrama de conexi on ´ octoacoplador.
{ fadeAmount = -fadeAmount;
} } Tras conocer el comportamiento b a´ sico de las se˜nales PWM, se hace uso del archivo ”pwm 10bits”, este archivo de ´ PWM, pero igual manera que el anterior genera modulaci on es necesario observar las diferencias entre los dos c´odigos, motivo por el cual se repite el procedimiento desarrollado para el co´ digo anterior, teniendo un cambio en la variable que controla el ciclo u´ til esta vez con el nombre ”sendPWM10”, ademas como se puede ver aunque recibe cualquier valor, se asignan valores entre 0 y 1023, tal como se muestra a continuaci´on.
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˜nales PWM. Inicialmente se conecta el motor a la salida del driver y conectando las se n˜ ales provenientes del encoder del motor, se generan variaciones en la se n ˜ al PWM de control generada por el arduino, con esto es posible caracterizar cualitativamente el giro del motor y compararlo con las respuestas obtenidas de los encoders. Para esta parte se asignaran ciclos u´ tiles negativos y positivos, buscando adicionalmente el valor m ´ınimo que debe tener la se˜nal PWM para generar movimiento en el motor. Para comprender de mejor manera todas las conexiones realizadas, se debe tener en cuenta la figura 7.
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
4
Figure 7: Diagrama de conexi o´ n driver. Figure 8: Se˜nal de salida del encoder. Finalmente se procede a analizar las se n˜ ales obtenidas de los encoders haciendo uso de la interfaz de arduino. Para esto a traves de dos pines del arduino se muestrean las se n˜ ales ˜ producidas por los encoders. Con estas se nales inicialmente se determina la relaci o´ n existente entre los valores medidos (dan informaci o´ n sobre la posici o´ n angular) y la variaci o´ n de la modulaci´on PWM de la se˜nal de control; posteriormente haciendo uso de l´ogica combinacional se establece una relaci o´ n para determinar el sentido de giro del motor y se establecen relaciones para la posici o´ n y la velocidad del motor.
IV. RESULTADOS
El comportamiento basico del motor se observa al conectar entre las terminales blanca y negra del mismo una fuente DC a la cual se le varia la tensi o´ n. Se observa que si se conecta a la terminal blanca el positivo de la fuente y a la terminal negra el negativo de la fuente, el sentido de giro del motor es antihorario y se verifica que al cambiar la polaridad el motor gira en sentido horario. Por otra parte, al efectuar cambios en el voltaje de alimentaci´on del motor se genera una variaci o´ n en la velocidad angular del mismo. Adicionalmente el motor LEGO cuenta con un encoder. Para terminar de caracterizar el motor, se energiza el encoder por medio de las terminales verde (tension de 3.3v) y roja (tierra) y se conectan las salidas azul y amarilla del motor cada una a un canal del osciloscopio. Las se n˜ ales de salida observadas al establecer una velocidad constante en el motor son las presentadas en la figura 8 donde la se˜nal 1 corresponde a la terminal amarilla y la se n˜ al 2 corresponde a la terminal azul.
Si se efectu´ a un cambio en la polaridad de la alimentaci o´ n del motor, las se n˜ ales de salida se invierten, es decir: para la ˜ 1 adelanta a la se n˜ al 2, pero al efectuarse imagen 8 la senal la inversi´on de la polaridad, la se˜nal 2 adelanta a la se˜nal 1. Por comparacio´ n se llega a la conclusi o´ n que se cuenta con un encoder de cuadratura. Al analizar las se n˜ ales medidas, se observa un desfase de 0.4ms (correspondiente a un desfase de 90 ) independiente de la forma de polarizaci´on del motor, resultado esperado para un encoder en cuadrtura. Partiendo de que los encoders en cuadratura est a´ 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´on 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 o´ n que para nuestro caso se cumple cuando la se˜nal de la terminal amarilla adelanta a la se˜nal de la terminal azul. En el caso contrario (el CH A adelanta a el Ch B), se tendr a´ un sentido de giro horario Adicionalmente se busca determinar la relaci o´ n que existe entre los pulsos del encoder con el giro del motor, para esto se energiza el motor con una tensi´on de 2.5V y se contabiliza el tiempo que le toma dar 10 vueltas completas.Por otra parte, al conectar el encoder al osciloscopio, se cuenta con la frecuencia de la sen˜ al, que para este caso particular es de 135Hz, que con fines pr´acticos se tomar a´ como 135 pulsos/s”. Conociendo que la velocidad de giro del motor es constante, es posible conocer el tiempo que le toma al motor dar una vuelta: Para nuestro caso se tiene que en 13.2s se dan 10 vueltas, con lo que se necesitaran 1.32s para dar una vuelta. Ahora bien si: ◦
1.32s
vuelta
∗
135 pulsos
s
=
178.5 pulsos
vuelta
Se llega a que aproximadamente se generan 180 pulsos por vuelta, es decir que un canal del encoder genera un pulso por cada dos grados y conociendo que el desfase entre los dos canales es de 90 , se tendr´a que el encoder generara un pulso cada grado. Conociendo esta relacio´ n es posible ahora determinar la ´ velocidad del motor, conociendo unicamente la tensi o´ n de ◦
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
5
alimentaci´o n y la frecuencia de la se n˜ al producida por los encoders, a manera de ejemplo si se establecen tres niveles de tensi´on diferentes se tendr a´ : Es posible observar, que al variar
Tension (V) 2.5 3.5 7.1
Frecuencia Encoder (Hz) 135 201 414
Velocidad de Giro (vueltas/s) 0.75 1.12 2.3
Velocidad de Giro (rad/s) 4.71 7.04 14.45
Table I: Velocidad de giro de motor para 3 valores de tensi o´ n
la tensio´ n, la frecuencia de la se n˜ al del encoder varia, y esto es claro conociendo que el encoder siempre generara un pulso cada grado, por ejemplo, si aumento la velocidad de giro del motor, la frecuencia con la que son generados los pulsos del encoder debe ser mayor con el fin de mantener la relaci o´ n de un pulso por cada grado. Para las siguientes partes de la practica ser a´ necesario el uso de se˜nales PWM, motivo por el cual se desarrolla un peque n˜ o an´alisis de la forma como son controladas estas a travez de un arduino: Inicialmente se identifican en el Arduino nano que los pines compatibles con se n˜ ales PWM son: D3, D5, D6, D9, D10 y D12. Ahora bien, usando uno de los c´odigos de ejemplo brindados por el programa Arduino (”Fade.ino”) se procede a caracterizar la forma de generaci´o n de la sen˜ al PWm. Al trabajar con el archivo ”Fade” se observa que este c o´ digo genera una se˜nal que varia su ciclo u´ til desde 0 hasta 255, donde 255 representar´ıa un 100% de ciclo u ´ til, es decir una tensi´o n de 5v y 0 representa un ciclo u´ til de 0% (tensi o´ n de 0v). Dentro del c´odigo el ciclo u´ til se establece a trav e´ s de la variable ’fadeAmount’ y ’brightness’ y se carga al pin con la se n˜ al por medio de la funci o´ 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 o´ n PWM:
Figure 10: Se˜nal con ciclo u´ til del 40%
A partir de estas im´agenes es posible verificar que la frecuencia de las se˜nales de salida se mantiene constante (490Hz) aunque el ciclo u´ til cambie. Adem´as, se observa que el valor m´ınimo que se le puede asignar a la variable dentro del programa es de 1 (resoluci´o n de la se˜nal PWM), obteniendo as´ı un ciclo util ´ del 0.39%, que corresponde a un valor de 19.5mV. El c o´ digo ’PWM10bits’ tambi e´ n corresponde a un programa para generacion ´ de se˜nales PWM, pero con la posibilidad de tener una mayor resoluci´o n de la se˜nal PWM, su rango de valores oscila entre 1023 y 0, donde corresponden a 100% y 0% de ciclo u´ til respectivamente. Algunos ejemplos de se n˜ ales generadas usando este c o´ digo son:
Figure 11: Sen˜ al con ciclo u´ til del 1%
Figure 9: Sen˜ al con ciclo u´ til 10%.
Figure 12: Se˜nal con ciclo u´ til del 24%
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
6
Figure 16: Se˜nal de salida octoacoplador Figure 13: Se n˜ al con ciclo u´ til del 80%
Como se puede observar, se hab´ıa asignado a la se n˜ al de entrada un ciclo u´ til menor al 50%, esto con el fin de observar su comportamiento, al analizar la se n˜ al de salida se puede observar que al pasar por el octoacoplador, la se n˜ al de entrada se invierte, dando como resultado un ciclo ´util mucho mayor, por lo cual podr´ıamos inferir que el octoacoplador se comporta como un inversor. Adicionalmente si se generan se˜nales PWM de valores positivos y negativos (se establece para los dos casos un ciclo util del 50%), se tendr a´ que las salidas de los optoacopladores ser´an:
Figure 14: Se n˜ al con ciclo u´ til del 92%
De manera an´aloga al co´ digo ’Fade’, la frecuencia de las se˜nales se mantiene constante sin importar el ciclo u´ til que se establezca, con la diferencia que para el c o´ digo ’PWM10bits’ 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 n˜ al tiene una mayor resoluci o´ n.
Figure 17: Sen˜ ales de salida de los optoacopladores ante una se˜nal de entrada con ciclo u´ til positivo
Conociendo el procedimiento para generar sen˜ ales PWM, pasamos a caracterizar el comportamiento de los optoacopladores y el driver. La forma como se desarrollo el an a´ lisis del comportamiento de los optoacopladores consisti´o en observar las diferencias que se ten´ıan entre las se n˜ ales de entrada y salida, las cuales se evidencian en las siguientes im a´ genes:
Figure 18: Sen˜ ales de salida de los optoacopladores ante una se˜nal de entrada con ciclo u´ til negativo
Figure 15: Sen˜ al de entrada octoacoplador
El comportamiento que se observa, es que para cada una de las opciones (ciclo u´ til positivo o ciclo u´ til negativo) las se˜nales de salida se alternan, es decir, cuando se tiene un ciclo u´ til positivo la senal ˜ del canal uno toma un valor aproximado de cero y el canal 2 presenta una se˜nal que sigue la se˜nal PWM, y se presenta el comportamiento alterno al aplicar un ciclo u´ til negativo.
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
Siguiendo con un procedimiento parecido al de caracterizaci o´ n de los optoacopladores, se conecta la salida de los optoacopladores al driver y se observa la se n˜ al de salida del mismo:
7
y si cambiamos el signo del ciclo u´ til se obtiene la siguiente se˜nal:
Figure 22: Senal ˜ de salida de los encoders
Figure 19: Se˜nal de entrada driver
Figure 20: Senales ˜ de salida del driver En la figura 19 se muestra la se˜nal de entrada del driver, por otra parte en la figura 20 se observa de salida, teniendo en cuenta que el driver posee dos entradas, se pudo observar ˜ de que dependiendo la entrada que se energice cambia la se nal ˜ de entrada mostrada en la figura salida, es decir, para la se nal 19 esta se˜nal pasara a tener el ciclo de valor m´aximo positivo o negtivo, todo esto dependiendo la entrada del driver que se alimente. Conociendo la forma de operaci o´ 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 u´ til de la se˜nal (incluyendo valores negativos). Se observa la siguiente respuesta:
Que corresponde a un sentido de giro horario (siguiendo con el an´alisis de funcionamiento de los encoders). De manera adicional, al variar el ciclo u´ til de la se n˜ al de entrada, se llega a que el valor m´ınimo necesario para iniciar el funcionamiento del motor corresponde a 270 dentro del c´odigo, es decir un ciclo u´ til de 26.4% y -277 cuando se establece un ciclo u´ til negativo, es decir un ciclo u´ til de 27%. Para finalizar, usando el programa ’Encoder.ino’, se procede a obtener las se˜nales de los encoders usando dos pines digitales del arduino. Tras inicializar el ’serial’ de Arduino y establecer un ciclo u´ til de se˜nal de control del motor, se muestrean los valores de los encoders y se muestran en Arduino. Como anotaci´on adicional, la tasa de muestreo del Arduino se configura a un valor de 9600Baduinos, lo cual hace referencia a 9600 unidades de sen˜ al por segundo. Los valores maestreados corresponden a una suma acumulativa de la posici´on angular del motor, donde el valor observado en la plataforma corresponde al resultado progresivo de esta acumulaci´on. El procedimiento de muestreo se desarrolla para dos diferentes valores de ciclo u´ til y se observan las se n˜ al obtenidas:
Figure 23: Se n˜ ales de posici o´ n angular para dos valores de PWM muestreadas usando Arduino Figure 21: Se˜nal de salida de los encoders Conociendo las caracter´ısticas de las se˜nales de salida normales de los encoders, es posible observar que las formas de onda obtenidas corresponden a un sentido de giro antihorario,
Como se puede observar, entre mayor es el valor de ciclo u´ til de la se n˜ al, la velocidad de giro es mayor, con lo que el encoder llegara a un valor de 360 mucho m´a s r´apido en comparaci´on a el caso en el que el ciclo u´ til es bajo. De forma complementaria, partiendo de las se n˜ ales obtenidas ◦
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
anteriormente del encoder del motor, se propone un c o´ digo a partir del cual es posible determinar el sentido de giro del motor:
{
8
´ despu´es de los cuales se reinicializa la variable de posici on. ´ V. AN ALISIS DE RESULTADOS Y CONCLUSIONES Se puede observar que el voltaje de alimentaci o´ n del encoder es de vital importancia para el manejo de la velocidad y la direccion de giro del motor lego, ya que por medio de este se controlan estas variables; ademas teniendo en cuenta que se cuenta con un encoder de cuadratura, es de resaltar que el desfase de los canales es determinante para la direcci´on de giro. Por otra parte, la relaci o´ n obtenida de 1 pulso por grado, es fundamental para poder calcular la velocidad de giro de acuerdo a la tensi o´ n aplicada de manera tal que facilite el desarrollo de proyectos.
VantA=0; //Valor anterior del canal A VantB=0; //Valor anterior del canal B VA=valor leido del canal A; VB=Valor leido del canal B; if(VantA=0 && VantB=1 && VA=0 && VB=0) //Sentido de giro Antihorario else //sentido de giro horario if(VantA=1 && VantB=0 && VA=0 && VB=0) //Sentido de giro horario else //sentido de giro antihorario if(VantA=0 && VantB=0 && VA=0 && VB=1) //Sentido de giro horario else //sentido de giro antihorario if(VantA=1 && VantB=1 && VA=0 && VB=1) //Sentido de giro Antihorario else //sentido de giro horario VantA=VA; VantB=VB;
Ahora bien, el funcionamiento de este codigo se basa en comparar los valores actuales de los canales del encoder con los valores anteriores, siendo necesaria una inicializaci o´ n de los valores anteriores para el funcionamiento del programa. Las condiciones de cada uno de los condicionales, se determinan analizando las se˜nales caracter´ısticas de los canales para cada uno de los sentidos de giro. Adicionalmente la posici o´ n del motor estar´a determinada por las variaciones en los valores de las se˜n ales de los encoders. A partir de los resultados obtenidos durante la practica, sabemos que se genera un pulso cada 2 grados, y si tomamos en cuenta tambi´en los pulsos de bajada, tendremos que se genera un pulso cada grado, esto para un canal del encoder. Ahora conociendo que el desfase entre los canales del encoder es de 90 , si medimos cualquier cambio en los canales del encoder tendremos que cada cambio se producir a´ cada 0.5 . Lo que hace falta es sumar o restar en 0.5 una variable que lleve el registro de la posici´on del motor, se tendr´a una suma cuando el valor de cualquiera de los dos canales cambie y el canal A este en adelanto al canal B ( siguiendo el principio usado para determinar el sentido de giro), en caso de que los canales cambien, pero se tiene al canal A en atraso al canal B se restara en 0.5 el valor de la posici´on angular. Adicionalmente es posible limitar los valores de la variable de posici´on estableciendo como limites valores de 360 y − 360 ◦
Nos damos cuenta que al variar los valores del ciclo u´ til de la sen˜ al, la frecuencia de salida no cambia, esto se debe a que el ciclo u ´ til solo representa el periodo de la se˜nal que se encuentra en estado alto, de esta manera lo que si se observa es que controlando el tiempo en que la se n˜ al esta en alto, podemos controlar la potencia que le aplicamos a la se n˜ al, por lo consiguiente podemos regular la velocidad con la que el motor gira. Se advierte ademas que dentro del arduino se tiene la posibilidad de modificar la se n˜ al PWM hasta una precisi´o n de 10 bits, ademas se debe tener en cuenta que est´a dado en un rango de entre 0 y 1023, observando que su resoluci´o n es de 0.094%, por otra parte, dependiendo del c o´ digo empleado podemos observar que la resoluci´on de PWM para otros casos es de 0.39% lo cual nos indica que funciona para valores de ciclo u´ til muy bajos y tiene un valor m´aximo de ciclo u´ til es de 255, estos valores se pueden deber a la posibilidad de que haya interferencias generadas por radiofrecuencia, esto implicar´ıa que para nuestro sistema, valores por fuera de la resoluci on, ´ no activar´ıan el sistema, por lo cual es importante tener bien definida esta resoluci o´ n para el buen funcionamiento de nuestros sistemas de control. Es fundamental entender que el c o´ digo acepta rangos de ´ ciclo u´ til negativos, ya que al poseer las dos salidas, el c odigo asigna el valor de 0 para alguna de las salidas y activa la otra (dependiendo si es positivo o negativo) esto a su vez modifica el sentido de giro, debido a que el driver cuenta con dos entradas, y teniendo en cuenta que, dependiendo la entrada que se alimente el motor gira en sentido horario o antihorario; por lo tanto la asignaci o´ n de valores de ciclo u´ til positivos o negativos, genera una variaci o´ n en los pines que se alimentan respectivamente, generando as´ı los cambios de sentido de giro del motor.
◦
◦
◦
Por otra parte es fundamental apreciar los cambios que se generan en la se˜nal al pasar por los octoacopladores, ya que se debe tener en cuenta la inversi o´ n que se genera en la se n˜ al para escoger los valores adecuados de la se nal ˜ de entrada, para evitar cambios no deseados en el momento que se realice la inversi´on. Es de mucha ayuda saber que arduino permite observar ciertas varibles fisicas en funci o´ n del tiempo o ver valores punto a punto, brind´andonos las opciones ”serial ploter” o ”monitor
´ ´ UNIVERSIDAD NACIONAL DE COLOMBIA, DEPARTAMENTO DE INGENIER´IA ELECTRICA Y ELECTR ONICA
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 n˜ ales muestreadas producidas por el encoder, es posible determinar las condiciones de operacio´ n del motor: Para determinar la velocidad de giro, basta con observar la frecuencia de las se˜nales del encoder, y conociendo la relaci o´ n de que por cada grado se genera un ´ del motor pulso, se llega a determinar la velocidad. La posici on se determina a partir de observar el valor anterior y actual de las sen˜ ales del encoder, ante cualquier variacio´ n de estas se le suma (o resta dependiendo de la relaci´on existente entre el valor actual y el anterior) 0 .5 al valor actual de la posici o´ n del motor obteniendo as´ı la posici o´ n instant´anea 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´a si el giro es horario o anti horario. ◦
R EFERENCES nal Modulada por Ancho [1] National Instruments. ”¿Que es una Se˜ de Pulso (PWM) y Para Qu´ e 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 OEM ARDUINO NANO [3] AG Electro´ nica. ” MB0016: V3.0”[online].Publicado: 20 de Octubre 2017.Disponible en: http://agelectronica.com/AG/ [4] Documentaci´on gen´erica plataforma Guadalbot. ”Control de motores de Corriente Continua-Puente en H” . Publicado: Mayo 2011. ∼
9