一:引言
众所周知我们生活中少不了台灯,在日常生活中台灯是我们的生活必需品,在使用中用户经常忘记关灯而造成资源浪费,夜晚摸黑要去开灯,非常不方便,台灯使用者大多数是学生,如果坐姿不端正,就会影响人的视力,基于上述等情况,本人设计了一种具有以下功能的台灯
(1)该产品由220V交流电直接供电。通过POWER键可以开启/关闭台灯。
(2)该产品有两种工作状态(AUTO/MENU),通过“AUTO/MENU”键切换,在MENU状态时,可通过“+” 键及“-”键调整台灯的亮度,并利用超声波传感器测量用户与台灯的距离,当距离小于30cm时,通过控制灯光闪烁(闪烁频率为每秒钟3次左右)提醒用户注意保持与台灯的距离;在AUTO状态时,除具备有MENU状态相同功能外,还具备室内是否有人检测的功能,当室内没有人时,自动关闭台灯(为了便于测试,请将检测时间定为5秒,即检测到没有人的时间超过5秒时,关闭台灯,检测距离为4m),当有人进入房间时(检测距离为4m),自动开灯。
(3)该产品由功率为3W的LED灯提供照明,必须注意:3W的LED灯工作电流为700mA左右,工作电压为3.6V左右,请注意安全。]
(4)该产品测距采用超声波传感器,当有物体移动时,超声波接收的信号幅度会发生变化,利用这个原理来检测是否有人。
二:硬件电路设计
(1)总体结构
智能台灯是根据超声波测距来实现功能,通过对220V加以变压整流滤波得到+15V,+12V,+5V,—12V电压,然后通过555芯片产生一个40KHZ的脉冲信号经过反向器74LS04驱动,再由超声波探头发射出去,接收部分通过TL084放大,分别输出到两路,一路是直接接LM393比较器比较,另一路先通过检波二极管,通过电路上的电容C21,VR1进行滤波,滤除较高的高频信号,再与LM393比较器比较,两路都有触发信号输出单片机中,最后通过按键来实现LED的亮度调节以及LED的频闪,
(2)电源电路
电源电路具有多路输出,并且具有高滤波作用,
(3)单片机电路
本次MCU采用AT89S52单片机,该单片机是一种低功耗高性能CMOS8位的控制器,内部存储器8K,
(4)超声波发射电路
超声波发射电路采用555芯片进行驱动,由AT89S52发送驱动信号进行驱动,通过超声波发射40KHZ,
(5)超声波接收电路
接收电路采用TL084芯片对超声波信号放大,此次我设计中用到了两级放大,再用LM393进行信号对比驱动三极管,单片机通过计算发射到接收完毕的时间可以得知台灯与人的距离,
(6)LED驱动电路
AT89S52通过单片机的IO口控制与芯片PT4115的DIM口相连,通过程序产生PWM脉冲信号,送出的输出功率可以驱动LED,同时可以通过单片机的接口接入外部按键可以调节LED的亮度,
总电路图如下:
PCB如下:
程序清单如下:
#include<reg52.h>
#define uchar unsignedchar
#define uint unsignedint
sbit key=P2^2;
sbit key1=P2^3;
sbit led=P1^0;
uint PWM=0x7f;
void delayms(uint xms);
void delay(uint t) ;
void main()
{
TMOD=0x21;
TH0=0xfc;
TL0=0x66;
TH1=PWM;
TL1=0;
EA=1;
ET0=1;
ET1=1;
TR0=1;
while(1)
{
do
if(PWM!=0xff)
{
PWM=PWM+1;
delayms(10);
}
while(key==0);
do
if(PWM!=0x02)
{
PWM=PWM-1;
delayms(10);
}
while(key1==0);
}
}
void timer0 interrupt 1
{
TR0=0;
TH0=0xfc;
TL0=0x66;
TH1=PWM;
TR1=1;
led=1;
}
void timer1 interrupt 3
{
TR1=0;
led=0;
}
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=120;j>0;j--);
}
void delay(uchar t)
{
while(t--);
}