任务:在刷卡门锁的基础之上,添加遥控开门的功能。要求:遥控器单个按钮按下,门锁打开,延时5秒后自动锁上。
摸索阶段:初步了解后发现:电子门锁,其实是通过控制马达的正反转,完成门锁的开关。所以目标初定为:通过遥控器控制马达正反转。当时的思路是:买个遥控收发模块,再买个延时模块。遥控接收模块,具有两路继电器控制。公共端和常开触点,分别连接马达的正负两端。通过交错,提供不同方向的电压。但是这样的话,不能实现延时5秒后自动锁上的功能。如果采用这种方法,最终能实现,一个按钮打开,另外一个按钮关闭。但是,这种直接控制电机正负极正反转的方法,很容易造成电源两极直接短接,所以不采用这种思路。(在与商家沟通的时候发现,马达的控制是点动控制。也就是说,开门时吸合,完成开门动作后断开,不然马达一直正转。)(这里简单说下遥控接收模块工作原理:整个门禁板的电源是4节干电池,提供大约6.4V电压。遥控接收模块的供电电源V、G两端,直接接到干电池两端。输出的团喊旁正极P+,直接接到电池正极。通过遥控器的按下、松开,控制输出负极P-的接地和悬空。)
方案及实施阶段:这里简单说下刷卡门禁的大致工作过程:RFID模块读取IC卡中的信息后,发送给单片机。单片机验证合格以后,IO口输出相应的高低电平,驱动马达开门、锁门,以及声、光(蜂鸣器、LED灯)提醒。这里说下电机的驱动芯片(HT6751A)。
所以就可以通过控制HT6751A芯片的IN1、IN2、IN3引脚,控制马达的正反转,完成开、关门动作。(这里通过门禁锁原本的电路板可以知道:6.4V电源电压经过BL8503芯片,转化为5V电压。并且没有进行隔离,转化后的电压和电源地可以直接形成回路。IN1、IN2引脚经过10K电阻,连接到单片机IO口,。IN3脚直接接到5V电源电压,一直处于高电平状态。IN1、IN2、IN3起始状态为111,开门状态为011,关门状态为101,中间等待状态也为111。)这样的话,我们就可以另外添加一块单片机。遥控器信号触发中断,将IN1拉低300ms后置高,定时器定时5s以后,将IN2拉低300ms后置高,完成开、关门动作。为了不影响另外一块单片机的正常工作,所以用三极管进行隔离。如下为电路原理图:
由于公司不能用盗版软件(你懂得),所以简单手画一下原理图。这里P+、P-为遥控接收模块的输出正负极。遥控器按下之前,P-悬空,P3.6为高电平。遥控器按下时,P-和GND连接,P3.6拉低,下降沿触发INT0(P3.2)。原本电路板中已经有LED灯和蜂鸣器,我塌橡这边直接用P3.4控制LED的正端。这样存在一个问题,就是原本的单片机失去了对LED灯的控制,应该用三极管隔离一下。PCB自带的蜂鸣器是无源蜂鸣器,型号为KC-1206。原来的思路是控制三极管(S9013 NPN三极管)的B极,去把蜂鸣器负端拉低,但是好像行不通。查了下蜂鸣器:工作频率为2400Hz左右。更改单片机程序后,还是没反应。可能是单片机IO驱动能力不足。通过一个上拉电阻,把IO口拉高,蜂鸣器终于发出微弱的声音,但是依然不理想。所以就添加了个有源蜂鸣器,用P3.6经过NPN三极管去控制(这里渗卖依然存在IO驱动能力不足的问题。原本用的是P3.5 口,换成P3.6口就没问题了。可能之前无源蜂鸣器声音微弱,也是同样的原因。但是已经实现了功能,就没再拆了重新测试了)。遥控控制程序如下:(j用来控制蜂鸣器的发声,周期为100ms,占空比为80%。动作一次,蜂鸣器工作600ms。).
链接:
提取码:isbp