Está en la página 1de 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 ADFM del 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

1 ON ON OFF OFF

2 OFF ON ON OFF

3 OFF OFF ON ON

4 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

1 ON OFF OFF OFF

2 OFF ON OFF OFF

3 OFF OFF ON OFF

4 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

1 ON OFF OFF OFF

2 ON ON OFF OFF

3 OFF ON OFF OFF

4 OFF ON ON OFF

5 OFF OFF ON OFF

6 OFF OFF ON ON

7 OFF OFF OFF ON

8 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 TERMINALES
A B C D
1 +V -V +V -V
2 +V -V -V +V
3 -V +V -V +V
4 -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.

También podría gustarte