Usando los Codificadores Cuadráticos



Documentos relacionados
JUEGO DE CARRERA DE AUTOS EN LCD

INGENIERIA EN MICROCONTROLADORES. Protocolo RS-485. Introducción

TUTORIAL PRIMERA PARTE: GENERACIÓN DE UN RETARDO CON TIMER.

podemos enfocar al funcionamiento del robot, es decir la parte de electrónica. Para que el

CAN-101, HT6P20x2 Encoder para aplicaciones remotas de control

BUS I2C. IES Los Viveros Sevilla Dpto. Electrónica. 1

Unidad: Representación gráfica del movimiento

TEMA EL BUS I 2 C (Inter Integrated Circuit Bus) I2C EN C

_ Antología de Física I. Unidad II Vectores. Elaboró: Ing. Víctor H. Alcalá-Octaviano

5. Despliegue en la PC

Iniciando con Motores a Pasos: Primera parte

PROCESO DE SIMULACIÓN EN PROTEUS

Proyecto final Diseño de un circuito secuencial. utilizando un contador binario de cuatro bits

Usando un PIC para la Generación de Tonos de Audio

Memoria 24LC256 I. I NTRODUCCIÓN

CAPITULO II CARACTERISTICAS DE LOS INSTRUMENTOS DE MEDICION

HARDWARE DE SISTEMA AUTOMÁTICO DE RASTREO DE VEHÍCULOS MEDIANTE TECNOLOGÍAS GPRS Y GPS

Circuitos Digitales CON José Manuel Ruiz Gutiérrez

Aprendiendo a programar Microcontroladores PIC en Lenguaje C con CCS

AUTOMATIZACIÓN INDUSTRIAL

Taller de Arduino para estudiantes de Invenio Folleto de Prácticas Nivel Básico Elaborado por: Luis León. Introducción:

Universidad Nacional Autónoma de México E N E P A R A G O N. Laboratorio de. Control Digital. Motor de Paso a Paso. Motores Paso a Paso

PROGRAMACION LADDER PLC BASICA. Descripción del lenguaje ladder

Nombre del estudiante: Grimaldo velazquez Rafael. Herrera Díaz Jefree. Campus: san Rafael

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

SISTEMA ALARMA DOMESTICO MEMORIA

En el presente capítulo se describe la programación del instrumento virtual y cómo

VECTORES. Módulo, dirección y sentido de un vector fijo En un vector fijo se llama módulo del mismo a la longitud del segmento que lo define.

1. Hallar a qué velocidad hay que realizar un tiro parabólico para que llegue a una altura máxima de 100 m si el ángulo de tiro es de 30 o.

CAPÍTULO 2. La Instrumentación

PROCEDIMIENTO OPERATIVO DESARROLLAR SISTEMAS INFORMÁTICOS PDO-COCTI-DTIN-04

CAPÍTULO 10 Aplicaciones de la Derivada a Funciones Económicas

Circuitos Electrónicos. Primer parcial curso

Capitulo V Administración de memoria

Curso sobre Microcontroladores Familia HC9S08 de Freescale

Ensamblador. Interrupciones. Dentro de una computadora existen dos clases de interrupciones:

Manual IOCard USB DimControl. Fecha:19/08/15 Rev.:1.1

ESTRUCTURAS CONDICIONALES EN PHP: SWITCH, CASE, BREAK. EJEMPLOS DE USO Y EJERCICIOS RESUELTOS. (CU00820B)

Practica de Control y Programación de Robots ROBOT HERMES. Curso

Control Teaching de un Brazo Robot de Cinco Grados de Libertad

Introducción a la Programación 11 O. Humberto Cervantes Maceda

3.2 Operaciones aritmético-lógicas en Pascal

35 Facultad de Ciencias Universidad de Los Andes Mérida-Venezuela. Potencial Eléctrico

BANCOS. Manejo de Bancos. Como crear una ficha de Banco? Como modificar los datos de una ficha de Banco? Como borrar una ficha de Banco?

Estructuras de Datos y Algoritmos Práctica I - Curso 2012/13

P9: ENSAYO DE VACÍO Y CORTOCIRCUITO DEL TRANSFORMADOR MONOFÁSICO FUNDAMENTOS DE TECNOLOGÍA ELÉCTRICA

Diseño y construcción de la base de un robot móvil autónomo gobernada por microcontrolador

