有时,根据微控制器的产品需求运用旋转开关。因为许多微控制器都内置了ADC,在找不到旋转开关或旋转开关价格过高时,能够运用低成本电位计来代替旋转开关(图1)。
虽然仅需履行少数指令即可将电位计设定值数字化,使其体现得像开关相同,但一个急需解决的问题是,在电气噪声或机械噪声的影响下,在某一个值和下一个值之间的切换阈值处,数值会不稳定。该问题的解决办法是为每次转化引进上、下两个迟滞阈值,这样一来,电位计就需求在另一个开关状况有用前跳过阈值。针对每次更新的开关状况,都会有新的一对阈值替换之前的阈值。如此,迟滞效应能够完成各状况间的彻底切换。
图1:代替多掷开关。
这一办法具有下述许多优势:单端口引脚对旋转开关的多端口引脚、成本低、更易取得且可完成去颤动切换。该办法的不足之处在于会失掉制动感。设定点的另一特性是其可设置在任一方位,例如用以补偿电位计在呼应过程中呈现的非线性改动。
迟滞一般稍高于会导致不希望切换的任何噪声。主张在电位计触点与地之间设置一个%&&&&&%器,以滤除触点噪声(图1)。
图2列出了算法。一旦用ADC对电位计设定值进行了数字化操作,该数值就将与下阈值比较,若低于下阈值,开关状况会逐步下降并约束至零。若电位计设定值高于上阈值,开关状况会逐步增大并约束至最大值。若开关状况发生改动,则上、下阈值会进行更新,并停止子程序。
图2:流程图。
为保证该迟滞算法起作用,有必要定时读取电位计设定值,并与上一次开关状况进行比较。这样做旨在将从不同状况跨过阈值或处于相同值的电位计设定值与相同状况区分隔。
此处还需求核算出采样率的最小值,可由电位计旋转率最大值除以开关状况数得到。例如,假定单匝电位计旋钮在0.25s内完好旋转一圈,一起假定有七种状况,那么最低扫描率为28Hz。若电位计数值采样周期低于最小值,即便切换方向正确,核算得出的开关状况也或许不正确。假使未以较快的速率继续改动电位计设定值,则随后的采样会对切换状况进行校对。