基于模糊PID的两轮自平衡代步小车的设计*
*基金项目:1. 企业信息化与物联网测控技术四川省院士(专家)工作站基金项目(2016WZY201);2.四川省教育厅重点科研项目(16ZA0258);3.2017年教育部产学合作协同育人项目(201702109051)
本文引用地址://www.cghlg.com/article/202302/443610.htm0 引言
两轮自平衡代步小车作为一个新兴的行业,近年来在我国迎来爆炸式增长,其行业年产值已超过了100 亿元,生产厂家也已超过了300 家[1]。与其他代步工具相比,两轮自平衡代步小车具有噪音小、操作方便简单、低碳环保等优点[2]。这种新颖的个人可移动代步工具已成功地应用于城市车站、广场、购物中心等场所,起着城市短途代步、安保巡逻、休闲娱乐等作用[3]。
两轮自平衡代步小车集姿态信息感知、电机驱动、动态平衡控制于一体。其设计难点在于车体姿态信息的准确感知与自平衡控制。车体姿态信息的感知可通过陀螺仪、加速度等传感器来实时采集,再通过互补滤波[4]、卡尔曼滤波[5]等方式能很好地获得准确的姿态信息。而自平衡控制现有传统PID、LQR、人工神经网络等控制方式。由于传统PID(比例、积分、微分控制)的参数固定,无法进行自行修正,缺乏灵活性与应变性。而两轮自平衡代步小车是一个非线性、多阶次、不稳定的系统,采用传统PID 就难以保证控制的准确性、稳定性。LQR(Linear Quadratic Regulator,线性二次型调节器)利用系统的状态方程与数学模型,由于两轮自平衡代步小车数学模型过于理想化,与实际所需相差较远,导致LQR 参数不准确,不能达到所需的控制效果[6]。人工神经网络是一种仿生物神经传导特性的控制,但其算法过于复杂,需占用微处理器大量的系统资源而影响微处理器的整体性能,在实际应用中也有很大难度[7]。
由于上述自平衡控制方式均存在某些缺陷与不足,需寻求一种全新的自平衡控制方式,而模糊控制鲁棒性强,且专门针对于非线性、不稳定的复杂系统,其算法也完全不依赖于系统的数学模型、状态空间方程等[8]。因此将模糊控制与传统PID 有机结合起来,构成模糊PID 来实现两轮自平衡代步小车的自平衡控制。
1 系统工作原理
1.1 两轮自平衡小车
两轮自平衡小车为了实现自平衡,必须使得其整个状态维持在平衡态,如图1 所示。当车体倾斜角θ 为0 时,其重心恰好落在两个车轮的轴线上,此时系统便处于自平衡点上。若这时θ 对时间的高阶导数全为0 且外界没有对系统有扰动的情况下,小车将会一直维持着这稳定的平衡态。事实上这平衡态是不稳定的,若外界有很小很小的扰动,系统的平衡态就会被破坏。只有加以控制,否则整个状态还会发散,更不会自行恢复到平衡态。因此必须使系统的各个参数一直维持在平衡态,或者在平衡态附近波动[9]。下面对两轮自平衡小车的运动状态分三类情况进行阐述。
图1 两轮自平衡小车自平衡示意图
1)静止状态。车体重心恰好垂直落在两个电机轴线上,此时小车处于平衡态,无需做任何控制。
2)前倾状态。车体向前倾斜,其重心向前偏离车轴线,此时若要恢复到平衡态,必须使车轮向前加速运动,使重心重新回到车轴线,系统保持平衡。
3)后仰状态。车体向后倾斜,其重心向后偏离车轴线,此时若要恢复到平衡态,与前倾状态相反,必须使车轮向后加速运动,使重心重新回到车轴线。
在实际运行中,两轮自平衡小车的工作状态始终在这三类状态中变换。平衡控制就是通过姿态传感器实时监测车体的倾斜角度,一旦发现倾角偏离了平衡点,即车体的重心偏离了车轴线,微处理器就会自动控制驱动电机转动方向与速度,以向前或向后、加速或减速使车体再次恢复到平衡点上。并且这个过程一直持续着,系统才能保持动态平衡。
图3 两轮自平衡小车系统设计图
1.2 模糊PID控制
模糊PID 控制是将模糊技术与传统PID 控制有机结合起来,以达到有效的控制精度。当姿态数据偏差较大时采用模糊控制,响应速度快、动态性能高;当姿态数据偏差较小时采用传统PID 控制,静态性能高,这样才能满足系统的控制精度[10]。因此模糊PID 控制比单独的模糊控制和单独的传统PID 控制都有更好的控制效果与控制精度。
2 系统设计
两轮自平衡代步小车由两轮自平衡小车与遥控器构成,二者之间通过LoRa (Long Range Radio,远距离无线电) 无线通信进行数据交换,如图2 所示。两轮自平衡小车通过陀螺仪、加速度计实时感知运动姿态信息,中央微处理器根据姿态信息控制两个独立的步进电机的方向与转速,以实现车体的平衡控制。同时,在不平衡或突然加速、减速时,通过语音发预警信号,以友情提醒使用人注意安全;而在匀速行驶时,语音可提示当前时速或播放使用人喜欢的音乐、评书、小品等节目。再者,可把当前的姿态信息通过LoRa 无线传输给遥控器。此外,也可通过LoRa 无线接收遥控器发来的控制指令。因此两轮自平衡小车由中央微处理器、陀螺仪、加速度计、步进电机、LoRa 通信、语音播报等模块等构成,如图3 所示。而遥控器可通过操作杆远程无线控制两轮自平衡小车的方向与转速,同时有LED 灯显示两轮自平衡小车的运行状态。
3.2 LoRa通信模块
LoRa 是一种基于扩频技术的低功耗、远距离无线通信方式,其特点是在同样的功耗条件下比其他无线方式传播的距离更远。采用SZ15-01 模块,其工作频段为(470~510)MHz,可实现数据透明传输,具有超高接收灵敏度,波特率为1 200~115 200 bit/s[12]。其电路设计如图5 所示。
3.3 语音播报模块
语音播报模块不仅具有播放音乐、评书、小品等使用人心情愉快,而且还具有若遇到不平衡或突然加速、减速时,友情语音提醒让使用人多注意安全。语音模块采用MX6100。该模块嵌入了串口的MP3 芯片,集成了MP3、WAV 的硬解码。通过简单的串口指令即可完成播放指定的语音文件,稳定可靠。该模块支持比特率11172-3 和ISO13813-3 layer3 音频解码,支持Normal、Jazz、Classic、Pop、Rock 等音效,24 位DAC输出,支持FAT16、FAT32 文件系统与32 G的TF/SD 卡;30 级音量可调[13],其电路设计如图6 所示。
3.4 中央处理器
中央微处理器整个系统的最核心部件,负责读取陀螺仪、加速度传感器的姿态数据,然后进行汇总、分析与处理,并控制步进电机按所需要的方式平稳转动。同时把自平衡小车的当前运行姿态数据通过LoRa 方式发送给遥控器,让遥控器及时知晓自平衡小车的当前的运行状态。此外,也通过LoRa 方式接收遥控器发来的控制指令及相关数据。因此需要功能强大的中央微处理器,为此采用STM32F103。该芯片使用高性能的32位ARM/Cortex M3 内核, 内置20KB SRAM、128KB Flash,含有2 个12bit 的A/DC、3 个通用16bit 定时器和多种串行接口,如I2C、SPI 与USART 等接口[14]。STM32F103 外接了实时时钟芯片SZ2058 以及驱动步进电机,其电路设计如图7 所示。
4 程序设计
4.1 运动姿态检测程序
运动姿态检测采用CruizCore R1370P 集成传感器,其程序部分代码如下:
void Attitude_Data(void)
{ X_ACCEL=Get_Data(ACCEL_XOUT);
Y_ACCEL=Get_Data(ACCEL_YOUT);
Z_ACC EL=Get_Data(ACCEL_ZOUT);
X_GYROS=Get_Data(GYROS_XOUT);
Y_GYROS=Get_Data(GYROS_YOUT);
Z_GYROS=Get_Data(GYROS_ZOUT);
......
}
4.2 卡尔曼滤波程序
卡尔曼滤波对陀螺仪、加速度采集的数据进行深度融合、优化处理,其程序部分代码如下:
void Kalman_Filter(void)
{
rate=(data_str[0]&0xFF)|((data_str[1]<<8)&0xFF00);
a n g l e = ( d a t a _ s t r [ 2 ] & 0 x F F ) | ( ( d a t a _
str[3]<<8)&0xFF00);
x _ a c c = ( d a t a _ s t r [ 4 ] & 0 x F F ) | ( ( d a t a _
str[5]<<8)&0xFF00);
y _ a c c = ( d a t a _ s t r [ 6 ] & 0 x F F ) | ( ( d a t a _
str[7]<<8)&0xFF00);
z _ a c c = ( d a t a _ s t r [ 8 ] & 0 x F F ) | ( ( d a t a _
str[9]<<8)&0xFF00);
sum=data_str[0]+data_str[1]+data_str[2]+data_
str[3]+
data_str[4]+data_str[5]+data_str[6]+data_str[7];
gRate=rate/100.0;
gAngle=angle/100.0;
gX_accel=x_acc;
gY_accel=y_acc;
gZ_accel=z_acc;
......
}
4.3 语音模块程序
语音模块可友情提示和播放音乐等节目,程序部分代码如下:
void Voice(void)
{Open_FileName(&File_Name)
{ for(j=0,i=0;File_Name[j];j++,i++)
{ if(File_Name[j]==’’)
{File_Name[i++]=File_Name[j];
File_Name[i]=’’;
}
wait(5);
......
}
4.4 LoRa通信程序
LoRa 通信程序部分代码如下:
void LoRa_Send_data(void)
{ unsigned char sum = 0;
sum += Send_Byte1(0x88);
sum += Send_Byte1(4);
sum += Send_Byte1(BYTE0(Left_value));
sum += Send_Byte1(BYTE1(Left_value));
sum += Send_Byte1(BYTE2(Right_value));
sum += Send_Byte1(BYTE3(Right_value));
Send_Byte_1(sum);
......
}
5 测试数据
5.1 平缓路面续航距离测试
当电池充满电后,由4 名体质量为50 kg、55 kg、60 kg、65 kg 的人员分别骑行自平衡小车在同一条相对平缓路面进行续航距离测试。当蓄电池电压下降到设定阈值并蜂鸣器报警时,停止测试。测试数据如表1 所示。
表1 平缓路面续航距离测试数据
5.2 坡度路面续航距离测试
当电池充满电后,同样由上述4 名人员分别骑行自平衡小车在大约15° 的坡度路面进行续航距离测试,测试要求与5.1 一样。测试数据如表2 所示。
表2 约15°坡度路面续航距离测试数据
5.3 陀螺仪角度数据
当自平衡代步小车处于驾驶状态时,Cruiz CoreR1370P输出的角度数据如图8 所示。
图8 Cruiz Core R1370P输出的角度数据
6 实物图片
遥控器实物如图9 所示。
图9 遥控器实物图
基于模糊PID 的两轮自平衡代步小车实物如图10所示。
图10 基于模糊PID的两轮自平衡代步小车实物图
7 结束语
基于模糊PID 的两轮自平衡代步小车采用了陀螺仪、加速度计、ARM微处理器、语音播报、步进电机控制、LoRa 通信等多种物联网技术,具有平衡稳定、续航距离远、语音预警、远程遥控等特点。
参考文献:
[1] 薛艳.代步出行唯选江昕—上海平衡车展江昕华丽出击[J].电动自行车,2016(12):20-21.
[2] 徐文凯.载人平衡车控制系统的设计与实现[D].哈尔滨:哈尔滨理工大学,2014.
[3] 张明.载人两轮自平衡车控制系统的研究与设计[D].成都:电子科技大学,2017.
[4] 梁光胜,杜梦楠,周子豪,等.基于互补滤波的两轮自平衡车姿态控制[J].测控技术,2015,34(5):72-73.
[5] 路成强,曾洁,李千振.基于卡尔曼滤波的两轮自平衡遥控小车设计[J].自动化仪表,2017,38(9):44-47,52.
[6] 行阳阳.基于模糊PD的两轮自平衡车的设计[D].太原:太原理工大学,2013.
[7] 夏玫.BP神经网络泛化能力改进研究[D].太原:太原科技大学,2009.
[8] 许亚朝.两轮平衡车控制系统的设计与研究[D].太原:太原科技大学,2016.
[9] 袁帅.两轮自平衡机器人系统的设计[D].北京:北京交通大学,2012.
[10] 辛斌,陈杰,彭志红.智能优化控制:概述与展望[J].自动化学报,2013,(11):49-54.
[11] Micro infinity Co., Ltd. Cruiz Core R1370P Technical Manual Rev1.1[M/OL].
http://www.minfinity.com/Manual/CruizCore%20R1370P%20Technical%20Manual%20Rev1.1.pdf,2015,05.
[12] 上海顺舟智能科技股份有限公司. SZ15-01 LoRa模块用户使用手册V1.0 [M/OL].
http://pmo47b088.pic37.websiteonline.cn/upload/SZ15-01LoRa.pdf,2018(6).
[13] 广州美芯电子科技有限公司.MX6100-16P模块使用手册V1.2[M/OL].
http://www.mxic168.com/sczs/hby/mp31/123.html.
[14] STMicroelectronics Co., Ltd. STM32F103t8ST usermanual [M/OL].
https://www.st.com/resource/en/datasheet/stm32f103t8.pdf,2013,08.
(本文来源于必威娱乐平台
杂志2023年2月期)
评论