Instrumento de medición para fuentes


Este proyecto se trata de un medidor destinado a utilizarse en fuentes de alimentación, ya que es el uso mas frecuente, pero se podría usar simplemente como multímetro externo.
Es un medidor que nos proporciona el valor de Tensión, Corriente y Potencia de una carga para tensión continua.
Los parámetros eléctricos para los cuales fue diseñado este dispositivo son de 0 a 30Vdc y de 0 a 3Adc, lo cual nos sera de utilidad para casi cualquier proyecto de laboratorio de electrónica.
El dispositivo posee como corazón un microcontrolador PIC16F883, pero podría cambiarse por algún otro microcontrolador con el mismo pinout.
En nuestro desarrollo utilizamos dos canales ADC a 10bit de resolución, uno para la medición de tensión y otro para la medición de corriente, donde luego se realiza el producto de ambos para obtener la potencia.
En el caso de la tensión se ha utilizado un divisor resistivo para garantizar un fondo de escala a 5V en la entrada del ADC cuando la medición sea de 30V en las puntas.
En el caso de la corriente se ha utilizado un amplificador operacional ya que se implementa como shunt una resistencia cerámica de 0.33Ohm 5W, debido a que el fondo de escala (3A) sera la corriente que circula por esta resistencia y la caída en la misma sera de 999mV, se debe amplificar para que este fondo de escala se convierta en 5V.
Esta idea de reducir y amplificar la señal, o bien, re-acondicionar la señal, se utiliza para aprovechar al máximo la resolución del ADC interno del microcontrolador, ya que si solo usáramos de 0 a 1V en el caso del amperímetro, estaríamos desaprovechando 4/5 del ADC y los saltos entre valores serian demasiado grandes.
Como protección de los dos canales ADC, se utiliza un diodo zener de 5V1.
El firmware es sencillo, simplemente debe leer los ADC y luego debe realizar la conversión matemática de compensación del atenuador (en el caso del voltímetro) y del amplificador (en el caso del amperímetro).
Se ha incorporado una función para calcular la media o promedio de mediciones, este proceso aumenta la estabilidad de medición en los dígitos menos significativos.






#include <16F883.h>
#device adc=10
#use delay(int=4000000)
#include <LCD.C>
void main(){
   setup_adc_ports(sAN0|sAN1|VSS_VDD);
   setup_adc(ADC_CLOCK_DIV_2);
   lcd_init();
   int i;
   int16 vecCorr[10], vecVolt[10];
   int16 auxCorr=0, auxVolt=0;
   int16 currentADC, voltajeADC;
   float current, voltaje, power;
   while(TRUE){
      for(i=0;i<10;i++){
         set_adc_channel(0);
         delay_us(200);
         currentADC=read_adc();
         vecCorr[i]=currentADC;
         set_adc_channel(1);
         delay_us(200);
         voltajeADC=read_adc();
         vecVolt[i]=voltajeADC;
      }
      auxCorr=0;
      auxVolt=0;
      for(i=0;i<10;i++){ 
         auxCorr=vecCorr[i]+auxCorr;
         auxVolt=vecVolt[i]+auxVolt;
      } 
      delay_ms(500);
      current=(5.0*(auxCorr/10)/1023.0)/1.6665;
      voltaje=((5.0*(auxVolt/10)/1023.0)/0.151)-(current/10);
      power=voltaje*current;
      lcd_gotoxy(1,1);
      if(voltaje>9.999)
         printf(lcd_putc," %02.2fV %02.3fA ",voltaje,current);
      else
         printf(lcd_putc,"  %02.2fV %02.3fA",voltaje,current);
      lcd_gotoxy(1,2);
      if(power>9.999)
         printf(lcd_putc,"     %02.2fW      ",power);
      else
         printf(lcd_putc,"      %02.2fW     ",power);
   }
}




MICROCONTROLADORES