Estoy diseñando un voltímetro simple. Estoy usando ADC de 8 bits de PIC16F72 y el compilador Mikro C con una pantalla multiplexada de 7 segmentos. Estoy obteniendo un valor ADC en la pantalla de 7 segmentos, pero su fluctuación continua (por ejemplo, 1670mV fluctúa entre 1660 y 1680mV). He intentado todo en hardware, agregando un límite en ADC y tierra, etc.
Aquí está mi código:
void StabilizeVoltage()
{
unsigned int ADS;
if (flgAC)
{
ADS = ADC_Get_Sample(0);
Voltage_FLOAT =(float)ADS *19.6078431372549;
a= Voltage_FLOAT;
Voltage_INT=a;
//if(63<Voltage_INT && Voltage_INT<78 )
if(Voltage_INT <=1050 )
{
Relay1=0;
Relay2=0;
Relay3=0;
Relay4=0;
}
else if (1050<Voltage_INT && Voltage_INT<=1150)
{
Relay1=1;
Relay2=0;
Relay3=0;
Relay4=0;
}
else if (1150<Voltage_INT && Voltage_INT<=1350)
{
Relay1=1;
Relay3=1;
Relay2=0;
Relay4=0;
}
else if (1350<Voltage_INT && Voltage_INT<=1450)
{
Relay1=1;
Relay3=1;
Relay2=1;
Relay4=0;
}
else if (1450<Voltage_INT )
{
Relay1=1;
Relay3=1;
Relay2=1;
Relay4=1;
}
}
flgAC = 1;
}
void main()
{
InitIO();
ADC_Init();
InitTimer2();
InitDisplay();
while(1)
{
UpdateDisplay();
StabilizeVoltage();
}
}
¿Necesito algún filtro de software?