True!
True!
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
I changed the code to reset V_total variable at the start of the V_read routine. I am not able to test until I get home. But i was under the assumption that if I did not reset V_Total it would then the last value would be reused in the next readings average.
Also when implementing the low-pass filter on the voltage in what values do you think would work for the resistor and capacitor??
What is a good cut-off frequency??
![]()
Thanks again for all the help.
"Reality is merely an illusion, albeit a very persistent one." , Albert Einstein
as-is: It really depend of the source....
assuming you want to use an opamp in between: it's a totally different thing.
You already use some averaging thing, Try the code modification, I'm pretty confident it will solve the problem.
You could also use the ADC in 8 bit mode instead of 10...
Anyways, have a look at this document
http://ww1.microchip.com/downloads/e...Doc/adn007.pdf
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
My guess is that if you clear V_total, you won't need anything else.
Consider:
If the A/D returns a value of 410
1st time through the loop
V_Total = 200
Second time through the loop
V_Total = 202
Third time through the loop
V_Total = 204
....
And it goes through those loops pretty fast. I can see how the results would look inconsistent
Charles Linquist
fwiw I've come to the conclusion that using the picbasic 'ADCIN' command = much badness (unstable ADC readings for me at least)
Nowadays, if I've a spare CCP module going free, I always use the PIC's special event trigger - it's a very tidy effiicient way of collecting ADC samples in the background - Once it's setup (it's not hard to do this), whenever you want a sample - it's already therefore you ...just go and grab the contents of ADRESH. Job done, eg...
Code:v_in = ADRESH 'now go do cool stuff with v_in
The 16f675 has a special event trigger option ...it uses CCP4 for it, so...if you're not intending utilising CCP4, then seriously consider dedicating it to the special event trigger....
Last edited by HankMcSpank; - 25th September 2011 at 00:50.
Add one line and most of your problems will go away.
Code:fans_off: low low_fan low high_fan return read_v: V_Total = 0 <-------------------------------------------------------------- for i = 1 to sample_size pauseus 50 ADCIN 3, v_in ' Read channel 3 to V_in (0-1023) V_Total = (V_In + V_total) next i V_total = V_total/sample
Charles Linquist
mister-e: Thanks for the document on reducing system noise. I dont know how I missed that one.
Charles Linquist: Thanks for pointing out reseting the V_Total variable. My brain sometimes gives me flawed logic...
HankMcSpank: I orginally tried to use the ADC directly using ADRESH. For some reason I could not get it to work. Once I get back home I will mess with it again. It seemed like a better approach.
Thanks again everyone, and I will be testing this again today on the car, so I will post the results when finished.
"Reality is merely an illusion, albeit a very persistent one." , Albert Einstein
Bookmarks