搜索
bottom↓
回复: 59

用atmega8做简单的红外线报警器

[复制链接]

出0入0汤圆

发表于 2005-5-29 21:17:22 | 显示全部楼层 |阅读模式
本实验将制做一个简单的被动式红外线防盗报警器。该报警器由红外线发射、接收、蜂鸣器和LED指示灯组成。正常情况下,绿色的LED常烁,表示监控区域正常。一旦监控区域有人闯入,绿色LED熄灭,红色的LED快速闪烁,同时蜂鸣器立即报警。需要准备的器材:Atmega8、红色LED一只、绿色LED一只、万能实验板一块、5V电源、电阻、TTL0038或者其他类似38KHZ的红外接收头、5V长鸣型蜂鸣器。

该电路工作原理非常简单,Atmega8的PD0端口输出经过调制的38KHZ的方波信号,然后经Q2驱动红外线发射管LED0发出红外线信号。TL0038是集红外线信号接收放大为一体的接收器。其中心接收频率为38KZH,输出为TTL电平,平时输出高电平,当收到码信号后,输出低电平。BELL为长鸣蜂鸣器,两个引脚分别为正负极,当正负极两端加上5V电压后,蜂鸣器发出响声。注意,该蜂鸣器两脚不能接反,否则蜂鸣器会烧毁。电路工作后,正常情况下TL0038接收不到红外信号,而输出高电平。当有物体出现在发射管前方时,TTL0038会接收到从物体上反射回来的红外光信号,然后输出低电平通知MCU打开蜂鸣器报警。该电路工作原理非常简单,Atmega8的PD0端口输出经过调制的38KHZ的方波信号,然后经Q2驱动红外线发射管LED0发出红外线信号。TL0038是集红外线信号接收放大为一体的接收器。其中心接收频率为38KZH,输出为TTL电平,平时输出高电平,当收到码信号后,输出低电平。BELL为长鸣蜂鸣器,两个引脚分别为正负极,当正负极两端加上5V电压后,蜂鸣器发出响声。注意,该蜂鸣器两脚不能接反,否则蜂鸣器会烧毁。电路工作后,正常情况下TL0038接收不到红外信号,而输出高电平。当有物体出现在发射管前方时,TTL0038会接收到从物体上反射回来的红外光信号,然后输出低电平通知MCU打开蜂鸣器报警。同时,程序通过不断地读取PC5脚的电平值来判断TL0038是否接收到红外信号。一旦连续检测到N次PC5为低电平,则立即打开蜂鸣器和红色的LED。之所以要连续检测N次,主要是防止TL0038上产生杂波信号而误告警。

#include <iom8v.h>//和单片机类型相对应的头文件,选择Atmega8做实验;

#include <macros.h>

实验2:简单的被动式红外线报警器

PB1: 绿色LED

PB0: 红色LED

PD7: 蜂鸣器

PC5: 连接TL0083的输出端

PD0: 红外LED

2004年8月4日

***************************************************************************/

void delay_nus(unsigned int n);// void delay_nms(unsigned int n);

void main(void)//主函数

{

unsigned int i;

unsigned char n;

OSCCAL=0X98;//系统时钟校准,不同的芯片和不同的频率,

//其校准值是不一样的

TCCR0=BIT(CS01);//T/C0时钟8分频

TIMSK=BIT(TOIE0);//允许定时器T/C0溢出中断

SEI();//开中断

DDRD|=BIT(0)|BIT(7);//设置PD0、7为输出口

DDRC&=~BIT(5);//设置PC5为输入口

DDRB|=BIT(1)|BIT(0);//定义B口的PB0、PB1为输出口

PORTB|=BIT(1);//PB1口输出高电平,绿灯亮

while(1)

{

for (n=0;n<10;n++)

{

delay_nus(60);

if ((PINC&0B00100000)==0) //检测PC5是否为低电平

{

i++;

if (i>8)//如果连续检测到有301-399次PC5都为低电平,则报警

{

CLI();

for(i=0;i<10;i++)

{

PORTB&=~BIT(1);//关闭绿灯

PORTD|=BIT(7);//打开蜂鸣器

PORTB^=BIT(0);//翻转PB1口,红灯快闪

delay_nms(300);

}

PORTD&=~BIT(7);//关闭蜂鸣器

PORTB&=~BIT(0);//关闭红灯

i=0;

SEI();

}

PORTB|=BIT(1);//打开绿灯

}

}

/***************码调制*****************************/

CLI();//PD0连续2ms都无输出

PORTD&=~BIT(0);

delay_nms(2);

TCNT0=245;

SEI();//PD0连续600us产生38KHZ信号

}

}

