通过单片机DAC控制FB引脚实现可调电源
R1是下电阻,接 FB - GND
R2是上电阻,接 VOUT - FB
R3接 DAC - FB
#include <stdio.h>
#include <stdint.h>
float r1 = 10, r2 = 56, r3 = 12;
float vfb = 1.25;
float calc_vout(float vdac) {
return (1 + r2 / r1 + r2 / r3) * vfb - r2 / r3 * vdac;
}
int main(void) {
printf("R1 %.02f R, R1 %.02f R, R1 %.02f R, Vfb %.02f V\r\n", r1, r2, r3, vfb);
for (float i = 0; i <= 3.3; i += 0.3) {
printf("VDAC %.02f V; VOUT %.02f V\r\n", i, calc_vout(i));
}
return 0;
}
打印结果如下,可实现0-12V可调电源:
R1 10.00 R, R1 56.00 R, R1 12.00 R, Vfb 1.25 V
VDAC 0.00 V; VOUT 14.08 V
VDAC 0.30 V; VOUT 12.68 V
VDAC 0.60 V; VOUT 11.28 V
VDAC 0.90 V; VOUT 9.88 V
VDAC 1.20 V; VOUT 8.48 V
VDAC 1.50 V; VOUT 7.08 V
VDAC 1.80 V; VOUT 5.68 V
VDAC 2.10 V; VOUT 4.28 V
VDAC 2.40 V; VOUT 2.88 V
VDAC 2.70 V; VOUT 1.48 V
VDAC 3.00 V; VOUT 0.08 V
VDAC 3.30 V; VOUT -1.32 V
推导过程:
I1 = Vfb / R1
I2 = Vout - Vfb / R2
I3 = Vdac - Vfb / R3 # 电流方向可正可负,此处定义 Vdac -> Vfb 为正
I1 = I2 + I3
==> Vout = (1 + R2 / R1 + R2 / R3) * Vfb - R2 / R3 * Vdac