不要只看上电电压
上电后 VOUT 可能保持 EEPROM 里保存的默认值,例如 2V 左右,不能直接判坏。
Product
这类蓝色小板常见丝印为 VCC、GND、SCL、SDA、OUT/VOUT。尺寸和丝印以当前批次实物为准。

上电后 VOUT 可能保持 EEPROM 里保存的默认值,例如 2V 左右,不能直接判坏。
常见地址是 0x60;有些模块 A0 状态不同,可能是 0x61。
写 0、1024、2048、3072、4095,看万用表电压是否按比例变化。
Real Test
下面素材为本地实拍测试记录。本次按 3.3V 供电测试,写入 2048 时 VOUT 应约为 1.65V,也就是供电电压的一半。
视频重点看 VOUT 是否随程序变化;3.3V 供电时,半量程不是 2.5V,而是约 1.65V。
Wiring
ESP32 建议 MCP4725 也用 3.3V 供电,不要 5V 供电后直接接 ESP32 的 SDA/SCL,避免 I2C 上拉到 5V。
| MCP4725 | Arduino UNO | ESP32 |
|---|---|---|
| VCC | 5V | 3.3V |
| GND | GND | GND |
| SDA | A4 | GPIO21 |
| SCL | A5 | GPIO22 |
| VOUT | 万用表红表笔 | 万用表红表笔 |
| GND | 万用表黑表笔 | 万用表黑表笔 |
Voltage Test
公式:VOUT ≈ VCC × 写入值 ÷ 4096。如果用 3.3V 供电,写入 2048 就是约 1.65V;如果用 5V 供电,写入 2048 才是约 2.5V。
| 写入值 | 5V 供电 VOUT | 3.3V 供电 VOUT | 判断 |
|---|---|---|---|
| 0 | 接近 0V | 接近 0V | 最低输出 |
| 1024 | 约 1.25V | 约 0.82V | 约 1/4 VCC |
| 2048 | 约 2.5V | 约 1.65V | 约 1/2 VCC |
| 3072 | 约 3.75V | 约 2.47V | 约 3/4 VCC |
| 4095 | 接近 5V | 接近 3.3V | 接近 VCC |
Arduino Code
Arduino IDE 库管理器搜索安装 Adafruit MCP4725,再烧录下面程序,用万用表测 VOUT。
#include <Wire.h>
#include <Adafruit_MCP4725.h>
Adafruit_MCP4725 dac;
void setup() {
Serial.begin(9600);
Wire.begin();
if (!dac.begin(0x60)) {
Serial.println("MCP4725 not found at 0x60");
Serial.println("Try I2C scanner. Some modules may use 0x61.");
while (1) {
delay(10);
}
}
Serial.println("MCP4725 found");
}
void loop() {
dac.setVoltage(0, false);
Serial.println("VOUT should be near 0V");
delay(3000);
dac.setVoltage(1024, false);
Serial.println("VOUT should be about 1/4 VCC");
delay(3000);
dac.setVoltage(2048, false);
Serial.println("VOUT should be about 1/2 VCC");
delay(3000);
dac.setVoltage(3072, false);
Serial.println("VOUT should be about 3/4 VCC");
delay(3000);
dac.setVoltage(4095, false);
Serial.println("VOUT should be near VCC");
delay(3000);
}
Troubleshooting
I2C 能扫到 0x60 或 0x61;VOUT 会跟程序变化;写 0 接近 0V;写 2048 接近 VCC 一半;写 4095 接近 VCC;模块不发热,VCC 不被拉低。
I2C 扫不到地址;VOUT 一直固定不变;写 0 还是 2V 多;写 4095 还是 2V 多;模块发热;VCC 被拉低;SDA/SCL 接反、虚焊或没有共地。
不一定。MCP4725 有 EEPROM,上电可能输出上次保存的电压。必须通过 I2C 写不同数值,看 VOUT 是否能变化。
很多 MCP4725 小板有 I2C 上拉电阻。如果模块接 5V,SDA/SCL 可能被上拉到 5V,ESP32 不是 5V 容忍,存在风险。
Customer Reply
References