2015年08月26日 星期三 07:54
PCF8591是一款兼有A/D和D/A功能的数模转换器,其中A/D功能可以有四路输入,D/A功能有一路输出,均是8bit精度,使用I2C协议与MCU进行通信。
我测试的是一块Waveshare出品的开发板,开发板上面已经集成的必要的元器件,包括I2C总线的上拉电阻等。
电路原理图如下:
PCF8591模块与Arduino Nano的连接关系如下:
Arduino Nano的A4连接PCF8591的SDA。
Arduino Nano的A5连接PCF8591的SCL。
Arduino Nano的GND连接PCF8591的GND。
Arduino Nano的5V连接PCF8591的VCC。
PCF8591模块本身的跳线选择如下:
三个地址跳线开关均连接到电源负极,也就是说这三位地址均为0。
VREF跳线连接到VCC,也即是直接使用电源电压作为参考电压。
首先,我们使用Arduino的Wire Library来操作DAC,DAC是Arduino系列开发板都缺少的功能,也是很有意思的一个功能。代码如下:
运行对比结果如下:
然后我们使用GitHub上的一个比较完整的PCF8591的Library来全面的测试ADC和DAC,代码如下:
运行对比结果如下:
Arduino 系列开发板自带的ADC的精度是10bit,要比PCF8591好很多,所以在一般情况下,我们并不会用到PCF8591的ADC。其实这个模块是给树莓派配套开发的。PCF8591的DAC功能确实是很有意义的,值得研究。
参考资料:
http://tronixstuff.com/2013/06/17/tutorial-arduino-and-pcf8591-adc-dac-ic/
https://www.arduino.cc/en/Reference/Wire
https://github.com/overbog/PCF8591
Zeuux © 2024
京ICP备05028076号