基于STM32和MPU-6050的两轮自平衡小车系统设计与实现

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现,第1张

引言

两轮自平衡小车系统类似于倒立摆系统,具有多变量、非线性、强耦合等特点,是研究各种控制方法的理想平台。两轮自平衡小车系统的控制过程是微控制器对姿态检测传感器编码器等采集的数据进行分析处理,计算出使系统恢复平衡的实时控制量,从而驱动电机实现系统的动态平衡。

针对小车系统的复杂性,本文提出了将卡尔曼滤波算法和双闭环PID控制算法相结合的方法,既利用卡尔曼滤波算法对MPU-6050传感器采集的倾斜角度和角速度数据进行融合,得到小车平衡姿态的最优估计值,又利用以姿态信息、速度为反馈控制量构成双闭环PID控制算法,再结合采用高性能STM32F103C8T6作为主控制器,从而提高两轮小车系统稳定性和抗干扰能力。

1、系统的硬件设计

系统的硬件电路结构框图如图1所示,其硬件电路主要由主控制器模块、姿态检测模块、直流电机驱动模块、编码器及电源模块等几部分构成。电源模块负责系统各个模块控制电路的电源。主控制器模块是系统的控制核心,用来接收传感器模块采集的数据,对数据进行处理及运算,将控制信号输出给直流电机驱动模块。姿态检测模块实时地对小车角速度及角加速度进行采集。直流电机驱动模块负责将主控制器输出的PWM信号转换为控制信号驱动2个直流电机的转速和方向。编码器负责测量直流电机的速度和方向,将测量数据反馈给主控制器,从而形成闭环控制。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现,基于STM32和MPU-6050的两轮自平衡小车系统设计与实现,第2张

图1  系统的硬件电路结构框图

1.1、电源模块

本系统选用的直流电机工作电压为12V,因此采用三节3.7V可充电电池构成12V直流电源。但STM32主控制器和MPU-6050需要的是3.3V直流电源,因此选用LM2596SDC-DC降压模块得到3.3V电源。

1.2、主控制器模块

本系统选用意法半导体公司的STM32F103C8T6作为主控制器,该控制器是一种基于Cortex-M3内核的32bCPU,最高工作频率为72MHz,片上集成32~512kB的Flash存储器,6~64kB的SRAM存储器。片上集成了SPI,I2C和USART等通信接口,方便对MPU-6050姿态检测传感器的数据进行采集。含有7个定时器,可输出多路PWM信号使得电机驱动模块获得稳定的PWM波形。

1.3、姿态检测模块

本系统中姿态检测模块选用的是美国InvenSense公司的MPU-6050,MPU-6050为全球首例整合性6轴运动处理器,整合了3轴陀螺仪和3轴加速度计,能够准确的对小车的姿态进行实时检测[4]。该处理器的角速度感测范围为±250、±500、±1000与±2000°/s,加速度感测范围为±2g、±4g、±8g与±16g,加速度感测范围可通过编程来控制[5]。MPU-6050可在不同电压下工作,VDD供电电压为(2.5±0.125)V、(3.0±0.15)V或(3.3±0.165)V,本系统中为MPU-6050提供的是3.3V直流电源。MPU-6050模块的电路如图2所示,本系统中MPU-6050作为从机使用,使用SDA和SCL端口和主机STM32进行通信,MPU-6050检测的数据经过内置的16位AD转换器进行转换,然后将16位数字量通过I2C总线接口发送给主机。

基于STM32和MPU-6050的两轮自平衡小车系统设计与实现,基于STM32和MPU-6050的两轮自平衡小车系统设计与实现,第3张

图2  MPU-6050模块的电路

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2631477.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存