#pragma interrupt_handler LED0:iv_TIMER0_OVF//指定中断服务程序的入口

void LED0(void)//产生38KHz的方波信号

{

PORTD^=BIT(0);//翻转PD0口电平

TCNT0=245;

}

void delay_nus(unsigned int n)//n微秒延时函数

{

unsigned int i;

for (i=0;i<n;i++)

{

asm("nop");

}

}

void delay_nms(unsigned int n)//n毫秒延时函数

{

unsigned int i;

for (i=0;i<n;i++) //执行n次1毫秒延时

delay_nus(1000);

}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

 楼主| 发表于 2005-5-29 21:19:33 | 显示全部楼层
应要求放出了atmega8的做法

哪位高人给出8051的?

要报酬的也请直说……

出0入0汤圆

发表于 2005-5-29 23:54:14 | 显示全部楼层
呵呵,AVR的都有了,51的不就简单了么。51有两个16位的定时/计数器,你用其中的一路定时器作为控制38KHz的频率输出,驱动经Q2驱动红外线发射管LED0发出红外线信号,L0038的信号接一个IO端口,当有物体出现在发射管前方时,TTL0038会接收到从物体上反射回来的红外光信号,然后输出低电平通知MCU打开蜂鸣器报警。

剩下的是软件问题了,C51的语法和标准的C差不多,要注意的是51的寄存器与AVR的不同,定义在“REG51.H”中,只要你看一看51的书,比较一下51与AVR的差别,重点是了解51的定时器即其中断的用法,照着例子练一练,估计你快则半天到一天就能将程序移植到C51上。

出0入0汤圆

发表于 2005-5-30 11:13:31 | 显示全部楼层
51的我实验过,但是好像没有什么用呀?

如果做成红外线通讯,好像用处大一点的吧?!

出0入0汤圆

发表于 2005-6-6 09:05:03 | 显示全部楼层
你这个应该叫做主动式的吧

热释电算被动的

出0入0汤圆

发表于 2005-11-12 22:07:10 | 显示全部楼层
楼主,为什么我照着你的做的就不行呢?我是用小马软件下载的,是不是小马软件不能校对8M晶振?请给个意见!谢谢!

出0入0汤圆

发表于 2005-11-27 11:07:36 | 显示全部楼层
我也照着做了一个,我是用双龙软件下载的,对8M晶振校对了,可是就是检测不到,接受头用的 是TTL1738,中心频率是38K ,可总是不行.

出0入0汤圆

发表于 2006-3-31 20:00:31 | 显示全部楼层
我是个菜鸟,今天买了个“HS38B”的红外接收器,但不会判定它的三脚,有那位大虾能告诉我判定的方法。

出0入0汤圆

发表于 2006-5-11 17:07:07 | 显示全部楼层
"如果连续检测到有301-399次PC5都为低电平,则报警"

301--309是如何算出来的?

出0入0汤圆

发表于 2006-5-12 18:21:42 | 显示全部楼层
呵呵,我以前使用51做个NEC6221编码,也使用定时器做38KHZ载波发生器. 失败了,具体原因估计是51太慢.如果纯粹发38KHZ还行,当和基带信号一起调制时候,接受到的数据不对了,误差太大(我用的是12MHZ的晶体, 再高的没实验).



后来换为硬件38KHZ震荡, 使用IO口调制这个振荡器做PAM调制才解决问题. 所以做51的就要小心了. AVR可能快,无所谓,误差在指定的范围内.

