ENCODER ÓPTICO
-
Upload
fredy-cujia -
Category
Documents
-
view
1.280 -
download
3
Transcript of ENCODER ÓPTICO
ENCODER ÓPTICO
Un codificador óptico (encoder óptico) incremental tiene dos canales (A y B) posicionado
90 ° fuera de fase. Estos canales se pueden utilizar juntos para indicar la posición angular y
la dirección, así como calcular la velocidad angular.
• Cualquier transductor que genera una lectura en clave de una medición puede ser
denominado un encoder
• Los encoders de eje son transductores digitales que se utilizan para medir los
desplazamientos angulares y velocidades.
• VENTAJAS RELATIVAS DE TRANSDUCTORES DIGITALES A TRAVÉS DE SUS
CONTRAPARTES ANÁLOGAS:
� Alta resolución (dependiendo del tamaño de palabra de la salida del
codificador y el número de pulsos por revolución del encoders)
� Alta precisión (sobre todo debido a la inmunidad al ruido de las señales
digitales y la construcción superior)
� La relativa facilidad de la adaptación en los sistemas de control digital (porque
salida del transductor es digital) con la reducción asociada en el coste del
sistema y la mejora de la fiabilidad del sistema
• Encoders de eje se pueden clasificar en dos categorías en función de la naturaleza
y el método de interpretación de la salida: Codificadores incrementales y absoluta
• ENCODERS INCREMENTALES
� La salida es una señal de impulso que se genera cuando el disco transductor
gira como un resultado del movimiento que se está midiendo.
� Contando los pulsos o midiendo el tiempo de la anchura de pulso utilizando
una señal de reloj, tanto el desplazamiento angular y la velocidad angular
se puede determinar.
� El desplazamiento se puede conseguir con respecto a algún punto de
referencia en el disco, como se indica mediante un impulso de referencia
(índice de pulso) generado en esa ubicación en el disco. El número de
impulsos de índice determina el número de revoluciones completas.
� El desplazamiento también se puede conseguir por el sistema de toma de
referencia para definir la posición cero en un punto determinado en la
máquina real o mecanismo.
• ENCODERS ABSOLUTOS
� Un encoder absoluto tiene muchas pistas del pulso en su disco transductor.
Cuando el disco de un codificador absoluto rota, varios trenes de pulsos -
iguales en número a las pistas del disco - se generan de forma simultánea.
� En un instante dado, la magnitud de cada señal de impulso tendrá uno de
dos niveles de señal (es decir, un estado binario) tal como se determina por
un detector de nivel. Este nivel de la señal corresponde a un dígito binario
(0 o 1). Por lo tanto, el conjunto de trenes de impulsos da un número
binario codificado en cualquier instante.
� Las ventanas de pulsos sobre las pistas pueden ser organizados en un cierto
patrón (código) de manera que cada uno de estos números binarios
corresponde a la posición angular del disco del codificador en el momento
en que el número binario particular se detecta.
� Voltaje de pulso se puede hacer compatible con algún tipo de lógica digital
(por ejemplo, TTL)
� Lectura digital directa de una posición angular es posible.
� Codificadores absolutos son comúnmente utilizados para medir las
fracciones de una revolución. Codificadores absolutos pueden tener
también una pista adicional que genera un impulso de índice por cada
revolución, como en el caso de un codificador incremental. Este pulso de
índice puede ser utilizado en el procedimiento de toma de referencia que
define una posición de referencia para el motor, así como otra manera de
medir revoluciones completas del motor.
En código binario, el cambio de bits no puede tener lugar simultáneamente.
Diagrama esquemático de un patrón de disco codificador absoluto
(a) Código Binario
(b) Código Gray
La ambigüedad de conmutación de bit se puede evitar mediante el uso de código de gray.
Sin embargo, la lógica adicional que se necesita para convertir el número gray una
codifica para un correspondiente número binario.
Codificador absoluto debe ser alimentado y controlado sólo cuando se toma una lectura.
Además, si una lectura es olvidada, que no afectará a la siguiente lectura.
• ELEMENTOS DEL ENCODER ÓPTICO
� El encoder óptico utiliza un disco opaco (disco de código) que tiene una o
más pistas circulares, con un arreglo de ventanas transparentes idénticas
(ranuras) en cada pista.
� Un haz paralelo de luz (por ejemplo, a partir de un conjunto de diodos
emisores de luz) se proyecta a todas las pistas de un lado del disco.
� La luz transmitida es recogida usando un banco de foto sensores en el otro
lado del disco que tiene típicamente un sensor para cada pista.
� El sensor de luz puede ser un fotodiodo de silicio, un fototransistor, o una
célula fotovoltaica.
� Puesto que la luz de la fuente es interrumpido por las áreas opacas de la
pista, la señal de salida de la sonda es una serie de pulsos de voltaje. Esta
señal puede ser interpretada para obtener la posición angular y la
velocidad angular del disco.
� Tenga en cuenta que un disco codificador incremental requiere sólo una
pista principal que tiene ventana a intervalos iguales e idénticos (pick-off)
áreas. El área de la ventana es igual al área de la brecha entre la ventana.
Normalmente, una pista de referencia que tiene una sola ventana también
está presente con el fin de generar un pulso (conocido como el impulso de
índice) para iniciar contaje de impulsos para la medición de la posición
angular y para detectar revoluciones completas.
� En contraste, los discos codificadores absolutos tienen varias filas de pistas,
en número igual al tamaño de bits de la palabra de datos de salida.
Además, las ventanas de la pista no están igualmente espaciados, pero
están dispuestos en un patrón específico en cada pista de manera que se
obtenga un código binario o de un código Gray para los datos de salida del
transductor.
� De ello se deduce que los codificadores absolutos necesita al menos tan
muchos señal de transducción sensores como hay pistas, mientras que los
codificadores incrementales necesita una pick-off sensor para detectar la
magnitud de rotación y un sensor adicional en una separación de cuartos
de tono (pitch = center-a-centro distancia entre las ventanas adyacentes)
para identificar la dirección de rotación, es decir, la configuración del
sensor de desplazamiento.
� Algunos diseños de codificadores incrementales tener dos pistas idénticas,
una cuarta-desplazamiento del tono de la otra, y las dos escoger de los
sensores se colocan radialmente sin ningún desplazamiento circunferencial,
es decir, la configuración de la pista de desplazamiento.
� Un sensor pick-off para un pulso de referencia también se utiliza.
DECODIFICACIÓN CON ARDUINO
• El Arduino es una plataforma de código abierto con fácil de usar hardware y
software.
• El board utilizado en este proyecto es el Duemilanove Arduino basado en el micro
controlador ATmega328.
• El objetivo es medir la posición angular y la velocidad angular de un codificador
incremental óptico con cable directamente a la placa Arduino.
• Los siguientes dos métodos seleccionables de decodificación para medir la
posición angular se llevan a cabo:
� Decodificación de X2 para dos encoders incrementales
� Este código se puede medir la posición angular de dos encoders
incrementales en el modo de X2.
� Esto significa que los flancos de subida y bajada de canal A de
cada codificador se miran a través de las interrupciones del
Arduino.
� Por lo tanto, un 500 PPR (impulsos por revolución) encoder, por
ejemplo, produce 1,000 conteos por revolución, que es el doble
de la PPR del encoder.
DECODIFICACIÓN X2
CABLEADO PARA X2 DECODIFICACIÓN DE DOS ENCODER
� X4 decodificación para un encoder incremental
� Este código se puede medir la posición angular de un encoder
incremental en el modo de X4.
� Esto significa que los flancos de subida y bajada de los canales A
y B del encoder son vistos a través de las interrupciones del
Arduino.
� Así, un codificador de PPR 500, por ejemplo, da 2000 pulsos por
revolución, que es cuatro veces la PPR del encoder.
� Ambos enfoques medir la velocidad angular en cuentas por
segundo. Posición angular y la velocidad angular se representa
entonces como salidas PWM.
� Un filtro de paso bajo analógico se utiliza para convertir la señal
PWM de las salidas analógicas en una señal analógica (0 a 5V).
Decodificación X4
CABLEADO PARA X4 DECODIFICACIÓN PARA UN SOLO ENCODER
• El algoritmo de decodificación de X4 es el siguiente:
� Cuando se produce una transición en:
� Si A y B ≠, hacia adelante, luego incrementar la posición
Pos = Pos + 1
Además
Invertir dirección, y luego disminuir Posición
Pos = Pos – 1
� Cuando se produce la transición en B:
� Si A = B, en dirección hacia delante, y luego incrementar la
posición Pos = Pos + 1
Además
Invertir dirección, y luego disminuir posición
Pos = Pos – 1
• Cálculo de la velocidad angular
� La velocidad angular se calcula como la derivada de la posición de la
siguiente manera:
� pi-1 es la posición en tiempo ti-1 y pi es la posición en tiempo ti.
• Algoritmo
� / / Guardar los valores actuales de posición y tiempo
� NewPositon = Po, NewTime = ClockTime
� / / Calcular la velocidad en pasos de encoder por segundo
� Vel = (NewPositon - antPosicion) / (NewTime - Oldtime)
� / / Guardar los valores actuales de posición y el tiempo para el cálculo
de la velocidad del próximo
� AntPosicion = NewPositon
� Oldtime = NewTime
� / / Tiempo de retraso para poner cálculo de la velocidad de nuevo
� Retraso (1 ms)
• La velocidad calculada en el recuento del codificador por segundo se puede
escalar y se envía a la salida PWM del Arduino.
• Las salidas de PWM del Arduino son 8 bits, con lo que la salida varía de 0 a 255
(28 = 256).
• Con el fin de medir las velocidades positivas y negativas, el intermedio de la
salida (127) se hace equivalente a la velocidad cero. Por lo tanto:
� 255 velocidad máxima positiva
� 127 velocidad cero
� 0 máxima velocidad negativa
• La salida PWM del Arduino se calcula entonces como sigue:
• Vel puede ser positivo o negativo y varían de velocidad de motor máxima
positiva a la velocidad máxima del motor negativo.
• El MotorMaxVel en recuentos del codificador por segundo se calcula como
sigue:
• Motor Max Vel RPS es la velocidad máxima del motor en revoluciones por
segundo obtenidas a partir de hoja de datos del motor.
• Encoder PPR es el de impulsos por revolución del encoder. El 4 constante
representa la decodificación de cuadratura.
Cableado para X4 decodificación para un encoder simple con medidas de posición
y velocidad
• Alarmas en el Arduino
� La frecuencia de los canales del encoder A y B en el Arduino puede ser del
orden de kHz.
� Las entradas digitales del Arduino no son lo suficientemente rápidos para
leer estas señales en esta frecuencia.
� Por lo tanto, las interrupciones se deben usar. Arduino tiene dos
interrupciones (0 y 1) que puede ser puede ser configurado para disparar
en un valor bajo, un flanco ascendente o descendente, o un cambio en el
valor.
� Las interrupciones de 0 y 1 son accesibles en los pins siguientes:
� Interrupción 0 se encuentra en la entrada digital 2
� Interrupción 1 es la Entrada Digital 3
� Por lo tanto, para la codificación X4 con un solo codificador, los canales A y
B están conectados a las patillas 2 y 3 y las interrupciones de reloj para las
transiciones en los dos pins para contar posición hacia arriba o hacia abajo.
� Para la codificación X2 con dos codificadores, el canal A de un codificador
conectado al pin 2 y el canal A del segundo codificador está conectado a la
clavija 3. En el modo X2 solo canal A se observó durante las transiciones.
Cuando se produce una transición en el canal A o bien del codificador, el
estado del canal B (conectado a una entrada digital común) del codificador
respectivo se comprueba para identificar correctamente la dirección del
movimiento y contar la posición hacia arriba o hacia abajo.
• digitalReadFast (pin)
� El digitalReadFast (pin) de comandos mejora significativamente el
rendimiento (por un factor de hasta 50) para leer el estado de los canales A
y B cuando ocurre una interrupción.
� Este comando no es parte de la biblioteca por defecto de Arduino. Para
utilizar este comando con el Arduino de código abierto, los siguientes pasos
son necesarios:
� Descargue el archivo zip de dwf.zip
http://code.google.com/p/digitalwritefast/downloads/list
� Ponga la carpeta digitalWriteFast en la biblioteca junto con las
carpetas EEPROM, Ethernet, Firmata, etc.
� En el código fuente añade: # include <digitalWriteFast.h>
� Inicie el entorno de Arduino. El digitalWriteFast estará dentro de la
Sketch> Import Library menú.
� El código objeto no sólo será más rápido, pero en realidad más
pequeño también.
Descarga de código C para Arduino
• Abra el software de Arduino
• Seleccione Archivo> Abrir ...> seleccione el archivo a descargar pde> haga clic en
Abrir
• Seleccione la tarjeta correcta en Herramientas (Tools)> Junta(Board)
• Compruebe los puertos disponibles antes de conectar la placa Arduino al puerto
USB de su ordenador en Tools> Serial Por
• Conecte la tarjeta Arduino al puerto USB de la computadora y seleccione el puerto
nuevo que aparece en Tools> Serial Port
• Haga clic para subir archivos.
• Observa la barra de mensajes.
• Cuando se muestra el mensaje "Done uploading" el Arduino está listo para ser
utilizado.