防盗报警单元工作原理及其状态机的设计

发布者:码农侠最新更新时间:2011-10-27 关键字:ATA单元  防盗报警  定时器 手机看文章 扫描二维码
随时随地手机看文章

引言:

随着汽车保有量的增长,汽车安全防盗问题愈加重要。现在大部分车都实现了防盗报警(anti thief alarm,缩写ATA)功能,主要是通过超声波检测的方式判断是否存在非法进入【1】,然后启动声光报警。这种方式可以有效检测出非法进入,但也存在误报的可能,给周边环境带来很大的困扰。在笔者为某车型设计的集成式车身控制器中,通过检测解锁闭锁动作、点火状态、车身状态和防盗状态综合判断是否安全锁车、是否暴力进入以及是否非法点火,从而实现安全锁车和防盗报警功能,本文首先介绍防盗报警单元(以下简称ATA)的工作原理及其状态机的设计,然后介绍了声光警示、安全锁车的机制及其软件实现。

ATA工作原理:

一个有效的ATA单元需要正确触发报警警示动作,同时避免误触发报警给用户带来的不便,这是通过判断是否正常进入车内和正常点火实现的。

首先在进行锁车时,通过喇叭和转向灯提示用户安全锁车,只有当四门两盖状态(四个车门开关、发动机盖开关、行李箱开关)全部为关闭状态且点火信号无效时才能安全锁车。安全锁车后进入防盗状态,对四门两盖状态及点火信号进行监测【2】,如果未经解锁动作而检测到车门或行李箱或发动机盖被打开,则认为是非法进入,如果检测到点火信号有效,则认为是非法点火,这时通过喇叭和转向灯启动声光报警,进行解锁动作或者在5秒中内检测到点火钥匙ON/OFF切换两次,停止报警回到正常状态。ATA结构如图1所示:

 

图1:ATA结构示意图

Figure 1:ATA Structure Schematic

ATA单元在钥匙锁车和解锁动作下进行门锁控制的同时,以状态机的形式实现防盗报警状态的跳转,同时伴随着一些警示动作向用户提示当前的车身状态,下面首先对防盗报警状态及其跳转进行分析,描述状态跳转的过程,然后描述车身状态警示动作的设计。

ATA状态机设计:

根据汽车使用方式和安全防盗的需要,设计以下几个状态:正常状态NORMAL、防盗状态SECURITY、等待退出防盗状态QUIT_SECURITY、报警状态ALARM,正常状态对应汽车被正常使用的状态,防盗状态对应安全锁车后的状态,等待退出防盗状态是个中间暂态,对应在防盗状态中,用户解锁车门而不打开的情况,报警状态对应非法进入或非法点火的状态。下面以状态机的方式介绍下这四种ATA状态的跳转。状态图如图2所示:

 

图2 ATA状态图
 

Figure 2:ATA State diagram

在四门两盖全闭、点火信号无效的条件下,钥匙遥控闭锁或前门闭锁,ATA进入SECURITY状态,此时启动对车身状态和解锁动作的监测;在SECURITY状态下检测到四门两盖打开或点火信号有效,进入ALARM状态,这时启动声光报警,在SECURITY状态下解锁,进入QUIT_SECURITY状态;QUIT_SECURITY是一个中间暂态,它至多维持20s时间,超时则自动闭锁并再次进入SECURITY状态,这样可以防止用户误按遥控解锁键带来的安全性问题,如果在此期间车门打开,则进入NORMAL状态;在ALARM状态下,报警一个循环后检测到四门两盖全闭且点火信号无效,返回SECURITY状态,也可以通过解锁或者在5S内点火信号ON/OFF切换两次而进入正常状态。具体代码设计在此不再赘述。

ATA警示动作:

由ATA状态机可以看出,状态跳转的条件为解锁闭锁动作、四门两盖状态和点火信号,ATA需要在状态跳转的过程中根据这些条件进行相应的提示和警示【3】。

在锁车时,根据四门两盖状态以及点火信号,判断是否可以安全锁车,如果可以,则执行闭锁动作,同时转向灯闪烁一次、喇叭鸣响一次;如果四门两盖存在打开或微开的状况,不执行闭锁动作,同时转向灯闪烁三次、喇叭鸣响三次,提示车主检查某个未关上的车门或行李箱或发动机盖。解锁则比较简单,转向灯闪烁两次以示区别即可。

在安全锁车进入防盗状态后,BCM进入低功耗模式,同时使能四门两盖及点火信号的开关中断唤醒功能,当存在非法进入或非法点火的情况,会通过四门两盖或点火信号的开关状态体现出来,这时唤醒CPU,同时启动声光报警-转向灯闪烁、喇叭鸣叫40s,循环四次,退出报警状态则停止声光报警。

对于四种ATA状态,则通过一个功率非常小的报警LED灯的闪烁方式进行区分,NORMAL状态下LED熄灭,SECURITY状态和ALARM状态采取周期为4s、占空比为10%的PWM方式闪烁,在暂态QUIT_SECURITY状态下,LED以200ms为周期快速闪烁。[page]

