推荐给好友 上一篇 | 下一篇

用模拟电压控制数字电位计

  本文描述了一个用模拟电压通过设备的I2C接口控制数字电位计的设计。Microchip PIC12F683 微控制器中的ADC将模拟电压转换为控制Maxim DS1803 数字电位计的I2C流(图1和参考文献1)。在该微控制器的六个I/O通用引脚中,两个引脚控制SDA(系统数据)和SCL(系统时钟线)输出信号,一个控制一只LED,一个接收模拟输入信号。SDA和SCL直接连接到数字电位计的SDA和SCL引脚,分别通过两个4.7kΩ上拉电阻接到VDD。通过接通或断开跳线,可将共用的VCC和VDD分开,并将SDA和SCL隔离。

图1通过此电路可用模拟电压输入来选择数字电位计电阻值


  固件采用汇编语言,程序用7.40 版本的MPLab IDE(集成开发环境)汇编。目前该IDE可从Microchip免费得到。程序中包括不到450字节的闪存编码和8字节的RAM编码。该程序首先初始化各PIC配置位,如ADC和内部振荡器的设置。它将ADC设置为从模拟输入引脚接收输入信号,并将变换时钟设置为采用内部振荡器的125kHz时钟。

  固件以循环方式运行,使10位ADC连续变换模拟输入电压。变换完成后,8个最高有效位形成一个数据字节,通过I2C总线发送。然后,由此I2C信号流控制数字电位计。该程序对此设备的两个电位计都加以控制。但是,如果修改固件,就可以用PIC12F683上两个单独的模拟输入对两个电位计分别进行控制。利用此程序,可通过改变PIC12F68 GP1输入上的电压来控制电位计。GP1上电压的改变会按以下关系相应地改变电位计电阻:ROUT = ((输入电压)/VCC)×50kΩ,其中数字电位计端对端电阻为50kΩ,VCC允许范围为2.7V~5V,输入电压范围为0~VCC。 如系统出现问题,可查看该设备的地址是否正确、I2C总线是否接好。ADC工作时,LED会持续闪烁,但如果出现I2C错误,就会一直保持发光状态。改正错误后,LED恢复正常功能。

  此设计方法也可用于模拟电压必须通过I2C接口来控制设备的其他应用。例如,可以用DS3906可变电阻实现一个非线性变换函数,如伽马校正;或是实现一个嵌入查找表变换函数(参考文献2)。也可以在输入处接一只热敏电阻,根据环境温度的变化改变I2C控制的电流DAC的输出。

参考文献
1. “DS1803 Addressable Dual Digital Potentiometer,” Maxim, July 25, 2007.
2. “DS3906 Triple NV Low Step Size Variable Resistor Plus Memory,” Maxim, Aug 9, 2007.


 

评分:0

我来说两句

seccode