出0入0汤圆

发表于 2006-5-12 18:22:23 | 显示全部楼层
另外说明点: 我使用51的汇编!!! 目的很明确.

出0入137汤圆

发表于 2006-5-12 22:30:28 | 显示全部楼层
h0038资料

点击此处打开armok01117189.pdf

出0入0汤圆

发表于 2006-6-12 22:53:25 | 显示全部楼层
感觉不行

出0入0汤圆

发表于 2006-8-31 09:27:47 | 显示全部楼层
楼主,你这个试验有没有调试成功的?那么多人说不行你都不出一声?让人感到怀疑!!!!

出0入0汤圆

发表于 2006-9-1 10:46:40 | 显示全部楼层
我做的好像也有问题,反射距离太短啦

出0入0汤圆

发表于 2007-4-25 10:51:22 | 显示全部楼层
电路和程序都比较简单,我做了能正常工作,不过用万用表测量0038的输出发现没有受到信号的时候是高电平,收到信号却变低了,所以就把

if ((PINC&0B00100000)==0) //检测PC5是否为低电平 小改一下就OK了



即改为if (PINC&0B00100000)//检测PC5是否为高电平

因为是范例来的,挺老的帖子也顶一下:)

出0入0汤圆

发表于 2007-5-5 10:34:19 | 显示全部楼层
反射距离太短了,不太实用。如该成阻断式效果会非常棒!

出0入0汤圆

发表于 2007-5-5 15:52:08 | 显示全部楼层
不如用热释红外啦。

出0入0汤圆

发表于 2007-5-6 18:32:40 | 显示全部楼层
做这东西不用单片机更简单.

出0入0汤圆

发表于 2007-5-7 21:22:29 | 显示全部楼层
用远红外的,加上透镜,距离很远的,

出0入0汤圆

发表于 2007-5-25 22:17:56 | 显示全部楼层
我是个新手,按照你的文字说明连接了硬件,却看不到什么现象,能不能把你的原理图贴出来啊

出0入0汤圆

发表于 2007-5-26 16:27:17 | 显示全部楼层
强啊 ~楼主你做的和我们毕业设计基本上是完全一样的,不过我们是用的ATMEGA16,基本上差不多,请问楼主能不能再提供以下具体的电路图,没有办法我们是在是太菜啦,根本做不来,希望提供protel那个电路图,谢谢啊!

出0入0汤圆

发表于 2007-10-20 10:44:21 | 显示全部楼层
原理图上传张,帮LZ补上。没原理图叫大家做,太麻烦~

出0入0汤圆

发表于 2007-10-20 10:45:14 | 显示全部楼层
电路还算简单,万用板搭搭就OK了

出0入0汤圆

发表于 2007-10-21 09:35:51 | 显示全部楼层
問題是距離可以有多遠???

出0入0汤圆

发表于 2007-10-21 12:08:21 | 显示全部楼层
可以不用单片机,但是再加一些东东,例如振动传感器就双层防盗了。用单片机主要是做逻辑方便,滤波也方便:)用纯粹硬件也可以做的很好,滤波决策做好都可以的。

出0入0汤圆

发表于 2007-10-21 21:34:02 | 显示全部楼层
47欧姆 有点大了,所以距离太近

推荐10欧姆或者5欧姆再试试看吧

出0入0汤圆

发表于 2007-10-22 08:19:03 | 显示全部楼层
用这个来做个捕鼠器不知可行不可行

出0入0汤圆

发表于 2007-11-21 16:03:17 | 显示全部楼层
我知道大家不成功的原因了,我也按照做了,开始也没成功,后来发现,按照程序上的定时时间,用示波器看了,发现频率不是38K
所以不好用
后来我用示波器观察调整TCNTO,可以成功的

出0入54汤圆

