About This Blog

Este es un blog dedicado al módulo de "Desarrollo y Construcción de Prototipos Electrónicos", el cual pertenece al segundo año del ciclo "Desarrollo de productos electrónicos", en el que se irá colgando cualquier tema que sea abordado en dicho ciclo.

Conversor digital analógico (DAC) I2C

Posted by Diego Lavín 13:11, under | 1 comment

La finalidad de este ejercicio es, usando el protocolo I2C, comunicar un pic 18F4550 con el conversor PCF8591 para así poder realizar una conversión digital- analógica.



Lo primero que debemos tener en cuenta para la realización del ejercicio es como tenemos que configurar el componente para que realice la comunicación I2C correctamente.
Como siempre nos vamos a guiar del datasheet del PCF8591. Cuando sepamos como configurarlo para que realice la comunicación I2C es hora de diseñar y montar el circuito en cuestión.





Colocamos el pic que vamos a utilizar, en este caso el 18F4550, el conversor (PCF8591), y un lcd para poder observar la tensión que hay en cada momento.

El código que hemos utilizado es el siguiente:


////////////////////////////////////////////////////////////////////////////////////
//   AUTOR: Diego Lavín Fernández                                               
////////////////////////////////////////////////////////////////////////////////////
//   PROGRAMA:       Conversor Digital-Analógico                                 
//   DISPOSITIVO:    PIC18F4550               COMPILADOR:  CCS 4.                
//   Entorno IDE:                              SIMULADOR:  Proteus 7.7 sp2       
//   TARJETA DE APLICACIÓN:                    DEBUGGER:                         
////////////////////////////////////////////////////////////////////////////////////
//Comunicación entre PIC 18F4550 y PCF8591  mediante protocolo I2C                  
////////////////////////////////////////////////////////////////////////////////////
//   CABECERA //////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////////
#include <18F4550.h>                     //librería pic
#fuses INTHS
#use delay(internal=8mhz,RESTART_WDT)
#use i2c(Master,sda=PIN_B0,scl=PIN_B1,restart_wdt)
#include                            //librería lcd
///////////////////////////////////////////////////////////////////////////////
// VARIABLES GLOBALES /////////////////////////////////////////////////////////
int tension=0;
float a;
///////////////////////////////////////////////////////////////////////////////
// FUNCIONES //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
// PRINCIPAL //////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////////
void main()
{
   lcd_init();
   lcd_putc('\f');
   lcd_gotoxy(1,1);
          
   i2c_start();            
   delay_ms(20);           
   i2c_write(0b10010000);   // direcciono para escritura
   delay_ms(20);           
   i2c_write(0b01000000);   // Configuro en modo conversor digital-analógico
   delay_ms(20);          
   do
   {
      if((input(pin_a0)==1)&&(tension<400))     //si pulso aumentar y es menor que 500
      {
          i2c_write(tension);               
          tension++;                           // Incremento la variable
          delay_ms(20);                       
      }
  
      lcd_gotoxy(1,1);                   
      a=tension*0.01945098;              //convierto en tensión
      printf(lcd_putc,"V=%2.3lfV",a);   
   }
   while(1);                          
}


Una vez hecho el código lo compilamos para asegurarnos que no existe ningún error y lo insertamos en el pic. Si todo ha ido bien el conversor estará funcionando como en la imagen que se muestra a continuación:

Ahora podemos crear el layout con el Ares y ver como quedaría en 3d.
Puede ser que al abrir el Ares nos de problemas con los packages de los componentes, esto se debe a que en proteus debemos indicar en propiedades el tipo de encapsulado que queremos.

1 comentarios:

The PCA9691 and PCF8591 are capable of converting four different analog voltages to digital values for transmission on an I2C-bus of for processing by a microcontroller. This board features innovations that set it apart from other digital-to-analog converter module.

Conversor Digital

Publicar un comentario