下面给出喇叭警示相关的代码,其中喇叭控制DrivePort和时间计时部分的代码TimerStart和TimerStop【4】等在此不再赘述。

void HornTweet(HornOper mode)

{

if(SILENCE==mode){

if(SILENCE!=Alarm_spkr_cyout){

DrivePort(ALARM_SPKR_OUT,DRIVEOFF);

TimerStop(SPKR_FLASH_MS);

TimerStop(SPKR_PERIOD_3S);

TimerStop(SPKR_SHOUT_30MS);

Alarm_spkr_cyout=SILENCE;

}

}else if((TWEETONCE==mode)||(TWEETTWICE==mode)||(TWEET3TIMES==mode)){

if(mode!=Alarm_spkr_cyout){

DrivePort(ALARM_SPKR_OUT,DRIVEON);

if(TWEETONCE==mode){

TimerStart(SPKR_FLASH_MS,360,0,1);

}else if(TWEETTWICE==mode){

TimerStart(SPKR_FLASH_MS,360,0,3);

}else if(TWEET3TIMES==mode){

TimerStart(SPKR_FLASH_MS,360,0,5);

}

Alarm_spkr_cyout=mode;

}

}

}

安全锁车

安全锁车是ATA单元的一个重要组成部分,如图2所示,它也是进入防盗状态的关键触发条件。在四门两盖全闭、点火信号无效的条件下,按下遥控闭锁开关或转动前门钥匙孔可以触发安全锁车。为了避免误锁车,需要对前门钥匙闭锁开关和遥控闭锁开关进行一定的消抖和过滤,同样的情况也适用于解锁操作,误解锁对于汽车安全的影响不言而喻【5】。

对于ATA单元来说,前门钥匙闭锁开关是一个物理开关信号,遥控闭锁开关按下时每隔一定周期会发送相应的RF报文,在一定时间间隔内检测是否存在遥控闭锁开关按下的RF报文可以判断该开关是按下状态还是松开状态,把它们统一为开关信号,逻辑上对应以下三个变量:switch_state开关状态、swon_event无效到有效的变化、swoff_event有效到无效的变化【6】,需要闭锁开关维持150ms的按下时间,才认为是有效的闭锁信号,该部分的消抖程序原理是统计开关按下的维持时间是否超过150ms,程序如下所示:

CountOver=CountTimes(FRONTDOORKEY_LOCK_SWITCH,FRONTDRKEY_LOCK_150MS,&Fdkey_lock150ms_validtimes);

if(1==CountOver){

CountOver=0;

if(1==Fdkey_lock150ms_validtimes){

Fdkeydrivdr_lk_signal=1;

}

Fdkey_lock150ms_validtimes=0;

}else{

;

}

CountTimes函数如下所示:

uchar CountTimes(SwId SwitchId,TimerId TmId,uchar* ValidTimes)

{

uchar CountOver;

CountOver=0;

if(1==Sw[SwitchId].swon_event){

TimerStart(TmId,150,0,1);

}else if(1==Sw[SwitchId].swoff_event){

TimerStop(TmId);

}else{

;

}

if(1==TM[TmId].overflow_flag){

TM[TmId].overflow_flag=0;

CountOver=1;

if(ON==Sw[SwitchId].switch_state){

(*ValidTimes)++;

}else{

;

}

}else{

;

}

return CountOver;

}

当开关按下,启动150ms的定时器,定时器超时,CountOver=1,这时判断开关在此150ms期间的有效次数ValidTimes是否为1,便可以判断是否有效的闭锁信号。

结语

本文设计的ATA单元以人机操作和汽车状态两个方面交互推进车身防盗报警状态的流转,逻辑严密,功能设计合理,准确报警并有效避免了误报,是一个很好的防盗报警解决方案,有很好的实用价值和借鉴意义。

关键字:ATA单元  防盗报警  定时器 引用地址:防盗报警单元工作原理及其状态机的设计

上一篇:汽车环境需要可靠的电源转换
下一篇:基于双超声波接收头的防撞小车系统设计

推荐阅读最新更新时间:2024-05-02 21:40

