
Originally Posted by
Ioannis
Looking for ideas to eliminate chattering of my relays that are activated depending on the ADvalue that is read from the analog input.
The Analog value is filtered through DT_Analog module (Analog oversampling to 12 bits).
But on the decision point, relays are chattering on/off as the analog value is slow changing.
Code:
gosub getADC
'ADvalue=abs (ADvalue-818)
if ADvalue < upper then
relay.0=1
else
relay.0=0
endif
if ADvalue < mid_upper then
relay.1=1
else
relay.1=0
endif
if ADvalue < mid then
relay.2=1
else
relay.2=0
endif
if ADvalue < mid_lower then
relay.3=1
else
relay.3=0
endif
if ADvalue < lower then
relay.4=1
else
relay.4=0
endif
Any ideas?
Ioannis
how about something like this for virtual hysteresis:
Code:
if ADvalue < upper then
if upperbufferflag=0 then 'add the buffer only once
upper=upper+upperbuffer:upperbufferflag=1
endif
relay.0=1
else
if upperbufferflag=1 then 'subtract the buffer
upper=upper-upperbuffer:upperbufferflag=0
endif
relay.0=0
endif
(typical for each instance)
picster
Bookmarks