热度 6
2023-9-12 17:44
1939 次阅读|
0 个评论
设计 DC-DC 电路时,常常需要依据芯片的参考电压和需要的输出电压来计算配置电阻。在常用的电阻中找到合适的组合。 一个条件,求两个未知数。实际上并不容易得到想要的数据。不过可以将可选电阻值范围内,尝试各种组合。得到最优解。常用的电阻为 5% 精度的 E24 或 1% 精度的 E96 电阻。 E24 的取值为 ,取 1 位小数。即 E96 的取值为 , 取 2 位小数。即 方法是先设定好 Vout 和 Vref 。然后让 R1 R2 取选定电阻的所有组合,查找最接近的。 因为电阻的取值有可能是 10 倍或 100 倍,在做查找前,先计算 Vout 与参考电压 Vref 之间的倍率,如果大于 100 ,则所选阻值加大 100 倍,如果大于 10 则加大 10 倍。先计算 DivRatioNeed = Vout / VREF; 尝试电阻给合时的倍率 DivRatio = ( E24_resistors * Rclass + E24_resistors ) / E24_resistors ; 比较一下 DivRatioNeed , DivRatio ,留下偏差小的。所有组合尝试完成后,即得到最优电阻组合。 // 计算最接近目标输出电压的电阻值 void MainWindow::calculate_resistor(float VREF, float Vout) { float Rclass, DivRatioNeed, DivRatio, R1, R2, ERR; DivRatioNeed = Vout / VREF; ERR = 10; 100){ Rclass = 100; } else{ 10) Rclass = 10; else Rclass = 1; } for(int i = 0;i < E24_SIZE;i++){ for(int j = 0;j < E24_SIZE;j++){ DivRatio = (E24_resistors *Rclass + E24_resistors ) / E24_resistors ; if (qAbs(DivRatio - DivRatioNeed) < ERR){ ERR = qAbs(DivRatio - DivRatioNeed); R1 = E24_resistors ; R2 = E24_resistors *Rclass; } } } setText(QString::number(R2)); setText(QString::number(R1)); setText("Vout = "+QString::number(VREF/R1*(R1+R2),'f',2)+" V\n" +"error = "+QString::number((VREF/R1*(R1+R2)/Vout-1)*100,'f',1)+" %"); setText(QString::number(VREF/R1*(R1+R2))); } 在选定好其中一个值 R1 后,查找 R2 时实际上可以先计算出准确值,缩小查找范围。搜索 E96 这样的大表会更快一些。 计算结果:输出 3.3V 参考电压为 0.8 时,可以用 E24 的电阻得到准确值。 使用 1.23V 参考时,使用 E24 得到的输出电压有偏差,用 E96 则无偏差。不过使用的电阻组合,分别是 E24 和 E96 表中的。