Está en la página 1de 3

Conversión digital a analógica (DAC) en PIC18f4550

Guevara Wilches, María Fernanda


Ingeniería Biomédica
IB142008B

INTRODUCCION debemos hacer es leer el datasheet.


Para trabajar con el Bus I2C es
Los DAC son usados para recuperar las necesario enviar en Bytes la dirección
señales analógicas a partir del código valida del dispositivo.
digital (reconstrucción de la señal
analógica). Cada valor digital está Esta dirección consta de una parte fija y
relacionado al valor definido en la señal una programable. La parte programable
analógica. [1] se establece de acuerdo a los bits de los
pines A0, A1 y A2 que son las entradas
Cuando los datos están en forma binaria, analógicas, que en este caso no vamos a
el 0 y el 1 pueden ser de varias formas, utilizar y el ultimo bit corresponde a la
tales como la forma TTL donde la lógica lectura o escritura de los datos. Esta
cero puede ser un valor de hasta 0,8 dirección tiene que ser enviada como
voltios y el 1 puede ser una tensión de 2 primer byte después de la condición de
a 5 voltios. Los datos pueden ser arranque del protocolo I2C “i2c_start();“.
convertidos a formato digital definido,
mediante puertas que están diseñadas
para ser activadas o apagadas en
función del valor de la señal entrante.
Los datos en forma binaria digital limpia,
se pueden convertir a una forma
analógica, mediante el uso de un
amplificador sumador. Por ejemplo, un
simple conversor D/A de 4 bits se puede
hacer con un amplificador sumador de 4
entradas. [2] El segundo byte que vamos a enviar al
dispositivo se almacenarán en el registro
de control y es necesario para controlar
MARCO TEORICO el dispositivo.

El conversor PCF8591 de 8-bit trabaja en


modo Analógico/Digital o Digital/
Analógico según sea la configuración.
Para que trabaje Digital/Analógico se
debe programar a través del PIC18f4550,
utilizando el Bus I2C ya que es el medio
por donde adquirimos o enviamos la
dirección, control y datos del dispositivo.
Para programar el pic y controlar el
conversor de manera correcta, lo que
 int analogico=0x00;
 i2c_start();             //Iniciar
comunicacion con el Bus I2C
 delay_ms(20);
 i2c_write(0b10010000);  // Envío
Dirección I2C del PCF8591
 delay_ms(20);
 i2c_write(0b01000000); // Envío
Configuración del PCF8591 para
Conversor. Digital/Analogico
 delay_ms(20);
 do{
 if((input(pin_a0)==1)&&(analogic
o!=0xFF))
 {
 i2c_write(analogico);
 analogico++;
 delay_ms(20);
 }
 
 if((input(pin_a1)==1)&&(analogic
o!=0x00))
 {
 i2c_write(analogico);
 analogico--;
 delay_ms(20);
 }
 }while(true);
}

Diagrama de flujo

Según el esquema anterior el segundo


byte a enviar seria “0100000“, ya que el
primer bit es fijo y la salida será
analógica. El resto de bits los podemos
dejar en 0 puesto que no los vamos a
utilizar. [4]
Código a usar
#include <18F4550.h>
#fuses INTHS
#use
delay(internal=8mhz,RESTART_WDT)
#use
i2c(Master,sda=PIN_B0,scl=PIN_B1,
restart_wdt)//Protocolo I2C https://www.lucidchart.com/invitations/acc
#include <LCD_flexible.c> ept/9eefc5c7-baf9-4e7a-8554-
//Libreria personal del LCD
#use fast_io(a) 625f43d0967a

void main() {
Esquema a usar https://cifpn1sjd2.wordpress.com/2011/02
/22/pcf8591-en-modo-conversor-digital-
analogico-por-i2c/
[4] Comunicación entre un PIC 18f4550 y
un PCF8591 modo Conversor Digital
Analogico por I2C. Recuperado de:
https://jftrujilloa.wordpress.com/2011/03/1
2/comunicacion-entre-un-pic-18f4550-y-
un-pcf8591-modo-conversor-digital-
analogico-por-i2c/
Ya que las entradas analógicas A2 A1 A0
no se utilizan las conectaremos a Vss.
Para comprobar que la tensión cambia
en AOUT colocamos un voltimetro entre
ese punto y Vss. También pondremos un
osciloscopio digital y un diodo LED
protegido con una resistencia. La tensión
de referencia será de 5v. Con esto
podremos comprobar que cuando
escribimos en el conversor varia la
tensión a la salida. [3]

REFERENCIAS
[1] Convertidores Digital a Analógico y
Analógico a Digital. Recuperado de:
http://www.utm.mx/~hugo/metrologia/Met
ro9.pdf
[2] Conversión Digital a Analógica
Recuperado de: http://hyperphysics.phy-
astr.gsu.edu/hbasees/Electronic/dac.html
[3] PCF8591 en modo Conversor Digital
Analogico por I2C. Recuperado de:

También podría gustarte