摘要为增加客车的安全性,提出了一种基于STC89C52单片机同时具有防超载和防撞功能的客车安全系统。通过研究超声波测距原理和脉冲宽度调制原理,并对车身重量和障碍物的距离进行实时监测以实现其功能。对该系统的安全性能和测量精度进行了测试,结果表明,系统达到了设计要求。
统计表明,在关于客车的交通事故中,超速和超载是事故发生的主要原因。本设计针对如何预防因超速而产生的车辆撞击和防超载的发生进行了一次探索。当乘客全部上车后,车门关闭,智能车通过称重传感器进行称重,并将重量显示在液晶屏上,若重量超过额定数值,蜂鸣器报警、小车无法开动,以实现防超载的功能。小车开动后,超声波模块开始测距,当小车与前方障碍物的距离低于规定距离30 cm时,电机减速;当距离减小到安全距离以内15 cm时,小车停驶,直到前方车辆远离小车才继续行驶,起到了防撞的作用。本设计具有成本低、操作简便、体积小等特点。
1 总体设计方案和工作原理
1.1 总体设计方案
系统组成框图如图1所示,智能车以STC89C52作为主控芯片,使用电阻应变式传感器进行称重,并将采集到的数据通过模数转换后发送至单片机同时将结果显示在液晶屏上。文中使用HC-SR04模块实现超声波的收发,并将测得的数据传输给单片机,根据小车与障碍物的距离远近,产生不同的脉冲宽度调制信号以达到实时调节电机转速的目的,同时由1602液晶显示距离。
1.2 电机调速原理
电机转速的快慢与输入电压的大小和通断有关,因此脉冲宽度调制(PWM)便成为了调节小车行驶速度的最佳方案。脉冲宽度调制,就是按照一定的频率接通和断开电源,并根据不同的情况来改变通断电源的时间。而电机转速快慢是通过改变电机上的平均电压实现的,平均电压值可通过电压的占空比来改变。如图2所示,当电源接通时,电机运转;断开时,电机停止;通电时间越长,电机转速越快。所以,根据PWM原理对电机按频率进行通电和断电,便可实现对电机速度的精确控制。电机在接通+6 V电压下能以最快速度运转,假设在电机持续接通电源,电机的转速能达到最大,设电机两端电压为Umax,而当电源按频率通断时,占空比
,T(s)为信号周期,平均电压为
Uav=Umax×P (1)
故平均速度为
v=kUav (2)
其中,k为系数。在T不变的情况下,改变接通电源的时间t就可改变平均速度。在本设计中,将占空比与电压看成是近似的线性关系。
经测试和计算,平均速度和平均电压的关系式为
v=2.78Uav (3)
式中,v的单位为cm/s。
1.3 超声波测距原理
设计采用超声波往返时间检测法,其原理为:在传播介质为气体的条件下,从超声波发射器发出的超声波经气体介质的传播到接收器的时间即往返时间,往返时间与气体介质中的声速相乘则是声波传输距离,而所测距离是声波传输距离的1/2,即
式(4)中,L为待测距离;v声为声速(约340 m/s);t声为脉冲波往返的时间。
2 硬件设计
2.1 主控芯片设计
设计中,主控芯片选择的是STC89C52,因其操作简便、功能强大、加密性强,同时还具有超强抗干扰性能,工作温度范围大,且支持在线系统编程(ISP)。
2.2 测距模块设计
超声波选用频率为40 kHz的矩形脉冲波,因这一频率的声波在空气中的传播效率最佳。HC-SR04是收发一体式超声波传感器,可提供0~200 cm的非接触式距离遥测功能,其中心频率为40.0±1.0 kHz。单片机IO口发送一个超过10 mV的高电平信号,模块则会发送8个连续的40 kHz脉冲波,接收端开始检测有无返回信号,同时单片机的定时器T1开始计时。当有信号返回时,单片机外中断INT0被触发进入公式计算程序,最终得出结果。
2.3 称重模块设计
2.3.1 模数转换模块
HX711是一款专为高精度称重传感器而设计的24位双通道模数转换器芯片,具有体积小、操作简便、抗干扰性强的特点。其含有A、B双通道供使用者选择,通道内部与其低噪声可编程放大器相连。通道A的可编程增益为128或64,通道B增益为32。HX711与51单片机的接口与编程简单,只需对串口通讯PD_SCK和DOUT进行编程。
PD_SCK应输入25~27个不等的时钟脉冲,根据脉冲数的不同选择不同的通道和增益,本系统软件选择A通道128倍增益对数据进行转换。
2.3.2 电阻应变式称重传感器
电阻应变式称重传感器的工作原理是将其内部应变片两端的电压变化与物体的重量建立线性关系。应变片粘贴在力敏型弹性元件上,当弹性元件受力时,应变片产生相应的形变,应变片自身的电阻也发生变化,由此将机械信号转换为电信号,而由于受力引起的应变片电阻的变化与电路的电压变化成正比,只需测出输出电压的数值,再经过公式换算即可得到所测量物体的重量。
2.4 电路驱动模块的设计
L298N是双H桥直流电机驱动芯片,其可通过单片机的IO口直接提供信号,且输入输出的电压范围大,支持5~35 V的直流电压输入,能经IN1、IN2、IN3、IN4和ENA、ENB输出3~15 V的电压,保证了直流电机的稳定运转。在控制方面,单片机IO口对INX输入不同的高低电平可实现电机的正反转和停止的功能,IO口输入电平与电机运行状态如表1所示;利用单片机IO口产生的不同占空比PWM信号输入ENA、ENB两个端口则可实现电机加速、减速的功能。
2.5 供电单元
电源部分如图3所示,采用7.4 V锂电池供电,通过L298N电机与PWM信号的输入端口给电机提供稳定的6 V电压,但系统的大部分芯片均工作在5 V电压下,因此需要电源模块为系统提供5 V电压。因此选用LM7805电源模块,其能将7.4 V转换为5 V电压。如图3所示,为提高输出电压的稳定性,将稳压二极管VD2串接在LM7805的2脚与地之间,VD1作为输出保护二极管,当输出电压低于VD2的稳压值时,VD1导通,并将输出电流旁路,以确保LM7805的输出端不受损坏。
3 软件设计
程序的总流程如图4所示。软件主要由3部分构成,分别为:驱动程序、称重程序和测距程序。首先,初始化定时器T0和T1的工作方式分别赋初值,T0的初值设为1 mV,T1的初值设为0。
驱动程序产生PWM信号以控制电机转速,通过给定时器T0设定初值和计数器最大值100来确定PWM信号的周期。定时器T0每产生1次中断计数器加1,当计数器的数值小于给定数值时输出高电平,反之则输出低电平。
称重程序根据HX711自身芯片的特点对DOUT和PD_SCK两管脚进行编程,先给PD_SCK串口25个时钟脉冲,当第25个时钟脉冲下降沿到来时,由DOUT向单片机IO口按位写入数据,第25个脉冲写入已读出数据的最高位(MSB)。单片机将数据由高位到低位读入后,再经公式转换得出重量。
测距程序用定时器T1计算超声波来回的时间,当接收端收到反射回的40 kHz脉冲波时,触发INT0外中断,同时T1停止计时,TH1和TL1中的数据便是测得的时间。另外,当定时器T1溢出时触发定时器中断,将定时器清零以防止超声波进入测量盲区时造成的结果错误。称重程序和测距程序处于两个独立的死循环之中,当按键按下时,完成两功能的转换。
4 测试结果
4.1 称重模块的测试
测试选取1 kg和2 kg砝码等不同重量物品。首先将待测物品放置在已调好的零点电子称上进行测量,并以该数据作为参照值。然后开机,等待液晶屏上的读数稳定显示0,再将被测物体放置在称台上,等读数稳定后进行记录,同时采用称3次取平均值的方法进行记录并计算测量误差。
误差公式为
4.2 超声波测距模块测试
将一把米尺固定在水平地面作为参照值,小车放在0 cm处。将一块挡板放在米尺的10 cm、30 cm、50 cm等测试点并读取液晶屏显示的读数,并采用测3次取平均值的方法进行记录,同时计算误差。
4.3 车辆防撞性能测试
当车与障碍物距离为30 cm时,车速减速为8.3 cm/s;当两者距离为15 cm时,车辆停止,而当两者距离>30 cm时,车辆正常行驶。测试通过设定不同的初始速度如:测量车遇到障碍物后的制动距离、停下时与障碍物的距离以及液晶屏显示的距离和误差。
结果表明,当小车以最大速度行驶,面对前方障碍物的情况下,小车仍可安全制动,且未与障碍物发生碰撞,从而验证了本设计的安全性。结果如表4所示。
5 结束语
设计的创新点是将称重和测距功能相结合,同时通过单片机完成了对小车的驱动控制并通过称重模块准确称出小车载重的总重量。同时利用通过超声波模块测量小车与前方障碍物的距离,并使用液晶屏显示各种运行状态和测量结果。从运行情况上看,本设计运行稳定,可靠性高,达到了设计要求。