项目简介
本项目实现了一个旋转倒立摆控制系统,通过Raspberry Pi运行PID控制器,结合ARM Cortex M3(Arduino Due)控制步进电机,以此控制旋转倒立摆的角度和旋转速度,让不稳定的倒立摆保持直立状态。借助SPI通信实现Raspberry Pi与Arduino Due的数据交互,利用无线IMU测量摆的角度。
项目的主要特性和功能
- 双控制器协作:采用两个PID控制器,分别控制摆的角度和旋转速度,通过间接控制角度稳定旋转速度。
- 多硬件协同:Raspberry Pi作为主控执行PID算法,Arduino Due负责电机控制,无线IMU测量角度,各硬件协同实现系统功能。
- 高效通信方式:Raspberry Pi与Arduino Due通过SPI通信传输数据,IMU通过蓝牙与Raspberry Pi通信,保障数据实时传输。
- 微步控制电机:步进电机采用1/16微步模式,可在软件中灵活更改步进模式,实现精确控制。
- 实时监测与调整:系统实时监测摆的角度和旋转速度,根据PID算法实时调整电机加速度,确保摆的平衡。
安装使用步骤
硬件连接
- Raspberry Pi与Arduino Due:连接MISO、MOSI、SCLK、SS和GND引脚,使用SPI模式(0,0),8位数据传输,先传最高有效位。
- 步进电机驱动器:将步进电机通过四个引脚连接到驱动器,用独立电源为电机供电,设置驱动器为1/16步进模式。连接Arduino Due与驱动器控制电机方向和步进,为驱动器逻辑部分提供3.3V电源。
- Raspberry Pi与IMU:安装蓝牙工具,配对Raspberry Pi与BlueIMU设备,建立蓝牙连接。
软件准备
- Arduino Due:安装GCC ARM嵌入式工具链、Atmel Software Framework(ASF)和BOSSA flash工具。
- Raspberry Pi:安装BCM2835库用于SPI通信。
代码编译与上传
- Arduino Due:设置Makefile中的变量,使用make命令编译和链接程序,通过BOSSAC工具将程序烧录到Arduino Due。
- Raspberry Pi:进入
pid_controller
目录,使用make命令编译程序。
运行与调试
- 建立Raspberry Pi与IMU的蓝牙连接。
- 启动PID控制器程序,手动将摆置于直立位置,等待系统接管控制。
注意事项
控制器程序在摆角度大于90度时会停止电机并终止,因此启动前需手动将摆置于直立位置并保持。
许可证
此项目代码使用Apache 2.0许可证。项目中的代码部分包含对BlueIMU项目的引用,该项目由Frank Duerr开发。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】