8、STM32定时器原理与使用(内附代码)
1.定义 设置等待时间,到达等待时间之后执行指定的硬件操作。 定时器最基本的功能就是定时,比如说定时发送串口数据,定时采集AD数据,也可以产生PWM方波等,定时器产生PWM控制电机状态是工业控制的普通。 2、STM32F4xx系列的芯片:2个高级控制定时器(TIM1和TIM8)、10个通用定时器(10TIM2-TIM5,TIM9-TIM14)、2个基本定时器(TIM6和TIM7)、2个看门狗定时器 具体可参考中文参考手册了解其特性及原理 3、定时器计数模式: 通用定时器可以向上计数、向下计数、向上向下双向计数模式。 ①向上计数模式:计数器从0计数到自动加载值(TIMx_ARR),然后重新从0开始计数并且
[单片机]
8、STM32<font color='red'>定时器</font>原理与使用(内附代码)
51学习之定时器中断的两种方式——查询和中断
定时器中断可用两种方式处理:查询和进入中断处理。 1.查询 void Init_T0 (void) 定时器初始化 { TMOD = 0x01; TH0 = (65536-65000) /256; TL0 = (65536-65000) %6; EA = 1; ET0 = 1; TR0 = 1; } void Main() 主函数 { Init_T0 (); Speak1 =1; if(TF0==1) 查询中断标志 { Speak1=~Speak1; //TH0 = (65536-65000) /256; //TL0 = (65536-65000) %6; TF0=0; } } 2.进入中断处理 void Init_T0 (void
[单片机]
stm32 定时器3产生指定数量的脉冲
一、场景描述:利用PB5产生一定数量的脉冲信号。PB5是定时器3的第2通道。 二、产生PWM代码: void Timer3_Configuration(void ) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; TIM_DeInit(TIM3); // ƵÂÊ30K //Õ¼¿Õ±È50% // TIM_TimeBaseStructure.TIM_Period = 100-1; //TIM_TimeBaseStructure.TIM_Prescaler =24-1;
[单片机]
stm32 <font color='red'>定时器</font>3产生指定数量的脉冲
家庭防盗报警器部件有什么用途?
    1、报警主机:可接收来自各感应器发来的编码信号,将报警留言通过电话线对发送出去。它由微电脑控制器,内置电话线防剪感应器、内置喇叭等组成,交直流两用。        2、无线遥控器:一般与主人的钥匙挂在一起。主要用于警戒状态有启动、解除(布、撤防)和紧急求救。        3、红外探测器:安装在室内的入口处、楼梯入口位置、采用先进的脉冲计数技术,大大降低了误报率,并且有低压显示功能。主要用于非法歹徒入侵时空间探测器报警。在指定探测区域内,一旦有人体移动的红外辐射被探测器感应到,立即对主机发射编码信号。       4、门磁探测器:安装在门上,利用一对磁控开关,当发生非法破门入室时,即触发主机报警。        5、振动探
[安防电子]
PIC单片机定时器相关用法
什么是定时器? 定时器顾名思义就是用来定时的。在单片机应用中常常用于各种各样的定时。比如让LED灯每隔 1S 亮一次。 这个1S 就是由定时器做到的。 指令周期 指令周期就是单片机执行一个指令所花费的时间。这也是定时器定时的最小时间单位。时钟频率/4=指令频率。1/指令频率=指令周期。 假设现在的时钟是4MHZ ,4MHz的时钟经过4分频后变成了 1MHz 其周期为0.0000001s也就是1us,这个1us就是指令周期,这1us也就是定时器定时的最小单位。 定时器与预分频器 假设在没有预分频器情况下。开启定时器 每隔一个指令周期定时器就加一。假设时钟是4MHz 也就是每隔 1us 定时器加一。 如果有了预分频器假设预分
[单片机]
PIC单片机<font color='red'>定时器</font>相关用法
STM32 通用定时器的定时功能 学习笔记
这节主要讲下STM32 通用定时器的定时功能。 一、TIMx的时钟源问题: STM32有8路寄存器,包括TIM1和TIM8两个高级定时器,TIM6和TIM7两个基本定时器,TIM2-TIM5四个通用定时器,定时器是完全独立的,而且没有互相共享任何资源,它们可以一起同步操作,所有TIMx定时器在内部相连,用于定时器同步或链接。当一个定时器处于主模式时,它可以对另一个处于从模式的定时器的计数器进行复位、启动、停止或提供时钟等操作。其中TIM1和TIM8挂在APB2总线上,而TIM2-TIM7则挂在APB1总线上。他们所在的APB2总线也比APB1总线要好。APB2可以工作在72MHz下,而APB1最大是36MHz。 1)定
[单片机]
单片机定时器之改良版:时间轮定时器
前段时间把自己以前用的单片机定时器整理出来,我称之为简单定时器,这种简单定时器比较适合定时器使用量少的程序中,如果定时器数量要求多,精度要求高,效率就会有问题,为此,俺就实现了一个时间轮定时器,简单测试下来效果非常不错。 1 #ifndef __SOFT_TIMER_H__ 2 #define __SOFT_TIMER_H__ 3 4 #define EVENT_TYPE_ONESHOT 0 5 #define EVENT_TYPE_PERIODIC 1 6 7 #define TMR_POOL_SIZE 20 // 定时器池,即可用定时器个数 8 #define TMR_WHEEL_SIZE 8 // 时间轮的
[单片机]
STM32单片机对Systick心跳定时器的设计
Systick :系统心跳定时器,提供系统节拍 裸机程序中可作为独立的延时定时器 用途: 1.产生操作系统的时钟节拍 2.便于不同处理器之间程序移植 SysTick定时器被捆绑在NVIC中,异常号15 3.作为一个闹铃测量时间用于测量时间, 但当处理器在调试期间被喊停(halt)时,则SysTick定时器亦将暂停运作。 它有四个寄存器 STK_CSR, 0xE000E010 -- 控制寄存器 STK_LOAD, 0xE000E014 -- 重载寄存器 STK_VAL, 0xE000E018 -- 当前值寄存器 STK_CALRB, 0xE000E01C -- 校准值寄存器 STM32的时钟源 选择外部时钟源时,则Systi
[单片机]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved