平衡板电路设计指南
Posted JeckXu666
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了平衡板电路设计指南相关的知识,希望对你有一定的参考价值。
平衡板电路设计指南
一、功能分析
使用 STM32F103RCT6 芯片作为主核心,搭配多个电子模块设计一款测控系统,装载于外卖箱结构上,实现外卖箱自平衡。在外卖箱里面有一个平台,它会随着外卖箱的颠簸而自动调节,保持平稳。具体实现采用了IMU模块固定在平台上,通过中央处理器实时读取模块的角度信息,根据当前角度信息与平衡时角度信息的差值,带入到平衡算法当中,经过算法计算,算出每一个舵机的调整值,再输出到舵机上,舵机进行角度调整,让平台始终稳定在水平位置,实现防泼洒功能,本项目中使用各个模块及其连接图如下
实现平衡效果,整个系统需要的硬件组成如下:
-
自制PCB
自制PCB使用STM32F103C8T6为主控芯片,设计外围电路,将陀螺仪、按键、LED灯、PWM接口、ADC接口、电压电路集成到一张PCB电路板上,为软件运行提供稳定的硬件环境
-
压力传感器
压力传感器使用压敏电阻,经过运算放大电路放大电压信号,方便PCB上的单片机读取
-
舵机
舵机为平衡板位置调整的执行单元,通过PWM精准驱动,维持系统角度平衡
-
机械结构
机械结构使用亚克力做平衡板载体,安装PCB电路板以及传感器和舵机,使系统可以进行数据获取以及位置调整
-
电池
采用3S电池供电,电压稳定,可充电,实现循环使用
二、原理图设计
原理图设计:
三、PCB设计
电路布局:
PCB布线图:
正面:
反面:
PCB三维模型:
四、程序设计
程序设计使用STM32CubeMX代码生成软件结合MDK IDE进行开发,在CubeMX中配置芯片外设以及FreeRTOS操作系统接口,CubeMX配置如下:
基于CubeMX生成的代码,在MDK软件中编写控制逻辑,使用多任务编程,编写出串口任务、LED和按键任务、ADC采样任务、平衡任务,每个任务的实现功能如下:
-
串口任务:串口任务使用到单片机的串口1和串口2,串口1用于接受成品陀螺仪模块解算出的姿态角数据,获取平衡板的角度状态,便于带入PID计算,串口2用于转发串口1接受到的姿态数据,发送到后台用于进一步处理
-
LED和按键任务:LED和按键任务用于读取按键的状态以及显示当前系统是否正常运行,按键按下后可以切换是否开启平衡功能,LED周期性闪烁方便用户确定系统是否正常运行
-
ADC采样任务:ADC采样任务使用单片机的内置ADC外设,采集压力传感器返回的电压值,与我们设定的压力值进行对比,当压力大于设定值时,即认为检测到重物,开启板子的平衡功能
-
平衡任务:平衡任务在获取到姿态角的更新信息后会对他进行PID算法运算,并将得出的值输出到PWM上,控制舵机进行姿态调整,维持板子的平衡
代码流程图如下:
五、最终结果
放一个旧版的硬件测试视频,看起来不明显,但新版本的效果是非常好的,可惜最新版本的机器没有拍视频,机器不知道去哪了,大致了解一下即可
以上是关于平衡板电路设计指南的主要内容,如果未能解决你的问题,请参考以下文章
Xilinx FPGA开发板里的BRAM,对于小设计一般怎么使用
LVDS原理及设计指南--以及衍生的B-LVDS-M-LVDS--CML-LVPECL电平等