Unidad VI LA FUNCIÓN DE CONVERCIÓN DIGITAL / ANALOGICO (DAC) Y ANALÓGICO / DIGITAL (ADC) CON MICROCONTROLADORES DE USO DEDICADO. 6.1 INTRODUCCIÓN Las señales analógicas también son llamadas señales del mundo real, debido a que muchas señales físicas son analógicas por naturaleza. Actualmente gran cantidad de aplicaciones para computadoras y otros sistemas digitales, requieren de señales de entrada del mundo real, tales como temperatura, presión, flujo, nivel. Incluso señales que pueden incluir imágenes y voz. Actualmente los sistemas digitales están siendo usados para controlar o manipular señales en el mundo real, ya sea, en la industria, en autotransportes o en electrodomésticos entre otros. 6.1.1Señales analógicas y digitales Una señal analógica es aquella que tiene valores continuos sobre un rango dado, en contraste al número determinado de valores discretos que presentaría una señal digital para el mismo rango. Ejemplo 6 - 1 Tengamos en cuenta una fuente variable de voltaje, que tiene un voltaje de salida en un rango de escala de 0 a 12 Volts, ajustable con un potenciómetro. Luego entonces será posible tener un voltaje de salida con un número infinito de valores continuos. Una fuente de voltaje digital con el mismo rango de escala pero con valores específicos de salida 0, 5, 10, y 12 V tendrá solamente 4 valores discretos. Ejemplo 6 - 2 Consideremos la grafica de una señal analógica de entre 0 y 5 volts y veamos la diferencia con la misma señal pero con una representación digital de 4 bits. Se puede observar que en la grafica analógica la curva tiene un numero infinito de valores entre 0 y 5 Volts tanto en el eje vertical como en el horizontal que representa el tiempo en segundos. Mientras que en la representación digital solamente se tienen 16 valores diferentes para mostrar el eje vertical y 36 instantes de toma de lectura o medición lo que da como resultado solamente algunos puntos discretos sobre la curva analógica obviamente si se usara una representación digital de mas Bits, digamos 8 , se tendría en el eje vertical hasta 256 valores diferente , es decir , el numero de valores depende directamente del numero de n bits que se usen. Numero de valores diferentes = 2n Figura 6-1 Representación de una señal analógica Figura 6-2. Representación de una señal Digital 6.1.2 Interfase con el mundo real Para poder realizar la interfase entre el mundo analógico y el digital se requiere de dos procesos básicos. La conversión analógica / digital ADC (por sus siglas en ingles Analog Digital Converter) y la conversión digital / analógica DAC (Digital Analog Converter). Ejemplo 6 - 3. Termostato digital para el control de la temperatura en un cuarto de habitación. Figura 6-3 Diagrama a bloques de un termostato para el control de temperatura que usa un ADC. La temperatura del cuarto produce en un sensor de termopar un voltaje que es proporcional a la temperatura del cuarto, este voltaje es acondicionado por un amplificador operacional y aplicado a la entrada de un ADC, donde es convertida a una señal digital y periódicamente muestreada por un microprocesador . Por ejemplo supongamos que la temperatura del cuarto es de 17 ° C . Un voltaje especifico a esta temperatura aparece a la entrada del convertidor ADC de 8 bits y en su salida el convertidor da una señal digital correspondiente digamos de 01000011 en código binario de 8 bits. Internamente, el microprocesador compara este numero binario con un numero, también binario, que representa la temperatura deseada supóngase 01001000 para 23 ° C, Que es el valor deseado de temperatura que previamente se ha introducido a través de un teclado y almacenado en un registro. Como resultado de la comparación, en que para este ejemplo el el cuarto tiene una temperatura actual menor que el valor deseado, el microprocesador comanda a la unidad de control a que se encienda el dispositivo calentador del cuarto. Como el microprocesador continuara monitoreando la temperatura del cuarto vía el convertidor ADC , cuando la temperatura del cuarto iguale ó exceda la temperatura deseada el microcontrolador apagará el dispositivo calentador. Ejemplo 6 - 4 Grabadora / Reproductora Digital de Audio (GDA) En este ejemplo se usan ambos convertidores DAC y ADC, con un diagrama muy elemental explicaremos este ejemplo. Figura 6-4 Diagrama a bloques de una Grabadora / Reproductora Digital de Audio (GDA) Una señal de audio, es desde luego una señal analógica. Cuando se está en el modo de grabación esta señal de audio que puede provenir de un micrófono ó algún otro dispositivo, se acondiciona con amplificadores operacionales y se pasa a través del ADC con lo cual se produce una señal digital susceptible de ser grabada en una cinta digital. En el modo de reproducción cuando la señal proviene de una cinta de grabación digital, la señal es procesada con un microcontrolador, convertida con un DAC y finalmente amplificada para ser enviada al sistema de bocinas de reproducción del audio. 6.2 Convertidores Digital / Analógico DAC. En esta sección examinaremos las características básicas de los convertidores DAC que es, el dispositivo que transduce información digital a una cantidad continua, es decir un ADC acepta una palabra digital y entrega una cantidad proporcional al valor numérico representado por la palabra. 6.2.1 El ADC básico. En la figura 6-5 se muestra el diagrama simplificado de un DAC básico. Este dispositivo convierte en una corriente cada bit de su entrada de datos digitales cuyo valor binario sea 1, y suma tales corrientes en ISUM como su salida analógica la cual puede ser aprovechada a través de RSALIDA en VSUM que será un voltaje proporcional al valor de la palabra digital de entrada. Cada conmutador, S, controla una fuente de corriente, I, cuando un conmutador esta en 1, su fuente contribuye a la corriente de salida I SUM, que de esta forma se vuelve proporcional a la entrada en paralelo de la palabra de datos digitales. Figura 6-5 Diagrama simplificado de un convertidor básico Digital / Analógico con 4 bits.Las entradas de datos digitales del bit 1 al bit 4 controlan los estados de los conmutadores S1 a S4. Las entradas de datos digitales del bit 1 al bit 4 controlan los estados de los conmutadores S1 a S4. En la figura 6-6 se muestra un diagrama de bloques simplificado de un DAC completo. El registro de entrada o BUFFER asegura que los bits de entrada estén presentes en forma simultánea y que se mantengan durante la conversión. Con la señal de intermitencia o STROBE, se controla que los registros de entrada se transfieran simultáneamente a la salida de los registros de salida, las cuales se conectan a las entradas del convertidor de digital a analógico. El voltaje de referencia V REF es una fuente de voltaje estable que suministra las corrientes a las fuentes de corriente. El amplificador operacional convierte la salida de corriente del convertidor en un voltaje de salida proporcional, VSALIDA . Figura 6-6. Diagrama de bloques simplificado de un sistema DAC completo. 6.2.2 DAC de resistencia binaria ponderada. Este convertidor consta de los cuatro elementos siguientes: 1).- Una red de resistencia ponderada en la cual los valores de la resistencia se incrementan en un factor de 2 para cada bit, el valor para la resistencia en la posición del digito más significativo ó bMs es R bMs = R x 20 En las posiciónes siguientes al bMs, el valor es Rx 21 , Rx 22, …. Rx 2n-1 Siendo el último termino el valor de la resistencia para el bit menos significativo bms 2).- Un total de n conmutadores, uno para cada bit aplicado al DAC. 3).- Un voltaje de referencia estable, VREF. 4).- Un elemento sumador, el cual debe sumar las corrientes que fluyan de la red resistiva. Luego entonces la corriente debida a al bit 1 ( bMs) en el 1 lógico es, VREF / 1 R; la corriente debida al bit 2 en el 1 lógico es VREF / 2 R, etc.; la corriente más pequeña se debe al bit bms y es: I bms = VREF / 2n-1 x R Y la corriente I SUM es la suma de todas las aportaciones de corriente por cada bit. Ejemplo 6 – 5. En la figura 7-7 se muestra un ADC con entradas de resistencia binaria ponderada con un amplificador operacional como elemento sumador. Cada una de las resistencias de entrada tienen o no corriente dependiendo del valor de entrada ya se valor ALTO ( 1 lógico) o Bajo (0 lógico). Si la entrada es el binario 1, la cantidad de corriente que entra al circuito depende del valor del resistor colocado a su entrada, que de acuerdo a los valores mostrados cada uno difiere de otro en un valor de 2n, como se muestra en la figura. Puesto que prácticamente no entra corriente al amplificador operacional por su entrada inversora, toda la corriente pasara a través de RF por lo que el VSALIDA será = IFRF. Figura 7-7 6-ADC con entradas de resistencia binaria ponderada con un amplificador operacional como elemento sumador Una desventaja de este tipo de convertidor es la gran cantidad de resistores con valor diferente que se requieren, además que su estabilidad y rango de tolerancia deberá ser mejor del 0.5 %. Ejemplo 6 – 6. Determinar el voltaje de salida para el DAC mostrado en la figura 6-8(a) Si se aplica ,a las entradas una secuencia de números binarios de 4 bits representados con las formas de onda mostradas en la figura 6-8(b). Figura 6-8 (a) ejemplo 6-6 Figura 6-8(b) formas de onda para el ejemplo 6-6 Solución. Primero determinamos el valor de la corriente por cada una de las entradas de resistencia ponderada. Dado que la entrada (-) del amplificador operacional (amop) es 0 V ( tierra virtual ). Y el binario 1 corresponde a +5V , aplicando ley de ohm tenemos: I0 = 5 V / 40 Kohm = 0.125 mA I1 = 5 V / 20 Kohm = 0.25 mA I2 = 5 V / 10 Kohm = 0.5 mA I 3 = 5 V / 5 Kohm = 1.0 mA Asumiendo que no fluye corriente por el amplificador operacional debido a su muy alta impedancia y que entonces toda la corriente fluye a través de RF . Y dado que un extremo de esta resistencia tiene un voltaje de 0 V (tierra virtual), y por el otro deberá tener un voltaje igual al voltaje de salida y que será negativo respecto a la tierra virtual tenemos: VSALIDA (D0) = ( 1 k ohm) ( - 0.125 mA ) = - 0.125 V VSALIDA (D1) = ( 1 k ohm) ( - 0.25 mA ) = - 0.25 V VSALIDA (D2) = ( 1 k ohm) ( - 0.5 mA ) = - 0.5 V VSALIDA (D3) = ( 1 k ohm) ( - 1.0 mA ) = - 1.0 V En la figura 6-8 (b) Podemos observar que el primer código binario de entrada es 0000 que produce un voltaje de salida de 0 V, El siguiente código es 0001 que produce un voltaje de salida de -0.125 V. El siguiente código es 0010 que produce un voltaje de salida de -0.25 V, El siguiente código es 0011 que produce un voltaje de salida de -0.125 V + -0.25 V = -0.375 V. Cada código binario sucesivo incrementa el Voltaje en -0.125 V, la salida de voltaje tiene para este ejemplo una forma de onda de escalera invertida que va de 0 V a -1.875 V en pasos de -0.125 V su grafica se muestra en la figura 6-9. Figura 6-9. Grafica del voltaje de salida para el circuito del ejemplo 6-6 ---. 6.2.3 Características de comportamiento para los convertidores D/A. 6.2.3.1 Factor de Multiplicación Como la salida de un DAC es directamente proporcional al VREF Para obtener un voltaje de salida preciso entre V SALIDA y la entrada digital se requiere que el VREF sea fijo y estable. Sin embargo supóngase que VREF es una fuente de voltaje analógica cambiante. En tal caso el voltaje de salida del DAC es proporcional al producto de una entrada analógica y una entrada digital. Por lo tanto se puede usar el DAC como un amplificador o atenuador controlado digitalmente, en el cual la ganancia será determinada por la entrada digital. En la referencia bibliográfica (revista UPIICSA de tecnología) se publica una aplicación muy interesante de esta cualidad de los DAC en el diseño de un sistema en el que el dispositivo se usa como modulador de amplitud para transmitir de señales. 6.2.3.1 Resolución La resolución de un DAC es el reciproco del número máximo de pasos discretos que se pueden tener a la salida del DAC, es igual a 2n- 1, donde n es el numero de bits de entrada. Obviamente la resolución depende del número de los bits de entrada. Ejemplo 6-7 Determinar la resolución de un DAC de 4 bits de entrada. Solución Resolución = 1 / (24 - 1 ) = 1 / 15 que también puede ser expresada en porcentaje de resolución = (1/15)100 = 6.67% como % 6.2.3.2 Exactitud. La exactitud es la comparación de la salida real de DAC con la salida esperadas expresa como un porcentaje del voltaje de salida a escala completa, o máximo voltaje de salida. Por ejemplo si el convertidor tiene un voltaje de salida a escala completa de 10 V y la exactitud es de 0.1 %, entonces el máximo error de cualquier voltaje de salida es igual a (10 V)(0.001) = 10 mV. Idealmente, la exactitud deberá ser, a lo más, + o - ½ del bit menos significativo bms. Para un DAC de 8 bits , 1 bms es 1/256 = 0.0039 (0.39 %de la escala completa ) . La exactitud debiera ser de + o – 0.2 %. 6.2.3.3 Linealidad El error por linealidad o mas propiamente por la no linealidad, es una medida de cómo la linealidad de la salida analógica se relaciona con la entrada digital en todo el intervalo de operación. Es la desviación de la recta esperada, como se muestra en la figura pag. 447 fig 15 – 12 libro copias. Figura 6-10 (a) No linealidad de 1 bms con la ganancia ajustada para un error cero en la escala completa. Figura 6-10 (b) No linealidad de + o – ½ bms con la ganancia ajustada a un mínimo error pico. 6.2.3.4 Linealidad diferencial La no linealidad diferencial es una medida del cambio en la salida analógica por cada cambio de 1 bit en la entrada digital. Idealmente, cada paso debe ser de la misma magnitud en todo el intervalo de la operación, pero debido a las imperfecciones del circuito, los cambios reales no son iguales, lo que se ilustra en la figura 6-11. Figura 6-11 No linealidad diferencial 6.2.3.5 Tiempo de estabilización. El tiempo de estabilización (settling time) o conocida también como la velocidad a la que opera, el es el tiempo que toma el DAC en alcanzar la estabilidad dentro de + o – ½ bms de su valor final cuando un cambio ocurre en el código de entrada. Los valores típicos se settling time se encuentran en el rango de 10 uS a 50 nS 6.2.3.6 Monotoneidad. Un DAC es monótono cuando la salida aumenta( o permanece constante) dada una entrada creciente. En la figura 6-11se muestra un DAC no monótono, en la que se muestra un deterioro en el funcionamiento del DAC. Figura 6-11. Grafica de salida para un DAC no monótono 6.2.3.7 Voltaje de desajuste (Offset) Teóricamente la salida de un DAC debiera ser cero cuando todas las entradas binarias son ceros. Sin embargo en la práctica esto no ocurre ya que siempre existen pequeños voltajes de salida . Esto se conoce como error de desajuste (offset), el cual deberá reajustarse por medios externos en caso de así requerirse. 6.3 Diseño del DAC con microcontroladores El diseño de un sistema con microcontroladores que requiera de la conversión de señal con código digital a señal analógica es muy simple de implementar pues los DAC requieren solamente la señal de código digital de entrada y dos o solamente una señal de control. Primero se mostrara como se conecta un DAC cuando se requieren dos señales de control C S y WR. En la figura 6-12. figura 6-12 Diagrama a bloque de un convertidor D/A . En la figura 6-12 se muestran los detalles de operación de un convertidor digital a analógico con entrada almacenada en registro de 8 bits. La entrada de 8 bits se pone en un registro interno hasta que concluya la siguiente conversión. Los datos se guardan en el registro cuando la ACTIVACION CS es alta; se dice que el almacén al registro es transparente cuando la señal de ACTIVACIÓN CS es baja. El registro mantiene la señal hasta que llegue otra que la reemplace. Cuando un CAD tiene un registro de entrada de datos se puede conectar en forma directa con el bus de datos de un microprocesador y este los considerará como una señal digital para la entrada de datos al CAD. Un CAD sin registro de almacén de datos se debe de conectar a través de un adaptador de interfase periférico Figura 6-13 conexión de un DAC con un Microcontrolador en operación unipolar. En la figura 6-13 se muestra como se debe de conectar un DAC con un microcontrolador cuando es necesario que la salida sea un voltaje que varié entre cero y el voltaje de referencia VREF , lo cual se denomina operación unipolar. Si VREF = 5 v el voltaje de salida de + 5 V cuando R1 es de 8 kohm y R2 = 8 Kohm; el rango es de +10V cuando R1 = 16 Kohm y R2 = 5.33 Kohm. En la figura 6-14 se muestra el DAC AD7524 que es fabricado por Analog Devices y que es compatible con microprocesadores de 8 bits tales como 6800, 8085, z 80 y con microcontroladores como 68hc11, PIC 16c84, Intel 8051. a través del uso de las señales de control CS y WR. Los modos de operación que se pueden tener se presentan en la tabla de la figura pag 63 ramakan. Figura 6-14 diagrama del DAC AD7524 fabricado por Analog Devices Un DAC multiplicador es un DAC diseñado para operar no solamente con un voltaje fijo de referencia VREF sino también con una entrada analógica Vi en lugar de la entrada fija de VREF; El CAD AD7524 puede ser configurado como se muestra en la figura 6-14. Cambiando el circuito externo. La salida del DAC Multiplicador estará representada por Vo = Vi X donde Vi es la señal de entrada y X es la fracción asociada con la entrada digital. Si se sume que tanto Vi como X pueden tener polaridad, a esta forma de operación se le llama de cuarto cuadrante. En contraste cuando Vi = Vref. es decir un Voltaje fijo se llama operación en segundo cuadrante. 6.4 Un DAC práctico El CAD de Nacional Semiconductors AD0808. El AD0808 es un convertidor digital a analógico de 8 bits el cual muestra dentro de sus características principales un tiempo de asentamiento (settling time) de 150 nS con una presición de +0.19 %.. Este convertidor es de tipo DIP y posee 16 pines que se distribuyen de la siguiente manera Figura 6-15 Descripción de pines del DAC 0808 Figura 6-16 Pines del DAC 0808 Figura 6-17 Características eléctricas del DAC 0808 Este dispositivo AD0808 es muy sencillo de operar pues únicamente se debe de tener cuidado en dos cosas; primero que los valores de entrada VIH y VIL para el “1” y “0” lógicos estén dentro de los valores especificados, y segundo que el voltaje de salida Vo este debidamente acoplado en su impedancia de salida. En la figura se muestra como se puede conectar un AD0808 de Nacional Semiconductors Figura 6-18 Diagrama eléctrico de la conexión del AD 0808 Descripción del circuito La salida de datos D0 a D7 del microprocesador o microcontrolador según sea el caso, se acopla directamente a las entradas A1 a A8 pines 5 a 12 del DAC 0808, conectando el pin 20 Vcc a +5V y los Pines 1 DIR y 19 OE de acuerdo al modo de operación que se desee La salida del DAC pin 4 se acopla en impedancia a través del AmOp LM 741, en este circuito se usa una configuración de amplificador inversor con ganancia ajustable, El +VREF pin 14 se conecta a +5 V a través de una resistencia de 4.7 kohms y el –VREF pin 15 a tierra a través también de una resistencia de 4.7 kohms, el -VEE pin 3 a -12 V y finalmente la COMP pin 16 a través de un capacitor de 0.1 uf a +5 V Programa de control para el circuito El programa de control únicamente requiere de poner en el puerto de salida D0 a D7 del microcontrolador el código de datos que se desea convertir a analógico. 6.5 Otros tipos de DACs Otro tipo de DAC que se fabrica más comúnmente es el que se llama de redes escalonadas resistivas R/2R. En la figura 6-19 se muestra un DAC de resistencia ponderada binaria con 6 bits y amplificador operacional como elemento sumador de corriente. Los conmutadores muestran una entrada binaria de 101010. En este ejemplo el valor de la resistencia para el bit bMs es de 5 k, mientras que el del bit bms es de 160 k. Debido a que el valor de las resistencias cambia en un factor de 2 para cada bit, un DAC de alta resolución tendría una gran gama de diferentes valores de resistencias para el bMs y el bms. En tal DAC se presentarían algunas dificultades. En primer lugar, sería difícil fabricar un conjunto de resistencias de tan amplio intervalo de resistencias que no obstante, contara con razones exactas y que no alteren su valor con los cambios de temperatura. Segundo, las corrientes en las posiciones cercanas al bms serían muy bajas debido a las altas resistencias. Tales corrientes bajas Hacen muy sensible al DAC a corrientes de ruido que pudieran ser de la misma magnitud. Figura 6-19 Diagrama de un DAC de resistencia ponderada binaria con 6 bits de resolución Figura 6-20 DAC en escalera R/2R Otro método para realizar la conversión D/A es utilizar la red escalonada R/2R, como se muestra en la Figura 6-20 para el caso de 4 bits, este método resuelve uno de los problemas del DAC con ponderación binaria pues solo requiere dos valores de resistencias. Asumiendo que la entrada D, esta a nivel alto (+5V) y las demás a nivel BAJO (tierra, 0 V) esta condición representa el código binario 1000 y haciendo un análisis del circuito se puede observar que cada entrada de menor peso sucesiva produce una tensión de salida que es la mitad de la anterior, por lo que la tensión de salida es proporcional al peso binario de los bits de entrada. El DAC AD 0808 mostrado en el punto anterior es un ejemplo de un DAC en escalera R/2R . 6.6 Convertidor Analógico / Digital ADC. La conversión analógica a digital es el proceso por el cual una señal analógica se convierte a código digital. La conversión A/D es necesaria cuando se requiere expresar una magnitud analógica producto de una medición en un código digital para poder ser procesada en una computadora, presentarla en un display o almacenarla en un archivo digital. A continuación se analizaran varios tipos de convertidores analógico / digitales 6.7 Parámetros de rendimiento del ADC Entre las características de los convertidores A/D destacan las siguientes: 6.7.1 Resolución La resolución de un ADC es el más pequeño paso digital con el cual es posible aproximar el voltaje analógico de entrada. Ejemplo 6-8 El voltaje de entrada de escala completa de un ADC de 8 bits es +5 V. Calcular el menor paso de voltaje analógico que puede reconocer el convertidor. Solución . Ocho bits representan 28= 256 pasos. Un paso en un voltaje de entrada de escala completa de 5 V representa 5 / 256 V = 19.53 mV 6.7.2 Tiempo de Conversión La conversión de un valor sobre una forma de onda analógica a una cantidad digital, no es instantánea, esta requiere de un tiempo de conversión que va de algunos uS para las conversiones más rápidas a mS para los dispositivos más lentos. Este concepto se ilustra en la figura 6-21 Figura 6-21 tiempo de conversión A / D 6.8 Circuitos componentes de los ADC. En esta sección se analizaran dos circuitos analógicos que se usan frecuentemente en los ADC. El comparador de voltaje y el circuito de muestreo y retención. 6.8.1 Circuito comparador de voltaje Los comparadores de voltaje analógicos son circuitos que comparan dos señales VA y VB de manera que si VA > VB entonces la salida es BAJO o de 0 V y para el caso de que VA < VB entonces la salida es ALTO o mayor de +3V. El tiempo de respuesta de un comparador de voltaje analógico es el tiempo entre la aplicación de un voltaje de entrada y el instante en que el voltaje de salida cruza el voltaje critico lógico. Fig. comparador de voltaje analógico Fig. tiempos de respuesta de circuitos comparadores de voltaje Figura 6-22. Comparador de voltaje analógico (a) Símbolo eléctrico (b) Voltaje de salida como función del voltaje de entrada (c) Voltaje de salida como función del voltaje de entrada con histéresis 6.8.2 Circuitos de muestreo y retención (Sample and Hold). En los ADC estos circuitos se utilizan para muestrear durante un breve intervalo de el valor dependiente del tiempo de un voltaje analógico de entrada y luego retener constante el valor muestreado durante la conversión. En la figura se muestra un diagrama simplificado de un circuito de muestreo y retención. La necesidad de muestrear una señal analógica surge del tiempo de conversión diferente de cero de un ADC; si durante la conversión la señal de entrada analógica ,cambia más que la resolución del ADC , la salida digital de este pudiera no ser representativa de su entrada analógica. Figura 6-23. Diagrama simplificado de un circuito de muestreo y retención 6.9 Tipos de convertidores Analógico / Digitales. 6.9.1 Convertidor Analógico/Digital Flash o Paralelo El método flash utiliza comparadores que comparan una serie de tensiones de referencia con la tensión de entrada analógica. Cuando la tensión analógica sobrepasa a la tensión de referencia de un comparador determinado, se genera un nivel Altota figura 6-24 Figura 6-24 Convertidor A/D tipo Flash de 8 bits que usa 7 convertidores La figura 6-24 muestra un convertidor de 8 bits que usa 7 convertidores, no se requiere convertidor para el caso en que todas las comparaciones sean cero En general se requieren 2n-1 comparadores para la conversión a un código binario de n bits. La salida de cada convertidor se aplica un circuito codificador de prioridad, en el cual el código binario queda determinado por la entrada de mayor orden que se encuentre a nivel alto. Referencia bibliografica . floyd Su principal ventaja de este comparador es su alta velocidad de muestreo que se puede alcanzar, aunque presenta la desventaja de que se necesitan muchos comparadores para un ADC de un número binario de tamaño razonable. La velocidad de muestreo determina la precisión con la que la secuencia de códigos digitales representa la entrada analógica del ADC. Cuando más muestras se toman en una unidad de tiempo, más precisa es la señal digital que representa a la señal analógica. Aquí cabe una pregunta: ¿Con que velocidad se debe muestrear una señal analógica, es decir cuantas veces por unidad de tiempo es lo mínimo con que se requiere muestrear una señal analógica ? La teoría propuesta por Nyquist Referencia bibliografica Operational Amplifiers Floyd establece que una señal de entrada variante con el tiempo puede reproducirse con fidelidad si la velocidad de muestreo es por lo menos dos veces tan alta como la mayor componente de la frecuencia de la señal. Ejemplo 6 – 10 Ilustración de varios muestreos por ciclo La mayor componente de la frecuencia de una señal analógica es de 3500 Hz. Determina la mínima velocidad de muestreo. Solución: La mínima velocidad de muestreo requerida es 2 X 3500 = 7000 muestras por segundo. 6.9.2 ADC de aproximaciones sucesivas. Este tipo de convertidor es el que sigue en menor tiempo de conversión al convertidor con método Flash. La figura 6-25 muestra el diagrama a bloques básico de un convertidor ADC por aproximaciones sucesivas de 4 bits Figura 6-25 Diagrama a bloques básico de un convertidor ADC por aproximaciones sucesivas de 4 bits Descripción del circuito Esta formado por un DAC, un registro de aproximaciones sucesivas (SAR, successive-aproximation r+egister) y un comparador. Los bits de entrada al DAC se habilitan a ALTO, de uno en uno sucesivamente. Comenzando por el bit más significativo (bMs). Cada vez que se habilita un bit, el comparador produce una salida que indica si la tensión analógica de entrada es mayor o menor que la salida del DAC. Si la salida del DAC es mayor que la entrada analógica, la salida del comparador esta a nivel BAJO, haciendo que el bit en el registro pase a cero. Si la salida es menor que la entrada analógica el bit 1 se mantiene en el registro. El sistema realizara esta operación primero con em bMs, luego con el siguiente bit más significativo, después con el siguiente, y así sucesivamente. Después de que todos los bits del DAC hayan sido aplicados, el ciclo de conversión esta completo. Referencia floyd. 6.9.3 ADC de contador de rampa en escalera. El método de rampa en escalera para la conversión A/D se conoce también como método de Rampa digital o método contador. Se emplea un DAC y un contador binario para generar el valor digital correspondiente a una entrada analógica. La figura 6-26 presenta un diagrama de este tipo de convertidor. . Figura 6-26 Convertidor A/D tipo rampa de 8 bits El método de rampa en escalera es más lento que el método flash porque, en caso de entrada máxima, el contador debe pasar a través del número máximo de estados antes de realizar la conversión. Para una conversión de 8 bits, esto significa un máximo de 256 estados y cado estado consume un cierto tiempo La figura 6-27 ilustra una secuencia de conversión con 4 bits. Obsérvese que, para cada muestra, el contador debe contar desde cero hasta el escalón en el que la tensión de referencia alcanza a la tensión de entrada analógica. El tiempo de conversión es variable, en función de la tensión analógica. La figura 6-27 ilustra una secuencia de conversión con 4 bits 6.9.4 ADC de rastreo o seguimiento El método de seguimiento utiliza un contador ascendente / descendente y es más rápido que el método de rampa digital, porque el contador no se pone a cero después de cada muestreo sino que sigue a la entrada analógica La figura 6-28 muestra un típico ADC de seguimiento de 8 bits. figura 6-28 Típico ADC de seguimiento de 8 bits. La salida del comparador se aplica al modo del control del contador, cuando esta BAJO ( 0 lógico), hace que el contador cuente progresivamente, y , recíprocamente, cuando esta ALTO (1 lógico), hace que el contador cuente en forma descendente. En la figura 6-29 se muestra que cuando el ADC de rastreo a alcanzado el intervalo idóneo, entonces el convertidor puede seguir de forma continua el voltaje analógico. La rapidez de rastreo no es ningún problema a medida que las variaciones de la entrada sean relativamente lentas. A fin de reducir el error inicial de las primeras conversiones suele fijarse el contador a media escala, es decir, en 100…000. Figura 6-29 ADC de seguimiento 6.9.5. ADC de pendiente simple A diferencia de los métodos de rampa en escalera y seguimiento, el convertidor de pendiente simple no requiere un DAC. Se utiliza un generador de rampa lineal para generar una tensión de referencia de pendiente constante. En la figura 6-30 se muestra el diagrama del ADC de pendiente simple. Al comienzo del ciclo de conversión, el contador esta en estado RESET y la salida del generador de rampa es 0 V. En esta situación, la entrada analógica es mayor que la tensión de referencia y, por tanto , se produce un nivel ALTO en la salida del comparador. Este nivel alto habilita la señal del reloj para el contador y arranca el generador de rampa Figura 6-30 Diagrama del ADC de pendiente simple 6.9.6 ADC de doble pendiente El funcionamiento del ADC de doble pendiente es similar al de pendiente simple, excepto en que se utiliza una rampa de pendiente variable y otra de pendiente fija. Este tipo de convertidor se utiliza comúnmente en voltímetros digitales y otros tipos de instrumentos de medida. Se utiliza un generador de rampa (integrador), A1, para generar las característica de pendiente doble. En la figura 6-31 se presenta el esquema de un ADC de pendiente doble como referencia. Figura 6-31 Esquema de un ADC de pendiente doble como referencia. 6.10 Un ADC práctico. 6.10.1 En la figura 6-32 se presenta el diagrama de conexión del DAC TSC 7116 de Teledyne Semiconductors, en el que ya están todas sus componentes integradas para hacer la conversión A/D y proporcionar la salida de datos en código de 7 segmentos para operar directamente un display de 3 ½ LEDs, que es muy utilizado en aplicaciones de instrumentos que requieren exhibir datos en un display tales como medidores de RPM, corriente de armadura, medidores de voltaje, es decir cualquier entrada analógica. figura 6-32 Diagrama de conexión del DAC TSC 7116 6.10.2 El ADC 0804 es un ejemplo de A/D por aproximaciones sucesivas. En la Figura 6-32 se presenta el diagrama a bloques este dispositivo funciona con una alimentación de +5 V y tiene una resolución de 8 bits, con un tiempo de conversión de 100 uS también garantiza la característica de monotonicidad y dispone de un generador de reloj interno. La salida de datos triestado sirven para realizar las comunicaciones internas con el sistema de buses de un microprocesador. Figura 6-32 Convertidor analógico digital ADC0804 6-10.3 El ADC 0809 Este convertidor es un dispositivo monolítico de tecnología CMOS con un multiplexor de 8 canales, un convertidor A/D de 8 bits y un control lógico compatible con microprocesador. El multiplexor de 8 canales se controla por medio de un decodificador de direcciones de 3 bits para poder seleccionar cualquiera de los 8 canales de manera individual conectando de manera directa al convertidor A/D el canal deseado. Este tipo de convertidor se caracteriza por poseer un divisor de voltaje de 256 R con un bloque de conmutadores analógicos y un registro de aproximaciones sucesivas. La versatilidad de este dispositivo hace que se elimine la necesidad de utilizar arreglos de circuitos para ajustar el cero externo y la escala completa. Ofrece alta velocidad, alta precisión, dependencia mínima a los cambios de temperatura así como un mínimo consumo de potencia. El encapsulado es tipo DIP y tiene 28 pines que se describen en la siguiente figura 6-33 Figura 6-33 Descripción de pines del ADC0809 En la figura 6-34 se muestra en diagrama como se pude conectar el ADC 0809 a un microprocesador a través de una Interfase Periférica Programable PPI (por sus siglas en ingles), de Intel 8255 . Figura 6-34 Diagrama de conexión del adc0809 a un bus de PC Descripción del circuito El circuito consta de un Tranceptor de bus de 8 canales el 74LS245, el cual se usa como buffer para el PPI 8255, el que a su ves se usa como interfase y proporciona una salida multiplexada de 3 puertos de I/O entre el bus de de la PC y el Convertidor ADC 0809. El circuito 74lS138 se utiliza como decodificador de direcciones. El ADC se conecta al puerto A del PPI y sus señales de control al puerto C. En la siguiente unidad VII se da un ejemplo de cómo puede ser el programa para la operación de una tarjeta de conversión A/D diseñada y construida en base a este diagrama. 6.11 Diseño de un ADC con microcontroladores. El termino Microcontrolador se usa para describir un sistema encapsulado en un chip de silicón que incluye un mínimo de partes para su funcionamiento autónomo. Como pueden ser , la unidad de procesamiento central CPU, la unidad de control CU, memoria de programa, memoria de datos, y puertos de entrada/salida I/O. algunos microcontroladores incluyen en forma adicional componentes tales como atemorizadores, contadores, convertidores analógico/digitales . En esta sección vamos a considerar los microcontroladores que incluyen convertidores A/D. 6.11.1 Arquitectura de microcontroladores. Básicamente, existen dos tipos de arquitecturas en microcontroladores( referencia bibliografica microcontroladores PIC): Arquitectura de Von Neumann y Arquitectura Hardvard. La arquitectura de de Von Neumann se caracteriza porque la CPU se conecta con una memoria única, donde existen datos e instrucciones, se comunica a través de un sistema de buses ver figura 6-35. Figura 6-35 Esquema de la arquitectura de << Von Neuman >> En la arquitectura Harvard son independientes la memoria de instrucciones y la memoria de datos y cada una dispone de su propio sistema de buses ver figura 6-36. Esta dualidad además de propiciar el paralelismo, permite la adecuación del tamaño de las palabras y los buses a los requerimientos específicos de las instrucciones y de los datos. También la capacidad de cada memoria puede ser diferente. Actualmente se alcanza un alto rendimiento y elevada velocidad, en los actuales procesadores debido a la conjunción de tres tecnicas : Arquitectura Harvard. Arquitectura RISC, y Segmentación o pipe line. Los microcontroladores PIC son un buen ejemplo de estos procesadores. Figura 6-36 Esquema de la arquitectura << Hardvard >> 6.11.3 Microcontroladores PIC. En el mercado existen varios tipos de microcontroladores y con características diferentes que dependen principalmente de los fabricantes como son entre otros: Motorola, Intel, Nacional, Texas Instruyen, Microchip. Las familias de microcontroladores PIC es desarrollada por Microchip Technology Inc. ( http://www.microchip.com)Y tiene ventas de estas familias de PIC del orden de 120 millones de dispositivos al año. Entre todos estos fabricantes es muy difícil escoger el “mejor” microcontrolador. En realidad no existe, porque en cada aplicación son sus características especificas las que determinan el más conveniente. La popularidad de los PICs se debe entre otras razones a su sencillez de manejo, buena información disponible, precio, buen promedio de parámetros entre otros, velocidad, consumo de potencia, alimentación código compacto, etc. Así como herramientas de desarrollo fáciles y baratas además de permitir un diseño rápido. Básicamente todos los PICs ofrecen las siguientes características Conjunto con alrededor de 35 de instrucciones RISC. Puertos digitales I/O Circuito de reloj Temporizadores Perro guardián (watchdog) Sistema de protección ante fallos de la alimentación. Estado de reposo. Reinicio (Reset) Modos de dirección, directo indirecto y relativo. Interfase para reloj externa Memoria de datos RAM Memoria de programa EPROM Canales de entrada analógica Comparadores analógicos Microchip dispone de cuatro familias de microcontroladores PIC. Familia pequeña PIC12C(F)XXX Son de bajo costo, La letra C designa memoria de programa EPROM, La letra F designa memoria de programa tipo FLASH, encapsulado de 8 pines, trabajan a 2.5 a 5 V y 4 MHz. Tienen un repertorio de 32 a 35 instrucciones. En la figura 6-37 se muestra un diagrama de este PIC. Figura 6-37 digrama de conexiones de los PIC12CXXX Y en la figura 6-38 Una tabla con las principales características de esta familia Figura 6-38 Una tabla con las principales características de la familia PIC12CXXX Familia baja o Básica PIC16C(F)XXX. Es una familia de bajo costo pero con prestaciones limitadas, en encapsulado con 18 a 28 pines. En la figura 2.4 FED se muestra un PIC ejemplo de esta familia Figura 6-37 Diagrama de conexiones de los PIC16CXXX Figura 6-39 Tabla con las principales características de la familia PIC16CXXX Familia media PIC16C8F9XXX Es la familia más variada y completa de PICs. Abarca modelos con 18 hasta 64 pines, esta el más popular de los PIC el 16C(F)84 En la figura 6-40 se muestra el diagrama del PIC16C74 Figura 6-40 Esquema del PIC16C74 En la figura 6-41 se Muestra una tabla con las principales características de la familia media. Figura 6-41 Tabla con las principales características de la familia PIC16CXXX Familia alta PIC17CXXX Se alcanzan las 58 instrucciones, y quizás la característica más destaca es la posibilidad de ampliar el microcontrolador con elementos externos, pues este microcontrolador saca por sus pines las líneas de los buses de datos, direcciones y control, a las que se conectan memorias o controladores de periféricos. Figura 6-42 se Muestra una tabla con las principales características de la familia alta Figura 6-42 Tabla con las principales características de la familia PIC17Cxxx. 6.11.4 Herramientas para el desarrollo de proyectos. El desarrollo de proyectos con PIC requiere de varias herramientas que dependen del tipo de aplicación y microcontrolador a usar. En general las siguientes herramientas son apropiadas: Un lenguaje ensamblador o un lenguaje de alto nivel específicos Un dispositivo programador de PIC, existen muchos en el mercado uno de ellos vende directamente la empresa Microchip (www.microchip.com) que es económico y muy completo en lo que a información se refiere. Un borrador de EPROM Una PC para el desarrollo de los programas, La velocidad del CPU no es importante para su empleo en este propósito Una tablilla para conexiones Y dependiendo de la aplicación, resistores, capacitares, LEDs, displays, y otros componentes. Si bien es cierto, usar lenguaje ensamblador para la programación de PICs, representa un considerable ahorro de código en la confección de los programas, lo que es muy importante dada la estricta limitación de la capacidad de la memoria de instrucciones. Y que los programas bien realizados en lenguaje ensamblador optimizan el tamaño de la memoria que ocupan y su ejecución es muy rápida. Pero su principal desventaja es que cada microcontrolador tiene su propio ensamblador y hacer programas en este lenguaje es muy complejo y frecuentemente difícil de darles mantenimiento. Existen en el mercado Lenguajes de alto nivel desarrollados específicamente para la programación de las familias de PICs. En esta sección se usara uno de los compiladores en C desarrollados para este propósito, el compilador conocido como FED C; desarrollado por Forest Electronic Developments (www.fored.co.uk y con e-mail: [email protected]). Compilador FED C Algunas de las razones para escoger este compilador son El compilador FED C es dedicado y muy eficiente para desarrollar programas de todas las series PIC 16XXX y 12XXX. Editor integrado con ayudas para corregir sintaxis. Incluye un simulador. Un gran numero de funciones de librería. Soporta aritmética de punto flotante. Disponibilidad de un gran numero de funciones matemáticas. Soporte directo para LCD. Información y tutórales muy completos en la pagina web. Y sobre todo está fácilmente disponible y a bajo costo. El ciclo de desarrollo de programas para PICs es relativamente sencillo. Los programas se editan con una PC. El código puede ser simulado y corregido antes de ser cargado en la memoria del PIC que dependerá del tipo de memoria, ya sea Flash o EPROM, que tenga el microcontrolador a usar. Las variables, instrucciones, etc. se usan en forma similar a los lenguajes de programación tradicionales como Turbo C o Microsoft C. Se recomienda estudiar detalladamente el tutorial Learn to Use C Whit the Forest Electronic Developments PIC C Compiler que se puede obtener en forma gratuita en la dirección http://www.fored.co.uk Estructura de un programa basado en el compilador FED C para microcontroladores. La estructura de un programa desarrollado con este compilador es básicamente la misma estructura de un programa C estándar, con algunos cambios menores. La estructura típica para el programa de un microcontrolador PIC se muestra a continuación. /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PROYECTO: Darle nombré al proyecto * ARCHIVO: Darle nombre al archivo con la extensión .C * FECHA: Indicar la fecha * PROCESADOR: Indicar el tipo de PIC a usar * COMPILADOR: Compilador a usar * * * Describir lo que el programa hace … * * **************************************************** #include <P16f84.h> #include………….. int i , j , ………. char x, ….. void func( ) { // comentarios …… ………………… …………………. } void main ( ) { // comentarios…. ……………… …………….. …………….. } // incluir enunciados // variables globales // uso de funciones // programa principal Ejemplo 6 - 11 Escribir un programa con FED C que prenda y apague un LED conectado al bit 0 del puerto B de un PIC16F84 . Deberá mantenerse un segundo en cada estado de salida. Solucion. El diagrama del circuito para este ejemplo se muestra en la figura 6-43. El reloj se genera usando un cristal de 4Mhz. Un LED se conecta al bit 0 del puerto B a través de una resistencia de 470 ohm, como limitadora de corriente. Figura 6-43 Diagrama para el ejemplo 6-11 Los pines del puerto B se configuran como salida con la instrucción TRIB 0 0.Un loop sin final es formada con el enunciado de control while y el LED es apagado y encendido dentro de este loop . El enunciado de espera wait se usa para generar un tiempo de espera de un segundo entre cada salida. El listado del programa se muestra a continuación: /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PROYECTO: Proyecto 1 * ARCHIVO: proye1.C * FECHA: enero 2003 * PROCESADOR: PIC16F84 * COMPILADOR: FED C * * * Este programa enciende (ON) y apaga (OFF) un LED conectado al bit 0 del puerto B del microcontrolador. Un retrazo de 1 S es insertado entre cada salida. * * **************************************************** #include <P16f84.h> #include <delays.h>………….. void main ( ) { TRISB=0; while(1) { PB.B0=0 ; Wait(1000) ; PB.B0=1; Wait(1000) ; } } // programa principal //pone los pines del puerto B como salida // loop sin fin // pone el bit 0 del puerto B OFF //retrazo de 1000 mS // pone el bit 0 del puerto B ON // retrazo 1000 mS Los microcontroladores tipo PIC pueden ser directamente conectados a través de sus puertos de salida ya sea con una PC ó con algún display LCD según se requiera; ya sea almacenar los datos adquiridos para su posterior análisis y procesamiento, y/o exhibir el resultado directamente en un display LCD. Para este propósito se puede usar un diseño basado en el siguiente diagrama de bloques, en el que se muestra un sistema para la medición de temperatura con termopar tipo K . Figura 6- 44 diagrama de bloques, en el medición de temperatura con termopar tipo K . que se muestra un sistema para la Los display LCD son muy empleados en los proyectos con PICs para exhibir inmediatamente los resultados obtenidos por el microcontrolador en el ejemplo 6-12. Siguente se ilustra como se puede hacer una interface simple entre el PIC y el display LCD Ejemplo 6 -12 Asumir que se usará un PIC 16F84 como base de un proyecto, y que se desea enviar mensajes tipo texto a un display marca HITACHI modelo HD44780 tipo LCD. Conectar el display al puerto B del microcontrolador y desarrollar un programa en C para enviar el mensaje “PIC LCD” a la línea 1 del LCD. Solución. El diagrama del circuito para este proyecto se muestra en la figura 6-46, el LCD se conecta al PIC de acuerdo con su configuración que se muestra en la tabla de la figura 6-45. El reloj se proporciona con un cristal de cuarzo de 4 MHz . Un potenciometro de 20 k se usa para ajustar el contraste en el LCD. Figura 6-45 Tabla de configuración del modulo LCD HD44780 Figura 6-48 Diagrama eléctrico para el ejemplo 6-12 En la siguiente descripción del programa (DDP), se describe la s funciones que se realizaran BEGIN Inicializa LCD Limpia LCD pone cursor en posición home Se envia el texto “PIC LCD” al LCD END Listado del programa para el ejemplo 6-12, elaborado con el compilador FED C /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PROYECTO: Proyecto 2 * ARCHIVO: proye2.C * FECHA: enero 2003 * PROCESADOR: PIC16F84 * COMPILADOR: FED C * * * Este programa envía el mensaje de texto “PIC LCD” a la linea 1 de un display *LCD conectado al puerto B de un PIC16F84. * * ************************************************* #include <P16f84.h> #include <displays.h>………….. const int LCDPORT=&PORTB; void main ( ) { LCD(-1) ; LCD(257) ; LCDString (*PIC LCD*) ; while(1) { } //define el puerto B como puerto LCD // programa principal //Inicializa LCD en línea 1 //Limpia cursor y lo manda a home //Envia texto a LCD // loop sin fin, espera por siempre } El encabezado “P16F84.h” define los registros y puertos del PIC16F84 . El encabezado “displays.h”define los parámetros para la configuración del LCD. El programa define que el LCD esta conectado al puerto B del micro. El LCD es inicializado, limpiado el display y el cursor posiciónado en home en la línea 1. El mensaje de texto “PIC LCD” es enviado al LCD usndo el comando LCDString. Finalmente, un loop sin fin hace que el programa espere permanentemente. EJEMPLO 6 – 12 PROYECTO Como una muestra de la potencialidad y comodidad de uso del compilador FED C se presenta el siguiente proyecto: Diseñar un sistema completo para medir temperatura usando un termistor como sensor . Hacer los cálculos para determinar la temperatura en ° Celsius y presentar los resultados en un display LCD cada 1 segundo. Especificaciones para el sistema Temperatura de medición Error de auto calentamiento Tipo de display Formato del display Frecuencia de lectura en el Display Sistema Diseño del sistema 0° C a +100° C menor que 0.5° C LCD “nn.m C” 1 lectura cada segundo Basado en Microcontrolador Existen en el mercado muchos termistores que puden ser seleccionados que satisfacen las especificaciones. El termistor que se determino para este diseño es el KED103BY, fabricado por Bbowthorpe thermistors. Este dispositivo es tipo miniatura y tiene las siguientes características R25° = 10 K B = 4400 dTH = 9 mW /°C Figura 6-49 grafica temperatura – resistencia para el termistor KED103BY Se asume que se usa una fuente constante de voltaje para el circuito del termistor. De la grafica de relación temperatura – resistencia de este termistor se obtiene A 0° C la resistencia de RT = 40 K A 100° C La RT = 500 ohm Disipación por autocalentamiento Si se asume que un máximo de 100uA circulan por el termistor, la máxima potencia de disipación dentro del rango de operación será: P = I2R esto es P = (100 x 10-6 )2 x 40 x 103 = 0.4 mW Con una constante de disipación de 9 mW / °C, el máximo autocalentamiento estará alrededor de 0.4/9 = 0.04 °C que esta dentro de lo que se pide en las especificaciones. A =°C el votaje a través del termistor es: 100 x 10-6 x 40 x 103 = 4V entonces el valor de RS = ( 5 – 4) / (100 x 10-6) = 10K a 100 °C, RT = 500 ohm y asumiendo una fuente constante de voltaje de +5, el voltaje a traves del termistor es: VT = VS ( RT / ( RS + RT) ) voltaje a través del termistor. esto es, VT = 5 ( (0.5 / (0.5 +40) ) = 0.0617 que es el mínimo Si se usa un convertidor A / D de 8 bit con una fuente de 5 V entonces un 1 mbs = 5000 / 256 = 19.6mV. que supera fácilmente el voltaje mínimo requerido por el termistor. Diagrama del circuito propuesto: El diagrama a bloque del circuito propuesto para este proyecto se muestra en la figura 6-50 . Se usara un microcontrolador PIC 16f877. Figura 6-50 Diagrama a bloques de un medidor de temperatura con termistor 5.11 FED En la figura 6.50 se muestra el diagrama completo del circuito. El termistor se conecta a una fuente de voltaje constante y su salida directamente a la entrada AN 0 del PIC. Al puerto B se conecta e l LCD en el que se mostrara la temperatura cada segundo en °C Figura 6-51 Diagrama eléctrico de un medidor de temperatura con termistor Descripción de la operación del circuito El voltaje a través del termistor es convertido a código digital y la resistencia del termistor (RT)| en función de de VT y VS es: RT = (VT x RS) / (VS – VT) donde VT es el voltaje a través del termistor , VS = 5 V, y RS = 10K. Entonces: RT = (104 x VT) / (5 – VT) ohm La temperatura del termistor en función de B es: TT = 1 / (1/B Ln(RT/R25) +1/T25 Donde TT es la temperatura medida en (°K), RT es la resistencia del termistor (ohm), B = 4400, T25 = 298.15 °K, y R25 es 10 K. Entonces: TT = 1 / (1/4400 Ln(RT/10 000) + 1/298.15) esta temperatura expresada en °C es : TT = 1 /(2.272 x 10-4)Ln(0.0001RT) + 3.354 x10-3 ) – 273.15 Esta ecuación se pude usar para calcular TT, puesto que RT esta determinada en función de VT. En la siguiente DDP se describe la operación del programa: BEGIN Inicializa el LCD Inicializa el microcontrolador DO FOREVER READ el voltaje del termistor y convierte a código digital Calcula la resistencia RT Calcula la temperatura TT Muestra la temperatura en °C en LCD Espera por 1 segundo ENDDO END Listado del programa El listado completo del programa se muestra en seguida. Se usan las variables de punto flotante tv y tr para el voltaje del termistor y su resistencia respectivamente. Después de inicializar el LCD y el microcontrolador, para que en todo momento se lleve a cabo la converción A/D para la medición de la temperatura se forma un LOOP sin fin. El convertidor es de 10 bit . Los 2 bit superiores de la conversión son almacenados en el PIC en el registro ADRESH. Los restantes 8 bit en el registro ADRESHLL. El voltaje del termistor tv se calcula multiplicando ADRESHH por 256 y sumándole ADRESHL. El voltaje se convertido a milivolts multiplicandolo por el factor de escala 5000/1054 ( 5000 mV a escala completa en 10 bit). La resistencia del termistor trse calcula con la ecuación anteriormente definida para RT. Finalmente la temperatura medida se calcula usando la ecuación también definida anteriormente para TT almacenando el resultado en la variable temp que es de punto flotante. Esta variable se configura con dos y un dígitos para antes y después del punto decimal (nn.m) y se convierte a una cadena callada temperatura. El carácter “C” es adicionado al final de la cadena, mostrándose en el LCD el resultado final obtenido de temperatura cada segundo. Listado completo para el medidor de temperatura con termistor /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * PROYECTO: Proyecto 3 * ARCHIVO: proye3.C * FECHA: enero 2003 * PROCESADOR: PIC16F877 * COMPILADOR: FED C * * * En este proyecto se mide la temperatura con un termistor y se muestra en un LCD cada * segundo con el formato “nn . m C”. * * ************************************************* #include <P16f877.h> #include <displays.h> #include <delays.h> #include <strings.h> #include <maths.h> const int LCDPORT=&PORTB; const float LSB = 5000/1024; //define el puerto B como puerto LCD // LSB en mV void main ( ) { float tv, tr, temp, y; int msd, lsd; char temperatura[6]; /* Inicializando el LCD // programa principal LCD(-1) ; LCD(257) ; /* */ //Inicializa LCD en línea 1 //Limpia cursor y lo manda a home Inicializando el microcontrolador */ ADCON1 = 0x80 ; ADCON0 = 0 ; ADCON0 = 0x41 ; while(1) //pone los 6 bMs a cero // se selecciona a AN0 como entrada //habilita el oscilador del A/D //DO FOREVER { /* Inicia la conversión A/D */ ADCON0 = 0x45 ; // inicia la conversión A/D while(ADCON0 & 1 == 0) ; // espera la conversión tv = 256*ADRESH + ADRESHL ; // Captura el voltaje del termistor tv=tv*LSB ; // escala del voltaje del termistor /* Calculo de la resistencia del termistor tr */ tr = 5.0*tv*10000.0/(5.0-tv) ; /* calculo de la temperatura temp */ y = log (0.0001*tr) ; y = 3.354*1e-3+y*2.272*1e-4 ; temp = 1.0/y ; /* Formato para el display LCD */ LCD(257) ; //Limpia LCD y pone cursor en “home” msd=temp ; //digito msd lsd=10.0*(temp-lsd) ; // digito lsd iPrtSring(temperatura,msd) ; //msd /* Inserta “.” , digito lsd, y el character “C” */ temperatura[2] = ‘.’ ; cPrtString(temperatura+3) ; temperatura[4] = ‘ ’ ; temperatura[5] = ‘C’ ; /* Muestra la temperatura como “nn.m C” */ LCDString(temperatura) ; /* Una segunda espera de un segundo */ wait(1000) ; } //ENDDO } Ejercicios 1.- Explicar las diferencias entre un microprocesador y un microcontrolador 2.-explique la diferencia entre memoria EPROM y memoria Flash EEPROM . Que memoria recomienda para almacenar datos no-volatiles 3.-Escriba un programa en C para un microcontrolador PIC 16F84 que lea el bit 2 del puerto By envie este dato a un led conetado en el bit 0 del mismo puerto. 4.- ( LEDs se conectan al puerto B del microcontrolador PIC16F84, con sus resistencias limitadoras apropiadas. Escriba un programa que cuente en binario desde 0 a 255 y que la cuenta se muestre en los LEDs. Inserte un retraso de 500ms entre cada cuenta de salida. 5.-Un display de cristal liquido LCD modelo HD44780 de Hitachi tipo conección paralelo se conecta a un microcontrolador PIC16F84. Escriba un programa que cuente de 0 a 255 y que envie la cuenta al display LCD. Incerte un retrazo de 800ms entre cada cuenta. 6.- Lleve a cabo el proyecto presentado en el ejemplo 6 -12 para medir temperatura con un sensor de thermistor, Microcontrolador PIC16f84 y el display LCD. BIBLIOGRAFIA 1.-MICROCONTROLLER BASED TEMPERATURE MONITORING AND CONTROL Dogan Ibrain Editorial Newnes 2002 2.- ANALOG AND DIGITAL CONTROL SYSTEMS Gayakwod, Ramakant editorial Prentice Hall 1988 2.- BASIC OPERATIONAL AMPLIFIERS AN LINEAR INTEGRATED CIRCUITS Floyd, Thomas L. Editorial Merrill – Mc Millan 1994 3 DATA ADQUISITION AND PROCESS CONTROL WITH THE M68HC.11 Driscoll, Frederick F.editorial Merrill Mc Millan 1994