基于STM32的车灯控制检测系统开发

2021-03-15 02:21马子铠叶春生
新技术新工艺 2021年2期
关键词:车灯子程序按键

马子铠,叶春生

(华中科技大学 材料成型与模具技术国家重点实验室,湖北 武汉 430074)

汽车车灯犹如汽车的“眼睛”,同时也犹如车辆之间的“沟通语言”[1]。一个好的车灯应具有尽可能多的功能和长的使用年限,常见的车灯有近光灯、远光灯、转向灯和位置灯等。通过点亮不同功能的车灯来给其他的车辆提示,在方便汽车驾驶人的同时,也降低了交通事故的发生频率。

因此,为了减少交通事故,保障行车安全,对汽车车灯进行质量检测对于车灯生产商而言是一个十分重要的任务。车灯生产商通常会在车灯生产线上装配一套专门的检测设备对车灯进行质量检测,但经常会出现错检、漏检的情况,导致已经售出的车辆因为车灯故障而被召回,直接导致生产商和消费者产生巨大的经济损失。针对这种问题,本文结合某厂家生产的高配车灯开发出一套新型车灯质量检测系统[2],提高车灯的检测效率。

1 车灯质量检测系统设计方案

1.1 系统的设计需求

本文以某厂家生产的高配车灯为对象,设计一套车灯质量检测系统对其不同灯光状态进行质量检测,具体包括近光灯(LB)、远光灯(HB)[3]、转向灯(TI)、位置灯(PL)和驻车灯(DRL)等5种不同的灯光状态,并实现了车灯渐亮和渐灭2个新功能。

1.2 控制芯片的选择

结合车灯检测系统的功能需求和处理器速度要求,控制器采用STM32系列控制芯片(型号为STM32F103C8T6)[4],该处理器经济实用,在处理速度上可以满足检测系统的基本需求,且支持LIN总线模式。在该芯片基础上设计了配套的控制开发板,开发板配置多个模块接口,可以直接使用。

1.3 通信总线的选择

为了保障通信传输效率,控制器采用LIN通信方式[5]。LIN通信(Local Interconnect Network)是一种低成本的串行通信网络(CAN通信[6]的补充),可用于实现汽车中的信号通信。LIN总线是基于USART接口硬件实现的,通过时序信号进行同步,保证信号的传输效率。检测系统包括一个主机(控制系统)和一个从机(车灯),可以采用单主机对多个从机的控制方式,使用起来更为便捷。

1.4 总体设计方案

控制器采用按键输入控制信号,基于STM32F103C8T6芯片处理器作为控制系统,搭载配套的软件,将控制电平、PWM脉冲信号[7]和LIN总线输出给车灯,通过观察车灯与指示灯的状态完成质量检测,整个车灯质量检测系统总体结构如图1所示。

图1 车灯质量检测系统总体结构

图1中,LB和TI状态为近光灯和转向灯常亮常灭,通过电平控制实现;HB状态为远光灯常亮常灭,它与车灯渐亮及渐灭3种状态通过发送规定的字节序来实现;PL和DRL为车灯同一指示灯的2种状态(PL灯亮度较低,DRL灯亮度较高),利用改变输出波形的占空比来实现。

2 检测系统硬件设计

在控制系统中,硬件电路主要包括2个模块:STM32最小系统模块和车灯硬件控制系统模块。最小系统模块是以STM32F103C8T6为主控芯片,并搭配电源模块、晶振模块、下载模块、复位模块、通信模块等功能单元,由于STM32控制模块属于通用模块,本文不做详细介绍。

车灯硬件控制系统主要由蜂鸣器电路、继电器电路、电源电路、按键电路和连接电路等5个模块组成,每个模块的详细介绍如下。

2.1 蜂鸣器电路模块

电路原理如图2所示,其中三极管作为电子开关,可以实现小电流控制大电流。因为不能通过I/O口直接驱动大功率电器,故采用PA5的高低电平来控制NPN型三极管的通断,致使蜂鸣器产生作用,通过蜂鸣器的响声判断主程序工作于何种模式下。此外,采用R405电阻消除PA5电平切换产生的抖动。

图2 蜂鸣器的电路原理图

2.2 继电器输出电路模块

继电器的主要作用是作为电气开关,控制输出到车灯的电流。其电路原理如图3所示,由于车灯的控制输出电流低,且工作频率不高,为了保护NPN三极管不被开关关断时线圈所产生的反电动势烧毁,该模块未采用三极管来控制电流输出。R3010电阻的作用与R405一致,起到去抖动的作用。

2.3 电源模块

采用220 VAC-12 VDC开关电源对控制器进行供电,电源模块分为2个子模块(5 V的标准电压模块和3.3 V的低电压模块),分别由LM2575芯片和LM1117芯片调节得到。其中,5 V的标准电压为STM32最小系统供电(见图4);3.3 V模块为按键输入模块供能(见图5)。

2.4 按键输入模块

