3个版本

0.1.3 2022年1月3日
0.1.2 2017年9月14日
0.1.1 2017年9月11日

#452嵌入式开发

MIT/Apache

22KB
280

crates.io crates.io CircleCI Codecov

stepgen

步进电机速度斜坡生成器。

给定加速度、目标速度和目标步数停止的位置,生成步进电机的加速度或减速度曲线,以步之间的延迟形式表示。

使用David Austin在《实时生成步进电机速度曲线》一文中提出的算法。

示例

use stepgen::Stepgen;

let mut stepper = Stepgen::new(1_000_000);

stepper.set_acceleration(1000 << 8).unwrap(); // 1000 steps per second per second
stepper.set_target_speed(800 << 8).unwrap(); // 800 steps per second (4 turns per second)
stepper.set_target_step(1000).unwrap(); // stop at step 1000

// Take 99 steps
for _ in 0..99 {
    println!("{}", stepper.next().unwrap());
}

assert_eq!(99, stepper.current_step());
assert_eq!(113621, stepper.current_speed());
assert_eq!(2242, (stepper.next().unwrap() + 128) >> 8); // delay for 100th step, rounded to the nearest integer

关于数字的说明

在少数API中,stepgen将数字保留为定点数,使用最低的8位表示小数部分,其余位表示整数部分。

许可证

许可协议为以下之一

任选其一。

贡献

除非你明确声明,否则任何有意提交以包含在你所定义的工作中的贡献,根据Apache-2.0许可证,应以上述双许可方式进行,不附加任何额外的条款或条件。

无运行时依赖