7630| 9
|
[活动] 用Arduino Nano和步进电机做一个自平衡机器人 |
今天和大家介绍一个利用简单的步进电机和Arduino Nano做一个自平衡机器人的项目。 在这篇文章中,这位来自捷克的高级软件工程师将概述他在项目工作中面临的主要问题,希望对大家未来的项目有用,可以学到一些新东西。 进入正文。 硬件
模拟情况:https://www.kaggle.com/zjor86/simulations-self-balancing-robot 我在上面的链接中详细描述了项目的模型以及模拟的情况。 强烈建议大家也能在建立系统之前进行模拟,并在一个虚拟环境中调整好参数。 设备选择 到目前为止,采用的设置如下:
我使用了2个嵌入式PID控制回路,一个用于保持直立位置, 另一个用于稳定速度或位置。 实施说明 步进控制 机器人通过施加一个与角度大致成正比的力来平衡自己。这意味着电机应该随着加速度转动。由于我们有步进电机,我们需要计算下一步的延迟,最好是在每一步之后(或尽可能快)。但是步进本身在时间上是精确的,所以我使用了一个定时器中断来进行步进和40kHz的频率(试过用从8kHz到100kHz的频率,效果很好,但是它占用了CPU周期,而且控制不是很流畅)。这个过程应该尽可能地快,而且不应该包含任何浮点计算。 速度更新 下一个对时间敏感的任务是更新速度和重新计算步长延迟,这应该比测量路由运行的速度快,否则,"力 "将没有足够的时间作用和产生效果。 控制循环 这个程序负责读取IMU(MPU6050),计算必要的控制信号,例如速度更新回路的加速度。 使用DMP DMP(数字运动处理器)负责合并来自陀螺仪和加速度计的数据,为你提供漂亮而平滑的偏航-俯仰-滚动数据。它卸载掉了Arduino运行缓慢的CPU,在实践中,与手写的互补滤波器相比,我在改用DMP后得到了5倍的主循环速度。 电路图 ▲ 可以点击放大观看 代码 Github仓库:https://github.com/zjor/balancing-robot 访问Github有困难的同学,可以直接在公众号后台回复“自平衡机器人”下载打包好的代码包。 项目的后续 我会分享我的改进和后续的升级计划,如果大家有兴趣,也欢迎一起加入进来。 后续将考虑:
原项目英文链接:https://www.hackster.io/zjor/sel ... and-steppers-9bf019 项目作者: zjor 该译文首发于DF创客社区 转载请务必注明项目出处与原作者信息 |
32.48 KB, 下载次数: 5033
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed