You are on page 1of 19

REPBLICA BOLIVARIANA DE VENEZUELA MINISTERIO DEL PODER POPULAR PARA LA DEFENSA UNIVERSIDAD NACIONAL EXPERIMENTAL POLITCNICA DE LA FUERZA ARMADA

NACIONAL U.N.E.F.A. NCLEO ARAGUA SEDE MARACAY COORDINACIN DE TELECOMUNICACIONES LABORATORIO DE MICROPROCESADORES Prctica N 5. Manejo del ADC del PIC y de los elementos accionadores (motores) Mdulos analgicos Aparte de disponer de un gran nmero de lneas digitales de E/S utilizadas para la comunicacin con los perifricos, el PIC16F876 contiene 5 canales de entradas analgicas (puerto A). Debido a stas, el microcontrolador no slo puede reconocer si un pin es llevado a bajo o alto (0 o +5V), sino que puede medir con precisin el voltaje y convertirlo en un valor numrico, o sea, en formato digital. El convertidor A/D es uno de los mdulos analgicos ms importantes dentro del microcontrolador. Dispone de las siguientes caractersticas:
La conversin se lleva al cabo aplicando el mtodo de aproximacin sucesiva; El convertidor A/D convierte una seal de entrada analgica en un nmero binario de 10

bits;
La resolucin mnima o calidad de conversin se puede ajustar a diferentes necesidades al

seleccionar voltajes de referencia Vref- y Vref+. La resolucin que tiene cada bit procedente de la conversin tiene un valor que es funcin de la tensin de referencia Vref, de acuerdo con la frmula siguiente:

Resolucin = (Vref+ - Vref-) /1.024 = Vref /1.024

Si la Vref+ = 5 VDC y la Vref- es tierra, la resolucin es de 4,8 mV/bit. Por tanto, a la entrada analgica de 0V le corresponde una digital de 00 0000 0000 y para la de

5V una de 11 1111 1111. La tensin de referencia determina los lmites mximo y mnimo de la tensin analgica que se puede convertir. El voltaje diferencial mnimo es de 2 V. La tensin de referencia puede implementarse con la tensin interna de alimentacin VDD, o bien, con una externa que se introduce por los pines RA3/AN3/V ref+ / RA2/AN2/V ref-.

CONVERTIDOR A/D Aunque a primera vista parece muy complicado utilizar un convertidor A/D, en realidad es muy simple. De hecho resulta ms simple utilizar un convertidor A/D que los temporizadores o mdulos de comunicacin serie.

El funcionamiento del convertidor A/D est bajo el control de los bits de cuatro registros:
ADRESH Registro alto del resultado de la conversin A/D; ADRESL Registro bajo del resultado de la conversin A/D; ADCON0 Registro de control 0 (Controla la operacin del conversor A/D) y ADCON1 Registro de control 1 (Configura los Pines de I/O del conversor A/D.)

Registros ADRESH y ADRESL El resultado obtenido despus de convertir un valor analgico en digital es un nmero de 10 bits que se almacenar en los registros ADRESH y ADRESL. Hay dos maneras de manejarlo:justificacin a la izquierda y a la derecha que simplifica en gran medida su uso. El formato del resultado de la conversin depende del bit ADFMdel registro ADCON1. En caso de que no se utilice el convertidor A/D, estos registros se pueden utilizar como registros de propsito general.

Registro ADCON0

Registro ADCON1

REQUERIMIENTOS DE ADQUISICIN A/D Para que el convertidor A/D alcance su exactitud especificada, es necesario proporcionar un cierto tiempo muerto entre seleccionar una entrada analgica especfica y la medicin misma. Este tiempo se le denomina tiempo de adquisicin y generalmente depende de la impedancia de la fuente. La mxima impedancia de entrada recomendada de la fuente analgica, a fin de no afectar la exactitud de la conversin, no deber ser mayor de 10 K. Se utiliza una ecuacin para hacer clculo de tiempo de adquisicin con precisin, cuyo valor mnimo es de 20uS aproximadamente. Por consiguiente, para realizar una conversin con precisin, no se olvide este detalle. RELOJ PARA LA CONVERSIN A/D El tiempo necesario para realizar una conversin A/D cuyo resultado es 1 bit se define en unidades de TAD. Se requiere que sea como mnimo 1,6 uS. Para realizar una conversin completa de 10 bits se requiere un poco ms tiempo de lo esperado, son 12 TAD. Como la frecuencia de reloj as como la fuente de conversin A/D son determinadas por software, es necesario seleccionar una de las

