Encoder Arduino
Encoder Arduino
2
MARCO TEÓRICO
LABVIEW
Entorno
3
El Panel Frontal y el Diagrama de Bloques están conectados a través de los
terminales (elementos que sirven como entradas o salidas de datos). De la misma
forma que un indicador luminoso de la carátula de un instrumento está representado
como un diodo en la circuitería interna, en un programa en LabVIEW ese mismo
indicador luminoso estará representado en el Diagrama de Bloques como una salida
de tipo booleano sobre el que escribir un valor.
Creación de programas
Flujo de ejecución
4
ARDUINO
Descripción de Arduino
5
Hay muchos otros microcontroladores y plataformas de microcontroladores
disponibles para computación física. Parallax Basic Stamp, de Netmedia BX-24,
Phidgets, Handyboard del MIT, y muchos otros ofrecen una funcionalidad similar.
Todas estas herramientas toman los detalles sucios de programación de
microcontroladores y se envuelve en un paquete fácil de usar. Arduino también
simplifica el proceso de trabajar con microcontroladores, pero ofrece algunas
ventajas para los profesores, estudiantes y aficionados interesados sobre otros
sistemas:
Asequible: Las placas Arduino son relativamente baratas en comparación
con otras plataformas de microcontroladores. La versión menos costosa del
módulo Arduino puede ser montado a mano, e incluso los módulos de
Arduino premontados cuestan menos de $ 50
Multiplataforma - El software de Arduino (IDE) se ejecuta en los sistemas
operativos Windows, Macintosh OSX y Linux. La mayoría de los sistemas de
microcontrolador se limitan a Windows.
Simple programación: El software de Arduino (IDE) es fácil de usar para los
principiantes, pero lo suficientemente flexible para los usuarios avanzados
para aprovechar también. Para los profesores, se basa convenientemente en
el entorno de programación Processing, por lo que los estudiantes que
aprenden a programar en ese entorno estarán familiarizados con cómo
funciona el Arduino IDE.
El código abierto y el software extensible: El software de Arduino está
publicado como herramientas de código abierto, disponible para la extensión
por programadores experimentados. El idioma se puede ampliar a través de
C ++ bibliotecas, y la gente con ganas de entender los detalles técnicos
pueden dar el salto de Arduino para el lenguaje de programación AVR C en
el que se basa. Del mismo modo, puede agregar código AVR-C directamente
en sus programas de Arduino si quieres.
6
ENCODERS
Tecnología
Los Encoders pueden utilizar tanto tecnología óptica como magnética. El sensor
óptico provee altas resoluciones, velocidades de operaciones altas, y con
seguridad, operación de larga vida en la mayoría de los ambientes industriales. Los
sensores magnéticos, se utilizan frecuentemente en aplicaciones de trabajo pesado
como en laminadoras de papel y acero, proveen buena resolución, altas velocidades
de operación, y máxima resistencia al polvo, humedad, y golpe térmico y mecánico.
Encoders Ópticos Los encoders ópticos utilizan un disco de vidrio con un patrón de
líneas depositadas en él, un disco metálico o plástico con ranuras (en un encoder
rotatorio), o una tira de vidrio o metal (en un encoder lineal). La luz de un LED brilla
a través del disco o tira sobre uno o más fotodetectores, que produce el
suministrador del encoder. Un encoder de incremento tiene una o más de estas
pistas, mientras que un encoder absoluto tiene varias pistas como bits de salida.
7
Encoders ópticos
Los encoders ópticos utilizan un disco de vidrio con un patrón de líneas depositadas
en él, un disco metálico o plástico con ranuras (en un encoder rotatorio), o una tira
de vidrio o metal (en un encoder lineal). La luz de un LED brilla a través del disco o
tira sobre uno o más fotodetectores, que produce el suministrador del encoder. Un
encoder de incremento tiene una o más de estas pistas, mientras que un encoder
absoluto tiene varias pistas como bits de salida.
Codificación incremental
8
Ilustración 5 Canales de salida de un encoder
Existen dos métodos principales para determinar las revoluciones por minuto, el
método de frecuencia y el método de periodo.
El método de frecuencia es mejor para dispositivos de movimiento rápido, como lo
son motores y turbinas que comúnmente giran en cientos de revoluciones por
minuto.
El método de periodo es mejor para dispositivos que se mueven más lento, como lo
son aquellos que giran en menos de 10 revoluciones por minuto.
Para este ejemplo, un nivel alto de pulsos por revolución (PPR) es considerado para
ser al menos 60 PPR.
Cuando se usan sensores con alto PPR, como lo son los encoders de eje o los
sensores de proximidad que sensan los engranes dentados, la manera más fácil de
determinar las revoluciones por minuto es monitorizar la frecuencia del pulso del
9
sensor utilizando un módulo con entrada digital y obtener su frecuencia. Después
se calcula las RPM usando la ecuación que se muestra en la ilustración 5.
Se consideran bajos pulsos por revolución todos aquellos que tengan menos de 60
PPR.
Ya que éstos pueden ser medidos con una alta resolución, medir el periodo del pulso
es el mejor método para medir las RPM cuando se usan sensores con bajos PPR,
como lo son los sensores de proximidad o fotoeléctricos. El periodo es el tiempo
desde que inicia un pulso hasta el siguiente pulso.
Cuando se utiliza el método de periodo para monitorizar las RPM, se utiliza la
ecuación de la ilustración 6.
El principal inconveniente ocurre cuando los PPR son más grandes que 1, y el pulso
no es simétrico. Por ejemplo cuando la velocidad del eje es constante y se está
monitorizando dos pernos por revolución, si los pernos no están exactamente
espaciados, el periodo será diferente causando que la indicación de RPM sea
errónea.
OBJETIVOS.
10
DESARROLLO DE LA PRÁCTICA
MATERIALES
1 Placa Arduino.
1 Resistencia 330.
1 Resistencia 4.7k.
Cables para Arduino.
1 opto ranura H21A1.
1 Motor de C.D. con disco dentado.
Computadora con acceso a internet.
Instalador de LabView 2015.
2 LED
PROCEDIMIENTO.
11
Programación de Arduino
12
Para este caso se configuró la interrupción 0 con nombre “Interrupción” y en
activación por flanco de subida (cambio de bajo a alto).como se muestra en la
ilustración 10.
Ilustración 10 Configuración
Para finalizar se programa el bucle loop el cual realizará todas las operaciones
matemáticas. Conocido el periodo de la señal se saca el inverso para conocer la
frecuencia, sin embargo el periodo está en milisegundos por lo que se realiza la
conversión necesaria colocando 1000/DeltaT, el 1000 para transformar los
milisegundos en segundos. Posteriormente con la fórmula de cálculo por el método
de frecuencia, se calculan las RPM, para ello es necesario conocer los pulsos por
revolución, en esta práctica se utiliza un motor con un aro de 28 ranuras en su disco
como se observa en la ilustración 12.
13
Ilustración 12 Disco ranurado
Después de los cálculos se envía el dato de frecuencia por el puerto Serial, se optó
por solo enviar la frecuencia para enviar un solo dato y no tener problemas para
identificar si se enviara la frecuencia y las Rpm. A continuación se da una pausa de
10 milisegundos para permitir la lectura de los datos en LabView y se habilitan las
interrupciones para esperar un nuevo cambio de flanco.
Como se observa, los cálculos varían de acuerdo al número de ranuras con las que
cuente el disco y de igual forma si el tiempo medido es en segundos, milisegundos
o microsegundos, de acuerdo a las necesidades que se requieran.
Se utilizan interrupciones para que los retardos programados no interfieran con la
medición de los pulsos, ya que si se utilizara otro método sin ellas, los retardos se
agregarían al tiempo ocasionando mediciones erróneas.
14
Programación de LabView.
Con lo anterior se configura el puerto Serie para recibir los datos, se requiere
entonces la instrucción VISA read para leerlos, esta instrucción permite recibir las
cadenas de caracteres que se encuentren disponibles en el puerto.
15
Ilustración 16 Ubicación VISA read
Los datos recibidos por VISA read son de tipo cadena, los cuales sirven para
monitorizar las variables, sin embargo, si se requiere hacer operaciones
matemáticas es necesario convertir esa cadena de caracteres en números, para ello
se coloca la instrucción Decimal String To Number, que convierte una cadena de
caracteres decimales en números que pueden ser manipulados.
16
Posterior a la configuración del puerto serie, se colocan los elementos indicadores
y los operadores necesarios para la visualización de las variables.
La siguiente imagen muestra cómo deben realizarse las conexiones entre los
diferentes elementos en el programa, se colocó una estructura Flat Sequence
Structure con un timer, que permiten generar un retardo entre cada obtención de
datos, con el fin de que no existan problemas por el tiempo de respuesta del puerto
Serial de LabView. Todo dentro de una estructura While para que el programa se
ejecute de forma infinita y su correspondiente botón de paro. De igual forma fuera
del bucle la función VISA Close para cerrar el puerto Serial en cada alto del
programa.
Para la medición de las RPM se coloca un Meter en el panel frontal. Así como
indicadores de la Frecuencia y el cálculo de RPM.
17
Montaje final del circuito
Para el montaje debe buscarse que el disco del motor se encuentre dentro de la
opto ranura y que ésta detecte los orificios del disco. Como se muestra en la
siguiente ilustración.
Se tiene que tener el motor en una posición en la que se encuentre estable y que
no se mueva al momento de que esté girando el rotor, pues puede ocasionar daños
en los dispositivos que se conecten.
De igual forma el disco dentado tiene que estar bien incrustado para que no se
desprenda en el giro.
18
RESULTADOS
Ilustración 23 Pulsos a 6V
19
Ilustración 24 Frecuencia y RPM a 6V
20
BIBLIOGRAFÍA
Arduino. (7 de Septiembre de 2015). Arduino. Obtenido de www.arduino.cc
Bolton. (2010). Mecatrónica. Mexico: AlfaOmega.
FLoyd, T. L. (2007). Principios de circuitos eléctricos (8 ed.). México: Pearson
Educación.
México, W. I. (2015). Manual de aplicación de encoders. México: West Intruments.
Opto22. (Noviembre de 2015). RPM measurement techniques. www.Opto22.com.
21
Observaciones
En las mediciones del motor, se tenían movimientos oscilatorios en el disco, lo que
hacía que la medición no estuviera tan estable como se esperaba.
Utilizando timers e interrupciones se tienen mediciones de frecuencia muy exactas,
pues se hacen con el reloj del oscilador.
La opto ranura es un dispositivo al cual las variaciones en alta frecuencia hacen que
varíe la señal de onda de salida. La frecuencia de operación está dada por la que
pueda soportar el transistor que tiene internamente, al ir aumentando la velocidad
del motor la señal de onda se iba deformando, pero sin alterar los resultados de las
mediciones puesto que estaban en los rangos de medida del canal del Arduino.
En la comunicación por puerto serie con LabView es necesario crear retardos pues
si no se colocan éstos los datos no se mandan correctamente y solo se observan
puros ceros.
La frecuencia máxima que el Arduino soporta, según las pruebas que se realizaron
con un generador de funciones es de aproximadamente 22Khz.
Cuando se elevó el voltaje al nivel máximo del motor, que son 24V, se midieron las
revoluciones, el motor llegaba a 6200 aproximadamente, de acuerdo a lo teórico a
la mitad del voltaje debería dar exactamente la mitad de revoluciones, sin embargo
las revoluciones llegaron a 3100 a 12.5V lo cual es muy cercano.
Conclusiones.
En la medición de velocidad con un encoder, conocer la frecuencia exacta de los
pulsos es de vital importancia para tener mediciones exactas ya que cualquier
alteracion en el tiempo, aunque sean milisegundos, cambian completamente las
mediciones.
Para crear un encoder es necesario tomar en cuenta cual es la frecuencia máxima
que soportan los componentes, pues si se hubiese utilizado un disco con más
ranuras, el Arduino y la opto ranura no hubieran sido capaces de dar mediciones
exactas.
Como se observó en las pruebas, la frecuencia máxima medida por Arduino es de
22Khz aproximadamente, por lo que un encoder y un motor que generen una
frecuencia mayor tendrían que ser medido con un microcontrolador que trabaje a
más velocidad y tenga una respuesta más rápida a los cambios.
Las revoluciones del motor a su voltaje máximo deben de ser el doble de las que
den a la mitad del voltaje nominal de éste.
Machado Díaz Eduardo 12231494
22
Observaciones:
Al medir las RPM del motor, tuvimos que posicionar correctamente el motor con la
opto-ranura ya que el disco tambaleaba y topaba con la opto-ranura.
Las RPM no eran lineales ya que al alimentar el motor a 24 volts las RPM nos daba
6200, pero para que nos diera la mitad teníamos que alimentar el motor a 12.5 volts
así nos daba unas RPM de 3100, las causas que ocasionaban eran el desgaste de
motor, impurezas internas.
Para calcular las RPM y la frecuencia de un motor es más exacto hacerlo por
interrupciones que usando un Convertido de frecuencia voltaje, ya que las
interrupciones causa
Conclusiones:
Saber las RPM nos ayuda a ver qué frecuencia está trabajando el motor, así no
tener ningún desperfecto en un proceso o desfasamiento.
Al no tener un encoder con el cople necesario, se decidió adaptar uno con un disco
y una opto-ranura, el cual tiene el mismo funcionamiento, solo que con menos
resolución, pues el disco utilizado tiene menos ranuras que un encoder comercial.
El arduino fue usado ya que programar en su plataforma era una manera más
sencilla de crear interrupciones que con otro tipo de microcontroladores como lo son
los pic de microchip, pero tiene sus limitaciones ya que soporta una frecuencia de
22Khz, porque en un proceso industrial no soportaría lo cual su uso se limitaría más
a fines didácticos en caso de manejar frecuencia o procesos que requieran una baja
frecuencia de respuesta.
23
Observaciones:
En la práctica se aprendió a usar un encoder y se pudo observar el comportamiento
del mismo, y su función es la de convertir el movimiento mecánico (giros del eje) en
pulsos digitales o análogos que pueden ser interpretados por un controlador de
movimiento, así mismo, con ayuda de un osciloscopio se pudo observar las señales
que proporcionaba el encoder y nos dimos cuenta que la salida de este es va de la
mano con la velocidad de giro que se le aplique al encoder.
Este dispositivo de instrumentación es de gran utilidad cuando se le da el uso
adecuado, y claro sabiendo los parámetros que tiene el encoder para que no se
tenga errores en las mediciones requeridas.
Para esta práctica el encoder fue fabricado por los integrantes del equipo con un
motor de directa, un disco ranurado y una optoranura acoplados junto con un circuito
diseñado para hacer la medición de las veces que las ranuras del disco incidían por
la opturanura, esto proporcionaba frecuencia y revoluciones por minuto.
Conclusiones:
En la práctica que se realizó, el operador se puede dar cuenta que este tipo de
instrumento es indispensable para la realización de un trabajo, claro teniendo en
cuenta el tipo de tarea que se quiera realizar y el funcionamiento de las
configuraciones a elegir.
Durante la práctica se midió un nivel de frecuencia moderado debido a que el
microcontrolador que se utilizó no trabaja a más frecuencia que 22Khz aproximados,
debido a que no tiene una respuesta tan rápida para leer los datos que se le
entregan.
A pesar de que se realizó la práctica y se vio el funcionamiento de los encoder, aún
falta aplicar este conocimiento en función de otro dispositivo industrial como un
motor por ejemplo, ya que en esta ocasión solo se usó uno motor de pequeño de
24V y un microcontrolador de mediana gama, los cuales no son lo suficientemente
eficientes para poder medir frecuencias y RPM mayores para poder ver su salida.
Los conocimientos que se obtuvieron en la práctica son un paso más cercano al
entorno de la industria y son herramientas que servirán para un proyecto futuro y/o
trabajo.
24