Better probes?


 
Bryan, is there any way to make the HM sense the spike and adjust the timing of temp polling so it does not poll during the spike?
 
It can't tell what a spike is. If you read a sample and it is 1016 and you read the next sample and it is 1014 which was the spike? You don't have an average to trust because you could read e.g. 4 samples and they're all noise then you'd throw out your real data. You can't throw out data that's "not like the previous" either because how can the temperature ever change at all then? Anything I think of relies on looking at a large sampling of data in real time to remove outliers, which I can't do. I've also considered moving averages (noise near the end disproportionately disrupts the result).

I did add some test code last week that would not across the PWM "turn on" edge. That reduces noise due to the blower but does nothing for other noise and slows down the overall system so that's why I'm exploring other avenues.
 
It's an interesting problem to solve.

Is the ADC returning obviously spurious results or are they too sneaky to filter out? I.e. would it be possible to make assumptions for the direction of the trend and ignore values coming from the ADC that are "obviously wrong?"

Also, I've never written for ATmega; is it Assembler, C, or some higher language?
 
That's the next approach I was thinking, use similar datapoints to spot a trend and then reject data that is way outside of that trend. Probably easier said than done....
On the other hand, rather than trying to use software to eliminate the bad data perhaps it would be better to try and eliminate the cause of the spikes in the first place? This is noise from the blower/servo? Perhaps those circuits can be isolated somehow to eliminate the interference with the temp circuits?

It's an interesting problem to solve.

Is the ADC returning obviously spurious results or are they too sneaky to filter out? I.e. would it be possible to make assumptions for the direction of the trend and ignore values coming from the ADC that are "obviously wrong?"

Also, I've never written for ATmega; is it Assembler, C, or some higher language?
 

 

Back
Top