基于STM32的智能循迹小车设计
2019-09-10于雷支语睿朱一凡
于雷 支语睿 朱一凡
摘要:为了满足高校机器人相关课程教学和日常训练的要求,采用STM32嵌入式芯片设计了一款智能循迹小车.该小车通过光敏传感器采集跑道的数值,结合PID经典算法,实现循迹的功能,同时又预留了一些端口,可以实现测距、避障以及无线传输等功能.实践表明,该小车具有低功耗、低成本、高稳定性、易于扩展等特点,能够满足教学、训练及一些比赛的需求.
关键词:循迹;智能小车;PID算法
中图分类号:TP273;TP212 文献标识码:A 文章编号:1673-260X(2019)04-0108-03
0 引言
智能循迹小车是一个融合了传感器技术、自动控制技术、无线通信技术及人工智能技术于一身的综合系统.智能寻迹小车,也称为轮式机器人,在每年的机器人比赛中都是不可缺少的一个赛项,从中也体现了高校在电子设计、自动化控制等多方面的水平,因此,除了用于参加比赛以外,在平时的单片机、自动控制等学科的教学过程中也是一项必不可少的训练项目.目前,智能循迹小车大多数采用的是51系列单片机进行设计的,功能简单,也有采用MSP430、PIC、AVR系列单片机,在功耗和性能上都有很大的改进,但在占用指令空间大以及资料有限等方面也存在着不足;综合考虑,本文采用目前主流的STM32系列嵌入式芯片作为控制器,设计了一款具有循迹、测距、避障以及无线传输等功能的智能循迹小车.
1 整体设计
智能循迹小车控制系统主要包括控制器模块、电源模块、循迹模块、避障模块、电机控制模块、无线通信模块等,如图1所示.在控制系统中,控制器模块根据循迹模块对路线的采集数据进行分析处理,通过电机驱动模块控制电机的正反转,并由舵机实现车子的方向控制,为了能够实现避障,采用了超声测距模块对障碍物的距离进行测量,另外可扩展光电检测模块,实现对接力棒的检测,从而实现赛事中两车接力的功能.
2 硬件设计
2.1 主控制模块
本文选用STM32F103VET6芯片作为主控制器,该主控器是基于Cortex-M3内核的32位处理器,最高工作频率可以达到72MHz,具有高性能、低成本和低功耗等特点;STM32F103VET6片上不仅集成了256k~512k字节的闪存程序存储器、64k字节的SRAM存储器、3个12位模数转换器和2通道12位数模转换器,还具有丰富的定时器和通信接口等资源,特别是多达6路的PWM输出,为舵机和电机驱动模块提供了方便.设计中,通过PC0~PC4和PA0~PA5引脚读取循迹模块采样值;PB8和PB9输出PWM(Pulse Width Modulation)信号,PB8控制舵机转向,PB9用作接力赛中接力棒的夾持控制;PD8、PD9、PB12~PB14控制无线模块的数据传输.
2.2 电源模块
电源模块采用12V电源对直流电机供电,考虑到系统中传感器和STM32芯片的供电,还提供5V和3.3V两种电压,电路图如图2和图3所示.5V电压采用PWM控制降压转换芯片AX3111进行降压处理,AX3111芯片不仅具有低纹波、高效率和出色的瞬态特性,还具有软启动功能、限流功能、短路保护功能和过热保护功能.3.3V电压采用AMS1117芯片进行转换,加上磁珠及电容抑制了电源线上的高频噪声和尖峰干扰.
2.3 电机驱动模块
电机驱动模块采用BTN7960搭成H桥驱动电路,可以提供高达47A的驱动电流.BTN7960是应用于电机驱动的大电流半桥高集成芯片,它带有一个P沟道的高边MOSFET、一个N沟道的低边MOSFET和一个驱动IC.电路图如图4所示,其中INH引脚为高电平,使能BTN7960.IN引脚用于确定哪个MOSFET导通.IN=1且INH=1时,高边MOSFET导通,OUT引脚输出高电平;IN=0且INH=1时,低边MOSFET导通,OUT引脚输出低电平,两个芯片的输出端分别接电机的两极,即J2接口,通过左右两边的电平高低来控制电机的正反转.另外,SR引脚外接电阻的大小,可以调节MOS管导通和关断的时间,具有防电磁干扰的功能.
电机的速度采用PWM脉宽调制技术进行控制,stmPWM信号频率为1kHz,固定不变,通过控制占空比来调节车速,由函数Speed_Set进行设置实现.方向舵机及机械手的控制也是采用PWM来完成的.另外,方向舵机及机械手的控制也是采用PWM来完成的.PWM信号产生频率为50Hz,控制舵机的转向,实现小车方向控制或机械手的抓取功能.
2.4 循迹模块
为适应不同跑道、不同场地的需求,循迹电路采用抗干扰能力强的光敏对管进行设计.由于设计的智能小车速度较快,在小车的前端并排放置11组光敏对管传感器对跑道数据进行采集,每组传感器包括LED发射电路和光敏电阻接收电路,LED发射电路产生白光,经过场地反射后,通过光敏电阻获取一定的模拟电压值,该电压值经过AD转换由STM32直接读取分析,由此来判别小车在跑道上的位置.
2.5 无线通信模块
无线通信模块采用nRF24L01射频芯片进行设计,该芯片支持2.4GHz的全球开放ISM频段,GFSK调制,最大发射功率为0dBm,传输速率高达2Mbps,抗干扰能力强,功耗低,125个信道可供选择,完全满足多点通信及调频通信的要求.
3 软件设计
智能循迹小车的软件设计主要包括循迹、方向舵机的控制、小车速度的控制以及避障功能等,图6所示为两辆接力小车的流程图,(a)为前车流程图,(b)为后车流程图.
3.1 循迹
循迹是设计的重要组成部分,直接决定着后期数据处理的准确性.光敏对管传感器进行数据采集.
经过AD转换后存储在Location_Data[11]数组中,通过与Set_Location[11]数列中对应的阈值进行比较,确定相应传感器的是否采集到跑道,不同的传感器对应于不同的权值,具体如表所示.
Location_Data[11]={0,0,0,0,0,0,0,0,0,0,0};
Set_Location[11]={505 , 541 , 600 , 422 , 586 , 500, 507 , 370 , 459 , 520 , 498 };
void Lock_BlackLine( )
{
for(i=0; i<11; i++)
if(Location_Data [i]< Set_Location [i])
{
Cnt++;
Loc_Para+=5-i;
}
if(Cnt>0)
{
if(Cnt>4)
{
Cross_Line_Cnt++;
if(Cross_Line_Cnt>CROSSLINE_Time)
{
if(Cross_Line_Flag!=1)
Cross_Line++;
G_Black_Line_Location=(float)(Location_Parameter/L_Location_Cnt);
Cross_Line_Flag=1;
Cross_Line_Cnt=0;
}
}
else
{
Cross_Line_Cnt=0;
Cross_Line_Flag=2;
G_Black_Line_Location=(float)(Location_Parameter/L_Location_Cnt);
}
}
else if(L_Location_Cnt==0)
{
G_Black_Line_Location=0;
Cross_Line_Flag=0;
}
Location_Parameter=0;
L_Location_Cnt=0;
}
3.2 PID(Proportion-Differential-Integral)控制
智能車的设计过程中主要是根据采集到的数据实现方向的控制和速度的控制,PID控制算法在智能车的控制方面是应用最广泛、控制效果最理想的一种控制算法.
PID控制算法中,输出由比例参数P、积分参数I和微分参数D三个参数决定,公式为:
输出=P*误差+D*误差的变化+I*误差的积分
但在智能车方向控制方面,积分参数I意义不大,因此,舵机控制的设计中主要由比例参数P和微分参数D来计算出pid_out的值,为了防止超调而损坏舵机,一般要对pid_out的值进行限幅,获得的pid_out的值经过简单处理可以用来调整方向舵机的转角和小车的速度.
代码如下:
int error_d, last_loc, integral_err;
int P, D, pid_out;
void pid_value ( )
{
error_d=loc-last_loc;
pid_out=P*loc+error_d*D;
}
if(pid_out>PID_MAX) { pid_out= PID_MAX; }
if(pid_out< PID_MIN) {pid_out= PID_MIN; }
小结
基于STM32的循迹小车集教学、训练、比赛为一体,实现了循迹、避障、接力以及数传等功能;在实践教学中,预留的扩展接口能够开发学生的动手能力,可扩展性强;同时,循迹采用PID算法控制,稳定性强,在最近两年的安徽省机器人比赛中获得了优异的成绩.实践证明,该小车功耗低、稳定性高、易于扩展、价格便宜,能够满足教学、训练及一些比赛的需求.
参考文献:
〔1〕喻伟闯,刘世焯,钱楷,等.基于STC89C52单片机的自动泊车智能小车的设计与实现[J].湖北民族学院学报(自然科学版),2017,35(02):195-197.
〔2〕索南尖措,杨建,周欢欢,等.基于STC89C52单片机的智能小车的设计[J].信息安全与技术,2016,7(04):67-69.
〔3〕唐琳.基于单片机的智能消防灭火车模型的原理及设计[J].赤峰学院学报(自然科学版),2013,29(24):23-24.
〔4〕吕闪,金巳婷,沈巍.基于STM32的循迹避障智能小车的设计[J].计算机与数字工程,2017,45(03):549-552+588.
〔5〕冷雪锋.基于PID的STM32智能小车机器人的设计[J].自动化技术与应用,2016,35(11):122-127.
〔6〕张锴,李世光,朱晓莉,等.基于STM32的智能巡线小车[J].电子测量技术,2012,35(02):105-107.