软件实现高分辨率的非易失性数字电位器的方法
巧妙的利用软件编程,将x9241内部的四个64抽头数字电位器组成一个高分辨率低成本的数字电位器
本文引用地址:https://www.eepw.com.cn/article/20619.htm
数字电位器(dcp)是专为替代传统机械电位器、可变电阻器而设计的新型集成电路。其通过i2c、spi以及cs,u/d,inc三线方式与mcu接口,可实现应用程控调节,也有按钮控制方式,从而实现与传统机械电位器或可变电阻器相同的电位、电阻调节功能的特殊集成电路。与传统机械电位器相比,数字电位器具有数字调节、长寿命、易于装配、节省空间、不受振动影响等突出优点,已被广泛应用于医用设备、仪器仪表、工业控制、计算机、家用电器、手机、数码产品等各个领域。
在有些应用中,如激光二极管的动态偏置调节,使用数字电位器或者微调dac来控制电压,就受到了分辨率、接口、成本的限制。为了解决这类问题,我们将在这里介绍使用低分辨率(64抽头)、低成本的intersil(xicor)公司i2c总线控制数字电位器x9241组成一个高分辨率(8001抽头)的数字电位器的解决方法。
实现高分辨率的原理
我们假设有三个数字电位器,pot1和pot2为64抽头dcp,pot3为128抽头dcp,其中pot1和pot2用作pot3的vh和vl的设置,并且必须保证pot1和pot2始终为“1”个位置间隔,那么就有63种不同的电压间隔施加到pot3上。理论上,当pot3在特殊电压抽头127和下一个电压间隔的抽头0之间跳动时,应该还有一个多余的抽头位置,但是这些抽头不是多余的,它们的作用可以改善输出的线性度,因为在相邻的两个电压间隔中的抽头0和抽头127的电压是一样的。对于63个不同间隔的每一个,又借助127个不同的输出,就会有8001(63×127=8001)个不同的vw输出可以在vh和vl之间获得。图1就是说明的这个概念。

intersil(xicor)公司的x9241把四个非易失性数字电位器集成在一个单片cmos微电路中,它的功能框图如图2。x9241包含四个电阻阵列,每个阵列包含63个电阻单元。在每个单元之间和两个端点都有可以被滑动单元访问的抽头点。滑动单元在阵列中的位子由用户通过i2c总线控制。每个电阻阵列与一个滑动端计数寄存器(wcr)和四个8位数据寄存器联系在一起,四个数据寄存器和滑动端计数寄存可以由用户直接写入和读出。滑动端计数寄存器的内容控制滑动端在电阻阵列中的位置。数据寄存器的内容可以传输到滑动端计数寄存器以设置滑动端位置,当前滑动端的位置也可以传输到任何与之联系的数据寄存器中。滑动端计数寄存器是易失性的,器件上电时,滑动端计数寄存器自动的装入数据寄存器0(r0)中的值。四个数据寄存器是非易失性的,如果在应用中不需要对电位器有多种设置保存时,可以用作通用存储单元,用来保存系统参数或用户数据。


x9241极适用于这个任务,因为其内部正好有四个独立的dcp,并且有相邻dcp串联的机制,而且其采用i2c总线控制接口,抽头位置可以在软件中直接改变而不需要通过每个中间位置转换。
图4是使用x9241u(49.37k、49.38k、49.32k、49.24k)器件对电路进行测试得到的相邻抽头之间的典型结果。大图表示每个抽头的滑动端电压占所加总电压的百分比,其中插图为相邻抽头之间的分辨率占所加总电压的百分比。

为了方便理解实现控制的细节,我们提供了c语言源代码(代码由xicor公司提供,我们做了一定的修改)。用户只需要自己再编写适用于不同单片机的i2c硬件接口函数(函数名称同程序中介绍一致),在应用程序中加入我们提供的源代码,简单的调用程序中介绍的5个函数,就可以方便地实现dcp的高分辨率控制。
关于x9241实现高分辨率的软件源代码,工程师可到http://www.icbase. com/download/x9241.c去下载。
光敏电阻相关文章:光敏电阻工作原理
评论