基于单片机的数字电位器的设计
扫描二维码
随时随地手机看文章
人耳对声强的主观感受遵循韦伯定律(Webber's Law),在音量较小时人耳对声波振幅的改变感受灵敏,声音达到一定响度后,人耳的听觉特性开始变得迟钝。而指数型电位器的阻值变化规律为先慢后快,如果将这种衰减特性用在音量调节中,则恰好可以抵消人耳对音量感知的对数特性,保证主观听感的平滑。
与传统的机械式音量电位器相比,数字电位器(DCP)的阻值调节由内部CMOS开关控制,因而使用寿命长、可靠性高且不会产生机械噪声;如果将廉价的通用型线性数字电位器直接用于音量调节,在小音量状态下稍微调节电位器即会使输出声压陡然增加,无法保证大动态范围内音量的准确定位,因此目前将数字式电位器运用在成熟功放产品中的实例还不多。实际上,如果将低分辨率线性数字电位器与通用嵌入式系统结合起来,就能够得到运用于音量控制领域的低成本高分辨率指数式电位器。
总体设计方案
在数字电位器的扩展系统中,主控单元可选用常见的8位或16位成熟单片机。这里我们主要针对Intersil公司的低分辨率线性数字电位器X9313、X9312进行扩展,系统最终能够达到的实际分辨率为31×99=3069级;如果把32抽头的X9313全部更换为X9312,分辨率还可以进一步提高至9801级。
X9313与X9312这两种DCP均为三线制接口、带掉电自动保存功能的非易失性数字电位器,其内部分别包含31、99个电阻单元构成的电阻阵列,相邻两个电阻单元以及电阻阵列端点都设置有可以被滑动单元访问的抽头,如图1所示。滑动单元的位置由CS、U/D和INC三个输入端控制,抽头位置值能够被存储在非易失性存储器中,供下次上电时调用置位。
图1 X931x系列DCP的内部结构
系统的每个声道的音量控制由两个X9313与一个X9312构成,图2为三个数字电位器的功能连接图。所有DCP的U/D、INC端分别连接在一起,而片选端CS各自占用一个MCU端口。这种硬件连接方式能够很容易地实现四声道乃至更多声道的音量控制。为了与常见的数字式音量调整习惯一致,最好不要保留通用DCP的三键式控制方式,而只需设置UP/DOWN两组按键直接控制音量的增减。UP/DOWN按键与MCU的连接应设置软件延时的去抖算法,以消除按键输入时的抖动,MCU与DCP之间则不再考虑按键抖动。
图2 系统连接示意图
分辨率扩展
Ra和Rb同时并联在输入信号Vin的两端,其抽头数均为32。Ra和Rb的输出作Rc端口电压VH和VL设置,Ra始终比Rb高一个位置间隔,这样就可以将1/32Vi~31/32Vi共31种输入信号的电压变化加到Rc两端。由于Rc选用了100抽头的DCP,从而可以在Rc输出端得到31×(100-1)=3069级的Vin线性电压值。
随着Rc滑动端上下移动,Ra和Rb的位置也在MCU的控制下进行相应调整。在上移过程中,设Rc滑动端上移值与目前所在位置值相加后的值为M。若M小于100,说明这时只是Rc的滑动端发生移动,而Ra和Rb的滑动触点位置不变;若M值超过100,则Ra和Rb的触点均上移1个滑动位,Rc的滑动端返回M减去100之后所得实际值决定的触点位。类似地,在抽头下移过程中,若Rc的滑动端需要下移到抽头0以下时,则Ra和Rb的滑动端也需要同步下移1位,以保持电位器实际调整步数的平衡。
电位器Rc的抽头输出端设置了一级电压跟随器,可以减小因负载并联对级联后分压系数的影响。电位器触点的滑动过程属于不连贯的步进调节方式,故Rc的电阻值不是连续变化而是在滑动端调整到位后才具有所希望的输出,这样会使得输出电压出现一些小幅跳变。但由于输入信号Vin的绝对增量并不大,且整个电位器扩展系统的分辨率很高,对此我们可在Rc电位器的滑动输出端对地并联一只1000~2200pF的小电容C1,以减小输出电压的波动。
上述电位器分辨率扩展的思路具有较高的可行性与移植性,此前曾应用在我们的一项程控增益可编程高速放大器的系统设计方案中,取得很好的使用效果。
电阻值指数化
DCP的指数化处理采用软件方式实现,不需要额外增加硬件。由于通用单片机的函数运算功能非常有限,因此在算法上,将电位器每级切换所要求的触点移动步数以数组形式保存在单片机的ROM中。阻值调整时,MCU根据按键的UP/DOWN状态和当前的阶数值以查表方式取得各只DCP的实际偏移量,然后再由MCU控制DCP执行相应的步进切换动作。考虑到3069级的实际分辨率,系统从零到满幅输出共设置了24级的步进阶数,优于市场上主流机械式步进电位器18~21的步进阶数,具体的阶数与电位器抽头偏移量关系可参见表1。从表中不难看出,系统将DCP扩展到3069的高分辨率正是为了适应电位器阻值在指数化调整过程中步进值的精确辨析。
表1 阶数与电位器抽头偏移量关系
X9312与X9313是不能直接从片内存储单元读出滑动端当前所在位置的,因此,为了记忆各只数字电位器滑动触点的实际位置,必须在程序中设置变量对不同电位器的触点位置进行记忆。
结束语
高分辨率指数式数字电位器的解决方案以较低成本实现了通用型线性数字电位器在音响系统中的应用,具有较好的工程应用前景和推广价值。此外,由于DCP的指数式高分辨率扩展仅仅占用了很少的系统资源,因而可将MCU的剩余端口资源应用在音量状态的指示以及红外信号解码等功能性环节中,以完善系统功能。