encoder Óptico

17
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.

Upload: fredy-cujia

Post on 30-Jul-2015

1.251 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: 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.

Page 2: ENCODER ÓPTICO

� 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.

Page 3: ENCODER ÓPTICO

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.

Page 4: ENCODER ÓPTICO

� 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.

Page 5: ENCODER ÓPTICO

DECODIFICACIÓN CON ARDUINO

Page 6: ENCODER ÓPTICO

• 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.

Page 7: ENCODER ÓPTICO

• 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

Page 8: ENCODER ÓPTICO

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).

Page 9: ENCODER ÓPTICO

Decodificación X4

CABLEADO PARA X4 DECODIFICACIÓN PARA UN SOLO ENCODER

Page 10: ENCODER ÓPTICO

• 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).

Page 11: ENCODER ÓPTICO

• 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.

Page 12: ENCODER ÓPTICO

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

Page 13: ENCODER ÓPTICO

� 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.

Page 14: ENCODER ÓPTICO

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)

Page 15: ENCODER ÓPTICO

• 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.

Page 16: ENCODER ÓPTICO

• Cuando se muestra el mensaje "Done uploading" el Arduino está listo para ser

utilizado.

Page 17: ENCODER ÓPTICO