基于STM32芯片的自平衡机器人

2022-04-22 08:07毕亚楠田江涛曾家明郭宵冉王桥左欣游顺才杨世龙李洋
电子测试 2022年6期
关键词:陀螺仪霍尔机身

毕亚楠,田江涛,曾家明,郭宵冉,王桥,左欣,游顺才,杨世龙,李洋

(贵州师范学院,贵州贵阳,550000 )

0 引言

近年来,自平衡机器人在移动路径和方向上更加的灵活,更加容易被控制,并且简化了车体结构,为提供新的功能提供了空间。该机器人驱动功率小,属于环保型车的一种新模式。在自平衡机器人的钻研上,国内以及国外都取得了一定的成就,瑞士联邦工业大学的Felix Grasser等人成功研制出了利用DSP控制的两轮自平衡机器人;从国内的研究成果上看,我国的中国科学技术大学自主研制了一款自平衡电动代步车,该款自平衡电动代步车其实就是是一种两轮平衡车。在机器人的各种门类中,轮式机器人的制作成本低,并且结构简单,容易操作,有极高的研究价值。

1 系统总体设计方案

自平衡机器人由两个车轮和机器人机身组成,机身是连接着两个车轮的长方体结构,机身下方安装机器人的控制系统以及电池等电路设备,机身上方安装拓展性的功能模块。下图是机器人的系统总设计。

图1 系统总体设计图

主要是以PID算法为核心,使用陀螺仪模块获取当前机器人的姿态,使用霍尔传感器获取到机器人当前车轮速度,最后将反馈回来的姿态以及速度做PID算法,最后得到最佳PWM值的输出,使机器人的姿态更加稳定。其次机身上方安装了K210开发板做人脸识别功能。主要使用K210开发办来检测人的面部特征,录入、识别人脸这两个功能来对我们索要达到的效果进行一个监测,进一步对人脸进行精确识别。

2 系统硬件设计

自平衡机器人的硬件模块主要有STM32F103C8T6芯片、霍尔传感器、MPU6050陀螺仪模块、K210开发板等。

2.1 主控芯片

自平衡机器人的控制基础是STM32F103C8T6芯片。该款芯片是一种基于Cortex-M3内核的32位微控制器,芯片的硬件通过LQFP48进行封装,该芯片具有封装体积小、处理速度快、功率损耗低等优点[1]。该芯片通过2.0V~3.6V的直流电压供电,总线宽度为32位,并有DMA、电机控制PWM等外围设备。

2.2 驱动电路

直流减速电机是机器人的动力来源。在普通直流电机的基础上,加上齿轮减速箱就构成了我们所需的直流减速机。齿轮减速箱会为我们提供较低的转速以及比较大的力矩。通过齿轮箱减速比的不同,会给我们提供相应不同的力矩和转速。有了直流减速机我们就能实现机器人的前进、后退以及转向等操作。由于我们的直流减速电机的供电电压是12V,但STM32单片机的电压和电流都达不到要求,所以我们使用了电机驱动TB6612。使用这款驱动,不仅可以驱动控制我们的直流减速电机,而且单片机还可以输出相应的pwm(脉冲宽度)给驱动,从而对直流减速电机的速度进行控制。

2.3 姿态传感电路设计

为使保持机器人的平衡,我们选择了集成了三轴陀螺仪和三轴加速度计的MPU6050模块。该模块解决了组合陀螺仪和加速器时间轴有误差的问题,减少了很多的封装空间。MPU6050采用自带的数位运动处理器DMP,通过主I2C接口,以单一数据流的形式,直接读取完整的9融合验算数据并向应用端输出。

MPU6050中的陀螺仪能够直接测量某一方向轴上的旋转角速度,然后通过积分方式转换成旋转角度,其在短时间内能够得到很好的测量结果,并且受外界的震动干扰因素影响较小[1]。对于MPU6050中的加速度计,其能够直接测量某一方向上的加速度,在只受重力影响的环境下,通过测量重力加速度在某一方向上的分量,经过简单的三角函数运算,就可以得到MPU模块的角度变化[1]。由于陀螺仪受震动因素影响小,而加速度计不存在累计误差,所以通过两者的采样数据进行滤波后便能得到准确的角度采样值。

