应用笔记 4051

使用模拟电压控制数字电位器

By: Hrishikesh Shinde

摘要 : 在某些应用中带I²C接口的数字电位器,往往需要由持续变化的模拟信号控制。该应用笔记针对这种应用,提供了简易的设计方案。这里介绍的方法适合多种应用场合。

类似文章发表于EDN杂志,2008年3月20日。

简介

本应用笔记描述了使用外部模拟电压改变数字电位器阻值的简易方法。使用Microchip的PIC12F683型微控制器将模拟电压转换至控制数字电位器的I²C数据流。数字电位器DS1803作为本应用中的示例器件,另外还用到极少数其他外部器件。这里介绍的方法适用于其他控制器输入和其他数字电位器/可变电阻。

硬件配置

图1显示了使用PIC12F683的控制电路原理图。微控制器6个GPIO中的4个用于控制SDA、SCL的输出信号、单个LED,并接收一路模拟输入。

GP5、GP4和GP0分别分配至信号输出SDA、SCL和LED。SDA和SCL具有4.7kΩ上拉电阻至VDD,直接连接至DS1803的SDA和SCL引脚。微控制器的GP1 IO分配为模拟输入引脚。通过跳线可选择地址引脚、分离共用的VCC (VDD)、隔离SDA和SCL。

图1. 模拟电压控制数字电位器的原理图
图1. 模拟电压控制数字电位器的原理图

工程固件

本工程的固件在MPLAB IDE (7.40版本)环境下,由汇编语言编写。此编译工具目前由Microchip免费提供。全部程序仅占用小于450字节的程序空间(Flash)和8字节的数据空间(RAM)。

程序首先初始化PIC的多个配置位,包括ADC和内部振荡器。程序配置ADC为从GP1输入,并设置转换时钟为使用内部125kHz振荡器。

固件运行一个循环:ADC持续转换模拟输入端的电压,一旦转换完毕,10位ADC输出的高8位作为数据字节,传送至I²C总线。此I²C信号用于控制DS1803。程序设置为一同控制DS1803的2个电位器;但通过改变固件,可以实现由PIC12F683的2个不同的模拟输入独立的控制2个数字电位器。

固件在这里提供下载:下载

多种功能

程序允许用户通过改变PIC12F683 GP1输入端的电压,控制数字电位器。GP1端电压的持续变化会引起数字电位器电阻的相应变化。输出电阻(ROUT)可以看作是输入电压的函数。

设计中使用的DS1803端到端电阻为:50kΩ
VCC的允许范围:2.7V至5V
输入电压变化范围为0V至VCC

输出电阻将会遵循:

ROUT (kΩ) = (50/VCC (kΩ)) × 输入电压

ADC运行期间,LED不断闪烁。如果I²C出现故障,LED保持常亮。一旦故障排除, LED继续正常工作。设计者可通过检查器件地址是否正确、I²C总线是否连接,排除系统的故障。

此设计非常通用,类似的方法可以用在多个系统。一些实例包括:
  1. 非线性传递函数(如,伽马校准)可以使用可变电阻DS3906结合嵌入式查找表中存储的恰当传递函数实现。
  2. 当环境温度变化时,可以在输入端连接一个热敏电阻,以改变I²C控制的电流型DAC (DS4402/DS4404)。

    图2

结论

本应用笔记描述了使用模拟电压控制数字电位器的简易和低成本方法。该应用中的方法可以扩展至使用模拟电压控制带有I²C接口的任何器件。

有关该应用笔记的问题/建议/意见,请发送邮件至 (English only)。