软件实现高分辨率的非易失性数字电位器的方法

发布时间:2010-6-8 15:41    发布者:我芯依旧
关键词: 高分辨率 , 数字电位器 , 易失性
巧妙的利用软件编程,将X9241内部的四个64抽头数字电位器组成一个高分辨率低成本的数字电位器

数字电位器(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就是说明的这个概念。




如何使用X9241实现高分辨率(8001抽头)


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





X9241内部有一个特殊的机制,可以把相邻的数字电位器逐个串联。允许多达253个不同抽头位置(当把全部DCP逐个串联的时候)。如图3所示,我们将POT1和POT2(X9241内部相邻的两个DCP)串连起来,用POT0为其提供VH(可以调节的),用POT3提供VL(可以调节的)。那么我们就得到了如前面所述原理一样的电路图





POT0和POT3为POT1-2(POT1和POT2串连以后的叫法)设置端电压。也必须保证POT1和POT3始终为“1”个位置间隔,那么就有63种不同的电压间隔施加到POT1-2上。随着POT1-2的滑动端位置向上或者向下移动到端点时,POT0和POT3的位置也要在必要时进行调整。如果POT1-2的滑动端增加到超过127时,那么POT0和POT3将增加“1”,而POT1-2的滑动端将返回到抽头0。同样,POT1-2的滑动端减低到抽头0以下时,POT0和POT3的滑动端将减小“1”,并将POT1-2的抽头设置到127。这一点,请读者在理解后面所附的程序清单时注意。


X9241极适用于这个任务,因为其内部正好有四个独立的DCP,并且有相邻DCP串联的机制,而且其采用I2C总线控制接口,抽头位置可以在软件中直接改变而不需要通过每个中间位置转换。


图4是使用X9241U(49.37K、49.38K、49.32K、49.24K)器件对电路进行测试得到的相邻抽头之间的典型结果。大图表示每个抽头的滑动端电压占所加总电压的百分比,其中插图为相邻抽头之间的分辨率占所加总电压的百分比。




使用X9241实现高分辨率的软件代码


为了方便理解实现控制的细节,我们提供了C语言源代码(代码由Xicor公司提供,我们做了一定的修改)。用户只需要自己再编写适用于不同单片机的I2C硬件接口函数(函数名称同程序中介绍一致),在应用程序中加入我们提供的源代码,简单的调用程序中介绍的5个函数,就可以方便地实现DCP的高分辨率控制。
本文地址:https://www.eechina.com/thread-12344-1-1.html     【打印本页】

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

厂商推荐

相关视频

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