1、ASK调制:
“幅移键控”又称为“振幅键控”,也有称为“开关键控”(通断键控),所以又记作OOK信号。ASK是一种相对简单的调制方式。幅移键控(ASK)相当于模拟信号中的调幅,只不过与载频信号相乘的是二进制数码而已。幅移就是把频率、相位作为常量,而把振幅作为变量,信息比特是通过载波的幅度来传递的。二进制振幅键控(2ASK), 由于调制信号只有0或1两个电平,相乘的结果相当于将载频或者关断,或者接通,它的实际意义是当调制的数字信号为“1”时,传输载波;当调制的数字信号为“0”时,不传输载波。一般载波信号用余弦信号,而调制信号是把数字序列转换成单极性的基带矩形脉冲序列,而这个通断键控的作用就是把这个输出与载波相乘,就可以把频谱搬移到载波频率附近。
2、几个周期:
2.1、时钟周期:也称为振荡周期或晶振周期,定义为时钟频率的倒数,即晶振的振荡频率的倒数,计为:T(时)=1/f(osc)。时钟周期是计算机中最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us。
2.2、状态周期:状态周期是振荡周期的二倍。振荡周期也称为晶振周期,振荡周期是单片机的基本时间单位。振荡脉冲经二分频成为时钟信号,时钟信号的周期称为状态周期。若时钟晶振的振荡频率为fosc,则时钟信号的状态周期Tosc=(1/fosc)*2。(即为振荡频率的倒数的2倍)。例如:晶振频率为12MHZ,则时钟周期Tosc=(1/12us)*2。
2.3、机器周期:单片机的基本操作周期。在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。一个操作周期内,单片机完成一项基本操作。
2.4、指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。
综上所述:一个机器周期 = 6个状态周期 = 12个时钟周期。
3、位码:
红外编码波形的基本单位,为分AD(地址码、数据码)位和SYNC(同步码)位,每“位”波形由两个脉冲周期构成,每个脉冲周期含有16个时钟周期。位码使用两个脉冲信号表示一个编码值,其中,两个连续窄脉冲表示编码值“0”;两个连续宽脉冲表示编码值“1”;一个窄脉冲和一个宽脉冲表示“F”,也就是地址码的“悬空”。即每个位码bit用2bit表示:00 或01或10表示0码;11表示1码。
如下图所示,编码芯片PT2262发出的编码信号经过整形电路之后得到的脉冲波形图。由:地址码、数据码、同步码组成。地址码和数据码都用宽度不同的脉冲来表示,两个窄脉冲表示“0”; 两个宽脉冲表示“1”; 一个窄脉冲和一个宽脉冲表示“F”,也就是地址码的“悬空”;同步码为时间较长的低电平间隔,下图为PT2262编码图:
如上图,发射端每发送一次信号都会携带多组编码字码,每段编码字码值相同,二进制值为0B010101010101010100001100,对应的十六进制码值为:0x55550C。从图中可以看出,发送码的周期是相等的,只是脉冲宽度不同(宽脉冲与窄脉冲之比为3:1)。而同步码的低电平时间约为这个周期的8倍。
解码的关键是识别同步码,然后对后面的字码的脉冲宽度进行识别,就可以解出这个编码。PT2262每次发射时至少发射4组字码,每组字码由25个脉冲组成,前24个脉冲为地址和数据,最后一个脉冲和一低电平间隔组成同步码。
4、单片机解码思路:
下面我们来说说如何用51单片机对其进行解码。由于程序结构不复杂,就不再画程序流程图了。
红外线经一体化接收模块解码后送到单片机的外部中断0,单片机设置外部中断下降沿触发(即外部中断0为跳变沿触发方式,从高到低的负跳变触发进入中断处理函数进行解码操作);
首先我们把T0设置为16位定时器模式,工作在定时状态,初始化值为0,在晶振的工作频率为11.0592MHz时计满最大值计数值的时间为:71111us。由于同步码周期与地址数据周期都远小于定时器0的定时时间,所在定时器0正常工作时,是不会溢出的;
T1用作延时,设置其定时为1ms(本示例中没有用到T1功能);
在EX0=1(外部中断0启动)并且EA=1(使能所有中断)后,当下降沿到来时进入到中断处理函数,T0在TR0的控制下启动与停止计时;
当接收到下降沿后,先判断当前的电平状态,检测到是低电平时则把T0计时器归零开始计数低电平的时间宽度,电平状态发生变化时停止计数。取TH0和TL0之和即可根据该低电平的时间宽度值来识别是否为同步码。只有先识别出同步码,才开始接收后续脉冲数据进行24位解码操作。
判断电平宽度,检测是否为同步码时,事实上超过10ms即有可能为同步码。初步找出同步码后,根据同步码低电平宽度取得宽脉冲低电平宽度值,根据同步码低电平宽度取得窄脉冲低电平宽度值,由上面的PT2262编码格式图可以看出,同步码低电平持续时间是宽脉冲低电平持续时间的32倍,是窄脉冲低电平持续时间的10(或11)倍,后续的24位数据的宽、窄脉冲低电平持续时间宽度进行比较,满足一定的范围时,即可解析出发射端送出的编码。
注意:因为生产接收模块的厂家不同,标准不一,我遇到过有的模块把接收信号反向了,这时就需要找寻时间宽度较长的高电平来初步识别同步码了。
以下为示例代码说明部分:
/*******************
* 文件名:Decode.c (zqjun@HK 2014-05)
* 描 述:用一个外部中断IO脚配合定时器0实现对2262系列编码信号进行软解码, PT2262的输出信号经LM358整形放大后由单片机P3.2口输入,作为单片机的外部中断源。
* 编 码:A0 -- A11 中的每bit用2bit表示:0码:00 ;1码:11
* 硬 件:PT2262发射模块、LM358+R25.接收模块、STC89C52RC单片机
* 晶 振:11.0592MHz
* 说 明:
1、PT2262输出编码包括8位地址码、4位数据码、1位同步码,共13位,顺序:A0 A1 -- A10 A11 + 同步码 + A0 A1 -- A10 A11 + 同步码,连续发四次。
2、四个振荡周期为1个编码计时单位,记作T,除同步码外,编码中只有2种类别的组合脉冲取名长脉冲和短脉冲,其中:长脉冲由3T高电平、1T低电平组成;短脉冲由1T高电平、3T低电平组成。
3、同步码,由1T高电平31T低电平组合(实际测试同步码低电平宽度基本在10ms以上)。
4、只需测量低电平或者高电平长短,即可知是长还是短脉冲,超过12T时间没有脉冲变化就有可能是同步码。
PT2262软件解码的单片机程序
PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出,可用于无线遥控发射电路。编码芯片PT2262编码信号是由地址码、数据码、同步码组成一个完整的码字,从17脚输出到射频发射模块的数据输入端发射出去。
射频接收模块接收后送到解码芯片PT2272,其地址码经过三次比较核对后,PT2272的VT脚才输出高电平,与此同时与PT2262相应的数据脚也输出高电平,如果PT2262连续发送编码信号,PT2272第17脚和相应的数据脚便连续输出高电平。PT2262停止发送编码信号,PT2272的VT端便恢复为低电平状态。高频发射电路完全收控于PT2262的17脚输出的数字信号,从而对高频电路完成幅度键控(ASK调制)相当于调制度为100%的调幅。
单片机解码电路
单片机解码电路由128*64液晶显示屏,AT89C51单片机,AT24C512存储器,CD40106,315M收发模块和433M收发模块组成。液晶显示屏用于显示参数和解码后的结果,存储器用于保存解码数据,CD40106由六个施密特触发器电路组成。每个电路均为在两输入端具有施密特触发器功能的反相器,CD40106用于改善波形并对波形反相的作用,因为大部分无线遥控器都是采用315MHZ和433Mhz的无线电频率,所以采用了这2种频率的收发模块,用于接收待解码的无线电信号,实物如下图。
集成编码PT2262解码器设计
2、 硬件电路
2.1、 发射电路
发射电路由PT2262编码器和无线发射模块组成,如图2所示。当PT2262和无线发射模块同时上电时(这里用开关S1代替,实际使用中可以加入控制电路),设定的地址码和数据码与固定的同步码组成一组编码从17脚串行输出到315 MHz的无线数据发送模块。振荡电阻Rosc用来调节编码发射频率,适当调高电路工作电源VCC可以增大发射距离。12位编码共531 441种组合可以满足各种智能控制和低速、少数据量、短距离数据通信。
2.2 、接收电路
接收电路由无线接收模块,信号变换模块和89C51单片机组成。无线接收模块集无线接收、解调、放大、整形于一体,并能输出与TTL电平信号兼容的数字信号。信号变换模块主要完成信号隔离、编码反相、为单片机提供中断信号功能,如图3所示。
当接收到编码信号后,编码信号反相后送到单片机的P0口进行解码,同时在INT端会产生下降沿,并在整个信号接收过程中保持低电平,当发送端停止发送编码信号后,INT回到高电平,INT端口信号为单片机解码提供中断信号。89C51单片机完成软件解码和控制外部执行电路功能,外接4 MHz晶体振荡器,如图4所示。由于采用中断方式判断有无发射信号到来,从而大大减少了单片机处理开销,降低了功耗,也提高了抗干扰性能。
3 、解码原理
3.1、 波形分析
PT2262每次发射时至少发射4组码字,每组字码之间有同步码隔开,一个码字包括同步码、地址位、和数据位,波形振荡频率f=2x1000x 16/Rosc kHz,其中Rosc为振荡电阻。图5所示的一个码字从左到右依次由“f”、“f”、“f”、“f”、“f”、“f”、“f”、“f”、“0”、“0”、“1”、“0”、同步码组成。
3.2、 解码方法
单片机软件解码时,程序需要判断出同步码,然后对后面的码字进行脉冲宽度识别即可。为方便判读同步码,在解码前将信号反相,如图6所示,上半部分为反相前信号,下半部分为反相后信号。
码字中的每一位都可以分成两段,以每段中的高电平宽度来描述码位,如表1所示。
4 、软件设计
解码过程分为自学习和数据解析两个步骤完成。自学习实现从一个码字中检测出同步码头和计算同步码高电平宽度(反相后),其流程图如图7所示。
数据解析实现从码字中解析出地址位和数据位的值,解析过程如图8所示。由于加入了自学习过程,程序自动完成同步码高电平宽度的计算,从而根据同步码高电平宽度和数据“0”、“1”、“f”的波形高电平宽度之间的倍数关系计算出数据“0”、“1”、“f”波形的高电平宽度。所以解码软件不受PT2262编码芯片振荡电阻(Rosc)的限制,即使在未知发射电路中的Rosc参数值或者是Rosc参数值发生了改变,也不必更改解码软件。