1 个不稳定版本
使用旧的 Rust 2015
0.1.0 | 2018年5月16日 |
---|
#52 in #calc
18KB
287 行
电路设计的电阻值优化器。
当提供一组电阻 R1, R2, ... 的约束和关系时,它可以按误差增大的顺序展示标准系列值。
示例
给定以下电阻网络
其中 VADJ 必须保持在 0.8v,当 R2 从无到全电阻变化时,VOUT 从 6v 变化到 12v
然后我们可以通过以下约束来描述问题,以及一些额外的界限来消除过小或过大的值,这可能会导致电流问题。
extern crate resistor_calc;
use resistor_calc::*;
fn main() {
let rcalc = RCalc::new(vec![&E24, &E6, &E24]);
println!("Number of combinations: {}", rcalc.combinations());
let res = rcalc
.calc(
ROpBuilder::new()
.bound("R1+R2+R3 <= 1e6")
.bound("R1+R2+R3 >= 1e4")
.bound("0.8 * (1 + R1/R3) ~ 6.0")
.bound("0.8 * (1 + (R1+R2)/R3) ~ 12.0")
.finish(),
)
.expect("Error: No values satisfy requirements");
res.print_best();
}
运行此示例产生以下结果
Number of combinations: 1185408
Match 1:
Error: 0.000
Values: R1: 13K, R2: 15K, R3: 2K
Match 2:
Error: 0.000
Values: R1: 130K, R2: 150K, R3: 20K
依赖项
~600KB
~12K SLoC