单片机小制作,红外遥控版LED球泡灯
记得1年前我家孩子刚出生那会儿,我给老婆买了个小夜灯插在墙壁上。每当小孩哭的时候就打开那个小灯给孩子喂奶、换尿布。之后的一段时间,每次半夜都还要起床开灯,感觉有点麻烦。于是,下面的这个小制作便产生了——红外摇控球泡灯,它只需要用自己家里的摇控器,对着灯的方向,按任意按钮,即可实现开、关LED灯泡。这样,老婆自己就可以拿着遥控器开、关灯泡了。不过当我做完这个制作时,孩子已经长大些了,这个制作就留给来家里的客人上洗手间用吧!这次的制作需要对一个220V供电的LED灯进行改造,因此要格外小心。改装完成的LED灯结构和原来一样,只是灯泡里增加了红外控制电路。我用的LED灯为E27接口,即普通家用的220V大螺旋接口。它是我在网上用11元包邮买回来的。它的额定功率为3W,根据官方宣传:它比节能灯节能70%,在相同功率下,比节能灯亮2倍,而且寿命是节能灯的10倍、白炽灯的25倍。
选择LED球泡灯的理由
LED球泡灯是替代传统白炽灯泡的新型绿色光源,LED球泡灯大多采用大功率LED芯片制作。为了防止眩光问题,外壳通常会使用磨砂玻璃或亚克力来制作,可以直接由市电驱动。大部分产品可以适用于AC 85~269V的电压输入。
我选择使用它是看重它的如下特点。
(1)节能,白光LED的能耗仅为白炽灯的1/10、节能灯的1/4。
(2)寿命长,用于普通家庭照明,基本可以实现“一劳永逸”。
(3)可以工作在高速开、关状态。
(4)纯直流工作,无频闪,消除了传统光源频闪引起的视觉疲劳。
(5)采用PWM恒流技术,效率高、热量低、恒流精度高。
(6)通用标准灯头,可直接替换现有多种光源。
制作所需材料
这次制作的主要元器件有:ATtiny13单片机、红外一体接收头和NMOS管,见图4.1。还有一些制作时使用到的辅料,如稳压芯片、万用板、插座、绝缘导线等。具体零件清单如表4.1所示。
图4.1 制作所用元器件
表4.1 元器件清单
电路设计
最初,我想在220V电源上增加变压器进行变压,同时使用稳压芯片和滤波电容进行稳压。可是要在灯泡里增加变压器那可太有难度了。于是我打开灯泡一边看,一边想。LED灯不是有很好的稳压特性吗?经过带电测量,3节LED灯上能有稳定的9.9V压降。那LED灯断开(开路)时的电压又是怎样的呢?于是我把灯泡上的电源导线焊下来,通过万用表再次测量,为13V左右。真是高兴,这样我就可以直接用稳压芯片了。有了输入13V左右的电压,经过芯片1117-5.0稳定到5.0V电压就可以给单片机和一体化接收头供电了。由于手头的最后一片1117-5.0坏了,我不得不用1117-3.3代替。还好单片机和一体化接收头都能在3.3V的电压下正常工作。
那么如何控制LED灯电流的通、断呢?刚开始我第一个想到的是超薄、超轻的继电器。买来它好久了,却一直没用上。不过经计算发现,流过LED灯的电流在300mA左右。这么点电流用MOS管控制也是没问题的,而且MOS管还没有继电器开、关时的“滴答”声呢!
单片机的PB1引脚和红外一体化接收头相连接,当遥控器对着接收头按下按钮时,PB1就会有一个低电平。一般遥控器发出的红外调制信号,会让一体化接收头产生9ms的低电平(大多数),作为遥控编码的引导条件。通过计算低电平的持续时间,来判断是否接收到了正确的红外信号。
电路原理图如图4.2所示。
图4.2 电路原理图
制作过程
方案确定下来了,就开始我们的制作之旅吧!
1 切割洞洞板到合适的尺寸,至少能装到灯泡内的大小。
2 打磨洞洞板的边缘。
3 焊接单片机和红外一体接收头插座。
4 焊接稳压芯片和对应的2个电解电容。
5 焊接红外接收头用的滤波电容。
6 焊接场效应管和对应的2个电阻。
7 根据原理图焊接相应的导线
8 把烧录好程序的单片机插到8pin插座上,把一体化接收头也插到3pin插座上。
9 旋开LED灯泡的白色外壳。
10 用剪下来的元件引脚,焊接控制板到灯泡的电路板上。
11 最终制作好的效果。
12 通过3s(11.1V)电池驱动8个LED(合计8W功率)的效果。
编程思路
单片机程序通过判断低电平的持续时间是否为6~10ms,进而判断遥控按钮是否被按下。当低电平时间满足条件后,连接在NMOS的PB0引脚就会产生高电平,用于驱动MOS管,使其导通。当程序再次收到红外引导编码时间为6~10ms时,PB0就会产生低电平。用于关闭MOS管的电流。如果你的遥控器没有这种编码特点,那就要修改源代码的时间触发长度了。
在这次编写的程序中,我使用了2个中断:外部引脚中断和定时器中断。外部中断设置成下降沿。当有外部下降沿时,开启定时器进行计数。对定时器的时钟进行64分频,就能产生150kHz的计数频率。最终设置times这个全局变量来记录定时器的溢出次数,从而判断时间的长短。
ATTINY13使用的是内部9.6MHz的RC晶体振荡器。在初次烧录文件时,记得对熔丝位进行相应的设置。
单片机实例分享,反射式红外测速仪DIY
常用的测速方法
常用的测速传感器可输出脉冲信号,只要通过频率电压或电流转换就能与电压、电流输入型的指针表和数字表匹配。频率电流转换的方法有阻容积分法、电荷泵法和专用集成电路法,前两种方法在磁电转速仪中也有运用。专用集成电路大多数是阻容积分法、电荷泵法的综合。目前,常用的专用集成电路有LM331、AD654和VF32等,转换精度在0.1%以上;但在低频时,这种转换就无能为力。采用单片机或FPGA做F/D和D/A转换,转换精度在0.5%~0.05%,量程从0~2Hz到0~20kHz,频率低于10Hz时反映时间也会变长。
在显示精度、可靠性、成本和使用灵活性上有一定要求时,就可直接采用脉冲频率运算型测速仪。频率运算方法有定时计数法(测频法)、定数计时法(测周法)和同步计数计时法。测频法在测量上有±1的误差,低速时误差较大。测周法也有±1个时间单位的误差,在高速时,误差也很大。同步计数计时法综合了上述两种方法的优点,在整个测量范围都达到了很高的精度,万分之五以上精度的测量转速仪表基本都采用同步计数计时法。
反射式红外测速仪的设计
这里我们介绍一款实用的反射式红外测速仪的设计与制作。
反射式红外测速仪在测量物体运转速度时,首先向被测物体发射出红外线脉冲,利用被测物体表面的反射能力(可在被测物体表面粘贴白色的反射纸等),使红外接收器收到光脉冲信号,然后通过光电转换电路将光脉冲信号转变为电脉冲信号,电脉冲信号通过放大和处理后,输入到单片机的计数控制门,与内部的标准表秒脉冲信号相比较,经运算后,通过显示器将被测物体运动的旋转速度显示出来。
红外探头的测量距离根据实际需要,可设计成近距离和远距离两类。近距离的探头可采用小功率发光管和光敏受光管。如果是远距离的测量,探头就可采用中、大功率的发光二极管或者是合适的激光二极管。
1.系统设计方案
图26.1为反射式红外测速仪的系统构成方框图,由单片机控制器、38kHz载频振荡器、红外线发射/接收电路、8×2点阵字符型液晶屏及工作电源等组成。
图26.1 反射式红外测速仪的系统构成方框图
2.转速测试原理
转速测试原理见图26.2。进入测试状态后,38kHz的载频振荡器起振工作,驱动红外发射管向外发射红外载频信号。单片机首先检测信号的边沿,当一个脉冲的下降沿到来时(图中A点),计数器开始对脉冲计数,同时,单片机还启动定时器进行测试计时。当定时器计时到1000ms时(图中B点),单片机发出一个准备结束本次测试的信号,这时程序又开始检测信号的下降沿,当下降沿到来时(图中C点),单片机对脉冲的计数cnt及对测试时间的计时time完成。此时根据公式:转速=(cnt/time)×60000即可算出此时的转速。当计时到1300ms时(图中D点),单片机输出显示,将测得的转速显示到液晶屏上。此次测试、显示完成后,又进入下一次的测试、显示,周而复始。
图26.2 转速测试原理
测速仪常用于电机、电扇、纸张、塑料、化纤、洗衣机、汽车、飞机、轮船等制造业中。依据对转速检测原理的不同,测速仪可分为以下几种类型。
离心式测速仪:利用离心力与拉力的平衡来检测转速,是最传统的机械式测速工具,测量精度一般在1~2级。
磁性测速仪:利用旋转磁场,在金属罩帽上产生旋转力,通过旋转力与游丝力的平衡来检测转速。
电动式测速仪:电动式测速仪由小型交流发电机、电缆、电动机和磁性表头组成。磁性表头与小型交流电动机同轴连接在一起,小型交流发电机产生交流电,交流电通过电缆输送,并驱动小型交流电动机,小型交流电动机的转速与被测轴的转速一致,磁性表头指示的转速自然就是被测轴的转速。
闪光式测速仪:闪光式测速仪可发出频率可调的脉冲闪光,利用人眼视觉暂留的原理对转动物体进行测速。除了检测转速(往复速度)外,还可以观测循环往复运动物体的静像。
电子式测速仪:电子式测速仪是以现代电子技术及计算机技术为基础而设计的,一般有传感器和显示器,有的还有信号输出和控制。
3.电路设计
反射式红外测速仪的电路如图26.3所示。单片机选择Atmel公司的ATmega48,负责整个测试系统的运行。IC2及阻容元件组成了38kHz的载频振荡器,其载频经VT1放大后驱动红外发射管IR向外发射红外线。IC4为38kHz的一体化红外接收头,它负责红外线的接收、放大及解调,它将解调出的脉冲信号送入单片机进行计数处理。IC5为液晶显示模块,使用了8×2的点阵字符型液晶屏(带背光),形体较小,用于显示测试得到的转速。
图26.3 反射式红外测速仪电路图
整机供电使用9V积层单池,经稳压器IC5稳定为5V后,供单片机工作。笔者实际制作的发射、接收组件如图26.4所示,使用热熔胶固定。制作完成的样机上的液晶屏、电源开关及按键如图26.5所示,按键SB目前没有使用,作为备用,整机照片如图26.6所示。
图26.4 发射、接收组件
图26.5 液晶屏及控制按键
图26.6 反射式红外测速仪整机照片
主函数
void main(void)//主函数
{
uchar temp;//定义单字节无符号局部变量
float count,time,x;//定义浮点型局部变量
Delay_nms(400);//延时400ms,等待电源稳定
init_devices();//初始化单片机
InitLcd();//初始化液晶模块
display1();//液晶屏显示欢迎界面
Delay_nms(2000);//等待2s
display2();//液晶屏显示工作界面
DisFlag=1;//测速显示标志置1
while(1)//无限循环
{
WDR();//看门狗喂狗指令
if(DisFlag==1)//如果测速显示标志为1
{
time=(float)tx;//整数转成浮点数
count=(float)cx;
x=count/time;x=x*30000;//数学计算
DisVal=(uint)x;
/******将测得的4位转速值存放于显示缓冲区*******/
disx[3]=(DisVal/1000)%10;
disx[2]=(DisVal/100)%10;
disx[1]=(DisVal%100)/10;
disx[0]=DisVal%10;
/**********在液晶屏上显示转速值*********/
DisplayOneChar(4,1,disx[3]+0x30);
DisplayOneChar(5,1,disx[2]+0x30);
DisplayOneChar(6,1,disx[1]+0x30);
DisplayOneChar(7,1,disx[0]+0x30);
/**此次显示完成后,相关变量初始化,准备进入下一次的测试**/
DisFlag=0;WorkTime=0;
DisTime=0;
EndFlag=0;Start=0;cnt=0;
}
else//否则如果测速显示标志为0则进行脉冲取样
{
do{
temp=PIND&0x04;WDR();JS=1;//等待下降沿后下一次测试
if(Counter>1500)
{Counter=0;JS=0;DisFlag=1;cx=0;goto END;}
}while(temp==0x04);
BeginFlag=1;Start=1;GICR=0x40;
//重开INT0中断
END:;
}
}
}
4.软件设计
程序主要分为主控程序、液晶屏驱动程序和头文件三大部分,这样设计速度快、结构完善,并且也便于整个程序的装配。程序使用ICC7.14C集成开发环境编译。限于篇幅,这里仅介绍一下主函数,完整程序可以到QQ群下载。
调试与应用
本机唯一需要调整的是红外发射电路的38kHz载频,它关系到红外测速仪的使用灵敏度及可靠性。整机检查无误后通电,用一个10kΩ的多圈可调电位器代替R6,用示波器或频率计测R7电阻的任一端,细调电位器,使频率为38.000kHz,越准确越好。调好后,取下电位器,测出其阻值,用一个同阻值的固定电阻代替电位器,焊在R6位置。整机其他部分全是数字信号处理,因此只要器件良好,就无需调整了。
红外发射管需要套一个直径5mm的黑色热塑套管,并且与红外接收头稍微隔开一点距离安装,防止发射出的红外光直接进入红外接收头。当然也不能离开太远,以免降低接收灵敏度。
相关问答
51 单片机红外 遥控怎么调试?51单片机红外遥控的调试可以按照以下步骤进行。首先,连接红外接收器模块到51单片机的IO口,确保电源连接正常。接着,编写相应的程序代码,初始化IO口为输入模...
单片机 和 红外 传感器怎么连接?单片机与红外传感器的连接:连接单片机和红外传感器时,通常需要使用一个电阻器。将传感器的输出引脚连接到单片机的一个输入/输出引脚,并在该引脚和单片机的电...
51 单片机红外 接收模块如何接收?51单片机红外接收模块通过以下方法接收的。即红外遥控有发送和接收两个组成部分。发送端采用单片机将待发送的二进制信号编码调制为一系列的脉冲串信号,通过红...
怎么把 红外 传感器信号用 单片机 实时输入到电脑屏幕?需要根据红外传感器的使用说明来做,一般有模拟量、数字量信号输出到单片机。单片机在用串口与电脑实时通信,需要上位机PC软件配合。这方面的开发定制我这可以...
51 单片机 怎么样接 红外 传感器模块?51单片机可以通过接口电路来连接红外传感器模块。一般来说,红外传感器模块有三个引脚:VCC、GND和OUT。其中,VCC和GND分别连接到单片机的电源正负极,OUT则连接...
51 单片机红外 报警器怎么报警?1.通过红外传感器检测到目标物体后,51单片机会触发报警器进行报警。2.红外传感器可以检测到目标物体的红外辐射,当目标物体进入传感器的检测范围内时,传感器...
基于51 单片机 的 红外 接收模块的c编程?这个是自己搭电路然后用红外接收管,利用外部中断计数器的管脚,才捕捉到的脉冲,在进行软件内部的解码解调,照这个思路就可以努力想,才能学会51单片机,而且5...
51 单片机红外 遥控和按键怎么联动?要实现51单片机红外遥控和按键的联动,可以按照以下步骤进行:1.硬件连接:将红外接收器(红外接收头)连接到51单片机的合适引脚,并将按键连接到单片机的其他...
红外 发射能不能不用按键,改为 单片机 控制按键信号?《按下按键就发出信号,持续按按键持续发光,松开按键就停止发光》按照你所说的这些,并不需要单片机,直接用按键,来控制发光管,即可。《这组信号用红外接收头...
最简单51 单片机红外 编码获取问题?对于最简单的51单片机红外编码获取问题,答案是可以的。原因是,在使用51单片机进行红外编码获取时,可以利用红外接收头将红外信号接收到单片机的IO口上,然后通...