combinaciones de los bits disponibles ADCS1 y ADCS0 antes de empezar a medir voltaje en una de las entradas analgicas. Estos bits se almacenan en el registro ADCON0. Cualquier cambio de la frecuencia de reloj del microcontrolador afectar a la frecuencia de reloj de la conversin A/D, lo que puede perjudicar al resultado de la conversin A/D. En la siguiente tabla se muestran las frecuencias de reloj posibles del dispositivo y cmo afectan a la velocidad de la conversin A/D.

Utilizar el convertidor A/D Para medir el voltaje en un pin de entrada por medio del convertidor A/D, se debe realizar lo siguiente: Paso 1 - Configuracin del puerto:
Escribir un uno lgico (1) a un bit del registro TRIS, lo que resulta en configurar el pin

apropiado como una entrada.

Escribir un uno lgico (1) a un bit del registro ANSEL, lo que resulta en configurar el pin

apropiado como una entrada analgica. Paso 2 - Configuracin del mdulo de la conversin A/D:
Configurar voltaje de referencia en el registro ADCON1. Seleccionar una seal de reloj de la conversin A/D en el registro ADCON0. Seleccionar uno de los canales de entrada CHS0-CHS2 del registro ADCON0. Seleccionar el formato de dato por medio de ADFM del registro ADCON1. Habilitar el convertidor A/D al poner a uno el bit ADON del registro ADCON0.

Paso 3 - Configuracin de la interrupcin (opcionalmente):


Poner a cero el bit ADIF. Poner a uno los bits ADIE, PEIE y GIE .

Paso 4 -Tiempo de espera para que transcurra el tiempo de adquisicin (aproximadamente 20uS). Paso 5 - Inicio de la conversin poniendo a uno el bit GO/DONE del registro ADCON0. Paso 6 - Esperar a que la conversin A/D finalice.
Es necesario comprobar en el bucle de programa si el bit GO/DONE est a cero o esperar

que se produzca una interrupcin (deber estar anteriormente habilitada). Paso 7 - Lectura del resultado de la conversin A/D:
Leer los registros ADRESH y ADRESL.

COMANDOS EN ALTO NIVEL PARA EL MANEJO DEL CONVERSOR A/D ADIN: Inicia la conversin analgica/digital por hardware y almacena el resultado de la conversin en una variable. La resolucin de la conversin es de 10 bits. Sintaxis: variable = ADIN canal

Canal: variable o constante (0..3) que estable el pin analgico para uso como entrada al conversor. Existen cuatro pines de entrada analgica, son: AN0, AN1, AN2 y AN3. Otros ajustes necesarios por el convertidor A/D, se realizan a travs de las declaraciones:

DECLARE ADIN_TAD 2_FOSC, 8_FOSC, 32_FOSC 2_FOSC: rpido (oscilador/2) 8_FOSC: medio (oscilador/8) 32_FOSC: lento (oscilador/32) 64_FOSC: basado en el oscilador interno, valor por defecto = 64_FOSC.

DECLARE ADIN_RES 8, 10, 12. Bits de resolucin, valor por defecto = 10 DECLARE ADIN_STIME (0.. 65535 ms). Tiempo para la carga y descarga del capacitor de HOLD. Valor por defecto =50

Ejemplo de la conversin A/D

Nota: El voltaje mximo sobre cualquier pin el el PIC no deber exceder nunca los 5 VDC. El comando ADIN, convierte un voltaje (0 a 5 VDC) aplicado a un pin, en un valor digital entre (0 y 1023) aplicado a una variable. La entrada puede ser en todo momento escalada si se utiliza un voltaje de referencia externo Vref sobre el pin AN3. Si el voltaje de referencia aplicado al PIC es de 2.5 VDC, se obtendr el doble de resolucin para el mismo conteo de (0 a 1023). El rango permitido de voltajes de referencia deber estar entre (1 y 5) VDC, el cual, siempre deber ser aplicado sobre el pin AN3.

Elementos Accionadores (motores). Motores paso a paso: son aquellos que pueden moverse un paso a la vez por cada pulso que se les aplique. Este paso puede variar desde 90 hasta pequeos movimientos de tan solo 1.8, dependiendo de las especificaciones del fabricante. Esta caracterstica los hace muy tiles en aplicaciones donde se requieran realizar movimientos muy precisos. Estos motores poseen la habilidad de poder quedar enclavados en una posicin o bien totalmente libres. Si una o ms de sus bobinas estn energizadas, el motor estar enclavado en la posicin correspondiente y por el contrario quedar completamente libre si no circula corriente por ninguna de sus bobinas. Existen dos tipos de motores paso a paso de imn permanente: bipolares y unipolares. Motores paso a paso unipolares: estos motores suelen tener 6 o 5 cables de salida, dependiendo de su conexin interna tal como muestra la figura 1. Este tipo se caracteriza por ser ms simple de controlar.

