关于红外传感器的计数器设计说明Word格式.docx
《关于红外传感器的计数器设计说明Word格式.docx》由会员分享,可在线阅读,更多相关《关于红外传感器的计数器设计说明Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
……………………………………………………………8
……………………………………………………………………………8
4.3系统调试测试………………………………………………………………………10
参考文献……………………………………………………………………………………10
附录单片机数据处理局部程序……………………………………………………………11
关于红外传感器的计数器设计
自动化专业学生姬生达
摘要:
基于红外传感器的自动计数器有计数准确,抗干扰能力强等优点。
本次设计采用一对红外发射接收管作为红外传感器的信号探测头,用于信号的采集。
红外探测相对于接触式探测有着不可比较的优势,不改变被探测物体任何物理特性,适用场合非常广泛。
对于信号处理方面我采用的是ATMEGA16单片机。
该单片机具备1MIPS/MHz的高速运行处理能力,I/O口驱动能力强,片资源丰富等优点。
关键词:
红外传感器;
ATMEGA16单片机;
数码管
DesignofCounterBasedonInfraredSensor
StudentmajoringinautomationJiShengda
Abstract:
Theautomaticcounterbasedoninfraredsensorhastheadvantagesofaccuratecounting,stronganti-interferenceabilityandsoon.Thisdesignusesapairofinfraredemissionreceivingtubeasasignalofinfraredsensorprobe,usedforsignalacquisition.Contacttypedetectinghasincomparableadvantageswithrespecttotheinfrareddetection,doesnotchangetheobjectbeingdetectedanyphysicalfeatures,applicationisveryextensive.ForsignalprocessingusingtheATmega16microcontroller.TheMCUhasthehigh-speedoperationandprocessingcapacityofIO,1MIPS/MHzportdriverability,richinresources,lowenergyconsumption,highcostperformance.
Keywords:
InfraredSensor;
ATMEGA16SingleChipMicrocomputer;
DigitalTube
引言
在这个飞速开展的社会上,越来越多的流水线上的产品和一些场合都需要一些简单的设备进展自动的计数。
对于传统的机械式或电子式的计数器根本上是用数字电路集成组件组成的,电路繁琐,元器件数目种类较多,整体稳定性能不好,维修起来也比较麻烦,而且预设数值有限,应用起来局限性很强。
数字计数器有很多形式,总的来说大致有接触式和非接触式两种。
在科技兴旺的今天,非接触式红外计数器有着绝对的优势。
而本款计数系统就是采用的非接触式红外传感器。
1红外传感器计数系统设计方案
1.1总体设计思路
红外传感器计数系统的工作流程是:
每当一个流水线上的物件经过红外传感器时,红外传感器发出的红外线被遮挡返回一次,被红外接收器所感应,其输出电压就会发生一次变化,然后红外传感器输出上下电平变化的信号也就是脉冲信号送给事先编号程序主控CPU处理信号,然后由CPU再发出相应的指令控制相应的执行机构,显示器显示出具体容,由此便可实现对物件计数的统计功能。
当数值到达预定值时报警机构就会发出报警信号提醒工作人员去进展相关操作。
1.2前期准备
在做设计之前,准备好需要的物品有:
原理图设计软件,程序语言编辑软件,相关的元器件假设干,焊接工具,导线假设干,示波器一台。
1.3设计过程与问题
首先参考文献资料,确定传感器所需元器件具体参数,开场绘制电路图,绘制完成后生成PCB图,再进展器件的布局,一开场布局画线总是感觉有点乱,然后查阅相关资料参考别人的布线方法,一步一步的改良,知道了绘制双层PCB板不同层的走线不能平行因为有磁场的干扰,尽量布成垂直,这样可以抵消掉不必要的磁场,减小对传感器检测信号的干扰,布局以实用第一,美观第二的原那么进展。
绘制完后进展电路板的印刷,再进展元器件的焊接工作,最终形成一个完整的红外传感器。
在焊接过程中焊接芯片和红外发射接收灯时要快,而且要做防静电处理,不然很容易损坏器件。
这是在经历了几次焊接失败才总结的教训。
然后进展控制电路的设计,和设计传感器类似。
最后进展系统的组装,把焊接好的传感器和控制局部结合起来,形成一个整体,在进展对CPU的编程,之后再进展系统的测试,调试。
2传感器模块
2.1传感器模块描述
该红外传感器模块对环境光线适应能力强,具有一对红外线发射与接收管,发射管发射出一定频率的红外线,当检测方向遇到障碍物时,红外线反射回来被接收管接收,经过电压比较器〔LM393〕电路处理之后,绿色指示灯会亮起,同时OUT输出接口输出一个低电平信号送给单片机引脚,可通过电位器旋钮调节检测距离,有效距离围2-30cm,工作电压为3.3V-5V。
该传感器的探测距离可以通过电位器调节、具有干扰小、便于装配、使用方便等特点,可以广泛应用于机器人避障、流水线计数与黑白线循迹等众多场合。
2.2传感器的硬件设计
本次设计传感器电路图我用的是AltiumDesigner这一款PCB设计软件,该软件操作简便快捷,界面人性化,是在中国用的最多的EDA工具。
设计过程包括:
原理图的绘制,导出生成PCB,PCB图的布局。
红外传感器的原理图如图2-1所示。
图2-1传感器原理图
红外传感器的PCB图如图2-2所示。
图2-2传感器PCB图
红外传感器的3D图如图2-3所示。
图2-3红外传感器3D展示
红外传感器实物图如图2-4所示。
图2-4红外传感器实物
2.3传感器模块参数说明
(1)当模块检测到前方障碍物信号时,电路板上绿色指示灯点亮,同时OUT端口持续输出低电平信号,该模块检测距离2-30cm,检测距离可以通过电位器进展调节。
(2)传感器为主动红外线反射式探测,所以探测黑色距离最小,白色最大。
(3)传感器模块输出端口DO可直接与单片机I/O口连接即可。
(4)电压比较器采用LM393,工作稳定。
(5)可采用3-5V直流电源对模块进展供,当接通电源时红色电源指示灯点亮。
(6)板子上有3mm的螺丝孔,便于固定、安装。
2.4传感器模块接口说明
(1)VCC接3.3V-5V电压。
(2)GND接GND。
(3)DO数字量输出接口输出上下电平。
3主控电路模块
3.1CPU处理器的选用
本次设计我选用了ATmega16单片机,ATmega16是基于增强的AVRRISC结构的低功耗8位CMOS微控制器。
由其先进的指令集以与单时钟周期指令执行时间,TAMEGA16的数据吞吐率高达1MIPS/MHz,从而可以减缓系统在功耗和处理速度之间的矛盾。
本款单片机有16K字节的系统可编程flash,512字节EEPROM,1K字节SRAM,32个通用工作存放器等丰富的部资源。
TAMEGA16封装有两种,一种是直插式封装,一种是贴片式封装。
由于贴片式的体积小,做成电路板占用空间较小,所以我选用的是贴片式封装的单片机。
其引脚图如图3-1所示。
图3-1ATmega16引脚图
3.2显示器的选用
本次设计选用的是四位一体的LED数码管,数码管分为共阳极和共阴极,本次使用的是共阳极。
所谓共阳极就是所有发光二极管的阳极接到一起形成共阳极的数码管。
数码的的驱动需要较大的电流,然而我选用的这款单片机IO口有较强的推拉电流能力,均能到达30mA,可以直接驱动数码管、蜂鸣器、继电器等。
LED数码管的特点是发光亮度高,响应时间快,体积小,重量轻,寿命长等优点。
每位数码管都是有七段组成一个“8〞字形,能够显示“0-9〞10个数字能够满足设计的需求,其引脚图如图3-2所示。
图3-2数码管引脚
3.3报警元器件的选用
蜂鸣器是一种一体化结构的电子讯响器,在电路中用字母“H〞或“HA〞表示。
蜂鸣器采用直流电压供电,其能发出单调的或者某个固定频率的声音,如嘀嘀,嘟嘟等。
蜂鸣器分为有源蜂鸣器和无源蜂鸣器两种类型,通常在计算机、报警器、电子玩具、机、定时器等电子产品中作发声器件使用。
有源蜂鸣器直接接上额定电源就可连续发声;
无源蜂鸣器那么和电磁扬声器一样,需要接在音频输出电路中才能发声。
我选用的是5v电磁式有源蜂鸣器,其驱动电流小于25mA,符合选用单片机IO口的驱动能力。
3.4供电方式
由于所有模块需要的供电电压都是5V,所以本次实验用的是手机充电器输出是5V,直接用USB接口连接手机充电器供电。
3.5主控电路图的设计
图3-3系统原理图
用AltiumDesigner原理图设计软件将以上的所有模块进展整合绘制整个系统的原理图如图3-3所示,图3-3所示电路图,其中外部震荡电路,采用的是11.0592mHZ的晶体振荡器,便于计算定时周期。
电源扩展模块是两排3P的排针用于连接外部传感器为其供电。
电源指示灯采用直径为3mm的红色LED发光灯。
红外传感器模块是连接到单片机第44管脚的一个1P的排针插口,用于连接红外传感器的信号输出接口。
3.6主控电路的组装实物
准备好相应的工具后,就开场焊接。
控制局部实物图如图3-4所示。
图3-4控制电路实物
图3-4所示实物图,焊接了所有需要的原件,黑色的点触式按键为复位按键,白色自锁式按键开关按键,数码管单独一个电路板,单片机由于体积较小所以为了更好的节省空间放在了LED数码管下方,白色透明LED灯为电源指示灯〔电路正常工作时亮〕。
黑色圆柱体为蜂鸣器。
后面的线是连接传感器的杜邦线。
红外传感器为单独模块,方便安装到检测物件的地方,实物图如图2-4所示。
4红外传感器计数系统整合调试
4.1红外传感器计数系统实物
红外传感器计数系统实物图如图4-1所示。
图4-1红外传感器系统实物
4.2系统软件的设计
我使用的是ICCV7forAVR这一款编译软件。
编译环境如图4-2所示。
图4-2系统编译环境
对于本次设计我使用的语言是C语言,相对于汇编语言来说,C语言编程的可读性比较强。
由于是基于AVR单片机的编程,所以需要对单片机的每一个I/O口进展存放器的配置,看看是设置成输出还是输入,如要读取传感器的信号,我采用的是PB4这个引脚,要把其设置成输入状态。
驱动数码管和蜂鸣器的管脚那么需要设置成输出状态。
整体的系统流程图如图4-3所示,具体程序请看附录。
否
是
图4-3系统流程图
4.3系统调试测试
系统调试图片如图4-4所示。
图4-4系统测试
测试方法:
我用的是UNI-T系列的彩屏示波器,先是开启示波器对其调零,然后用示波器的探针去接触传感器的信号输出端,用一个物件从传感器前方走过得到的示波器波形的变化如图4-5所示。
图4-5波形
当一个物件从传感器前方匀速走过时〔模拟流水线物件工作流程〕,从示波器波形中可以看出传感器信号输出端口就可以输出波形比较平稳的脉冲信号,波形较为理想,利于单片机的扫描。
由此波形可以看出本次传感器的设计较为成功。
同时单片机处于一直扫描传感器信号引脚的状态,很好的就能读取到这些短脉冲信息,再通过程序进展脉冲的计数,然后单片机储存数据,再由单片机向数码管发送相应指令显示相应的字符。
从而实现了红外传感器对流水线物件的计数工作。
具体程序详见附录。
参考文献
[1]郭天祥.51单片机C语言教程[M].1版.:
电子工业,2009.
[2]徐科军.传感器与检测技术[M].3版.:
电子工业,2011.
[3]国栋,月飞,娄建安.AltiumDesignerWinter09电路设计入门与提高[M].北京:
化学工业,2010.
[4]徐玮.AVR单片机快速入门[M].2版.:
机械工业,2012.
[5]廉洁.AVR单片机C语言应用100例[M].2版.:
电子工业,2012.
附录
传感器数据处理程序:
#include<
iom16v.h>
//ATmega16头文件
macros.h>
//函数头文件
#defineucharunsignedchar//宏定义
#defineuintunsignedint
#definehwPINB&
(1<
<
PB4)//读取红外传感器返回的值
#definefmqxPIND|(1<
PD6)//蜂鸣器响
#definefmqmPIND&
PD6)//蜂鸣器停
ucharconstDIS_SEG[]={
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90
};
//段选数组
ucharconstDIS_BIT[8]={
0xfe,0xfd,0xfb,0xf7,
0xef,0xdf,0xbf,0x7f
//位选数组
/*************延时函数*********************/
voiddelay(uintk)
{
uinti,j;
for(i=0;
i<
k;
i++)
for(j=0;
j<
1140;
j++)
;
}
/*******************************************/
/*************显示函数**********************/
voidDisplay(a)
PORTC=0xdf;
//P2.5引脚输出低电平
PORTA=Tab[a/100];
//显示百位
delay1ms(5);
//5毫秒基准延时
PORTC=0xbf;
//P2.6引脚输出低电平
PORTA=Tab[a%100/10];
//显示十位
PORTC=0x7f;
//P2.7引脚输出低电平
PORTA=Tab[a%10];
//显示个位
PORTC=0xff;
}
/***************主函数********************/
voidmain(void)
ucharcnt;
uchara;
DDRA=0xff;
//配置PA端口为输出
PORTA=0XFF;
//配置PA端口输出高电平
DDRC=0xff;
PORTC=0XFF;
PORTB|=(1<
PB4);
//红外
DDRB&
=~(1<
//配置PB4口为传感器数据接收口
DDRD=0XFF;
display(0);
while
(1)//无限循环,一直扫描红外传感器的输出引脚
{
if(hw&
0x10==0)
{
delay(15);
a=a++;
if(a==999)
a=0;
fmqx;
delay(500);
//计数满时,蜂鸣器报警
fmqm;
}
Display(a);