大数跨境
0
0

用Arduino Nano和步进电机做一个自平衡机器人

用Arduino Nano和步进电机做一个自平衡机器人 DF创客社区
2021-06-30
2
导读:用低成本的硬件做自平衡机器人,专注于代码的可读性
【点击上方「蓝字」关注DF创客社区,一起成为技术颜控】

今天和大家介绍一个利用简单的步进电机和Arduino Nano做一个自平衡机器人的项目。

在这篇文章中,这位来自捷克的高级软件工程师将概述他在项目工作中面临的主要问题,希望对大家未来的项目有用,可以学到一些新东西。

进入正文。

硬件

  • Arduino Nano R3 × 1
  • SparkFun步进电机驱动板A4988 × 2
  • 步进电机,迷你步进 × 2
  • DFRobot MPU-6050 6 DOF传感器 × 1

建模

模拟情况:https://www.kaggle.com/zjor86/simulations-self-balancing-robot

我在上面的链接中详细描述了项目的模型以及模拟的情况。

强烈建议大家也能在建立系统之前进行模拟,并在一个虚拟环境中调整好参数。

设备选择

到目前为止,采用的设置如下:

  • Arduino Nano,16MHz,我试图尽可能地压榨更多板子的计算能力,后续可能会用BlackPill(100MHz)或ESP32 WROOM(80-240MHz)取代它。实验证明频率是一个很重要要素。
  • Nema 17步进电机  × 2
  • A4988步进驱动器  × 2
  • MPU6050 - 陀螺仪和加速度计,带有板载的DMP,我也试过用更高级的芯片MPU9250,不过目前还没有找到好的库支持。

反馈控制回路

我使用了2个嵌入式PID控制回路,一个用于保持直立位置,

另一个用于稳定速度或位置。

实施说明

步进控制

机器人通过施加一个与角度大致成正比的力来平衡自己。这意味着电机应该随着加速度转动。由于我们有步进电机,我们需要计算下一步的延迟,最好是在每一步之后(或尽可能快)。但是步进本身在时间上是精确的,所以我使用了一个定时器中断来进行步进和40kHz的频率(试过用从8kHz到100kHz的频率,效果很好,但是它占用了CPU周期,而且控制不是很流畅)。这个过程应该尽可能地快,而且不应该包含任何浮点计算。

速度更新

下一个对时间敏感的任务是更新速度和重新计算步长延迟,这应该比测量路由运行的速度快,否则,"力 "将没有足够的时间作用和产生效果。

控制循环

这个程序负责读取IMU(MPU6050),计算必要的控制信号,例如速度更新回路的加速度。

使用DMP

DMP(数字运动处理器)负责合并来自陀螺仪和加速度计的数据,为你提供漂亮而平滑的偏航-俯仰-滚动数据。它卸载掉了Arduino运行缓慢的CPU,在实践中,与手写的互补滤波器相比,我在改用DMP后得到了5倍的主循环速度。

电路图

▲ 可以点击放大观看

代码

Github仓库:https://github.com/zjor/balancing-robot

访问Github有困难的同学,可以直接在公众号后台回复“自平衡机器人”下载打包好的代码包。

项目的后续

我会分享我的改进和后续的升级计划,如果大家有兴趣,也欢迎一起加入进来。

后续将考虑:

  • 使用更强大的CPU(BlackPill, ESP32)
  • 通过WiFi或BLE或nRF24L01增加遥控的功能
  • 把它做成一个教育套件,更加易于组装和大家理解
  • 把这个机器人变成一个有API的平台,这样就有可能把其他设备安装在上面

原项目英文链接:https://www.hackster.io/zjor/self-balancing-robot-with-arduino-nano-and-steppers-9bf019

项目作者: zjor

该译文首发于DF创客社区

转载请务必注明项目出处与原作者信息



硬件军火库


点击了解详情👆


大家有什么想说的或者是对文章翻译的指正,欢迎在下方留言

项目中涉及的代码,可以在公众号后台回复“自平衡机器人”下载!

(链接失效也可以点击阅读原文到社区论坛下载)




 往期项目回顾 



社区Arduino精彩项目盘点

这个树莓派机箱,有点儿香!

打造一款科技感十足的OLED显示器

如何给LED小姐姐开一场电子音乐会?

动手做一只基于ESP32的小型四足机器狗

致敬稚晖君?自制一款太空人主题的透明手表!

春天来了,你需要一款复古风格的树莓派相机!


点击阅读👆


【声明】内容源于网络
0
0
DF创客社区
我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
内容 1282
粉丝 0
DF创客社区 我们是专注于创新和开源硬件开发的公司——DFRobot成立的创客社区,无论你是资深创客还是小白,这里都有你的一席之地。一个人玩自己的项目,你只是寂寞宅;一群人看你玩项目,你就是技术牛!快来分享你的项目吧!
总阅读1.9k
粉丝0
内容1.3k