Figura 1. Motor unipolar Para controlar un motor paso a paso unipolar, se requiere el uso de un ULN2803, el cual es un arreglo de 8 transistores tipo Darlington capaces de manejar cargas de hasta 500mA. Las entradas de activacin (Activa A, B, C y D) pueden ser directamente activadas por el microcontrolador.

Figura 2. Conexin del ULN2803 con el motor unipolar.

Existen tres secuencias posibles para este tipo de motores, dichas secuencias comienzan nuevamente por el paso 1 una vez alcanzado el paso final (4 u 8). Para revertir el sentido de giro, simplemente se deben ejecutar las secuencias en modo inverso. Secuencia Normal: Esta es la secuencia ms usada y la que generalmente recomienda el fabricante. Con esta secuencia el motor avanza un paso por vez y debido a que siempre hay al menos dos bobinas activadas, se obtiene un alto torque de paso y de retencin

PASO

Bobina A

Bobina B

Bobina C

Bobina D

ON

ON

OFF

OFF

OFF

ON

ON

OFF

OFF

OFF

ON

ON

ON

OFF

OFF

ON

Secuencia del tipo wave drive: En esta secuencia se activa solo una bobina a la vez. En algunos motores esto brinda un funcionamiento ms suave. La desventaja es que al estar solo una bobina activada, el torque de paso y retencin es menor. PASO Bobina A Bobina B Bobina C Bobina D

ON

OFF

OFF

OFF

OFF

ON

OFF

OFF

OFF

OFF

ON

OFF

OFF

OFF

OFF

ON

Secuencia del tipo medio paso: en esta secuencia se activan las bobinas de tal forma de brindar un movimiento igual a la mitad del paso real. Para ello, se activan primero 2 bobinas y luego solo 1 y as sucesivamente. PASO Bobina A Bobina B Bobina C Bobina D

ON

OFF

OFF

OFF

ON

ON

OFF

OFF

OFF

ON

OFF

OFF

OFF

ON

ON

OFF

OFF

OFF

ON

OFF

OFF

OFF

ON

ON

OFF

OFF

OFF

ON

ON

OFF

OFF

ON

Motores paso a paso bipolares: estos tienen generalmente cuatro cables de salida tal como muestra la figura 3. Para ser controlados requieren del cambio de direccin del flujo de corriente a travs de las bobinas en la secuencia apropiada para realizar un movimiento

Figura 3. Motor P-P bipolar Para controlar estos motores se requiere el uso de un puente H, uno por cada bobina del motor. Para ello se recomienda el uso de un puente H integrado como el L293, tal como muestra la figura 4, donde los terminales A, B, C y D pueden ser conectados directamente al microcontrolador

Figura 4. Conexin del L293 con el motor P-P bipolar. Estos motores necesitan la inversin de la corriente que circula en sus bobinas en una secuencia determinada. Cada inversin de la polaridad provoca el movimiento del eje en un paso, cuyo sentido de giro est determinado por la secuencia seguida.

A continuacin se puede ver la tabla con la secuencia necesaria para controlar motores paso bipolares: PASO 1 2 3 4 TERMINALES A B C +V -V +V +V -V -V -V +V -V -V +V +V

D -V +V +V -V

Cabe destacar que debido a que los motores paso a paso son dispositivos mecnicos y como tal deben vencer ciertas inercias, el tiempo de duracin y la frecuencia de los pulsos aplicados es un punto muy importante a tener en cuenta. Es por ello que el motor debe alcanzar el paso antes que la prxima secuencia de pulsos comience. Si la frecuencia de pulsos es muy elevada, el motor puede que no realice ningn movimiento en absoluto, o puede comenzar a vibrar pero sin llegar a girar, o puede girar errticamente, o puede llegar a girar en sentido opuesto. Para obtener un arranque suave y preciso, es recomendable comenzar con una frecuencia de pulso baja y gradualmente ir aumentndola hasta la velocidad deseada sin superar la mxima tolerada. El giro en reversa debera tambin ser realizado previamente bajando la velocidad de giro y luego cambiar el sentido de rotacin. Manejo de los motores servo con el PIC: Un servomotor es un dispositivo similar a un motor de corriente continua que tiene la capacidad de ubicarse en cualquier posicin dentro de su rango de operacin, y mantenerse estable en dicha posicin. Tiene la capacidad de ser controlado, tanto en velocidad como en posicin. El control de un servo se reduce a indicar su posicin mediante una seal cuadrada de voltaje: el ngulo de ubicacin del motor depende de la duracin del nivel alto de la seal. Cada servo, dependiendo de la marca y modelo utilizado, tiene sus propios mrgenes de operacin. Por ejemplo, para algunos servos los valores de tiempo de la seal en alto estn entre 1 y 2 ms, que posicionan al motor en ambos extremos de giro (0 y 180, respectivamente). Por ejemplo: si los circuitos dentro del servomotor reciben una seal de entre 0,5 a 1,4 milisegundos, este se mover en sentido antihorario; entre 1,6 a 2 milisegundos mover el servomotor en sentido horario; 1,5 milisegundos representa un estado neutro para los servomotores estndares, tal como muestra la figura 5.

