科鲁兹遥控器延时3秒开启后备箱的改造,已经稳定运行20多天!
2009年第一批车升级了最新的车身控制模块程序也无法实现按3秒遥控器开启后备箱的功能,为了避免今后再因为不小心按压到遥控器误开后备箱,导致物品丢失的情况,决定自己动手改造这个延时启动功能。
延时开启后备箱改造的思路:
后备箱的开启电机的驱动电压是12V,剪断12V的正极,用光耦接入单片机的一个IO管脚实时检测有没有电平的变化,如果有就启动延时程序,2秒后驱动一个小继电器,接通剪断的正极3秒钟,3秒钟内再按遥控器的时候就直接的驱动后备箱电机,开启后备箱了。接通3秒过后复位,继续待机,等待下一次信号。改造后,后备箱的手动开关的开启方式与遥控器一样,也需要按一下,等2秒后再按一下才能打开后后备箱。,此方案要给单片机一直供电12V,待机状态功耗6.5ma左右(去掉电源指示灯,待机功耗3.5ma),电流很小,用电量可以忽略不计了,不会导致电瓶亏电的。
原车的功能是需要一直按压3秒,我们的改造方案是按一下后,单片机开始工作延时,0-2秒钟内再按无效,在第2-5秒之间的时间内再按一次才能开启后备箱,请大家讨论!



淘宝找了一个成品的单片机板子28元(12V继电器控制模块),看了一下硬件基本满足我们的要求,今天把程序代码写好了,代码在下面,用电流表测试了一下待机状态6.5ma(去掉电源指示灯,待机功耗3.5ma),继电器吸合状态是45ma,电流很小,可以忽略。
**************************
单片机工作时序:开机就进入待机状态,等待开启后备箱的信号,有信号来,启动延时2秒后开启继电器,时间再走3秒,关闭继电器,进入待机状态,继续等待后备箱开启信号
**************************
后备箱的插头共3根线,一根是负极线(黑),一个是后备箱灯的开关(紫灰色线),一个是后备箱电机的正极(兰黄色线),黑表笔放在黑色线,红表笔放到兰黄色线,按遥控开启后备箱,可以看到12V的一个短暂信号过来。
***************************
今天上午已经安装完毕,测试跟我们设计的完全一样,很满意,达到预期设计效果。
上图,等待测试其稳定性!,今天拆掉单片机板子上的R1电阻,让电源LED灯不再费电,测试了一下电流节省了3ma,目前待机电流只有3.5ma,十分的理想,很满意!!
从这个模块的右边插座内的红线取的12V正极电源。
12V正极取电处
12V负极取电处,在尾灯处取电,黑色线就是负极
后备箱电机的启动电源线,兰黄色线,下面的是电源信号输入端,上面的是输出到电机的线
接好的图,临时放在这里测试一下单片机稳定性,过段日子稳定后,弄个小盒子装到塑料盖板内就好了,
合计就4根线,12V电源正极,12V电源负极,信号输入,信号输出,接线比较简单,(信号输入,信号输出就是把原先的控制后备箱马达的蓝黄色线剪断,用这个小模块接管了,一端是输入,一端就是输出了)
目前看已经稳定运行20多天了,从没出现过故障,大家可以大胆的改造,应该不会有问题。买这个控制模块的时候只要把我下面的程序代码复制给卖家,让他帮你烧写上这段程序就可以了,烧写代码是免费的。

**********************

控制板子的原理图
***********************
C语言程序代码,初步测试可以实现我们的功能,就等检测12V电源接在哪里更合适!
***********************
/********************************************************************
实现功能:(科鲁兹车遥控器防止误开后备箱程序)
检测到有按键,启动延时2秒。然后开启继电器,接通后备箱电机电源的通道,
如果在第2-5秒内再有按键就直接驱动开启后备箱,超过5秒无按键,切断后备箱电源通道,
返回等待按键。
待机状态6.5ma电流,继电器工作时45ma电流
使用芯片:STC15F104E
晶振:12MHZ
编译环境:Keil C51
*********************************************************************/
/********************************************************************/
#include<reg52.h> //库文件
#define uchar unsigned char//宏定义无符号字符型
#define uint unsigned int //宏定义无符号整型
/********************************************************************
初始定义
*********************************************************************/
sbit OUT1= P3^3; //定义单片机P3口的第3位 (即P3.3)连接继电器
sbit IN0 = P3^5; //定义单片机的P3.5口为输入端。
sfr INT_CLKO = 0x8f; //声明特殊寄存器的位置
/********************************************************************
* us毫秒级延时函数 *
调用函数必须给延时函数一个0~65535的延时值对应0MS到65535MS
/*************************************************************/
void Delay (unsigned int a){ //需要输入变量值0~65535
unsigned int i;
while( --a != 0){ //i 从0加到600,CPU大概就耗时1毫秒
for(i = 0; i < 600; i++); //空指令循环
}
}
//外部中断3,用来唤醒单片机进行工作,低电平有效
void exint3()interrupt 11
{
}
/*************************************************************
* 主函数 *
/*************************************************************/
void main (void) //主程序
{
Delay(100); //启动延时100ms
INT_CLKO |=0x20; //允许外部中断3
EA=1; //开中断
PCON= 0x02; //进入待机状态,省电减少电流,等待输入口低电平唤醒,待机6.5ma电流
while(1)
{ //一直循环运行以下程序
if(IN0==0) //如果检测到低电平,说明有信号过来
{
Delay(150); //延时检测是否是有效信号,防干扰
if(IN0==0) //延时150毫秒后如果信号还在,说明是有效信号,运行下面的程序
{
Delay(2000); //启动延时2秒
OUT1 = 1; //启动继电器,接通后备箱电机电源的通路,工作45ma电流
Delay(3000); //启动延时3秒,这个时间按遥控器,直接驱动开启后备箱
OUT1 = 0; //关闭继电器,切断电源通路,等待下次按键
PCON= 0x02; //进入待机状态,省电减少电流,等待输入口低电平唤醒,待机6.5ma电流
}
}
}
}
//**********************************