AVR实现红外无线通信
日本首创红外一对多无线通信系统_颜世宗
分类号:B J82市场报/2001年/06月/21日/第C03版/网络通讯日本首创红外一对多无线通信系统颜世宗本报讯:2001年6月13日,日本V i c t o r发布了使用近红外线、通信速度高达100M b i t/秒的光无线L A N系统/V I P S L A N)1000。
据称,V I P S L A N)100作为以100M b i t/秒的速度实现一对多通信光无线L A N系统产品在世界上尚属首创。
V i c t o r介绍说,V I P S L A N)100系统由连接有线L A N的光无线集线器和连接个人电脑的光无线节点构成。
集线器和节点之间采用近红外线通信。
该公司通过自主开发的光无线L A N协议实现了可在一个集线器和多个节点间完成通信的一对多型通信。
集线器和节点间的最大距离为5m。
通信过程中的实际速度/与100M b i t/秒的有线L A N基本相同0。
此前,V i c t o r已经向市场投放了在10M b i t/秒光无线L A N系统和大楼间的通信中使用的100M b i t/秒1对1通信光无线L A N系统。
该公司认为要在V I P S L A N)100中实现100M b i t/秒的一对多通信,就必须开发新的协议,以防止因墙壁反射等原因造成的M u l t i p a t h。
于是该公司自主开发出了名为B I O P(B u r s t I d l e O p t i c a l P r o t o c o l)的光无线L A N协议。
B I O P每隔一定的间隙发送一次被称作B u r s t-I d l e信号的前同步码(P r e a m b l e),以此来管理通信进程,并在B u r s t-I d l e信号的间隙插入数据或数据发送申请/准许/拒绝等控制命令的数据包来实现对访问的控制。
使用近红外线的V I P S L A N)100在安全方面表现突出,并不存在数据从室内等物理性封闭空间泄露的问题。
基于AVR单片机的红外遥控仿真设计
基于A VR单片机的红外遥控仿真设计摘要:Proteus提供了兼容SIRC的IRLINK组件,使得在虚拟环境下仿真红外遥控收发成为可能。
本设计中,当按下发射器的任一按键时,对应的12位编码被“发送”到接收端的红外接收头,经程序解码后,12-Bit的编码将会显示在3个数码管上。
关键词:红外遥控A VR单片机Proteus仿真红外遥控技术实际上是一种远程遥控技术,它在工业控制、家用电器等领域应用广泛。
红外遥控是一种无线、非接触式的控制技术,具有抗干扰能力强,信息传输可靠等优点,被越来越多的电子设备广泛采用,并逐渐应用到计算机系统中。
1 红外遥控的原理及特点红外遥控的发射端采用红外发光二极管来发出经过调制的红外光波;红外接收端主要由红外接收二极管组成,能将红外发射端发出的红外光转换为相应的电信号。
由于红外遥控不具备像无线电遥控那样穿过障碍物去控制被控对象的能力,所以同类产品的红外遥控器,可以有相同的遥控编码,而不会出现遥控信号“串门”的情况。
这为大批量生产以及在家用电器上普及红外遥控提供了极大的方便。
2 Proteus仿真软件简介Proteus软件是英国Labcenterelectronics公司出版的EDA工具软件。
它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及其外围器件。
它是目前最好的仿真单片机及其外围器件的工具。
使用Proteus丰富的硬件资源库和强大的仿真能力,它能够仿真现阶段大部分常用型号的单片机及其外围电子系统。
在软件调试方面,将其与单片机编译器联合调试,可以立即进行硬、软件联调的系统仿真,直接使用仿真器来调试系统,观察调试效果。
3 设计思路红外光的波长为950nm,低于人眼的可见光谱,因此我们是看不见这种光线的。
在大量的电子产品中都能使用红外遥控器对受控设备进行非接触式控制,但由于有热量的物体都能发出红外光,所以为了保证红外遥控器发出的红外信号能够不受干扰地被接收端识别,应将红外信号进行编码。
利用AVR(M8)的输入捕获(ICP)对万能红外线遥控器进行解
利用A VR(M8)的输入捕获(ICP)对万能红外线遥控器进行解码本实例程序为自创,若转载请注明出处,谢谢!小弟不久前买了一个科朗公司出版的万能电视遥控器RM-2008,用作对设备的红外遥控,折腾了几天,今天终于弄清楚了如何对该遥控器进行解码,很开心,所以把成果与各位大虾分享,有什么错误的地方请指正。
万能遥控器在使用前一般要进行设置,针对RM-2008这款万能遥控,设置方法如下:先按住“设置”键不放,再按下“电源”(“开/关”)键,工作指示灯亮起,然后释放两键,在此时进入代码输入状态,依次键入0 0 0 指示灯熄灭,设置成功!说明一下:0 0 0 编码是日立公司初期的红外编码方式,也就是网上到处都通用的红外编码方式(如下图),另外本程序只能对此编码进行解码数据头的时间:Th=9+4.5=13.5ms数据“0”的时间:T0=0.565+0.56=1.125ms数据“1”的时间:T1=1.685+0.56=2.245ms本程序通过使用输入捕获功能(ICP)捕捉红外信号的高电平脉宽,达到解码的目的;如果捕获到的脉宽是4.5ms 则表示此信号为同步码,如果捕获到的脉宽是1.685ms 的话则表示“1”否则表示“0”测试电路如下:使用DNW 串口调试软件时的效果/////////////////////////////////只有一个文件main.c/////////////////////////////////// #include <avr/io.h>#include <avr/signal.h>#include <avr/interrupt.h>#include <avr/wdt.h>#include <util/delay.h>#include <stdio.h>/*----------------------遥控操作值--------------------*/// key code (hex)#define Key_1 0x01#define Key_2 0x02#define Key_3 0x03#define Key_4 0x04#define Key_5 0x05#define Key_6 0x06#define Key_7 0x07#define Key_8 0x08#define Key_9 0x09#define Key_0 0x00#define Menu 0x5c // 菜单#define Menu_up 0x56 // 菜单上#define Menu_down 0x57 // 菜单下#define Menu_left 0x5f // 菜单左#define Menu_right 0x5b // 菜单右#define Menu_ok 0x16 // 菜单确认#define Channel_up 0x1b // 频道+ #define Channel_down 0x1f // 频道- #define Sound_up 0x1e // 音量+ #define Sound_down 0x1a // 音量- #define Open_Close 0x12 // 开/关#define Mute 0x10 // 静音#define Pic_in_pic 0x51 //画中画#define Standard 0x58 // 制式#define Return 0x52 // 返回#define Times 0x0b // 倍数#define Screen 0x16 // 屏幕#define Audio 0x1d // 伴音#define NICAM 0x13 // 丽音#define TV_Vedio 0x0f // 电视/视频#define Sleep 0x0e //睡眠/*----------------------常用参数定义-------------------*/ #define P0 0#define P1 1#define P2 2#define P3 3#define P4 4#define P5 5#define P6 6#define P7 7#define FREQ 8 //定义单片机工作频率为8M#define uint unsigned int#define uchar unsigned char#define Start_T1 TCCR1B|=_BV(CS11);TCNT1=0//复位预计分频器并开启定时器T1#define Stop_T1 TCCR1B&=~_BV(CS11) //关闭定时器T1/*-----------------IR信号指示灯操作函数---------*/#define EN_IR_LED DDRB|=_BV(P1)#define CLR_IR_LED PORTB&=~_BV(P1)#define SET_IR_LED PORTB|=_BV(P1)/*----------------------某些端口操作-------------------*/volatile unsigned char i,j,k;volatile unsigned long IRcode; //定义一个长度为4字节的无符号long 类型变量来存储代码volatile unsigned char *IRcodePointer ; //定义一个无符号的单字节指针变量,//用此地址变量来分别读取IRCode的//4个字节其中操作码为IRcodePointer[2]//用户码为IRcodePointer[0]volatile unsigned char IRReceiveEffective=0; //IR信号接收有效当程序响应接收以后请马上清零这样才会继续接收下一IR码volatile unsigned char IRReceiveCurrentBit=0; //IR信号当前接收位0时表示第0位即同步码(4.5ms高电平)volatile unsigned int Pulse_length=0; //捕获的脉冲宽度volatile unsigned char ICP_Parity=0; //捕获中断奇偶次计数1时为偶次并在此时判断脉宽volatile unsigned char Received_Key_Temp; //红外接收操作键缓存const unsigned char String[]={"You Have Press Key : "};/*----------------------串口定义-------------------*/unsigned char SetPrintfConvertMode=0; //使用printf作其他转换,并非输出到UARTvoid Uart_Init(void);int System_putchar(char c, FILE *stream);int System_getchar(FILE *stream);FILE mystd = FDEV_SETUP_STREAM(System_putchar,System_getchar,_FDEV_SETUP_RW);/*----------------------常用函数定义------------------*/void delay_nms(unsigned int ms) //N ms延时函数{for(i=0;i<ms;i++)_delay_loop_2(FREQ*250);}/*----------------------系统初始化函数定义------------------*/void IO_INIT(void){PORTB|=_BV(P0); //设置ICP引脚内部上拉经过试验验证,上拉会提高红外接收灵敏度}ISR(TIMER1_COMPA_vect){IRReceiveCurrentBit=0;//重置IR接收位为第0位,为下次接收做准备TIMSK&=~_BV(OCIE1A); //关闭溢出中断TCCR1B|=_BV(ICES1); //设置输入捕获上升沿有效ICP_Parity=0;Stop_T1;CLR_IR_LED;}ISR(TIMER1_CAPT_vect){if(!IRReceiveEffective){if(ICP_Parity==0){ICP_Parity++;TIMSK|=_BV(OCIE1A);TCCR1B&=~_BV(ICES1); //设置输入捕获下降沿有效Start_T1 ;}else{Stop_T1;ICP_Parity=0;TCCR1B|=_BV(ICES1);//设置输入捕获上升沿有效Pulse_length=ICR1;if(IRReceiveCurrentBit==0){if(Pulse_length>=3500&&Pulse_length<5500)// 如果是引导码(4.5ms) 进入下一个bit的读取IRReceiveCurrentBit++;}else if(IRReceiveCurrentBit<33) //接收32位数据{IRcode>>=1;if(Pulse_length<1900&&Pulse_length>1400) //判断是否为1 ( 1.685 ms) IRcode|=0x80000000;IRReceiveCurrentBit++;if(IRReceiveCurrentBit==33){IRReceiveCurrentBit=0; //重置IR接收位为第0位,为下次接收做准备if(IRcodePointer[0]==(unsignedchar)(~IRcodePointer[1])&&IRcodePointer[2]==(unsignedchar)(~IRcodePointer[3])){SET_IR_LED; //开启IR信号指示灯IRReceiveEffective=1; //数据有效}delay_nms(5); //因为32位数据后面还有一个信号上跳变,所以要适当延时,延时0.65ms以上即可}}}}}/////////////////////////////////////////////////////////////////int main(void){wdt_disable();IO_INIT();Uart_Init();TCCR1B=_BV(WGM12)|_BV(CS11);//采用8分频这样的话TCNT1的计数时基为1usOCR1A=8000; //TCNT1 计数上限设置IR接收超时这里设置8msTIMSK|=_BV(TICIE1);//开启输入捕获中断TCCR1B|=_BV(ICES1);//输入捕获上升沿有效EN_IR_LED; //IR信号指示灯允许CLR_IR_LED; //关闭IR信号指示灯IRcodePointer=&IRcode;sei();while(1){if(IRReceiveEffective){Received_Key_Temp=IRcodePointer[2];//把接收到的操作键放入缓存IRReceiveEffective=0; //允许下一次接收switch(Received_Key_Temp){case Key_1 : printf("\n%sKey_1",String);break;case Key_2 : printf("\n%sKey_2",String);break;case Key_3 : printf("\n%sKey_3",String);break;case Key_4 : printf("\n%sKey_4",String);break;case Key_5 : printf("\n%sKey_5",String);break;case Key_6 : printf("\n%sKey_6",String);break;case Key_7 : printf("\n%sKey_7",String);break;case Key_8 : printf("\n%sKey_8",String);break;case Key_9 : printf("\n%sKey_9",String);break;case Key_0 : printf("\n%sKey_0",String);break;case Menu : printf("\n%sMenu",String);break;case Menu_up : printf("\n%sMenu_up",String);break;case Menu_down : printf("\n%sMenu_down",String);break;case Menu_left : printf("\n%sMenu_left",String);break;case Menu_right : printf("\n%sMenu_right",String);break;case Menu_ok : printf("\n%sMenu_ok",String);break;case Channel_up : printf("\n%sChannel+",String);break;case Channel_down : printf("\n%sChannel-",String);break;case Sound_up : printf("\n%sSound+",String);break;case Sound_down : printf("\n%sSound-",String);break;case Open_Close : printf("\n%sOpen_Close",String);break;case Mute : printf("\n%sMute",String);break;case Standard : printf("\n%sStandard",String);break;case Return : printf("\n%sReturn",String);break;case Times : printf("\n%sTimes",String);break;//case Screen : printf("\n%sScreen",String);break;//Screen 与menu_ok 值相同case Audio : printf("\n%sAudio",String);break;case NICAM : printf("\n%sNICAM" ,String);break;case TV_Vedio : printf("\n%sTV_Vedio",String);break;case Sleep : printf("\n%sSleep",String);break;case Pic_in_pic : printf("\n%sPic_in_pic",String);break;default:printf("\n%sOther Key 0x%x",String,Received_Key_Temp);break;}CLR_IR_LED; //处理完数据以后关闭IR信号指示灯}}}/*----------------------串口函数实体------------------*/void Uart_Init(void){UCSRB=_BV(RXEN)|_BV(TXEN);UBRRL=25; //8M 19200stdout=&mystd;stdin=&mystd;}int System_putchar(char c, FILE *stream){if(SetPrintfConvertMode==1){}else{if (c == '\n')System_putchar('\r', stream);loop_until_bit_is_set(UCSRA, UDRE);UDR = c;}return 0;}int System_getchar( FILE *stream){loop_until_bit_is_set(UCSRA,RXC);return UDR;}/////////////////////////////////程序结束////////////////////////////。
基于AVR单片机的红外摇控开关制作
逻辑1
逻辑0
在一个位时间内先出现低电平后是高电平表示逻辑1,相反、先出现高电平后再出现低 在电视摇控器中一位所使用的时间为: 电平表示逻辑0。 其中一个位时间 = 3×28×Tosc , 8 3×2 ×(1/455KHz)≈ 1.688ms 。 每一个按键动作将触发一次的控制码发送操作。 SAA3010 发送一帧控制码的时序如下图 所示,它共有如下的 4 部分组成: 1. 开始位(1.5 位) :由两个高电平和一个低电平构成。 2. 控制位 (1 位) :由一个逻辑 1 构成 3. 系统码 (5 位): 系统码因器件的不同而不同如 SAA3010-00 系统码为 00000, SAA3010-01 的系统码为 00001。 4. 数据码 (6 位):它由不同的按键动作而产生。
电路原理图:请见本文附带的 PDF 格式原理图
摇控器信号编码: 目前在市场上多数彩电的摇控器是由 SAA3010 或其兼容产品作为红 外发送和键盘检测器件,SAA3010 是 PHILIPS 公司的低电压 PPM(脉冲位置调制)型红外 摇控信号发送器, 它具有扫描键盘和数字信号的调制发射等功能, 载波频率为外接时钟频率 的 1/12 ,通常电视摇控器时钟由 455KHz 的晶振产生,为此摇控信号的载波频率为: 455KHz/12 ≈ 38KHz。 SAA3010 采用了双相位编码发送技术,逻辑 1 和 0 的表示方法如下图所示:
/* Atmega8
外部 4MHz */
unsigned char g_bCounter; //采样计数器 unsigned char g_aBuf[26]; //采样电平记录缓冲区 // 定时器/计数器 0 中断函数 , 0.844 ms 中断一次 SIGNAL(SIG_OVERFLOW0) { TCNT0=202; //装载预设计数值 if((IRPIN&_BV(IRBIT))==_BV(IRBIT)) g_aBuf[g_bCounter]=1; else g_aBuf[g_bCounter]=0; g_bCounter++; if(g_bCounter>=26) //关闭定时器 { TIMSK&=~_BV(TOIE0); TCCR0=0; } } //一次控制码读取函数 unsigned char ReadIRCode(void) { unsigned char i,j; //采样
基于AVR单片机热释电红外感应设计方案
基于A VR单片机的红外感应一设计方案(一)功能及技术指标要求1、功能:被动式热释电红外探测感应,它是利用热释电红外传感器检测人体红外信号来完成防盗监测的。
当有人进入传感器的监测区域时,报警装置通电工作,发出报警声。
2、指标要求:探测距离大于30cm,实现超低功耗,电源采用2节干电池(3.6v),电池利用时间达到一年以上。
(二)设计内容按设计技术指标完成硬件电路部分的设计及部分软件代码(三)设计思路及关键技术1、设计时首先要充分认识两个问题:(1)低功耗如何才能实现?感应器工作应分为两种状态:工作模式和省电模式。
工作模式即当有人进入感应区,热释电传感器感应出信号,通过信号处理电路,再将信号送到MCU处理,进行相应的执行操作。
而在大部分时间内,感应器是要处于省电模式,此时消耗的功率非常低,即人尚未进入感应区范围,或者人离开了感应区,此时电路进入省电模式状态。
明白了这两点,就要设计这两种模式下的工作状态。
(2)探测范围问题,包括探测的距离和角度。
设计要求的在30cm 距离范围内,一般的传感器都会达到这个距离,即先不在讨论这里。
然后是角度问题,包括立体空间角度。
在传感器上加个半球开的盖可以大大增大探测角度,减小盲区。
当人体在这个监视范围内运动时,顺次地进入某一单元透境视场,又走出这一视场,热释电元件对运动物体一会儿看得见一会儿看不见,就产生了信号。
2、设计思路:本设计方案包括三大部分组成:人体信号检测电路,单片机控制电路,显示电路。
(1)人体信号检测电路采用biss0001红外传感信号处理器,信号检测电路如图所示。
(1)单片机控制电路采用A VR单片机,A VR单片机工作在1MHz,3V时的典型功耗:正常工作模式为1.1mA,掉电工作模式为<1uA,通过软件来设计使有信号时,单片机工作在正常状态,无信号时工作在掉电模式。
设计电路如图所示:(3)显示电路处理部分,可根据不同的性能要求作出相应的处理。
基于AVR的通用学习型红外遥控器设计
基于A VR的通用学习型红外遥控器设计张毅(重庆交通大学,机电与汽车工程学院,重庆,400074)摘要:本文基于A VR系列单片机中的Atmel162的通用学习型红外遥控器的设计方案,用来解决生活中各种电器遥控器编码方式的不同,不能交叉使用的不便。
本方案利用单片机来测量红外编码的高低脉冲宽度,并还原相应的红外编码信号,达到学习原遥控器的功能。
本次设计的控制器可有效学习市面上95%以上的遥控器,并且添加了无线通信功能,可以添加进入智能家居系统。
最后利用Altium Designer软件进行电路设计并做出实物,验证了方案的可行性。
关键词:Atmel162;红外遥控器;Altium Designer红外遥控装置因为其结构简单,抗干扰能力强等优点被广泛的用作各种电器的遥控器。
但是伴随着电器的发展,红外遥控编码方式并没有形成统一的制式,这就造成了红外遥控装置不能相互混用这些都给用户的使用带来了很大的不便。
本系统采用价格低廉的红外接收和发射管和单片机等材料,实现对电器的控制,并且可以与主机完成互联通信,接入智能家居系统,从而代替遥控器使用。
1 通用学习型红外遥控器的工作原理整套红外遥控系统一般由编码电路(编码芯片或者单片机)及发射器、载波电路、解码电路(解码芯片或者单片机)和接收器组成。
遥控器发射遥控指令时是将一串二进制数编码后通过载波信号发射出去,而根据周期不同分别将其定义为‘0’或者‘1’。
周期为2*561us 的为‘0’,而周期为4*561us的为‘1’。
红外编码没有一个统一的标准,不同的遥控器就会有不同的编码方式。
比如电视机遥控器采用的按键编码就是由引导码,8位用户码,8位用户反码,8位操作码,8位操作反码组成;但是空调的编码就比较复杂了,不同的空调厂商的编码方式也不同,每个部分都会反应现在空调所处的状态(如:开关、风速、温度、模式、扫风等等)。
本设计设计思路就是不管红外编码方式只将红外编码的脉冲宽度进行测量,然后将高低电平的时间值储存起来,发射的时候再按照采集的时间值恢复脉冲宽度,将其原封不动的发射出去。
avr学习型空调红外遥控器代码IRD-1V21
avr学习型空调红外遥控器代码作者:佚名来源:本站原创点击数:24 更新时间:2010年08月15日【字体:大中小】/***************************************//* Target : avr单片机 ATmega8l */ /* Crystal: 3.6864Mhz *//* 2007.8.20 *//* 外国人写的学习型空调红外遥控器的源程序*//* AT24C512里存储2个键的时间数据, *//* 学习和发射时都通过串口输出 *//* 按键学习和串口学习都可以/*带多键盘通讯接口/***************************************///IRD-1V20 模块地址写EEPROM(2)#include <iom8v.h>#include <macros.h>#include <string.h>#include <eeprom.h>#define SYSCLK 3686400UL#define uchar unsigned char#define uint unsigned int#define ulint unsigned long#define IRD_START TCCR2=0X19#define IRD_STOP TCCR2=0X00/* I2C device slave address 1 A0、A1、A2--GND == 0xa02 A0、A1、A2--VCC == 0xa6 */ /* 24c512 =65536 bytes,anykey include <1000 bytes */#define devicecode 0x01#define TWI_SLA_24C512 0xa0//#define address 0x02//遥控器地址//#define TWI_SLA_PCF8563 0xa2#define MAX_ITER 200#define TW_WRITE 0#define TW_READ 1// MT#define TW_REP_START 0x10#define TW_START 0x08#define TW_MT_ARB_LOST 0x38#define TW_MT_SLA_ACK 0x18#define TW_MT_SLA_NACK 0x20#define TW_MT_DATA_ACK 0x28#define TW_MT_DATA_NACK 0x30// MR#define TW_MR_SLA_ACK 0x40#define TW_MR_SLA_NACK 0x48#define TW_MR_ARB_LOST 0x38#define TW_MR_DATA_NACK 0x58#define TW_MR_DATA_ACK 0x50#define led_off PORTC|=(1<<PORTC2)#define led_on PORTC&=(~(1<<PORTC2)) #define TX485 PORTD|=(1<<PORTD7);#define RX485 PORTD&=(~(1<<PORTD7));uchar end,study_key;uchar data_buf[700];//uchar data_buf11[100];uchar modify_buf[6];//键值特征暂存区uchar study_key_value=0;uchar send_key_value=0;uchar scon_key_value=0;uchar rece_begin=0;uint timer_over_cnt,pulse_in_cnt;uchar send_end;uint save_start,send_start;//uint pp;uchar study_num,send_num;uint num,lenth;uchar sum=0,rec_end;//len1;uint s_save_start;uchar s_study_num;uint count0,count1;uint rece_num=0;//接受数据计数;uchar rece_buf[8];uchar rece_ok=0;uchar ctrl_flag=0;uchar get_flag=0;uchar set_flag=0;uchar amend_flag=0;uchar scon_save[8];uchar scon_err=0;uchar scon_err_flag=0;uchar key_on_flag=0;uchar key_off_flag=0;uchar ord_flag=0;uchar MKaddress;void EEPROM_write( unsigned int Address, unsigned char UcData) {while(EECR & (1<<EEWE));EEAR=Address;EEDR=UcData;EECR|=(1<<EEMWE);EECR|=(1<<EEWE);}unsigned char EEPROM_read(unsigned int Address)while(EECR & (1<<EEWE));EEAR=Address;EECR|=(1<<EERE);return EEDR;}void watchdog_init(void){WDR(); //this prevents a timout on enablingWDTCR=0x1F;NOP();WDTCR=0x0F; //WATCHDOG ENABLED - dont forget to issue WDRs }void Delay_mSec(uint n){uchar i;while(n--){for(i=0;i<125;i++);WDR();}}void Delay_us(uchar n){uchar i;for(i=0;i<n;i++);void int0_init(void){MCUCR=0x01;// MCUSR=0;}void uart_init(void)//bps=38400,UCSRA=0X02;bps=19200,UCSRA=0;{UCSRB = 0x00; //disable while setting baud rateUCSRA = 0x01;UCSRC = 0x86;//0x06;UBRRL = 0x0b; //set baud rate loUBRRH = 0x00; //set baud rate hiUCSRB = 0x9c;}int TWI_read_bytes(uchar SLAADDR,uint eeaddr, int len, uchar *buf,uchar slavtype)uchar sla, twcr,n = 0;int rv = 0;/* patch high bits of EEPROM address into SLA */WDR();sla = SLAADDR ;restart:if (n++ >= MAX_ITER) return -1;begin:TWCR = (1<<TWINT)|(1<<TWSTA)|(1<<TWEN); /* send start condition */ while ((TWCR & (1<<TWINT)) == 0) ; /* wait for transmission */switch ((TWSR&0xf8)){case TW_REP_START: /* OK, but should not happen */case TW_START:break;case TW_MT_ARB_LOST:goto begin; /* Note [7] */default:return -1; /* error: not in start condition */ /* NB: do /not/ send stop condition */ }WDR();TWDR = sla | TW_WRITE;TWCR = (1<<TWINT)|(1<<TWEN); /* clear interrupt to start transmission */while ((TWCR & (1<<TWINT)) == 0) ; /* wait for transmission */switch ((TWSR&0xf8)){case TW_MT_SLA_ACK:break;case TW_MT_SLA_NACK:goto restart; /* nack during select: device busy writing */case TW_MT_ARB_LOST:goto begin; /* re-arbitrate */default:goto error; /* must send stop condition */}if(slavtype==2){TWDR = eeaddr>>8; /* high 8 bits of addr */TWCR = (1<<TWINT) | (1<<TWEN); /* clear interrupt to start transmission */ while ((TWCR & (1<<TWINT)) == 0) ; /* wait for transmission */switch ((TWSR&0xf8)){case TW_MT_DATA_ACK:break;case TW_MT_DATA_NACK:goto quit;case TW_MT_ARB_LOST:goto begin;default:goto error; /* must send stop condition */}}WDR();TWDR = eeaddr; /* low 8 bits of addr */TWCR = (1<<TWINT) | (1<<TWEN); /* clear interrupt to start transmission */while ((TWCR & (1<<TWINT)) == 0) ; /* wait for transmission */由于代码太长,本文篇幅有限,完整本版的代码从这里下载/ziliao/file/IRD-1V21.rar这是从一个外国论坛上搞下来的,已经测试通过,晶振使用外接的3.6864Mhz,内部rc晶振可能不太稳定。
AVR红外遥控器的接收实验
遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G组成发射电路为例说明编码原理(一般家庭用的DVD、VCD、音响都使用这种编码方式)。
当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。
一、电路实现红外发射器很容易找到,我们平时家用的电视、DVD遥控器都可以用来进行实验。
下面的电路图是红外接收部分的电路图,二、红外接收原理关于红外发射部分,由于我们采用的是现成的遥控器,而不同的遥控器其实现电路各不相同,这里我们就不详细介绍。
我们只需要知道遥控器发射出来的数据格式,然后通过红外接收器接收数据,并根据数据格式将其进行分解,得到相应键值即可。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms之间,发射波形图如下:当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码脉冲,这108ms 发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和这8位数据的反码(9ms~18ms)组成。
如果键按下超过108ms仍未松开,接下来发射的代码(连发码)将仅由起始码(9ms)和结束码(2.25ms)组成。
其中32位数据格式如下:这种遥控码具有以下特征:采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”,波形如下图:三、程序实现在本实例中,我们利用串口将单片机从一体化红外接收器接收到的红外遥控键值发送到计算机上,通过计算机的串口助手观察接收到的数据。
34、AVR单片机视频教程 红外遥控解码实验
编程说明
• 使用AVR开发环境,使用的是内部1M的晶振,所以需要将熔 丝位的时钟频率修改为1M。(一定不要选择错了,否则会导致单 片机不能再烧写程序)。
做完本实验后,请改回外部12M熔丝位
• 外部12M熔丝位设置
车载MP3遥控器
使用时要取下电池门卡糟胶片
数码管显示代码
• 打开实验项目
LCD1602显示代码
• 打开实验项目
数码管显示实验效果
实验效果
谢谢
程序功能
• 利用串口将单片机从一体化红外接收器接收到的红外遥控键 值发送到数码管/(LCD1602),在数码管/(LCD1602)观察接收 到的数据。
• 编程过程中,我们利用单片机的外部中断0口进行检测,一 旦检测到有红外遥控信号出现,则程序进入外部中断处理程序, 在处理数据过程中关闭外部中断,直到接收完数据,再将外部中 断打开。
引导码 连发码
•
当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms的编码
脉冲,这108ms发射代码由一个引导码(9ms),一个结果码(4.5ms),低8位
地址码(9ms~18ms),高8位地址码(9ms~18ms),8位数据码(9ms~18ms)和
这8位数据的反码(9ms~18ms)组成。如果键按下超过108ms仍未松开,接下
遥控码特征
• 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms的组合表示二进 制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms的组合表示二进制的“1”, 其波形如图
• 上述“0”和“1”组成的32位二进制码经38kHz的载频进行二次调制以提高发射效率, 达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射,如图
基于AVR单片机的无线红外通信系统设计
基于AVR单片机的无线红外通信系统设计作者:苏明霞熊薇薇张明涛来源:《无线互联科技》2015年第19期摘要:文章应用红外通信方式实现了一个基于单片机红外光通信的模拟信号和数字信号的发射与接收系统。
模拟发射部分采用PWM脉宽调制技术发射语音信号。
接收部分采用带有滤波的光电三极管,解调出输入的语音信号。
数字发射部分以AVR单片机为控制核心,发射温度信号,采用单片机的输入捕捉功能还原出温度信号,再显示当前温度。
系统具有硬件电路简单、抗电磁干扰能力强、高速可靠、较高的集成性、性价比较高等特点,具有一定的参考和使用价值。
关键词:AVR;单片机;无线;红外通信近年来无线数据通信技术不断发展,红外无线技术也得到了较大的进步,它主要利用红外线来传递数据,是无线通讯技术的一种,具有体积小、功耗低、功能强、成本低等特点。
结合红外通信技术应用的特点,本文设计和实现了一种基于AVR单片机的无线红外通信系统。
单片机是目前设计应用中用得比较广泛的器件,它可以通过软件编程来达到不同的效果,实现各种各样不同的功能,具有灵活性强、可靠性高、可扩展性好的优点。
结合单片机技术,可以提高红外通信的距离,而且硬件电路简单,同时具有较高的集成性、性价比较高等特点,具有一定的参考和使用价值。
1系统方案本系统是一个基于单片机红外光通信的模拟信号和数字信号的发射与接收系统。
采用语音信号放大,经过PWM调制后单独发射,经光敏三极管接收进行放大滤波和功放。
温度信号采用DS18820采集,经过单片机进行编码,将调制信号与38KHz载波信号通过74HC157多路选择器进行调制后发射。
同样采用光敏三极管U37D进行接收,即可解调出发射的温度信号,通过AVR128单片机进行输入捕捉,最终显示到1602液晶显示屏上。
模拟部分信号调制采用PWM调制方案,解调时采用巴特沃斯滤波器;数字部分的红外编码采用16位温度数据并在前后加入起始位和截止位,组成包含18bit方式的一个帧,调制方案主要采用WDM调制。
AVR单片机捕获中断实现红外线解码
A VR单片机捕获中断实现红外线解码摘要:AVR单片机是Atmel公司推出的一个单片机系列。
由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。
文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法。
关键词:AVR;红外线解码;输入捕获中断1 红外线编码红外线编码是数据传输和家用电器遥控常用的一种通讯方法,其实质是一种脉宽调制的串行通讯。
家电遥控中常用的红外线编码电路有μPD6121G型HT622型和7461型等。
本文就以这些电路的编码格式来讨论怎样使用AVR单片机的捕获中断功能来实现其解码。
红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。
接收部分则是完成红外线的接收、放大、解调,还原成同步发射格式相同(但高、低电位刚好相反的脉冲信号。
这些工作通常由一体化的接收头来完成,主要输出TTL兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
图1是一个红外线遥控制系统的原理框图。
图2示出该红外遥控系统的编码格式。
图中,μPD6121G遥控器的二进制“0”由0.56ms的间隔加0.565ms的脉冲表示;二进制“1”由0.56ms的间隔加1.685ms的脉冲表示。
每次发送的32二进制码可分成两部分,其中前16位是遥控器辨识码,主要用于区别不同遥控器,后16位是操作码。
这两个部分的后8位都是前8位的反码,用作数据校验。
每帧数据以9ms的间隔加4.5ms的脉冲作为数据头。
2 AVR单片机AVR系列单片机是Atmel公司于1997年推出的一款全新配置的、采用精简指令(RISC-Redued Instruction Set CPU)结构的新型8位单片机。
由于AVR单片机采用单指令操作,所以,在相同时钟的情况下,AVR的指令周期只有8051型机的1/2,而且AVR采用两极指令流水线,可以在执行当前指令的同时获取下一条指令,所以具备1MI/s/MHz的调整处理能力。
AVR单片机的无线通信设计探析
Telecom Power Technology
通信技术
单片机的无线通信设计探析
毛夏煜,文渊博,方舒靖,马晨雨
(长安大学信息工程学院,陕西西安
单片机在无线通信技术中的应用提出通信系统设计建议,旨在为
单片机;无线通信;系统设计
Analysis of the Wireless Communication Design Problem for AVR Microcontroller
WEN Yuan-bo,FANG Shu-jing
School of Information Engineering,Chang’an University
This paper puts forward the design proposal of communication system for AVR mcu in wireless communication in order to provide basis for the application of Avr mcu in wireless communication design.
infrared wireless communication;
附以正确的
单
上位机
片
机
主机原理图
软件的设计应考虑到系统运行需求,针对不同的
(上接第207页)
在组网方面,5G网络研究的重点一直都是超密集组网基于光纤传送网的5G移动通信技术进一步开发和应用。
AVR单片机的无线通信设计问题探讨
帧数据。
而 实现 合 适 信 道 中 的传 输 。所谓 信 道 , 即信 号快 速 传输 的 渠道 , 有 无 线和 有线 之分 。 而信 息接 收 设备 . 不仅 能将 传输 的信 息进 行 解调 与 解码 , 同 时还 可 以减 轻 干 扰 , 最 大化 的恢 复 初 始 信 号 。
茜 随 着 国 家对 通 讯 技 术 的 大 力 支持 .近 年 来我 国在 无 线 通 讯 技 术 方 面投 入 不 少 的人 力 、 物 力和 财 力 . 以此 来 更好 的提 升
刖
1 单片机无线通 信系统 的相关概述
所谓 通 信 系统 . 即 由不 同部 分 完 成 信 息传 递 的 整 个 过 程 。 这 个 几 个 部 分 主 要 由信 息 发 送 者 、 信道 、 发 送 设备 、 接收设备 、 信 息接收 者 来组成 的 。信 息发送 设备 能够 变信 号为标 准信 号 , 从
2 【 ) l 7年 5月上
基于AVR单片机捕获中断实现红外线解码的方法介绍
基于AVR单片机捕获中断实现红外线解码的方法介绍
AVR 单片机是Atmel 公司推出的一个单片机系列。
由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁。
文中介绍通过AVR 单片机的捕获中断来实现红外线通讯解码的一种方法。
1 红外线编码
家电遥控中常用的红外线编码电路有μPD6121G型HT622 型和7461 型等。
本文就以这些电路的编码格式来讨论怎样使用AVR 单片机的捕获中断功
能来实现其解码。
红外线通讯的发送部分主要是把待发送的数据转换成一定格式的脉冲,然后驱动红外发光管向外发送数据。
接收部分则是完成红外线的接收、放大、解调,还原成同步发射格式相同(但高、低电位刚好相反的脉冲信号。
这些工作通常由一体化的接收头来完成,主要输出TTL 兼容电平。
最后通过解码把脉冲信号转换成数据,从而实现数据的传输。
图1 是一个红外线遥控制系统的原理框图。
图2 示出该红外遥控系统的编码格式。
图中,μPD6121G遥控器的二进制“0”由0.56ms 的间隔加0.565ms 的脉冲表示;二进制“1”由0.56ms 的间隔加1.685ms 的脉冲表示。
每次发送的32 二进制码可分成两部分,其中前16 位是遥控器辨识码,主要用于区别不同遥控器,后16 位是操作码。
这两个部分的
后8 位都是前8 位的反码,用作数据校验。
每帧数据以9ms 的间隔加4.5ms 的脉冲作为数据头。
基于AVR单片机的无线红外通信系统设计
基于AVR单片机的无线红外通信系统设计
苏明霞;熊薇薇;张明涛
【期刊名称】《无线互联科技》
【年(卷),期】2015(000)019
【摘要】文章应用红外通信方式实现了一个基于单片机红外光通信的模拟信号和
数字信号的发射与接收系统。
模拟发射部分采用PWM脉宽调制技术发射语音信号。
接收部分采用带有滤波的光电三极管,解调出输入的语音信号。
数字发射部分以AVR单片机为控制核心,发射温度信号,采用单片机的输入捕捉功能还原出温
度信号,再显示当前温度。
系统具有硬件电路简单、抗电磁干扰能力强、高速可靠、较高的集成性、性价比较高等特点,具有一定的参考和使用价值。
【总页数】2页(P5-6)
【作者】苏明霞;熊薇薇;张明涛
【作者单位】武汉理工大学华夏学院,湖北武汉 430223;武汉理工大学华夏学院,湖北武汉 430223;武汉理工大学华夏学院,湖北武汉 430223
【正文语种】中文
【相关文献】
1.基于安卓系统及AVR单片机的无线考核系统设计 [J], 卢茹
2.基于AVR单片机的无线家居控制系统设计 [J], 张天鹏;郭汝静
3.基于AVR单片机的智能无线温控系统设计 [J], 骆舒萍
4.基于BUCK降压和红外通信的电动自行车无线充电系统输出功率控制方法 [J],
王杰;高星冉;邓其军
5.基于无线红外通信的烟雾自动报警系统设计 [J], 晏小庆;阮云兰;文志诚
因版权原因,仅展示原文概要,查看原文内容请购买。
红外无线通信系统的设计与实现
第五章总结与期望摘要红外无线通信,通常又叫红外光通信,是利用红外线传送信息的一种通信方式。
红外线通信所传输的内容是多样的,可以是音频信号,也可以是视频信号。
利用红外线,可以构成无绳电话及无线耳机系统。
红外线的传输距离不远,一般在十米以内,但可以避免频谱占用,信号失真等电气指标较易处理,应用于普通的办公室和家庭等场合应该已经可以满足要求。
红外线的应用范围很广,电视机、空调、微波炉等凡涉及到遥控的家电,一般均采用红外线来作为信号传输的载体。
本次设计的红外无线通信系统主要是传递音频信号。
该系统是由发射模块和接收模块组成。
发射模块的输入与音响设备相连接,从音响设备输出的音频信号调制红外光以后,由红外光发射机将调制的红外光向空间发射。
红外无线系统的接收部分将接收到的已调制红外光进行解调,还原出音频信号,然后送到扬声器发出声音。
本次设计的电路系统具有实用、成本低廉、使用方便的优点。
关键词红外线、发射、接收、调制、解调目录中文摘要 (Ⅰ)英文摘要 (Ⅱ)0 引言1 红外发射系统1.1 红外发射系统组成框图1.2 红外发射系统的工作原理分析1.2.1 直流稳压电源..............................................1.2.2 音频放大电路..............................................1.2.3 高频振荡电路..............................................1.2.4 高频放大电路..............................................1.2.5 频率调制电路..............................................1.2.6 高频功放电路..............................................1.2.7 红外发射电路..............................................2 红外接收系统2.1 红外接收系统的组成框图2.2 红外接收系统的工作原理分析2.2.1 直流稳压电源.................................................2.2.2 红外接收电路.................................................2.2.3 高频放大电路.................................................2.2.4 频率解调电路.................................................2.2.5 音频功放电路.................................................2.2.6 扬声器.......................................................3 红外通信系统的仿真3.1 仿真软件的介绍3.2 仿真调试4.安装、焊接、调试及性能分析5.结论6.致谢7.参考文献0 引言随着计算机与通信技术的飞速发展,计算机通信得到广泛应用,硬件技术可谓是日新月异,其总体趋势向着高集成度、高稳定性、高速和高性价比方向发展。
AVR单片机捕获中断实现红外线解码
AVR单片机捕获中断实现红外线解码
吴华程
【期刊名称】《国外电子元器件》
【年(卷),期】2005(000)008
【摘要】AVR单片机是Atmel公司推出的一个单片机系列.由于该系列单片机的集成度高,因此,其软/硬件设计都变得更加简洁.文中介绍通过AVR单片机的捕获中断来实现红外线通讯解码的一种方法.
【总页数】3页(P21-23)
【作者】吴华程
【作者单位】广东工业大学,广东,广州,510090
【正文语种】中文
【中图分类】TP368
【相关文献】
1.AVR单片机的嵌入式操作系统中实现中断嵌套的分析 [J], 张开如;牟娟;曹明革
2.利用Code Vision AVR C中断程序实现AVR单片机的TWI读写 [J], 张连生
3.利用Code Vision AVR C中断程序实现AVR单片机的TWI读写 [J], 张连生
4.基于AVR单片机捕获中断和热敏电阻的温度测量 [J], 田开坤;徐海霞
5.利用TWI硬件中断实现AVR单片机主从式I2C通讯的一种方法 [J], 张洪林因版权原因,仅展示原文概要,查看原文内容请购买。
AVR学习笔记--红外遥控接收器使用
AVR学习笔记--红外遥控接收器使用
目前大多使用的是一体化红外接收头,它将红外接收二极管、放大、解调、整形等电路做在一起,只有三个引脚.分别是+5V 电源、地、信号输出。
所以只需要关心接收头的输出编码格式。
[1]指令格式:前导码+ 地址码+ 地址码反码+ 数据+ 数据码反码
[2]指令编码:脉宽调制编码
[3]识别算法:每两次信号的下降沿表示1 位数据,根据两次下降沿之间的间隔时间,就可以判断出是前导码,还是数据1 或数据0。
A、前导码:9ms
B、数据1:2.25ms
C、数据0:1.12ms
注意:[1]虽然0 和1 的占用时间长度不同,但因为同时其反码的存在,所以整条指令的总长度是固定的。
[2]前导码是固定格式,也是红外指令的识别码
[4]硬件电路:
[5]编程流程:
一体化红外接收头的输出脚接到外部硬件中断I/O 上,并设置成下降沿触发。
CPU 上电,初始化定时器,初值为0。
每次触发中断,停止定时器,读取定时器值,判断定时器值,9ms 表示前导码,2.25ms 表示1,1.12ms 表示0。
送入数据缓冲,并对数据队列计数,初始化定时器,重新计时。
判断数据队列长度,除前导码外,接收到32 位数据,表示指令接受完成。
指令校验,就是将数据
和数据反码,地址和地址反码做加法处理,如果得到的结果是0xFF,表示校验。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
AVR实现红外无线数据通信(IrDA)
2007年7月
摘要:实现无线数据通讯有多种方式,如RF和红外(Ir)通信技术。
IrDA红外通信是一种低价的、适应性广的短距离无线通讯技术。
文章介绍了IrDA的关协议、实现方法以及在物料运行过程中进行身份识别的应用。
关键词:IrDA 无线通信 身份识别(ID识别)
在日化、制药等行业的制造过程中,为了保证最大限度地达到GMP的标准,避免频繁的隔离门开启,一般需要采用自动物料周转系统。
采用自动物料周转系统有以下优点:
1、摒弃了无附加值的流程和工序;
2、避免频繁的隔离门开启,从而最大限度地达到GMP标准;
3、避免人员流动和设备移动产生的安全隐患;
4、降低了劳动强度、节省了运作成本;
5、提高自动化程度。
但是在物料的周转过程中,如何对物料身份进行快速、准确的自动识别是一个比较困难的问题。
由于物料运输线的运行速度比较快(可达30-60m/min)、相邻工位之间的距离又比较近,所以一些相关的身份识别技术如RFID、RF卡、条形码等都无法胜任。
RFID的造价也过于高昂,RF卡解决不了高速运行的问题,而普通RF模块又解决不了功耗和同频干扰的问题;条形码技术由于周转过程中需要改变身份ID的要求也无法胜任,因为条形码技术一方面需要配置较多的条形码打印机从而造成造价高昂,另外一方面老的条形码的清除和覆盖也是一个问题。
我们使用红外无线数据通信技术(IrDA)很好地解决了这个问题,在帮助国际知名化妆品生产公司广州雅芳(AVON)进行物料运输系统的自动化改造过程中,我们成功地将红外无线数据通信技术(IrDA)应用于物料传输过程中的身份识别。
在这个项目中充份利用了AVR 速度快、功耗低、有EEPROM及适合于C语言开发等特点,在比较短的时间内就完成了设计开发、试验和制造的过程,并且将红外无线数据通信技术(IrDA)和AVR进行了完美的结合。
产品在投入实际运行后,在性能、造价和可靠性等多方面获得了客户的好评。
一、IrDA协议介绍
IrDA(The Infrared Data Association)即红外数据协会,是1993年6月成立的一个国际性组织,专司制订和推进能共同使用的低成本红外数据互连标准,支持点对点的工作模式。
由于标准的统一和应用的广泛,更多的公司开始开发和生产IRDA模块,技术的进步也使得IrDA 模块的集成越来越高,体积也越来越小。
IrDA1.0可支持最高115.2kbps的通信速率,而IrDA1.1可以支持的通信速率达到4Mbps。
IrDA数据通信按发送速率分为三大类:SIR、MIR和FIR。
串行红外(SIR)的速率覆盖了RS-232端口通常支持的速率(9600b/s~115.2kb/s)。
MIR可支持0.576Mb/s和1.152Mb/s 的速率;高速红外(FIR)通常用于4Mb/s的速率,有时也可用于高于S1R的所有速率。
它们的物理层方面的实现是有一定的区别的。
IrDA物理层协议提出了对工作距离、工作角度(视角)、光功率、数据速率不同品牌设备互联时抗干扰能力的建议。
图一是SIR器件的帧格式
图二是IrDA应用过程中的软件协议栈的层次结构图。
图一、SIR器件的帧格式
图二、IrDA协议栈
二、硬件电路设计
在我们的这个应用中,使用SIR器件就可以满足速度的要求了,而普通MCU的UART和SIR 器件之间的接口通常需要使用一个TOIM4232之类的转换器件,如图三所示。
图三、SIR器件和UART之间的接口
图五、IrDA从机框图
三、软件程序设计
由于AVR系列MCU有丰富的SRAM资源、有很高的C语言代码密度,所以整个项目我们都是使用C语言进行开发的。
使用C语言开发,也大大缩短了我们的软件设计所花的时间,另外在程序的调试、修改、维护方面也具有无比的优越性。
在IrDA的主机模块中,我们还引入了RS485现场总线,可以适应的工厂自动化控制的需求。
另外,由于AVR器件内部有EEPROM存贮器,所以在软件设计中我们引入了可编程逻辑控制器(PLC)的概念,对主机模块的功能及输入输出开关量的逻辑功能,可以由用户通过PC 机软件自己进行设置。
对已保存到主机模块中的设置,也可以使用口令进行保护,防止非法用户的修改。
在IrDA的从机模块中由于我们使用普通碱性AA电池供电,所以使用了Linear的LTC3525D产生3.3V的工作电压。
我们在软件中也采取特殊的低功耗设计,再配合上AVR系列MCU的低功耗特性,使整机的功耗相当的低。
如果按照每天工作16小时,二节AA碱性电池的使用时间可达一年以上,基本上实现了免维护。
从机还有电池电压检测功能,如果电池电压过低时,在和主机模块通信时,会向主机报告相关的欠压信息,此时主机会发出特殊的警示音,以提醒工作人员更换电池。
在从机模块中,我们将物料的身份信息保存在AVR器件的内部EEPROM存贮器中,一方面在实际运行过程中,工作人员可以根据实际需要进行实时改写;另外一方即使进行更换电池的操作,也不会丢失相应的身份信息。
四、实际产品的状况
图六、物流箱用的的ID板成品(左)和ID信息码读写电路成品(右)
图七、承载物料和成品的物流箱在传送线上爬坡
图八、装有ID 板的物流箱装载了初始成品在传送线上运行
经过一段时间的实际运行考核,证明了这个设计是成功的、AVR 系列MCU 适合于相应工作场合的应用要求,客户对这个设计的可靠性、造价、运行成本和性能等方面也都很满意。