基于CORTEX-M3内核的智能平衡车设计

2020-10-26 02:15孙二威吴振磊李笑笑王轩
甘肃科技纵横 2020年6期

孙二威 吴振磊 李笑笑 王轩

摘要:本文设计了一款基于CORTEX-M3内核的智能平衡车,其主控芯片为STM32 F103C8。利用MPU6050模块获取小车的角速度和加速度,据此感知小车的运行姿态,通过PID算法减小小车的平衡误差,利用电机驱动让小车进行前进后退等操作,并且通过调整姿态来保证加速度计在一个稳定的范围。该小车可以通过红外循迹或者手动遥控来进行移动,实时监测当前环境的光强度值和温度值,并通过蓝牙模块发送到手机端应用程序,使用户可以方便的获取所需数据信息。本设计采用模块化设计,设计难度适中,成本较低,易于维护,使用方便。

关键词:CORTEX-M3;STM32;智能平衡车;

中图分类号:TP273

1   引言

近几年,随着智能设备的高速发展,人工智能和智能化等词汇愈发频繁的出现在我们的视野中。智能设备不论在国内还是国外都备受关注,在家居、办公、旅行、运动等诸多方面应用广泛。而智能平衡车更是可以方便人们的生活或者工作,例如目前已经有快递公司采用可循迹的智能车进行包裹的配送,也有餐饮行业用小车来替代人工传菜。此外,智能小车还可以应用在地质勘测、人员搜救,尤其是那些空间狭小,人员不方便进入或者有较大危险性的环境。

两轮平衡车,在设计上一方面节约了制造成本,另一方面减少了小车体积,使其更轻便,行动更快捷,功耗更低,并且在后期的检修和维护上也大大降低了成本。在工作时,小车既可以根据设定的路线进行自动循迹,也可以让用户通过手机控制车身移动的方向和距离,同时可以完成相关数据的采集并实时发送到指定设备上。

2   基本控制要求

本小车基于CORTEX-M3内核,主控芯片采用STM32 F103C8。在给小车通电以后,整车首先进行加电自检平衡,然后通过MPU6050实现加速度和角速度的采集计算,并将读取到姿态数据发送到主控芯片,主控芯片通过检测与之相连接的引脚电平的变化并采用PID算法把参数调节在一个固定范围内,通过电机驱动模块使小车前进后退,并以此达到一个稳定的状态,也就是我们能够观察到的“平衡”。

车身平衡之后开始运行其他模块,车身会稳定在一个范围内,等待用户发送指令来进行下一步的工作,小车指令的发送是通过APP INVENTOR这个软件来实现。当APP里面的按钮被按下时,会发送一串字符串到主控芯片,主控芯片将当前信息与程序函数预设值进行对比,如果接受的数据和函数里面定义的条件相符合,主控芯片就会发送指令给对应的模块进行工作,从而对小车当前的运动状态进行调整和修改。平衡小车的加速度和角速度都是基于闭环反馈量的PID算法来完成调节的,其余模块都是和单片机进行直接交互信息的,当光强模块和温度传感器模块获取到数据之后,将该数据值转存,再通过HC-05蓝牙通信发送到APP上显示出来。此外,用户还可以根据平衡小车上面的OLED屏幕来观察检测到的数据值和其他参数。

根据控制要求,该小车主要由控制模块、通信模块、显示模块、电机模块、传感模块和软件APP等组成,其整体电路结构框图如图1所示。

3   单元电路分析与实现

3.1 控制模块

STM32F103C8 MCU内核是32 位的,其工作频率是8MHz,引脚数通常为48个,本设计中使用的最小系统板引脚数为34个,相比于传统的51单片机扩充了许多功能,价格缺相差不多,因此整体性价比较高。此外,下载和仿真运行也更加方便,其外围电路都已集成在最小系统板上且不需要外部晶振,进一步降低了成本,而且存储空间比较大,用来设计实现本平衡小车最为合适。

3.2 通信模块

本设计中采用的蓝牙模块是HC-05,它基于蓝牙2.0的传输技术。该蓝牙模块是通过串口进行信息的发送和接收,串口的通讯方式我们选择的是透明传输,也就是串口透传通信方式,在传输的时候不需要再去处理数据。当蓝牙模块开启之后会自动产生一个通道,只需打开手机蓝牙进入这个通道,双方就可以进行匹配通信。完成蓝牙连接后,即可以通过Printf函数将模块接受到的数据传输到手机APP端。

此蓝牙模块的有效工作距离为10米左右,考虑到我们的两轮平衡小车并不需要执行超远距离的工作,因此采用这款型号的模块更加经济实惠,另外,它的指令和功能相比较于其他蓝牙模块来说更加的丰富,可实现的功能更多,稳定性更好。

3.3 显示模块

两轮平衡小车的尾部配置有OLED液晶显示模块,我之所以没有选用LCD液晶显示屏幕,是因为二者相比较而言,OLED屏幕性价比更高,使用安装更加便捷,在后期设备的维护,更换方面更为经济。同时,我们也不需要通过液晶显示屏幕来显示太多的数据,这里显示的数据主要是为了用户观察方便,无需频繁打开手机或者蓝牙连接设备来进行观察,对于OLED,它的电路焊接起来也是相比较LCD更加方便的。

3.4電机模块

电机模块中,电机驱动芯片的型号是TB6612FNG,该模块的PWM波支持频率最高可以达到100KHz,可以同时驱动两个电机进行工作。电机驱动模块提供了四种工作模式,正转、反转、制动、停止,对于MPU6050来调节小车的平衡,也是足够而且最为合适的。模块总共有16个引脚,一方面可以足够实现平衡小车的工作,另一方面不占用底板资源,不给平衡小车造成冗余负载。电机驱动模块通过PID算法调节电机的转动速度及方向,达到小车的平衡。该芯片已经通过了大量的实验证明,即使电机转动速度很快,该芯片依旧可以保证工作的稳定性和连续性,不会干扰平衡车的正常工作。

3.5 加速度计模块

加速度计选用的是MPU6050六轴传感器模块,也可以称之为角速度加速度计。小车的平衡主要是通过该模块来感知小车前倾后仰的加速度来做出反馈,内置陀螺仪来测算平衡小车的倾斜角度,加速度传感器用来控制速度环来使小车在一个稳定的范围内进行姿态的调节。之所以称之为六轴传感器,是因为它的内部包含了XYZ轴陀螺仪和XYZ轴加速度传感器一共六轴,加上它的其他引脚,一共有八个引脚焊接在该模块的同一侧,减少了它的安装空间,其原理图如图2所示。