DESCRIPCION DEL SITEMA MASTER.

Programación en PIC Los primeros pasos

Guía para construir un programador y una mini placa de desarrollo para el microcontrolador PIC

STEP 7 INDICE. Contadores rápidos Restricciones en el uso de los contadores rápidos HSC0, HSC3, HSC4, HSC5

AUTOMATIZACIÓN INDUSTRIAL DESCRIPCIÓN Y MANEJO DEL SERVOMOTOR DE PRÁCTICAS

d s = 2 Experimento 3

EDU_NA005 Mouse PS/2 Emulado por el EDUKIT08...

Ecuación ordinaria de la circunferencia

Programación de Microcontroladores

1 Estática Básica Prohibida su reproducción sin autorización. CONCEPTOS DE FISICA MECANICA. Conceptos de Física Mecánica

LCD. Las pantallas de cristal líquido o módulos LCD, como. Módulo. con interface serial

Matemáticas para la Computación

Capítulo 1. Introducción

6. Controlador del Motor

Unidad Orientativa (Electrónica) Amplificadores Operacionales

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

Clase de apoyo de matemáticas Ángulos Escuela 765 Lago Puelo Provincia de Chubut

Tema : ELECTRÓNICA DIGITAL

Apuntes de Matemática Discreta 1. Conjuntos y Subconjuntos

Práctica 4 Diseño de circuitos con puertas lógicas.

Centro de Capacitación en Informática

Tema 2. Diseño del repertorio de instrucciones

Pero para ello tenemos que cumplir ciertas normas. Para poder usar esta tecnología tendremos que cumplir con los siguientes requisitos.

FORMACIÓN PROFESIONAL

Experimento 6 LAS LEYES DE KIRCHHOFF. Objetivos. Teoría. Figura 1 Un circuito con dos lazos y varios elementos

Quark Pro 2 Cargador de Microcontroladores PIC y Memorias EEPROM 24CXX

TEMA V TEORÍA DE CUADRIPOLOS LINEALES Introducción Parámetros de Impedancia a circuito abierto.

LABORATORIO Nº 2 GUÍA PARA REALIZAR FORMULAS EN EXCEL

10 En este caso indica la dirección GPIB del instrumento.

DIAGRAMA DE CLASES EN UML

TEMA 5. CONTROL DE FLUJO DEL PROGRAMA. Sentencia Instrucción Expresión Operadores + Operandos Sintaxis: Sentencia ;

Unas cuantas palabras acerca de los alternadores trifásicos

MATEMÁTICAS BÁSICAS UNIVERSIDAD NACIONAL DE COLOMBIA - SEDE MEDELLÍN CLASES # 13 y #14

Medición de un potenciómetro sensor de posición de mariposa TPS

EJERCICIOS CON ARDUINO LED ENCENDIDO. Se conecta el Led al pin 52 y a alimentación. Compilar Se enciende el LED.

Electrostática: ejercicios resueltos

Propuesta de colaboración. ESC para bicicleta eléctrica

POR QUÉ EL VALOR PRESENTE NETO CONDUCE A MEJORES DECISIONES DE INVERSIÓN QUE OTROS CRITERIOS? ( Brealey & Myers )

SUCESIONES INFINITAS

Computación I Representación Interna Curso 2011

1. Aplicación de la conmutación de circuitos y la conmutación de paquetes. 1.1 Sistema de señalización número 7 (SS7).

Detección de Presencia Serie para la Identificación de Módulos de Memoria

Diapositiva 1. Por supuesto, también se puede hacer lo contrario. Un demultiplexor envía una señal a una de muchas líneas.

DFRduino Romeo, todo en un controlador (RoMeo V1.0) Por favor, lea atentamente este manual antes de encender el dispositivo.

SOFTWARE CSU-485. Para conectar el dispositivo CSU-485 lo podemos hacer de dos maneras:

Temas de electricidad II

Ejercicios. 5.2 [5] < 5.3> Este ejercicio es similar al 5.1, pero ahora considere los fallos causados por permanecer en 1 (la señal es siempre 1).

Fundamentos del trazado electrocardiográfico

FUNDAMENTOS FÍSICOS DE LA RADIOASTRONOMÍA. CAPÍTULO 1. Propiedades de la radiación electromagnética

