float float float.. en wat is er mis met integer arithmetic ? maak een sliding window integrator. in machienetaal is dit mechanisme slechts een 10 tal instrcuties en gebruikt het een 20 tal cycli van de processor. plus een tiental byte ram. je merkt niet eens dat het er in zit.
code:
dim arry[8] as word
dim ptr as byte
dim total as word
function get_adc() as byte
ptr = ptr+1
if ptr = 8 then ptr=0
arry[ptr] = adc_result
total=0
dim x
for x = 0 to 7
total = total +arry[x]
next x
total >> 3 ' schuif 'total' 3 bits naar rechts = delen door 8
return lowbyte(total)
end function
zet zelf om in picbasic. bovenstaande de code is 'generic' basic
als je veel rotzooi moet wegfilteren kan je naar 16 gaan ( array 16 maken , de for next ook tot 15 laten lopen en de shift operatie met 4 bits in plaats van 3 bits doen.
analoge ingang affilteren. voedingslijnen naar PIC ook.
en de potmeter via een buffertrap op de A/D hangen. de ingang van een pic heeft geen oneindige impedantie en vormt een belasting voor de potmeter.
je kan eventueel nog een 'foefje' uithalen door de pic voeding iets lager te zetten dan de potmeter voeding : zet een shottky diode naar de pic toe. zo draait die op 4.6 volt en de potmeter kan tot 5 volt gaan.
het probleem is de referentie diode . jouw pic heeft er geen. en aangezien je niet aan de vref kunt... ( ik zou anders die omlaag halen met een halve volt )