基于单片机的自动泊车系统设计
2021-04-06刘梦莹李泱科朱倚娴
周 玲,高 怀,刘梦莹,李泱科,朱倚娴
(1.运城学院物理与电子工程系,山西运城 044000;2.南通大学机械工程学院,江苏南通 226019)
随着我国汽车数量逐年增多,泊车位的数量却跟不上其增长的速度,日益拥挤的泊车环境要求人们对汽车的泊车技术更加地娴熟,这就更加重了人们工作之外的紧张情绪。因此,如何解决泊车过程中的不便利,越来越受到人们的关注[1]。
文章针对这一问题设计一种自动泊车系统,即在不加以人为控制的情况下,通过智能控制帮助驾驶者快速、安全地完成泊车操作[2]。系统包括信息采集模块、信息处理模块和控制模块,具有辨识车库、判断车位是否有车、显示车位数等功能,使小车能够自动泊车。
1 系统方案设计
自动泊车系统框图如图1 所示。包括信息采集系统和驱动控制系统[3]。其中,信息采集系统由循迹模块、避障模块、超声波模块和感光模块组成,用于检测路面及车库信息,并将数据发送给单片机进行处理。驱动控制系统包括舵机模块和电机驱动模块。
系统各部分的功能:超声波模块发射超声波测距,将测量距离发送至单片机,经单片机处理后,确认车库方向[4];舵机模块控制超声波模块进行转向;红外循迹模块用于引导小车进入车库和完成停车;红外避障模块防止小车与已有停车及车库相碰撞;感光模块用于感应光源后,触发舵机和超声波模块工作,判断车位是否已有停车并正确泊车;电机驱动模块控制小车的行驶状况;数码管模块显示泊车车位数。
图1 系统框图
2 系统硬件设计
2.1 信息处理
单片机最小系统由STC89C52、晶振和复位电路组成,具体原理图如图2 所示。其中,单片机具有以下标准功能:8k 字节Flash,256 字节RAM,32 位I/O端口,2个数据指针,2个16位定时器/计数器,片内晶振及时钟电路,可以满足本次设计要求。晶振为单片机提供一个震荡源,使其产生时钟周期。复位电路保证系统上电时不会出现死机等情况,使单片机可以正常读程序。
图2 单片机最小系统原理图
2.2 信息采集
信息采集主要包括红外循迹模块、红外避障模块、感光模块和超声波模块,各模块原理图如3图所示。
红外循迹模块利用红外光对不同颜色的反射特性不同,采用左右两侧循迹黑线的方法[5]。小车到达车库范围时,开始循迹。由红外发射管发射红外线,当右侧检测到黑线时,红外线被吸收,右侧指示灯灭,小车右转;当右侧检测到路面时,红外光反射后被红外接收管接收,右侧指示灯亮,小车直行。同理,当左侧检测到黑线时,小车左转。当左右两侧检测到路面时,小车前进。当左右两端检测到黑线时,小车停车。
红外避障模块利用红外线的反射特性。当小车通电后,避障模块启动,红外发射端发射红外线。当没有检测到障碍物时,小车前进。当小车左侧检测障碍物时,红外线反射,左侧指示灯亮,小车右转。反之,当小车右侧检测障碍物时,红外线反射,右侧指示灯亮,小车左转。
感光模块利用光敏电阻的阻值随光线的变化而变化[6]。小车感应到光源时,其阻值变小,电压比较器输出端低电平,单片机启动舵机模块转向和超声波模块检测车位是否已经停放车辆[7],同时单片机记录检测到光源的次数。
超声波模块由超声波发射器、接收器和控制电路组成[8]。采用I/0端口触发测距。小车初始化完成后,将超声波接收端置0,单片机I/O 端口输出>=10 μs 的高电平,超声波发射器发射8 个40 kHz 的方波,同时定时器开始计时。当接收端检测到返回信号时置1,定时器结束。小车与障碍物间的距离=(高电平持续时间*340m/s)/2[9]。
图3 信息采集各模块原理图
2.3 驱动控制
由于超声波只能测量单一方向的距离,所以选用180度的模拟舵机。舵机的控制信号为I/O 端口输出的周期为20 ms 的脉宽调制信号,其中脉冲宽度从0.5~2.0 ms,对应的舵机位置时0~180 度。将超声波模块固定在舵机云台上,调整占空比使舵机分别转向小车左、右、中三个方向,实现超声波多向测距功能[10]。
电机驱动模块由直流电机和双桥驱动芯片L298N组成,具体原理图如图4所示。其中L298N 的逻辑电压为4.5~7 V,工作电压为5~46 V,通过I/O对芯片控制端口进行设置,实现电机正转反转;通过PWM对直流电机输出电压进行调试,控制电机转速[11]。
图4 电机驱动模块原理图
3 系统软件设计
3.1 编译环境
自动泊车系统均在STC89C52 的基础上进行设计,故本系统均采用C 语言进行编写。编写程序使用的软件是Keil 4,可以为系统程序的编写提供一个完整的开发环境。编写完成的程序通过STC-ISP 软件烧录入开发板。
3.2 系统流程图
系统的主程序框图如图5 所示,小车启动后,进行初始化,包括定时器初始化,计数器初始化,数码管检测。初始化完成后,进入while 循环。启动舵机模块,控制超声波模块测距,判断泊车位方向,每隔2 s 测试一次。当小车距离车位附近时,启动循迹模块。当感应到地面引导线后,小车沿引导线进入车库。小车感应到光源时,单片机触发舵机和超声波模块工作,通过测量泊车位距离判断车位是否已有停车。如果车位无停车,则小车驶入泊车。如果车位已有停车,则小车驶入下一车位并泊车检测,直至完成泊车。
图5 系统流程图
4 测试与模拟
选择模拟车库场景的方式进行实验测试。
4.1 超声波舵机调试
调节PWM 占空比,使舵机可以转向小车左、前、右三个方向。经实践测量,舵机的转向范围是4~20。其中,角度标识等于4时,舵机指向小车右侧;等于12时,舵机指向前方;等于20 时,舵机指向小车左侧。测量小车在静止时,超声波实际测试距离与代码中设置距离的差距如表1 所示,选择15 cm 作为小车启动循迹模块的阈值[12]。
表1 超声波距离测试
4.2 传感器功能调试
以避障模块为例,调节右侧电位器,使小车右侧有障碍物时,指示灯亮,小车左转,如图6 所示。同理,调节左侧电位器,使小车右侧有障碍物时,指示灯亮,小车右转。分别调试循迹和感光模块的电位器,使其可以正常工作,完成的测试图如7所示。
图6 避障模块测试图
图7 传感器功能测试图
4.3 车库设计
车库车位模拟分布图如图8所示,以十个车位为例,小车从“停车入口”进入车库后,逐个车位进行判断[13]。测试车位如图9所示,模拟1号和2号两个车位[14]。
图8 车库车位模拟分布图
图9 测试车位
4.4 数码管显示
数码管的显示范围是1~9。小车启动后数码管倒计时至1 时,开始自动泊车。当1 号车位无停车时,小车驶入停车且数码管模块显示“1”,测试结果如图10所示。当1号车位有车时,小车继续前往2号车位检测,检测到无停车时,小车驶入停车且数码管模块显示“2”,测试结果如图11所示。其中,1号车位的障碍物模拟已有停车。
图10 1号车位测试图
图11 2号车位测试图
5 结语
本设计以STC89C52 单片机为控制核心,结合传感器和电机等模块。通过设置模拟场地,调试和测试硬件与软件系统。针对场地布置和传感器灵敏度测试,多次修改系统设计,实现了小车自动泊车的基本功能。随着智能平台的兴起,本设计将在已有研究的基础上,研究泊车信息的反馈通信技术以及基于移动端的自动泊车设计[15],推进产品的实际应用。