数字电位器与单片机接口及程序设计
扫描二维码
随时随地手机看文章
随着集成芯片技术与计算机技术的发展,仪器仪表的智能化程度不断提高,许多原先采用手工调节的操作,已由计算机取而代之。数字电位器便是其中一例,它不仅在一定程度上取代了机械电位器,而且具有无噪声,抗振动.尺寸小,寿命长等优点。最重要的是它由计算机控制,调节由编程实现,从而实现操作的自动化及智能化。
一、AD8402与8031的接口电路设计及注意事项
AD8402是一种2通道256个分支节点的数字电位器,也称数控可变电阻器。它实质上是一种特殊形式的数/模转换器,但其模拟量输出不是电压或电流,而是电阻或电阻比率,所以又称RDAC。它含有一个标准三线串行控制接口,输入时序如图1所示。
AD8402可根据地址位A1、A0的值选择相应的RDAC,并将8位数据存人锁存器,根据锁存器的值改变RDAC的滑壁位置。
8031串行接口的四种工作方式(方式0~3)中,无一种时序与之相匹配。因此,必须使用8031的Pl口中的任意三根位线(如P1.0~P1.2)与之接口,电路如图2所示。
由于AD8402的CLK端可使用50 MHz的时钟,而8031的晶振最高只有12 MHz,这个时钟脉冲对AD8402来讲显得太宽了。这不但要求时钟的前沿十分干净,而且方波不应有尖峰,否则会使误码数据传人寄存器。这种错误不易察觉,我们曾深受其害。解决的办法是进行滤波,滤掉干扰。电容的容量要合适,电容值太大,暂态时间过长,得不到应有高度的上升沿;电容值太小,干扰不能滤除。由8031的Pl口内部结构(如图3所示)可知,内部有上拉电阻R,设其值为1 kΩ,滤波的截止频率fo=l/RC≤50 MHz,可得C≥0.02nF。又由8031的PI口发出脉冲最小宽度为2μs,即C≤2 nF,C值为0.02~2 nF(晶振为6MHz)。我们在晶振为6 MHz的8031系统中,采用1 nF的滤波电容,收到了很好的效果。
另外,在使用AD8402时还应注意的是,其RDAC各端不能使用负电压。例如用作分压器时,不能按图4(a)所示,将负电压Vss直接接在B端或A端或W端上,那样数字电位器不能正常工作。可按照图3 -67(b)或3-67(c)的方式连接,虽然在vP上不会得到V ss~VDD的全范围分压,但适当选取R.、Rz的值便可得到可正可负的分压值。
此外,AD8402固定端A与B之间的电阻分为3种类型:10kΩ、50 kΩ,和100 kΩ。如有其他需要可与厂家联系,但这样十分不方便。可以通过一些电阻网络来实现,如一个10 kΩ的电阻与一个10 kΩ的电阻的RDAC并联,可以得到有256个分支节点的5kΩ的电位器,只是线性度差一些。
二、AD8402的编程
下面一段简短的程序可以实现AD8402的基本操作。它可作为一个子程序供系统调用。
程序中位RDAC一01置0时,对RDAC1操作;置1时,对RDAC2操作。位RDAC_*=O时,按照RDAC_ AVLUE的值调节AD8402中的RDAC; RDAC_*-1时,将根据位RDAC_十-的值移动电位器的滑臂。程序如下: