摘要: 在某些应用中,需要控制具有I2C接口的数字电位器,具有连续变化的信号。本应用说明解决了这个问题。该原理可用于使用电压控制任何具有I2C接口的设备,因此可用于各种应用。
在某些应用中带I(2)C接口的数字电位器,往往需要由持续变化的模拟信号控制。该应用笔记针对这种应用,提供了简易的设计方案。这里介绍的方法适合多种应用场合。
类似文章发表于EDN杂志,2008年3月20日。
本应用笔记描述了使用外部模拟电压改变数字电位器阻值的简易方法。使用Microchip的PIC12F683型微控制器将模拟电压转换至控制数字电位器的I(2)C数据流。数字电位器 DS1803 作为本应用中的示例器件,另外还用到极少数其他外部器件。这里介绍的方法适用于其他控制器输入和其他数字电位器/可变电阻。
图1显示了使用PIC12F683的控制电路原理图。微控制器6个GPIO中的4个用于控制SDA、SCL的输出信号、单个LED,并接收一路模拟输入。
GP5、GP4和GP0分别分配至信号输出SDA、SCL和LED。SDA和SCL具有4.7k欧姆上拉电阻至V(DD),直接连接至DS1803的SDA和SCL引脚。微控制器的GP1 IO分配为模拟输入引脚。通过跳线可选择地址引脚、分离共用的V(CC) (V(DD))、隔离SDA和SCL。
图1. 模拟电压控制数字电位器的原理图
本工程的固件在MPLAB IDE (7.40版本)环境下,由汇编语言编写。此编译工具目前由Microchip免费提供。全部程序仅占用小于450字节的程序空间(Flash)和8字节的数据空间(RAM)。
程序首先初始化PIC的多个配置位,包括ADC和内部振荡器。程序配置ADC为从GP1输入,并设置转换时钟为使用内部125kHz振荡器。
固件运行一个循环:ADC持续转换模拟输入端的电压,一旦转换完毕,10位ADC输出的高8位作为数据字节,传送至I(2)C总线。此I(2)C信号用于控制DS1803。程序设置为一同控制DS1803的2个电位器;但通过改变固件,可以实现由PIC12F683的2个不同的模拟输入独立的控制2个数字电位器。
程序允许用户通过改变PIC12F683 GP1输入端的电压,控制数字电位器。GP1端电压的持续变化会引起数字电位器电阻的相应变化。输出电阻(R(OUT))可以看作是输入电压的函数。
设计中使用的DS1803端到端电阻为:50k欧姆
V(CC)的允许范围:2.7V至5V
输入电压变化范围为0V至V(CC)
输出电阻将会遵循:
R(OUT) (k欧姆) = (50/V(CC) (k欧姆)) × 输入电压
ADC运行期间,LED不断闪烁。如果I(2)C出现故障,LED保持常亮。一旦故障排除, LED继续正常工作。设计者可通过检查器件地址是否正确、I(2)C总线是否连接,排除系统的故障。
此设计非常通用,类似的方法可以用在多个系统。一些实例包括:
非线性传递函数(如,伽马校准)可以使用可变电阻 DS3906 结合嵌入式查找表中存储的恰当传递函数实现。
当环境温度变化时,可以在输入端连接一个热敏电阻,以改变I(2)C控制的电流型DAC ( DS4402 / DS4404 )。
本应用笔记描述了使用模拟电压控制数字电位器的简易和低成本方法,该应用中的方法可以扩展至使用模拟电压控制带有I(2)C接口的任何器件。
社群二维码
关注“华强商城“微信公众号
Copyright 2010-2023 hqbuy.com,Inc.All right reserved. 服务热线:400-830-6691 粤ICP备05106676号 经营许可证:粤B2-20210308