IG = 0 A ID = IS. ID = k (VGS - VT) 2

Coordinación en un Centro TIC Tema 4 Resolución de Incidencias

LABORATORIO DE ARQUITECTURA DE COMPUTADORES. I. T. I. SISTEMAS / GESTIÓN GUÍA DEL ALUMNO

Transcripción:

Usando los Codificadores Cuadráticos Autor: Ing. Carlos Narváez Universidad de Oriente email: cnarvaez@udo.edu.ve Introducción El presente trabajo es una introducción a los denominados codificadores cuadráticos, sus diferentes tipos y aplicaciones. Se hará uso de estos dispositivos en conjunto con microcontroladores PIC a fin de interpretar la información que nos suministran. Codificador Cuadrático Un codificador Cuadrático, es un sensor de movimiento rotacional que traslada la información de movimiento (ángulo, velocidad y dirección del eje) en señales eléctricas que pueden ser interpretadas por un computador. El Codificador cuadrático es un tipo particular de codificador incremental el cual emite pulsos que determinan cuánto se ha rotado (si el codificador es rotatorio) o movido (si el codificador es linear), pero no se sabe donde se comenzó ni donde se finalizó. La figura. muestra un disco codificado usado en codificadores cuadráticos del tipo ópticos. Las zonas oscuras impiden el paso de luz mientras que las zonas blancas lo permiten. Existen dos zonas concéntricas lo que implica un codificador de dos canales. Fig. Disco Codificado La aplicación más típica para codificadores cuadráticos es la medición de la velocidad de un eje y su sentido de giro. Un codificador cuadrático utiliza dos canales denominados A y B, desfasados en ¼ de ciclo el uno con respecto al otro. De esta manera se logra un dispositivo de cuatro estados, representados como: 00 0 0, en donde, el bit más significativo de cada estado, corresponde al canal A y el otro al canal B, tal como muestra la figura.

Fig. Codificador Cuadrático. Cuando el eje gira en sentido de las agujas del reloj, se obtiene una secuencia de números (0,00,0,) diferente que cuando gira en sentido contrario a las agujas del reloj (0,,0,00), Esta secuencia puede reconocerse como un código Gray, por el hecho de que sólo un bit cambia en cada transición. La resolución del dispositivo se mide en ciclos por revolución (CPR), correspondiendo a cada ciclo la ocurrencia de los cuatro estados ya mencionados. Nótese que en cada ciclo existe un estado donde ambos canales se encuentran a nivel lógico, oportunidad esta que se aprovecha para incrementar un contador, el cual nos permite el cálculo de la velocidad del eje. En efecto, si por ejemplo tenemos un codificador de CPR y el valor del contador es 000 luego de transcurrido un segundo, las revoluciones por minutos del eje están dadas por: RPM = 60 * contador CPR = 998 Para la determinación de la dirección de giro, se utiliza una interesante propiedad de la secuencia de código Gray de bits. Si tomamos dos estados cualquiera consecutivos de la secuencia de giro en sentido agujas de reloj y realizamos OR exclusivo (XOR) del bit menos significativo del primer número, con el bit más significativo del segundo número, obtenemos como resultado. De la misma manera, el resultado es siempre cero, si se toman dos estados cualquiera consecutivos de la secuencia de giro contraria a las agujas del reloj. Por ejemplo tome 0, de la secuencia de giro en sentido de las agujas del reloj, entonces 0 XOR =. Ahora invierta la secuencia es decir tome, 0, entonces, XOR = 0.

