|
|
View previous topic :: View next topic |
Author |
Message |
morebudwiser
Joined: 17 Oct 2005 Posts: 26
|
18f4458 adc |
Posted: Wed Jun 18, 2008 3:04 am |
|
|
hi is it possible to measure accurately 1.098 vdc +/- 1mv i have been trying
to read this voltage but when i display it on the lcd the last 2 digits are changing by as much as +/- 30mv. do i need to use an adc with 16bit resolution. i am injecting the dc voltage from a calibrated dc soure straight in to the pic and have decoupled it using 1uf.do i read the adc to quickly cap Code: |
#device ADC=12
#fuses HS, NOWDT, NOPROTECT, BROWNOUT, PUT, NOLVP
#use delay(clock = 20000000)
#include <flex_lcd420.c>
void main()
{
float volts;
int16 adc_value;
setup_adc_ports(AN0_TO_AN4|VSS_VREF); //VREF = 5.00
setup_adc(ADC_CLOCK_DIV_32|ADC_TAD_MUL_20);
do{
adc_value = read_adc();
volts = (float)(adc_value * 5)/4095;
printf(lcd_putc, "%3.3f\n", volts);
printf(LCD_PUTC,"adc %Ld",adc_value);
}while(1);
} |
many thanks Andrew |
|
|
Ttelmah Guest
|
|
Posted: Wed Jun 18, 2008 4:25 am |
|
|
First thing, get rid of 'VSS_VREF'. The supply voltage on the chip, _will_ be varying all the time, by a significant number of mV, as internal processing occurs. You will be 'lucky' to get 1% accuracy using the supply as a Vref.
Add an external 'bandgap' voltage reference, warranted to at least 0.02% accuracy, smooth it well, and ensure the grounding round it and the PIC is good (ground plane). Use a 4.096V ref by choice. The ADC will then read 1mV/step (read up on the design of the PIC ADC, and why the divisor _is_ 4096, not 4095).
Add a small amount of damping anyway, or put the chip to sleep for the actual ADC conversion (otherwise you _will_ pick up noise from the processor).
You then have a good chance of getting a believable 1mV resolution.
Best Wishes |
|
|
morebudwiser
Joined: 17 Oct 2005 Posts: 26
|
|
Posted: Wed Jun 18, 2008 4:34 am |
|
|
thanks |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|