Figura 5. Control del sentido de giro del servo. Control del servo mediante HPWM. Los servomotores pueden ser manejados con la modulacin por ancho de pulsos (PWM) del PIC para controlar la direccin o posicin de los motores de corriente continua. La mayora trabaja en la frecuencia de los cincuenta hercios, as las seales PWM tendrn un periodo de veinte milisegundos. Los servomotores tienen tres terminales de conexin: dos para la alimentacin elctrica del circuito y uno para la entrada de la seal de control, la cual puede ir conectada directamente a la salida PWM del PIC. Comando: HPWM canal, Ciclo til, frecuencia Canal: es un valor constante que especifica el canal a usar como salida PWM, que dependiendo del modelo de PIC, son los pines CCP1 y CCP2. Para el PIC 16F877 y el 18F4550 son los pines PORTC.2 y PORTC.1 respectivamente. Ciclo til: es un valor que va de 0 a 255 que especifica la relacin entre la parte baja y alta de la seal. Si es 0, indica que la seal es siempre baja. Si es 1, la seal es alta todo el tiempo. Si es 127, el ciclo til es del 50%. Frecuencia: es un valor que vara de 0 a 32767 que especifica la frecuencia de la seal PWM. La ms alta frecuencia permitida para cualquier oscilador es 32767 Hz. Y la ms baja frecuencia permitida depende del oscilador usado (para 20 MHz es de 1221 Hz).

Ejemplo: DEVICE = 16F877 XTAL = 20 CCP1_PIN = PORTC.1

' PORTC.1 es el CCP1 para el 16F877

HPWM 1, 127, 1000 'Enva una seal PWM con un ciclo til de 50% a 1KHz DELAYMS 500 HPWM 1, 64, 2000 'Enva una seal PWM con un ciclo til de 25% a 2KHz STOP Control del servo mediante PULSEOUT. PULSEOUT: Genera un pulso de una duracin especificada en un terminal de E/S. Sintaxis: PULSOUT Pin, Perodo, Estado Inicial Pin: Es una variable constante que indica cual pin de E/S ser utilizado, el mismo ser convertido en salida. Perodo: Es una variable, constante o expresin de (4us 65535 us) que especifica la cantidad de tiempo en us que durar el pulso.

Figura 6. Salida con el comando PULSEOUT Tambin es posible controlar el servo a travs de cualquier pin del PIC configurado como salida, con los registros PORT, colocando el pin primero en alto un tiempo determinado por un retardo (DELAYMS), y luego en bajo un tiempo determinado por un retardo (DELAYMS).

Manejo de un motor DC con el PIC. El motor de corriente continua es una mquina que convierte la energa elctrica continua en mecnica, provocando un movimiento rotatorio. El sentido de giro de un motor de corriente continua depende del sentido relativo de las corrientes circulantes por los devanados inductor e inducido; es decir, para accionar un motor DC es necesario aplicar la tensin de alimentacin entre sus bornes. Para invertir el sentido de giro basta con invertir la alimentacin y el motor comenzar a girar en sentido opuesto. A diferencia de los motores paso a paso y los servomecanismos, los motores DC no pueden ser posicionados y/o enclavados en una posicin especfica. Estos simplemente giran a la mxima velocidad y en el sentido que la alimentacin aplicada se los permite. Es posible controlar la velocidad de un motor DC mediante la modulacin por ancho de pulso. Cuanto ms ancho es el pulso, mayor es la velocidad del motor y viceversa. En la figura 7 se muestra la conexin del motor DC con el PIC.

Figura 7. Conexin del motor DC con el PIC. El microcontrolador PIC18F4550 es quien controla la velocidad del motor mediante una seal PWM. El CI L298 es el que se encarga del control del paso de la corriente, este tiene internamente dos puentes H, en este caso solo se usa uno. Los diodos de proteccin son muy necesarios porque se est trabajando con cargas inductivas los cuales pueden producir picos de corriente muy altos y pueden ocasionar daos al CI L298 o incluso al microcontrolador, esto sin contar algunos problemas de reset ocasionados por estos picos de corriente. Aun as los 4 diodos nicamente no son suficientes, para completar la estabilizacin de la alimentacin del microcontrolador es necesario la puesta de 2 filtros bypass (470 nF), uno para cada fuente de alimentacin. Otros valores ms bajos de los condensadores pueden ocasionar una respuesta indeseada y permitir resets en el microcontrolador o incluso un dao permanente.

You might also like