Descarga la aplicación para disfrutar aún más
Vista previa del material en texto
INSTITUTO TECNOLÓGICO DE LA LAGUNA DEPARTAMENTO DE ELÉCTRICA – ELECTRÓNICA INGENIERÍA ELECTRÓNICA SISTEMAS DE COTROL EN TIEMPO REAL PRÁCTICA 2: ENCODER CARLOS ALBERTO GARCÍA EZQUERRA N° DE CONTROL 17131200 OSCAR DAVID MORENO GARCÍA N° DE CONTROL 17131208 RAÚL CABRERA OLAGUE N° DE CONTROL 17131192 RODRIGO SÁNCHEZ ORDAZ N° DE CONTROL 17131219 TORREÓN, COAHUILA DE ZARAGOZA, MÉXICO 19 DE JUNIO DE 2020 INDICE OBJETIVOS ............................................................................................................ 1 INTRODUCCIÓN .................................................................................................... 1 MARCO TEÓRICO ................................................................................................. 2 ENCODER ........................................................................................................... 2 TIPOS DE ENCODERS ....................................................................................... 3 INTERRUPCIONES DE ARDUINO ..................................................................... 5 DESARROLLO ....................................................................................................... 6 PRIMER PROGRAMA ......................................................................................... 7 SEGUNDO PROGRAMA ..................................................................................... 9 TERCER PROGRAMA ...................................................................................... 12 CONCLUSIONES ................................................................................................. 15 INTITUTO TECNOLÓGICO DE LA LAGUNA 1 OBJETIVOS General: Conocer el funcionamiento de los encoders. Particulares: Introducirse en el uso del Arduino Due. Realizar mediciones de velocidad de giro y sentido de giro de un motor de corriente directa por medio de un encoder, con la ayuda de Arduino. INTRODUCCIÓN Para una gran cantidad de aplicaciones que utilizan motores, es necesario poder medir y/o controlar los parámetros de los mismos, tales como el sentido de giro y la velocidad angular. Existen una gran cantidad de herramientas y métodos para este fin, pero una de las más comunes es el uso de encoders o codificadores rotatorios. La presente práctica se desarrolló con la finalidad de conocer el uso de estos dispositivos, además de aprender a implementar aplicaciones con la placa Arduino Due. Para ello, se desarrollaron tres programas, todos con la misma finalidad: medir el sentido y la velocidad de giro de un motor de corriente directa. La diferencia entre ellos es la cantidad de muestras que son tomadas del encoder, esto con la finalidad de hacer más óptima la medición. Estos parámetros se midieron de dos maneras: una, observado las señales emitidas por el encoder a través de un osciloscopio digital, y la otra, a través del monitor serie de Arduino, el cual también permite observar la dirección del giro, junto con la cantidad de muestras tomadas del encoder. INTITUTO TECNOLÓGICO DE LA LAGUNA 2 MARCO TEÓRICO ENCODER Los encoders son componentes que se añaden a un motor de corriente continua para convertir el movimiento mecánico en pulsos digitales que puedan ser interpretados por el sistema de electrónica de control integrado. El principal objetivo de los distintos tipos de encoders es el de transformar información de un formato a otro, con el propósito de estandarización, adecuación de la velocidad o control de la seguridad. Los motores DC tienen un complejo control de posición y de la velocidad, su comportamiento es no lineal y depende mucho de la carga que soportan; por este motivo necesitan de la aplicación de un encoder (que puede estar integrado o no) que permita conocer y asegurar la correcta posición del eje. Según su diseño y funcionalidad existen distintos tipos de encoders. Poniendo énfasis en su composición, un encoder se compone de un disco conectado a un eje giratorio. El disco puede estar fabricado de vidrio o plástico, y se codifica combinando zonas transparentes y opacas que bloquean el paso de la luz. A continuación, y entrando ya en su funcionamiento, se puede decir que con la rotación del eje, la fuente emisora infrarroja emite una luz que es interpretada por el sensor óptico (o foto-transistor) que a su vez genera los pulsos digitales, según la luz atraviesa el disco o es bloqueada por las zonas opacas. Esto produce una secuencia de información que permite controlar aspectos como la dirección del movimiento, el radio de giro, y en algunas circunstancias, la velocidad. INTITUTO TECNOLÓGICO DE LA LAGUNA 3 Algunas de sus aplicaciones más extendidas son la robótica, los pequeños electrodomésticos de uso doméstico o ciertas aplicaciones industriales que requieren de una medición angular. TIPOS DE ENCODERS Encoder óptico Se trata del tipo de encoder más usado y está compuesto por una fuente emisora de luz, un disco giratorio y una detector de luz “foto detector”. El disco está montado sobre un eje giratorio y dispone de secciones opacas y transparentes sobre la cara del disco. La luz que emite la fuente es recibida por el fotodetector o interrumpida por el patrón de secciones opacas produciendo como resultado señales de pulso que son leídas por un dispositivo controlador el cual incluye un microprocesador para determinar el ángulo exacto del eje. INTITUTO TECNOLÓGICO DE LA LAGUNA 4 Encoder lineal Es un dispositivo o sensor que cuenta con una escala graduada para determinar su posición. Los sensores en el encoder leen la escala para después convertir su posición codificada en una señal digital que puede ser interpretada por un controlador de movimiento electrónico. Los encoders lineales pueden ser absolutos o incrementales y existen diferentes tipos de encoders lineales según la tecnología que se usa en su mecanismo. Este tipo de encoder se utiliza en aplicaciones de metrología, sistemas de movimiento y para controlar instrumentos de alta precisión en la fabricación de herramientas. Encoder absoluto Los encoders absolutos ofrecen un código único para cada posición y se dividen en dos grupos: los encoders de un solo giro y los encoders absolutos de giro múltiple. Su tamaño es pequeño, lo que permite una integración más simple. Los encoders absolutos se aplican en motores eléctricos de corriente directa y sin escobillas, en sectores específicos como la maquinaria sanitaria. Encoder incremental Se trata de un tipo de encoder óptico, que determina el ángulo de posición a raíz de realizar cuentas incrementales, donde cada posición es completamente única. Encoder de cuadratura Estas 2 señales son leídas por un sistema microcontrolador, el cual puede calcular tanto la velocidad en revoluciones por minuto (RPM), la posición del eje y el sentido de giro. Los sensores de efecto Hall son transductores que generan un voltaje de salida en respuesta a la presencia de un campo magnético variable. Las aplicaciones típicas son en sensores de proximidad, medición de corriente y medición de velocidad en motores de corriente directa. Para aplicaciones de cálculo de velocidad y posición, los sensores son colocados con una separación de 90°, con respecto al círculo completo de giro del eje del motor. INTITUTO TECNOLÓGICO DE LA LAGUNA 5 Un imán de ferrita induce en los sensores las señales A y B mostradas en la figura de abajo. Ambas señales están desfasadas 90°, debido a la posición de los sensores con respecto al círculo de giro. INTERRUPCIONES DE ARDUINO Arduino dispone de dos tipos de eventos en los quedefinir interrupciones. Por un lado están las interrupciones de timers, y por otro, están las interrupciones de hardware, que responden a eventos ocurridos en ciertos pines físicos. Dentro de las interrupciones de hardware, Arduino es capaz de detectar los siguientes eventos. RISING, ocurre en el flanco de subida de LOW a HIGH. FALLING, ocurre en el flanco de bajada de HIGH a LOW. CHANGING, ocurre cuando el pin cambia de estado (rising + falling). LOW, se ejecuta continuamente mientras está en estado LOW. En el caso del Arduino Due los 53 pines digitales pueden ser usados para interrupciones. INTITUTO TECNOLÓGICO DE LA LAGUNA 6 DESARROLLO La práctica consistió en comprobar el funcionamiento de un encoder de cuadratura en un motor de corriente directa. Para ello, se probaron 3 programas distintos, que se describirán más adelante. Las conexiones realizadas corresponden al siguiente diagrama, para las tres fases de la práctica: El comportamiento del motor se observó a través del osciloscopio, pues con la señal generada es posible conocer el sentido y la velocidad de giro. La eficacia de los programas se observó a través del serial de Arduino, pues en él es posible observar la cantidad de muestras tomadas por el encoder, además del sentido de giro. INTITUTO TECNOLÓGICO DE LA LAGUNA 7 PRIMER PROGRAMA El código introducido fue el siguiente: Se empiezan declarando los pines 3 y 4 del arduino en donde las salidas del encoder entraran. La variable encoder0Pos es la posición angular cuyas unidades son las muestras que el arduino obtiene del encoder. En el setup se definen las variables encoder0PinA (pin 3 del arduino) y encoder0PinB (pin 4 del arduino) como entradas. Se comienza la comunicación serial y se define una resolución de escritura de 8 bits. Dentro del loop primero se lee el estado de encoder0PinA y se compara mediante un if con la última muestra obtenida de la misma variable, si son diferentes significa que hubo un desplazamiento angular. Después se pregunta por el estado de encoder0PinB para definir en qué sentido está girando el motor INTITUTO TECNOLÓGICO DE LA LAGUNA 8 y definir si la posición encoder0Pos está aumentando o disminuyendo. Se imprimen los resultados en el monitor serial. Dado que este programa solamente detecta los cambios de estado cuando se pregunta por ellos, la cantidad de muestras no será muy grande, además de que depende del encoder utilizado. En este caso, este programa con este encoder, brinda 86 muestras. Si el motor, visto de frente, gira hacia la derecha, la señal amarilla del osciloscopio aparecerá adelantada y el monitor serie mostrará un ascenso en los valores de sus salidas, si gira hacia la izquierda, la señal azul aparecerá adelantada y el monitor serie mostrará un descenso en los valores de sus salidas. A continuación se muestran los resultados obtenidos con este programa. Primero, se muestran el monitor serie y el osciloscopio para un giro hacia la derecha. Y ahora se muestra la señal para un giro hacia la izquierda: Se puede observar que los resultados obtenidos son los predichos. INTITUTO TECNOLÓGICO DE LA LAGUNA 9 SEGUNDO PROGRAMA El código introducido fue el siguiente: Se empiezan declarando las variables globales encoder0PinA en el pin 2 del Arduino y encoder0PinB en el pin 3, que son las salidas del encoder. Se define encoder0Pos como una variable de tipo entero que será la posición angular del motor cuyas unidades serán las muestras obtenidas del arduino por el encoder. En el setup se definen los pines encoder0PinA y encoder0PinB como INTITUTO TECNOLÓGICO DE LA LAGUNA 10 entradas y se les asigna un valor inicial en alto. Se declara la interrupción en el pin 2 de tal forma de que cuando haya un cambio de estado (de 0 a 1 o de 1 a 0), es decir que haya un desplazamiento angular, se interrumpa el programa y realice la función doEncoder. En el loop se imprime la posición encoder0Pos en el monitor serial mientras se espera por la interrupción. En la función doEncoder, que es la función de interrupción si encoder0PinA y encoder0PinB se encuentran en el mismo estado (alto o bajo) está girando en un sentido, si se encuentran en estado diferente está girando en sentido contrario. En este programa, el Arduino detecta los cambios de estado mediante una interrupción, es decir, que el programa detectara una muestra si hay un cambio independientemente de en qué parte del código este corriendo en ese momento, por lo que la cantidad de muestras debería ser aproximadamente el doble que en el programa anterior. Mediante pruebas, se determinó que este nuevo número es 164. A continuación se muestran los resultados obtenidos con este programa. Primero, una prueba estática para determinar el número de muestras por medio del monitor serie: INTITUTO TECNOLÓGICO DE LA LAGUNA 11 Se muestran también las señales obtenidas en el osciloscopio, para ambos sentidos de giro, siguiendo la misma convención que en el programa pasado. En estas imágenes es posible apreciar también la posibilidad de medir la velocidad de giro. Claramente una señal con una frecuencia mayor, indica una mayor velocidad de giro, como lo es el caso de la segunda de las imágenes presentadas arriba. A partir de la frecuencia, se puede obtener el período de la señal. Por ejemplo, en la segunda imagen la frecuencia es de 111.4Hz o ciclos por segundo. Dado que una revolución consta de 84 ciclos, se puede establecer que el motor gira a 1.32 revoluciones por segundo. El mismo calculo sencillo permite conocer la velocidad angular del motor a partir de la frecuencia medida. INTITUTO TECNOLÓGICO DE LA LAGUNA 12 TERCER PROGRAMA El código introducido fue el siguiente: INTITUTO TECNOLÓGICO DE LA LAGUNA 13 Igual que en los códigos anteriores se declaran como variables globales encoder0PinA en el pin 2, encoder0PinB en el pin3 y encoder0Pos. En el setup se definen encoder0PinA y encoder0PinB como entradas. Hasta aquí todo igual que el código anterior. La diferencia es que ahora se declaran dos interrupciones, una para cada salida del encoder. Cuando haya un cambio de estado (lo que significa un desplazamiento angular) en el pin 2 el programa se interrumpe para realizar la función doEncoderA y cuando haya un cambio de estado en el pin 3 el programa se interrumpe para realizar la función doEncoderB. Por ultimo en el setup se inicia la comunicación serial. En el loop se imprime la posición encoder0Pos en el DAC mientras se espera por las interrupciones.Las funciones doEncoderA y doEncoderB son prácticamente iguales así que solo se describirá una. Se pregunta por el encoder0PinA si se encuentra en alto, si es así ahora se pregunta por el estado del encoder0PinB para saber en qué sentido está girando el motor. Si el encoder0PinA se encontraba en bajo igual se vuelve a preguntar por el estado de encoder0PinB para saber en qué sentido se encuentra girando el motor. INTITUTO TECNOLÓGICO DE LA LAGUNA 14 Dada la mejora en el programa, la nueva cantidad de muestras será aproximadamente el doble, pues ahora detecta los flancos de subida. Realizando pruebas, se pudo observar que el nuevo número de pruebas es 329. Esto se puede observar en la siguiente imagen, que muestra las salidas del monitor serie: Se presentan también imágenes de las señales del osciloscopio para corroborar el correcto funcionamiento del encoder, y las cuales muestran una mayor velocidad de giro. INTITUTO TECNOLÓGICO DE LA LAGUNA 15 CONCLUSIONES Los encodersson herramientas sumamente útiles para realizar mediciones de los parámetros de motores de corriente directa. Además de esto, y aun cuando no se vio en esta práctica, su uso permite realizar un control muy preciso del movimiento de los motores, brindando la posibilidad de decidir qué tanto se desplaza, a qué velocidad o en qué dirección. Es importante que tanto el encoder como el programa utilizados sean capaces de brindar una cantidad suficiente de muestras, ya que entre más muestras se tengan, más precisos serán los movimientos del motor en caso de ser controlado. El uso de las interrupciones es también muy útil para este tipo de aplicación, pues permite medir con mayor precisión los fenómenos físicos que ocurren durante el movimiento de los motores.
Compartir