本文主要是介绍解决PCF8591 DAC输出电压过低、最大电压达不到Vref的问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
这种情况一开始以为是软件问题,但本身软件部分非常的简单
功能很单一,就是初始化并且产生锯齿波
#define PCFADDRESS 0x48
#include "Wire.h"
void InitPCF()
{Wire.begin();
}
void PCFOnce()
{for (int i=0; i<256; i+=15){Wire.beginTransmission(PCFADDRESS); // wake up PCF8591Wire.write(0x40); // control byte - turn on DAC (binary 1000000)Wire.write(i); // value to send to DACWire.endTransmission(); // end tranmissiondelay(10);}for (int i=255; i>=0; i-=1){Wire.beginTransmission(PCFADDRESS); // wake up PCF8591Wire.write(0x40); // control byte - turn on DAC (binary 1000000)Wire.write(i); // value to send to DACWire.endTransmission(); // end tranmission}
}
但我测量出电压就仅仅只有3.87V,很奇怪,虽然输入电压不足5V但是也不应该那么低
后来别人提醒下,可能和负载有关系,因为本身并不是功率芯片,电流非常小(比如C51那种IO),所以随便加一个负载,就会有压降
因此,检查了下线路,14脚是Vref输入,没问题,但是Analog Out就是低压。最后发现是板载的LED灯,是直接驱动的。1K电阻,4.6V/1000Om ,差不多4.6ma的电流对这个芯片来说可能还是太大了。
解决方法就是:将与AO口并联的LED灯部分线路切断,我的方法是把背面最上面的1K电阻去除,测量发现电压恢复到正常水平了。
这篇关于解决PCF8591 DAC输出电压过低、最大电压达不到Vref的问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!