DAC Virtual para MCU

Este circuito muy simple se trata de un sesudo DAC virtual el cual podría haber estado desarrollado a parir de una escalera R2R pero en este caso se ha utilizado un sumador de pesos ponderados, dándole un valor ponderado múltiplo de 2 a cada resistencia, el valor mínimo y máximo de cada resistencia sera en función de la corriente de salida del puerto del MCU, habrá que calcular el valor mínimo de la resistencia para no sobre cargar la corriente máxima de salida, en este caso se utiliza una resistencia de 220ohms.
El código fuente fue desarrollado a modo ejemplo para crear una señal "senoidal" con una resolución de 1024 pasos.
El circuito y firmware es a modo ejemplo, ya que se puede mejorar ampliamente con amplificadores operacionales, etc... es solo para mostrar el funcionamiento.


 

#include<16f628a.h>
#FUSES NOWDT,INTRC_IO,NOPUT,NOPROTECT,NOBROWNOUT,NOMCLR,NOLVP,NOCPD
#use delay(int=4000000)
void main()
{
int8 i;
   while(true){
      for(i=0;i<128;i++){
         output_b(i);
         delay_us(100);
      } 
      for(i=128;i>0;i--){
         output_b(i);
         delay_us(100);
      } 
   }
}

No hay comentarios.:

Publicar un comentario