Conversor ADC 12030 de 12 bits más signo serie I/O A/D con MUX

Anuncio
Conversor ADC 12030 de 12 bits más signo serie I/O A/D con MUX y
Sample & Hold
Características fundamentales:
ADC 12030: conversor de 12 bits más el signo de aproximaciones sucesivas
Tiene entradas y salidas serie y un multiplexor con entradas configurables
Poseen 2 ,4 y 8 entradas.
Las salidas diferenciales del multiplexor y las entradas están disponibles en los pines
MUXOUT1,2 A/DIN1,2
El ADC12030,12H030 tienen 2 multiplexores de canales con la salida del multiplexor
internamente conectadas a las entradas del A/D
La diferencia entre los signados con H es la velocidad , para estos es 8Mhz y para los
primeros 5MHz.
A pedido del programa estos conversores A/D pueden ejecutar una rutina de calibración
que ajusta linealmente errores de cero y full scale a menos de ±1 LSB.
Las entradas analógicas pueden ser configuradas para operar en varias combinaciones
Salida simple (no balanceada)
Diferencial
Pseudo diferencial.
El rango diferencial unipolar total de 0 a +5V se puede lograr con una fuente de
alimentación de 5V. En modo diferencial la salida será válida aún con valores negativos
más grandes que los positivos esto es así debido a que la indicación del formato de salida
tiene signo.
La interfaz serie está configurada para la norma NSC Microwire
Especificaciones clave
Resolución 12 bits + signo
Tiempo de conversión 5.5 s
Tiempo de transferencia
8.6 s. 14 s.
Error de linealidad ±1 LSB
Alimentación simple 5V
Consumo 33mW
Descripción de los pines
CCLK (control clock)El clock aplicado controla el intervalo de tiempo del registro de
aproximaciones sucesivas y el tiempo de adquisición. El tiempo de subida no debe exceder
de 1 s.
SCLK (serial clock)implementado en el pic Es la entrada de clock para temporizar los
datos serie. El clock aplicado a la entrada controla la tasa a la cual sucede el intercambio de
datos serie. El flanco de subida carga la información del pin DI de la dirección del
multiplexor y la selección de modo del registro de desplazamiento. Esta dirección controla
cual canal de entrada analógica del multiplexor es seleccionada y el modo de operación del
A/D. Cuando el CS esta bajo, el flanco descendente de SCLK desplaza el dato resultante
de la conversión A/D previa a la salida DO con excepción del primer bit de datos
Cuando CS está bajo continuamente el primer bit de datos es temporizado con el flanco de
subida de EOC ( fin de conversión) cuando CS es conmutado el flanco descendente siempre
temporiza el primer bit de datos. El CS debería ser forzado al nivel lógico bajo cuando
SCLK está bajo
Los tiempos de subida y bajada no deberían exceder de 1 s.
DI Por este pin entra la señal de datos. Los datos aplicados a este pin son desplazados por
el flanco ascendente SCLK dentro de la dirección del multiplexor o dentro del registro de
selección de modo.
DO Es el pin de salida de datos. Este pin es un push pull de salida cuando CS está bajo.
Cuando CS esté alto esta salida presenta tercer estado. El resultado de conversiones A/D
D0 ...D12 y el dato de estado del conversor son temporizados por el flanco de bajada del
SCLK y este pin. La longitud de palabra y el formato pueden variar . La longitud de palabra
y formato son controlados por el dato desplazado dentro del multiplexor de direcciones y el
registro de selección de modo
EOC este pin es una salida push pull efectiva e indica el estado del ADC12030. Cuando
está bajo la señal indica que el conversor está ocupado con una conversión, auto calibración
auto cero o ciclo de apagado El flanco de subida del EOC indica el final de esos ciclos
CS Este es el pin de selección de chip. Cuando se le aplica un bajo lógico el flanco de
subida del SCLK desplaza los datos sobre DI al registro de direccionamiento Este bajo
también saca a DO del tercer estado . Con CS bajo, el flanco de bajada de SCLK desplaza
los datos de la conversión previa enviándolos por D0 con excepción del primer bit de datos.
Cuando CS esta permanentemente en bajo el primer bit de datos es temporizado en el
flanco ascendente del EOC (end of conversion) . Cuando CS es conmutado, el flanco
descendente de CS siempre temporiza el primer bit de datos. CS debería ser puesto en
estado bajo cuando SCLK está bajo.
El flanco de bajada de CS reinicia (resetea) una conversión en progreso y comienza la
secuencia para una nueva conversión, cuando el CS es vuelto a poner bajo en una
conversión esta es terminada prematuramente. El dato en los registros (latches) de salida
puede estar corrupto. En consecuencia cuando se envía un CS bajo durante una conversion
el dato en los registros de salida debería ser ignorado. El CS podría dejarse bajo, en este
caso es imperativo que se aplique el número correcto de pulsos de SCLK con el propósito
de conservar el sincronismo.
Después de aplicar la alimentación el adc aguarda 13 pulsos de reloj por cada secuencia de
entrada /salida(I/O)El numero de ciclos que espera el ADC es el de la misma longitud que
el de la palabra digital de salida .la longitud de palabra puede ser modificada por el dto
desplazado en el pin D0
DOR:
Este es el pin que indica que el dato de salida esta listo. Es una salida activa Push Pull Esta
bjpo mientras el resultado de conversión está siendo desplazado y va alto para indicar que
el dato ha sido enviado en serie (shifted out)
CONV
Se requiere un bajo lógico en este pin para programar cualquier modo o cambiar la
configuración ADC según los distintos modos de programación tal como conversión de 12
bits conversión de bits Auto cal ,auto cero etc. Cuando ADC esta alto, el conversor está en
modo solo lectura. Mientras se permanezca en el modo “solo lectura”(read data only mode
) con CS bajo y conmutando SCLK, solo se temporizará cualquier dato almacenado en los
registros de desplazamiento de salida. El dato en DI será ignorado. No se deberá comenzar
euna nueva conversión y el ADC permanecerá en el modo y/o configuración previan¡mente
programada La lectura de datos no puede ser realizada si una conversión Auto cal ,auto
cero está en progreso.
PD
Es el pin de apagado Power down con PD alto el A/D es pagado , caso contrario es
encendido. Despues de enviado el comanado al A/D le toma 250 s encenderse.
CH0 CH7 estas son las entradas analógicas del MUX. Un canal de entrada se selecciona de
acuerdo a la información de la dirección presente en el pin DI. Que se carga con los flancos
ascendentes de SCLK en el registro de direcciones. La tensión aplicada a estas entradas no
deberia exceder los niveles GND - +V de no ser asi podría distorsionarse la lectura del
canal seleccionado
COM
Es un pin de entrada analógica Es usada como una pseudo tierra cuando e mpx es de
entrada no balanceada (single ended)
MUXout1 , MUXout2
Son los pines de salida del mpx
A/DIN1, A/DIN2
Son los pines de entrada del conversor. MUXout1 esta ligado a A/DIN1 , mientras
MUXout2 lo está a A/DIN2 . Si se ubica circuitería externa entre MUXout1y A/DIN1 ,o
entre MUXout2y A/DIN2 entonces debe protegerse los pines de manera de no
exceder los niveles AGND - +VA.
VREF+ Tensión de referencia analógica. Para mantener la exactitud debe estar entre 1V y
5V y no exceder VA+
VREF- Tensión de referencia analógica. Para mantener la exactitud no debe estar debajo de
GND y no exceder VA+
VA+ ,VD+ Pines de alimentación analógico y digital
DGND, AGND Tierras analógica y digital.
Interface digital
Veamos la típica secuencia de eventos después de encender el ADC
DI
Auto
cal
Read
Status
Read
Status
12 BIT+SIGN
CONV 1
12 BIT+SIGN
CONV 2
DO
Trash
Trash
Status
Data
(Low)
Satus data
Conv 1
data
La primera instrucción al A/D vía DI inicia la auto calibración,0000100 el dato que casi
simultáneamente ( medio ciclo de sclk) sale por DO carece de significado y es
completamente aleatorio. Para determinar si la auto cal se ha completado se le envía una
instrucción de lectura de estado (read status)00001100.Nuevamente el dato que sale carece
se significado ya que el procedimiento de auto cal modifica el dato a la salida del registro
de desplazamiento salida.para recuperar la información de estado se enváa nuevamente una
instrucción de lectura de estado al A/D En este lapso el dato de estado esta disponible en
D0 si el bit de cal ( D02) en la palabra de estado está baja, XX0XXXXX la Auto Cal ha
sido realizada .En consecuencia la siguiente instrucción puede ser el inicio de conversión.
Por ej 00001000 (entrada diferencial ,12 bits +sgn ,primer bit recibido o “justificación”
LSB) El dato de salida en esta oportunidad es nuevamente información del estado. Para
protegerse del ruido la salida del A/D no debe ser leída mientras progresa la conversión. Si
CS es puesta a tierra en una ranura temporal (strobe) la conversión finaliza
porematuramente Par determinar el fin de la conversión puede utilizarse la señal EOC o el
controlador del A/D pude ser vigilado por software acerca de cuando sería apropiado
comunicarse con el A/D nuevamente. El dato puede ser leído cuando se envíe la siguiente
instrucción al A/D
Programa PIC 16F873.
Objetivos:
Se prueba el comando de Autocalibración escribiendo
1) Se manda el código 00000100 "AutoCal" con el LSB primero
2) Se manda el código 00001100 "Read Status" con el LSB primero
y se repite este comando hasta que el bit DO2 (XX0XXXXX) leído sea "0".
Inicialmente en el Power Up es "1").
El bit DO2 corresponde al bit 5 de TINADC ya que se leen 8 bits y el LSB
es el primero que entra y se va desplazando a izquierda en TINADC.
;3) Luego de detectar fin de autocalibración se manda el comando:
"Conversión de 12 bits" 00001000 que corresponde a:
Entrada diferencial con CH0(+) y CH1(-).
12 bits mas signo.
Formato de 12 bits.
Primer bit recibido: LSB
4) Se llama a la rutina de Display donde se visualiza el dato de la conversión
en el port B que contiene los 8 bits menos significativos y en el port C los 4 bits mas
significativos mas el signo.
5)transmisión de los datos por el puerto serie a PC
Se repite permanentemente 3) y 4)
Inicialización
Definición de entradas y salidas
Se utiliza la interrupción de timer para generar el clock serie (SCLK) Se midió 240Hz
como frecuencia de SCLK y un período de muestreo de 58,2ms.
Rutina AUTADC (Envío de la instrucción de AUTOCALIBRACION)
Se detecta si el clock SCLK =RA0 paso de uno a cero
Si está en cero se pone CS =0
1->0 (loop INVES1)
Se enviaran datos de control al PIC a través de DI, (pin 13 Adc12030) en este caso la
instrucción de Autocalibracion 0000100:El adc12030 responderá con datos aleatorios en las
2 primeras lecturas para saber cuando iniciar la conversión se debe testear el el bit d2 del
registro de estado Las palabras enviadas por el adc12030 se recibirán en el RA1
Inicialización de registros auxiliares para leer las entradas al pin RA1
cada bit de RA1 se almacena en TINADC, OFFSET apuntara a cada bit de RA1
En RAUTADC esta cargado 00000100 AUTOCALIBRACIÓN. TOUTADC es el registro de
salida
TINADC Borra registro de entrada de datos al PIC.
RCUEADC Puesta a cero registro de conteo de ciclos de SCLK con 0.
Envío efectivo de la instrucción de AUTOCALIBRACION
Se pasa el contenido de RAUTADC a TOUTADC.
El contenido de TOUTADC será enviado por el pin RA0 por medio de sucesivas rotaciones
a derecha .
El procedimiento es testear cada bit de RAUTADC. Si es CERO se envía a POINO y se saca
un cero por el RA0 En caso contrario se envia un UNO Luego de cualquiera de estos casos
se rota a derechaSe debe generar el flaco de subida luego de cada rotación
Generación del flanco de subida para escritura en el ADC12030. Recordar que sclk se
genera con el timer1 y el registro INVERT
En el flanco de subida de SCLK el ADC12030 lee un nuevo dato de DI.
Se detecta si el clock paso de cero a uno 0->1 (loop INVES0)
Si es asi se testea RA1=D0 .Si fue cero se envia a ENTINO. Si fue uno se carga el
contenido de offset en ese bit( operación IORFW)
Si pasa a ENTINO :
a) Se debe esperar que el flanco de reloj baje para detectar una nueva subida
b) Se debe preparar el registro OFFset con una rotación izquierda previo borrar el bit de
carry
para la eventual llegada de un uno en el próximo ciclo
c) Se debe contar si no se llego al octavo (ultimo) bit de la palabra a enviar registro
RCUEADC
loop INVES1
SCLK=1
->0
NO
SI
CS=0
RAUTADC =00000100
OFFSET=1
RCUEADC=0
RAUTADC a TOUTADC
O?
RA0=1
POINO RA0=0
TOUTADC
Espera para Generación de flanco
Registro INVERT (sale por RA2)
(loop INVES0)
Lectura del Random
BYTE
Llegó un 1?
NO
ENTINO
Esperar flanco de Bajada
Rotar OFFSET
Descontar
NO
RCUEADC=8
CS=1
SI
RA1=1
Rutina LEERADC (leer el registro de estado )
Similar a AUTADC solo cambia RLEEADC en lugar de RAUTADC
Se carga en W la palabra de control para LEER STATUS.
Rutina CONADC
Similar a AUTADC solo cambia RCOADC0 en lugar de RAUTADC
Se carga en W la palabra de control para CONVERSIÓN CH0(+) CH1(-).
Como se deben leer 13 signos se carga primero RCUEADC con 8 y luego con 13
Ademas se agregan INVESOZ (detección de flaco de bajada) ENTINOZ. Carga de bits
leidos en TINADC2 para leer el total de bits
Rutina DISPLAY
Muestra los datos guardados en TINADC Y TINADC2 en los leds. PUERTOS B Y C
respectivamente
Rutina para transmisión serie (conversión a ASCII??)
Diagrama de Tiempo
SCLK
Loop
INVES1
Loop
INVES0
ENTINO
CS
Descargar