发表于 2007-11-21 17:14:48 | 显示全部楼层
以前用十速的片子做过一个,用在干手器上,PIC16C54转成TM58PC10
这个比较简单,我好象都没用到定时器。
但有示波器比较好,38KHZ可以用软件延时,因为接收头接收到脉冲后还会延时一下才会变成低电平
用示波器就很容易看得出来

出0入0汤圆

发表于 2007-12-9 12:08:48 | 显示全部楼层
有没有人能解释一下我遇到的情况,我从鼠标里拆了一个发射一个接收管(有三个脚,用万用表量过应该是内带三极管放大的),完全照着电路接好烧好程序,唯一不同的是,我是将两只管对射的,而不是用资料中说的反射(呵呵 因为开始我没认真看),但是做完之后效果非常好,有物体经过两只管之间的时候红灯就闪了,移开之后红灯会沿时一阵才熄灭,用其他红外线遥控干扰也没反映,随便调一个CPU频率都可以正常工作 4M 8M 都试过,真是奇怪呀!!能不能讲解一下程序的工作原理!

出0入0汤圆

发表于 2007-12-9 16:51:29 | 显示全部楼层
用两脚的红外线接收器不行吗

出0入0汤圆

发表于 2007-12-9 21:49:50 | 显示全部楼层
两脚的没有放大,也没有滤波,不能直接接单片机

出0入0汤圆

发表于 2008-3-19 22:11:49 | 显示全部楼层
正打算玩

出0入0汤圆

发表于 2008-3-21 12:08:51 | 显示全部楼层
是不是驱动电压或电流大些也可以提高传输距离

出0入0汤圆

发表于 2008-3-22 09:35:48 | 显示全部楼层
有好人上传个HEX吗谢谢了。

出0入0汤圆

发表于 2009-6-22 18:29:59 | 显示全部楼层
学习一下

出0入0汤圆

发表于 2009-8-16 21:14:03 | 显示全部楼层
学习一下!

出0入4汤圆

发表于 2009-9-6 10:48:47 | 显示全部楼层
我也做了一个,距离太短,想做到1~1.5m左右,减小电阻好像效果不大,有什么好方法吗?

出0入0汤圆

发表于 2009-9-6 10:59:01 | 显示全部楼层
jh

出0入0汤圆

发表于 2009-9-6 23:29:58 | 显示全部楼层
mark

出10入12汤圆

发表于 2009-12-12 08:59:41 | 显示全部楼层
301--309是如何算出来的?挖坟看看,版主莫怪!!

出0入0汤圆

发表于 2009-12-12 09:33:56 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-12 10:02:04 | 显示全部楼层
mark

出0入0汤圆

发表于 2009-12-26 21:58:21 | 显示全部楼层
实验2:简单的被动式红外线报警器
PB1: 绿色LED
PB0: 红色LED
PD7: 蜂鸣器
PC5: 连接TL0083的输出端
PD0: 红外LED

请教一个问题, 那个红色LED就是普通的发红光的LED吗?
那个TL0083谁有他的技术文档啊, 能不能发给我一份啊 , 谢谢了 。 也想做个这个实验
pzf3000@163.com

出0入0汤圆

发表于 2010-1-6 09:19:27 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-6 19:40:02 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-6 23:07:16 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-12 09:31:05 | 显示全部楼层
谁能给我个用51做的报警器  谢谢

出0入0汤圆

发表于 2010-3-23 11:33:46 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-3-23 13:01:40 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-4-16 16:46:48 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-5-18 22:12:52 | 显示全部楼层
收下了,挺好!

出0入0汤圆

发表于 2010-5-24 21:52:43 | 显示全部楼层
好东东

出0入0汤圆

发表于 2010-5-28 10:51:24 | 显示全部楼层
MARK

出0入0汤圆

发表于 2010-8-18 19:47:01 | 显示全部楼层
好的啊……

出0入0汤圆

发表于 2010-8-31 16:18:55 | 显示全部楼层
LZ,你的红外发射管用的是什么型号的。

出0入0汤圆

发表于 2014-5-23 21:00:05 | 显示全部楼层
MARKMARKMARK
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-13 15:14

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表