使用电位计替代旋转开关

发布时间:2014-12-16 10:42    发布者:designapp
关键词: 电位计 , 旋转开关 , ADC , 微控制器

        有时,基于微控制器的产品需要使用旋转开关。由于很多微控制器都内置了ADC,在找不到旋转开关或旋转开关价格过高时,可以使用低成本电位计来替代旋转开关(图1)。
尽管仅需执行少量指令即可将电位计设定值数字化,使其表现得像开关一样,但一个急需解决的问题是,在电气噪声或机械噪声的影响下,在某一个值和下一个值之间的切换阈值处,数值会不稳定。该问题的解决方法是为每次转换引入上、下两个迟滞阈值,这样一来,电位计就需要在另一个开关状态有效前越过阈值。针对每次更新的开关状态,都会有新的一对阈值替换之前的阈值。如此,迟滞效应可以实现各状态间的完全切换。


图1:替代多掷开关。

这一方法具有下述诸多优势:单端口引脚对旋转开关的多端口引脚、成本低、更易获得且可实现去抖动切换。该方法的不足之处在于会失去制动感。设定点的另一特性是其可设置在任一位置,例如用以补偿电位计在响应过程中出现的非线性变化。
迟滞通常稍高于会导致不期望切换的任何噪声。建议在电位计触点与地之间设置一个电容器,以滤除触点噪声(图1)。
图2列出了算法。一旦用ADC对电位计设定值进行了数字化操作,该数值就将与下阈值比较,若低于下阈值,开关状态会逐渐降低并限制至零。若电位计设定值高于上阈值,开关状态会逐渐增大并限制至最大值。若开关状态发生变化,则上、下阈值会进行更新,并终止子程序。


图2:流程图。

为确保该迟滞算法起作用,必须定期读取电位计设定值,并与上一次开关状态进行比较。这样做旨在将从不同状态跨过阈值或处于相同值的电位计设定值与相同状态区分开。
此处还需要计算出采样率的最小值,可由电位计旋转率最大值除以开关状态数得到。例如,假设单匝电位计旋钮在0.25s内完整旋转一圈,同时假定有七种状态,那么最低扫描率为28Hz。若电位计数值采样周期低于最小值,即使切换方向正确,计算得出的开关状态也可能不正确。倘若未以较快的速率持续改变电位计设定值,则随后的采样会对切换状态进行校正。




       
以七种开关状态为例创建一个阈值列表。假设有一个8位ADC。首先,ADC的256步范围被分割为七种开关状态。各开关状态的宽度为ADC范围除以状态数,即:256/7=36.6。对其四舍五入,将各状态的宽度定为36,但是两个外端状态需增加至38,以使总宽度为256。
下一步是确定各开关状态的边界。对于状态0,边界为0~37(包含两端)。状态1从38开始到73结束,其余开关状态依此类推。根据增加或降低至边界的迟滞数值确定阈值。此处使用“4”这一迟滞值。迟滞量既不得大于宽度,也不得低于预期的噪声。因此,上边界加4即可得出上阈值,下边界减4即可得出下阈值,如表1所示。从该例可发现,从状态2切换为状态1需要使电位计数值下降至比切换点数值74小4,因此下阈值为70。相反,从状态1切换为状态2需要使电位计数值上升至比切换点数值73高4,因此上限阈值为77。用于程序代码的表格仅需标明上、下阈值,在此例中仅需14个字节。


表1,阈值。


代码示例(见下)支持Silicon Labs的C8051F310(8051架构),但也可以很容易地改编用于其他微控制器。
OT2SW INITIALIZATION
                MOV UPRVAL, #00H        ;set upper value to opposite end to force the code to run
                MOV LWRVAL, #0FFH        ;set lower value to opposite end to force the code to run
                MOV SWPOS, #03H        ;initialize switch position to middle
                MOV POSMAX, #06H        ;set maximum switch position value
;SUBROUTINES
POT2SW:        ;CALCULATE SWITCH POSITION VALUE FROM POTENTIOMETER VALUE IN ACC
                                ;check if pot setting is below lower threshold
                CLR C               
       
                MOV B, A                ;save pot setting to register B
                SUBB A, LWRVAL        ;potval - lwrval
                JNC P2S1                ;no carry means potval >= lwrval
                DEC SWPOS                ;carry means potval uprval, so increment switch position value
                                ;check if switch position is > max
                MOV A, POSMAX        ;load maximum xwitch position value
                CLR C
                SUBB A, SWPOS
                JNC P2S2
                MOV SWPOS, POSMAX        ;reset curve number to max curve value since overflow

        P2S2:                        ;read lower and upper thresholds using switch position value
                MOV A, SWPOS                ;multiply switch position value by 2
                MOV B, #02H
                MUL AB               
                MOV B, A                ;save multiplied value as table offset
                MOV DPTR, #HYSTBL        ;load base address of table pointer
                MOVC A, @A+DPTR        ;look up table value from base address + offset
                MOV LWRVAL, A        ;read lower threshold value
                MOV A, B                                                       
                INC DPTR                ;increment base address
                MOVC A, @A+DPTR
                MOV UPRVAL, A        ;read upper threshold value
                RET

HYSTBL:        ;TABLE OF LOWER & UPPER THRESHOLDS FOR SEVEN POSITION SWITCH
                DB        00D,        41D        ;Switch state 0
                DB        34D,        77D        ;Switch state 1
                DB        70D,        113D        ;Switch state 2
                DB        106D,        149D        ;Switch state 3
                DB        142D,        185D        ;Switch state 4
                DB        178D,        221D        ;Switch state 5
                DB        214D,        255D        ;Switch state 6



本文地址:https://www.eechina.com/thread-135380-1-1.html     【打印本页】

本站部分文章为转载或网友发布,目的在于传递和分享信息,并不代表本网赞同其观点和对其真实性负责;文章版权归原作者及原出处所有,如涉及作品内容、版权和其它问题,我们将根据著作权人的要求,第一时间更正或删除。
您需要登录后才可以发表评论 登录 | 立即注册

厂商推荐

相关视频

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
快速回复 返回顶部 返回列表