我们选取了霍尔传感器进行机器人的速度检测。霍尔传感器一种磁场传感器,其基础是霍尔效应[2]。霍尔传感器结构比较牢固,体积较小,重量较轻,功耗小,并且精度高,适用于工业和家电应用中作为固态电子开关。利用测磁技术输出数字信号的特点将霍尔传感器应用于测速,其原理是利用霍尔效应将压力、拉力和位移等变量转换为霍尔元件周围的磁场变化,是一种磁场传感器。当机器人往前或是向后走的时候,我们用霍尔传感器检测机器人车轮的速度,单片机得到速度数据后,用该数据来做PID运算,最后也是以pam的方式输出来对电机进行控制,使得机器人更加地稳定。

2.4 显示模块设计

自平衡机器人采用了0.96寸OLED显示屏作为机器人的显示器,可以显示陀螺仪检测到的数据。OLED与LCD技术相比较来看,屏幕厚度更薄,重量更加轻,具有广视角。所以我们采用了OLED作为我们机器人的显示屏幕。用来显示MPU6050所检测到的各种数据,让人们能够明确地知道机器人的状态。

2.5 人脸识别模块设计

对于我们的自平衡机器人,除了自平衡之外,我们还增加了人脸识别的功能。自平衡机器人使用K210芯片作为主控模块,它内部包含了KPU,内置卷积、批归一化、激活以及池化运算单元,可对人脸或物体进行实时监测。

3 系统软件设计

3.1 自平衡机器人平衡控制机理

自平衡机器人的机身只有两个轮子,车轮共轴着地,独立驱动[3]。当机身倾斜时,姿态传感器检测到机身倾斜信息,控制器接收信号,输出控制量控制电机向倾斜方向的同方向运动,抵消倾斜力矩,从而使机身保持平衡。

3.2 PID软件设计

(1)PID算法

PID算法是我们研究所需的核心。PID控制算法主要是对被控制对象当前的值进行数据采集,与设定的目标值进行偏差计算,对这个偏差进行PID计算,整定好PID参数,最后输出整定好的量来对被控制对象进行控制[4]。当机身发生倾斜时,系统通过PID控制算法,将机身角度、机身角速度、机身位置等数据进行融合,输出PWM信号驱动电机,就会使机器人实现自平衡[5]。

图3 PID算法功能实现

(2)PD控制

自平衡机器人若想在水平线上能够保持相应的平衡,就需要平衡机器人在两轮共同着地时,使机身尽可能地倾斜到滚动轴方向;若是想保持机身的平衡,当机身发生倾斜时,机身要向倾斜的方向向前移动才能使机身保持平衡[7]。PD控制算法的主要效果就是让自平衡机器人的机身保持平衡。

P(比例)控制算法是对当前的误差进行一个比例增益。首先我们给定一个设定值(SetAngle),MPU6050测量反馈出的测量值(Angle),角度误差值(ErrorAngle)。

ErrorAngle=Angle-SetAngle;此时比例向结果为(RealAngle),RealAngle=Kp*ErrorAngle(Kp 为比例系数)。

D(微分)控制时K时刻角度差值与K-1时刻角度差值的差值进行一个增益,主要的作用是作为一个超前调节。这里K与K-1角度差值的差值是角度微分,为角速度,而MPU6050陀螺仪模块可以直接测量到此时的角速度(gyro_Y)。此时微分项结果为out=Kd*gyro_Y(Kd为微分系数)。

(3)PI控制

平衡器人的速递控制是通过正反馈的方式来实现,使得输出起到的作用与输入相同;当小车向前倾斜,电机此时要获得更大的速度使得小车向前跑才能让小车趋于稳定,从而达到平衡的效果。

4 总结

测试结果表明,自平衡机器人在通电后能够立刻达到平衡状态,轻轻推动即可恢复平衡,具有低功耗,方便,环保,高效等特点。基于STM32单片机的自平衡机器人由于控制系统复杂多变,综合性强,具有较高的科技含量。在未来的很长时间,自平衡机器人将会在移动机器人领域里实现更好的控制系统的应用。

猜你喜欢
陀螺仪霍尔机身
史蒂文·霍尔:用光重新定义建筑
基于EMD的MEMS陀螺仪随机漂移分析方法
基于霍尔三维结构的试验鉴定理论体系研究
远不止DCI色域,轻量级机身中更蕴含强悍的亮度表现 光峰(Appptronics)C800
Augmented Reality comes to the classroom
我国著名陀螺仪专家——林士谔
“蓝天王国”奇遇记(十一)——陀螺仪
微机械陀螺仪概述和发展
霍尔电流传感器技术综述
离子推力器和霍尔推力器的异同