Ahora es necesario acoplar el codificador a un dispositivo que pueda leer sus canales e interpretar lo que esta pasando. Una manera es haciendo uso de las interrupciones de un microcontrolador tal que se pueda observar los cambios en los canales del codificador. En los PIC esto resulta fácil, pues estos incluyen la interrupción por cambio en el PORTB. Otra alternativa es usar los módulos CCP y una última, pero algo riesgosa, es muestrear los pines donde esté conectado el codificador cada n microsegundo y observar si sus estados han cambiado. Para efectos de este trabajo se ha tomado la primera opción. La figura. muestra, la manera de conectar un codificador en cuadratura de tipo mecánico o de contactos al microcontrolador. Observe las resistencias Pull-Up necesarias para la polarización positiva de este tipo de dispositivo. Fig. Conexión Codificador Mecánico Tipos de Codificadores Cuadráticos Los codificadores cuadráticos pueden ser clasificados en dos grandes categorías: Los mecánicos y los ópticos. Los primeros son generalmente utilizados en velocidades bajas, y aplicaciones de baja utilización. Los codificadores ópticos están diseñados para frecuencia más altas (RPM) y aplicaciones de uso continuo donde la confiabilidad es importante. También existen codificadores de tipo magnético basados en el Efecto Hall. Los codificadores incrementales en General pueden ser de rotación o lineales. La principal especificación son los Ciclos por revolución (CPR), así podemos encontrar codificadores con CPR de 56, 5, 0 y hasta 00.000 CPR, además de valores más bajos. Aplicaciones Los codificadores ópticos, normalmente sirven de dispositivo de realimentación en aplicaciones de control de posición, velocidad o flujo. Otra aplicación, en donde se les usa, es en paneles de control, en donde pueden sustituir dispositivos tradicionales como potenciómetros, switches de rotación o switches pulsadores. Pero la aplicación más común es en dispositivos apuntadores como el Mouse. En ellos se utilizan dos codificadores, uno que sigue el movimiento en el eje X y otro que sigue el del eje Y.

Hardware La figura, muestra el diagrama esquemático utilizado, el cual esta basado en un PIC6F87 trabajando a Mhz. Se utilizaron los pines RB y RB5 para los canales B y A respectivamente y un display LED de 7 segmentos manejado por el integrado 5 que es un codificador de BCD a 7 Segmentos. VCC VCC U RESET 5pf 0K N8 00 S 5 6 7 5 6 7 8 9 0 RA0/AN0 RA/AN RA/AN/VREF- RA/AN/VREF+ RA/T0CKI RA5/SS/AN RB0/INT RB RB RB/PGM RB RB5 RB6/PGC RB7/PGD OSC/CLKIN MCLR/VPP/THV VDD RC0/TOSO/TCKI RC/TOSI/CCP RC/CCP RC/SCK/SCL RC/SDI/SDA RC5/SDO RC6/TX/CK RC7/RX/DT OSC/CLKOUT 5 6 7 8 0 5 7 6 U 5 BIN/7-SEG (T) & CT=0 V0 8 G A0, B0, C0, D0, E0, F0, G0, 0 9 5 5 67 8 DISPLAY Mhz PIC6F87 00 5pf VCC 7K 7K A B ENCODER Fig. Diagrama Esquemático

Software El programa fue compilado usando el compilador C de CCS. Se utiliza la interrupción por cambio en RB. El programa incrementa o decrementa un contador por cada ciclo del encoder según sea el sentido de giro, agujas del reloj o contrario a las agujas del reloj. Por razones del display utilizado el conteo esta en el rango de 0 a 9. /* encoder.c */ /* Quadrature Encoder */ /* PIC6F87 */ /* Autor: Carlos Narvaez 9/08/005 */ /* Interfaces: */ /* Encoder Canal A = Port B bit 5 */ /* Encoder Canal B = Port B bit */ #include <6f87.h> #fuses XT,NOWDT,PUT, NOPROTECT, NOBROWNOUT,NOLVP,WRT,NOCPD #use delay (clock=000000) #use fast_io(a) #use fast_io(b) #use fast_io(c) /* Prototipos */ void delay_s(int); /* Definiciones Generales */ signed int encoder; /* Definiciones para la interfaz PIC-LCD */ #byte PORTA = 5 #byte PORTB = 6 #byte PORTC = 7

/* Interrupción por cambio en RB-RB7 */ #int_rb void detect_rb_change() { int current; static int last=0; current=portb; // Canal A = PORTB.5 // Canal B = PORTB. if ((bit_test(current, )) && (bit_test(current,5))){ if ((bit_test(last,)) ^ (bit_test(current,5))){ else { last=current; encoder++; if(encoder > 9) encoder = 0; encoder--; if(encoder < 0) encoder = 0; //sentido agujas del reloj //sentido contrario agujas del reloj /* Programa Principal */ void main(void) { disable_interrupts(global); encoder = 0; set_tris_b(0x0); port_b_pullups(false); enable_interrupts(int_rb); enable_interrupts(global); while() { delay_s(); portb=encoder; /* Retardo segundos */ void delay_s(int n) { for (;n!=0; n--) delay_ms(000);