该模块由3.3 V低电压模块加一个10 kΩ的电阻组成(见图6),并将PB组引脚的输入模式设置为浮动输入模式。当外接的按键端子被连接时,PB组中对应的引脚被置为高电平,并将信号传入STM32最小系统模块中,处理器在对信号进行处理后输出相应的操作信号。

图4 12 V电压转5 V电压电路原理图

图5 5 V电压转3.3V电压电路原理图

图6 按键输入模块电路原理图

2.5 连接STM32最小系统主板模块

车灯硬件控制板需要和STM32最小系统连接起来才能正常工作。该模块用到了PA和PB的相关引脚,并采用电压为12 V/5 V的电源为主板提供工作电压(见图7)。

3 检测系统软件设计

中断子程序和全局变量设置在软件开发过程中起到至关重要的作用,其中全局变量[8]是对于整个程序而言都可以使用的变量。中断[9]是指程序运行过程中,出现了某些故障需要主机干预,控制器能自动停止正在运行的程序并转入新的处理程序,等处理完毕后再回到原先被暂停的程序,继续并完成工作。

控制器利用按键输入信号来进入中断子程序,在中断子程序中来改变全局变量的mode值,在执行完中断程序后回到主函数来判断全局变量mode值,根据mode值来判断程序应该执行哪一个模式下的子程序。当程序执行完对应模式子程序后,将重置全局变量的mode值并回到初始循环状态,等待按键再次输入后开始执行下一次操作。

图7 连接模块电路原理图

LB、HB、TI、PL和DRL等状态、车灯渐亮和渐灭、以及各种基础功能的组合均由各个模式下的子程序实现。车灯控制程序流程图如图8所示。

图8 车灯控制程序流程图

控制程序的主函数主要用于完成固件函数的初始化以及各种中断函数的配置工作,其中初始化主要包括STM32处理器上的片上功能和引脚的初始化,在初始化过程中用到的固件函数见表1。

表1 STM32初始化固件函数

PWM脉冲信号输出由定时器控制和调节,定时器中的ARR(自动重装载寄存器)决定了PWM波的信号频率,CRR(比较寄存器)决定了PWM波的占空比。通过调节ARR与CPP的值来控制PWM的输出信号,比如PL的频率为10 470 bit/s,占空比为20%,灯亮度较暗;而DRL的频率为10 470 bit/s,占空比为100%,灯亮度较亮。

LIN总线报文传输规则[10]在软件设计上也起到重要作用,必须按照LIN总线报文格式来传输数据,从机才能正常接受信号并做出相应的应答。LIN报文包括帧头(HEADER)和应答(RESPONSE)两部分,其中帧头部分包括同步间隔场(SYNCH BREAK FIELD)、同步场(SYNCH FIELD)和标识符场(PROTEXTED IDENTIFIER FILED);应答包括数据场(DATA FIELD)和校验和场(CHECKSUM FIELD)。关于每一个组成的详细介绍如下所示。

1)同步间隔场:为了识别报文,报文的第1个场是一个同步间隔场,由主机发送。它的作用是同步从机总线的时钟信号。

2)同步场:同步场以下降沿为判断标志,采用的字节格式是“0x55”(01010101b),表现为有5个下降沿放在8个位定时中,用于从机与主机进行同步。

3)标识符场:由ID和Parity组成,用于定义报文的内容和长度。

4)数据场:用于传输报文帧,从低位开始传输由多个8位数据组成的字节组。

5)校验和场:用于校验接收的数据的正确性。

报文传输由报文的格式控制和形成,报文整体格式如图9所示。

图9 报文帧格式

总线报文传输规则代码实现,通过调用固件库中的USART_SendBreak()函数来发送间隔场,并利用校验和求和算法来计算校验和,将发送数据组中的9个发送数据进行累加,最后将结果赋值到发送数据组的最后一位上,如果校验和溢出,校验和进位加一。然后利用USART串口调用USART_SendData()函数循环发送数据到从机上,直到一组数据发送完毕为止,图10所示为用LIN发送指令时在示波器中测量的输出波形,前一部分低电平部分为发送的间隔场,其后部分为同步场、数据场等,可以实现车灯的基本波形需求,并能检测车灯质量。

图10 输出的LIN报文波形图

4 结语

为了验证本文所设计的车灯检测设备的可行性,利用该设备对合作厂商生产的车灯进行质检测试。经过对大批次车灯的质量检测结果显示,本文设计的车灯质量检测设备能够高效率地完成车灯的检测工作,并在检测过程中展现出了出色的可靠性与稳定性。

猜你喜欢
车灯子程序按键
基于有限状态机的按键检测程序设计
南非的车灯会说话
车灯
一种多方向导光按键结构设计
STP与无线调车灯显设备结合技术探讨
浅谈子程序在数控车编程中的应用
子程序在数控车加工槽中的应用探索
西门子840D系统JOG模式下PLC调用并执行NC程序
车灯:“明眸”方能“善睐”
基于有限状态机的STM32系统按键识别方法