4 个版本
0.11.7 | 2023年6月6日 |
---|---|
0.11.6 | 2023年6月1日 |
0.11.5 | 2023年5月22日 |
0.11.3 |
|
0.10.6 |
|
#175 在 #raspberry-pi
用于 sybot_lib
785KB
4K SLoC
stepper_lib
注意
库的许多方面(例如文档)尚未完全完成!(尽管我尽可能地频繁更新它)
这是一个用于所有类型机器人组件的库,包括步进电机、伺服电机和更复杂的电机组装的控制。目前所有实现都是针对树莓派,尽管目前正在为更多控制器制作新实现。
sybot_lib 的基础库 sybot_lib
目标
- 创建一个用于在 Rust 中控制电机、读取传感器和进行基本计算的通用库。
- 使其尽可能易于使用
- 为爱好者和小发明家专门设计库
- 提供静态和动态类型选项
实战
假设我们想要控制一个简单的步进电机(在这个例子中是一个 17HE15_1504_S),它通过连接到 BCM 引脚 27 和 19 的 PWM 控制器。
点击显示 Cargo.toml
# ...
[dependencies]
# Include the library configured for the raspberry pi
stepper_lib = { version = "0.11.6", features = [ "rasp" ] }
# ...
use core::f32::consts::PI;
// Include the library
use stepper_lib::prelude::*;
// Pin declerations (BCM on raspberry pi)
const PIN_DIR : u8 = 27;
const PIN_STEP : u8 = 19;
// Define distance and max speed
const DELTA : Delta = Delta(2.0 * PI);
const OMEGA : Omega = Omega(10.0);
fn main() -> Result<(), stepper_lib::Error> {
// Create the controls for a stepper motor
let mut ctrl = StepperCtrl::new(StepperConst::MOT_17HE15_1504S, PIN_DIR, PIN_STEP);
// Link the component to a system
ctrl.write_link(LinkedData {
u: 12.0, // System voltage in volts
s_f: 1.5 // System safety factor, should be at least 1.0
});
ctrl.setup()?;
// Apply some loads
ctrl.apply_inertia(Inertia(0.2));
ctrl.apply_force(Force(0.10));
ctrl.set_omega_max(OMEGA);
println!("Staring to move");
ctrl.drive_rel(DELTA, 1.0)?; // Move the motor
println!("Distance {}rad with max speed {:?}rad/s done", DELTA, OMEGA);
Ok(())
}
(来源:stepper_motor)
特性
- 电机
- 组件
- 工具
- 钳子
- 轴向关节
- 计算
- 复杂的加速度曲线
- 过载
- 力
- 惯性
- 测量
- 简单开关
- 旋转编码器
- 自定义测量特性
- 可扩展
- 自定义组件
- 自定义工具
- 自定义测量系统
- 单位系统
- 最小化
- 完全支持
no_std
环境 - 适用于基本嵌入式系统
- 完全支持
- 平台
- 树莓派及其类似产品
- Arduino
问题和请求
如果您遇到任何问题或对新增功能有任何请求,请随时在 GitHub 仓库 中创建一个问题。
依赖项
~7–15MB
~165K SLoC