平衡板电路设计指南

平衡板电路设计指南

一、功能分析

使用 STM32F103RCT6 芯片作为主核心,搭配多个电子模块设计一款测控系统,装载于外卖箱结构上,实现外卖箱自平衡。在外卖箱里面有一个平台,它会随着外卖箱的颠簸而自动调节,保持平稳。具体实现采用了IMU模块固定在平台上,通过中央处理器实时读取模块的角度信息,根据当前角度信息与平衡时角度信息的差值,带入到平衡算法当中,经过算法计算,算出每一个舵机的调整值,再输出到舵机上,舵机进行角度调整,让平台始终稳定在水平位置,实现防泼洒功能,本项目中使用各个模块及其连接图如下

image-20211219211547618

实现平衡效果,整个系统需要的硬件组成如下:

  • 自制PCB

    自制PCB使用STM32F103C8T6为主控芯片,设计外围电路,将陀螺仪、按键、LED灯、PWM接口、ADC接口、电压电路集成到一张PCB电路板上,为软件运行提供稳定的硬件环境

  • 压力传感器

    压力传感器使用压敏电阻,经过运算放大电路放大电压信号,方便PCB上的单片机读取

  • 舵机

    舵机为平衡板位置调整的执行单元,通过PWM精准驱动,维持系统角度平衡

  • 机械结构

    机械结构使用亚克力做平衡板载体,安装PCB电路板以及传感器和舵机,使系统可以进行数据获取以及位置调整

  • 电池

    采用3S电池供电,电压稳定,可充电,实现循环使用

二、原理图设计

原理图设计:

20210817214129

三、PCB设计

电路布局:

20210817214039

PCB布线图:

正面:

20211219212116

反面:

20211219212123

PCB三维模型:

20211219212139

四、程序设计

程序设计使用STM32CubeMX代码生成软件结合MDK IDE进行开发,在CubeMX中配置芯片外设以及FreeRTOS操作系统接口,CubeMX配置如下:

图形用户界面  描述已自动生成

基于CubeMX生成的代码,在MDK软件中编写控制逻辑,使用多任务编程,编写出串口任务、LED和按键任务、ADC采样任务、平衡任务,每个任务的实现功能如下:

  1. 串口任务:串口任务使用到单片机的串口1和串口2,串口1用于接受成品陀螺仪模块解算出的姿态角数据,获取平衡板的角度状态,便于带入PID计算,串口2用于转发串口1接受到的姿态数据,发送到后台用于进一步处理

  2. LED和按键任务:LED和按键任务用于读取按键的状态以及显示当前系统是否正常运行,按键按下后可以切换是否开启平衡功能,LED周期性闪烁方便用户确定系统是否正常运行

  3. ADC采样任务:ADC采样任务使用单片机的内置ADC外设,采集压力传感器返回的电压值,与我们设定的压力值进行对比,当压力大于设定值时,即认为检测到重物,开启板子的平衡功能

  4. 平衡任务:平衡任务在获取到姿态角的更新信息后会对他进行PID算法运算,并将得出的值输出到PWM上,控制舵机进行姿态调整,维持板子的平衡

代码流程图如下:

image-20211219211924106

五、最终结果

放一个旧版的硬件测试视频,看起来不明显,但新版本的效果是非常好的,可惜最新版本的机器没有拍视频,机器不知道去哪了,大致了解一下即可

请添加图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>