4 7
您的位置: 电子制作DIY -> 单片机 -> 51单片机 -> 无线遥控315模块的发射与接收
本帖共有994个阅读者
发表帖子 发表投票 回复主题
无线遥控315模块的发射与接收
尊贵身份标志
wujinlin(VIP会员)
wujinlin
头衔:社区公民
帮派:无帮无派
帖数:26
金钱:380
积分:112
注册时间:2020/12/30
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
无线遥控315模块的发射与接收

     最近为了开发无线数据传输项目,看了不少无线数据发送与接收的资料,其中无线遥控315模块比较便宜和应用比较广泛,以下是单片机模拟2272软件解码;

  

在无线遥控领域,PT2262/2272是目前最常用的芯片之一,但由于芯片要求配对使用,在很大程度上影响了该芯片的使用,笔者从PT2262波形特征入手,结合应用实际,提出软件解码的方法和具体措施。

一、概述

    PT2262/2272是一种CMOS工艺制造的低功耗低价位通用编解码电路,是目前在无线通讯电路中作地址编码识别最常用的芯片之一。PT2262/2272最多可有12位(A0-A11)三态地址端管脚(悬空,接高电平,接低电平),任意组合可提供531441地址码,PT2262最多可有6位(D0-D5)数据端管脚,设定的地址码和数据码从17脚串行输出。

    PT2262/2272必须用相同地址码配对使用,当需要增加一个通讯机时,用户不得不求助于技术人员或厂家来设置相同地址码,客户自己设置相对比较麻烦,尤其对不懂电子的人来说。随着人们对操作的要求越来越高,PT2262/2272的这种配对使用严重制约着使用的方便性,人们不断地要求使用一种无须请教专业人士,无须使用特殊工具,任何人都可以操作的方便的手段来弥补PT2262/2272的缺陷,这就是PT2262软件解码。

二、解码原理

上面是PT2262的一段波形,可以看到一组一组的字码,每组字码之间有同步码隔开,所以我们如果用单片机软件解码时,程序只要判断出同步码,然后对后面的字码进行脉冲宽度识别即可。

    2262每次发射时至少发射4组字码,2272只有在连续两次检测到相同的地址码加数据码时才会把数据码中的“1”驱动相应的数据输出端为高电平和驱动VT端同步为高电平。因为无线发射的特点,第一组字码非常容易受零电平干扰,往往会产生误码,所以程序可以丢弃处理。

下面我们来仔细看一下PT2262的波形特征:

振荡频率 f=2*1000*16/Rosc(kΩ) kHz 其中Rosc为振荡电阻 这里我们选用的是一种比较常用的频率f≈10 kHz, Rosc=3.3MΩ(以下同)。下图是振荡频率与码位波形的对应关系:同步码头波形:

PT2262有三种编码:0,1,和悬空(表示为f)。 1、 数据“0”发送的码位如下: 2、 数据“1”发送的码位如下: 3、 数据“f”发送的码位如下:

    有了以上具体的波形,我们就可以进行软件解码了。T2262每次至少发送4次编码,首先我们可以通过检测11ms宽度的同步码头,有码头才开始进行编码解码,无码头则继续等待。当收到码头时,还要检测是否已经收到过码头,若无,则丢弃第一次编码的信号,以防止误码。

    从编码图中可以看出,每一位码字都是从低电平开始到高电平,到低电平,再到高电平。为了检测方便,在接收端我们把编码信号进行了180°倒相,使码位开始的上升沿转化为下降沿,这样当我们使用MCS51系列单片机解码时可使用中断方式及时截获编码。从编码图中还可以看出,每一位码字都可以分成两段,我们以每段中的电平宽度来描述码位:

码位 第一段 第二段 数值表示 反码表示 0 窄 窄 00 11 1 宽 宽 11 00 f 窄 宽 01 10 无效码 宽 窄 10 01

软件解码方法1(反码): 从第一个下降沿开始延时700us左右,检测电平高低,记为A1,再检测第二个下降沿,延时700us左右,检测电平高低,记为A2,这样一个码位就可以译出来了,连续检测12个码位。

软件解码方法2(反码): 从第一个下降沿开始记时,并不断检测电平变化,一有电平变化,立即记录电平宽度B1,再继续记时直至出现第二个下降沿,记录两个下降沿的间隔B2,重复以上步骤,得到B3,B4,判断B1,B2,B3,B4是否在各自允许的误差范围内,是则保存B1,B3,译出一个码位,否则认为误码,丢弃。连续正确检测12个码位。

两种解码方式各有优缺点如下: 解码方式 优点 缺点 1 程序简单,CPU开销少 解码精度差 2 程序复杂,CPU开销大 解码精度较高

为了获得较高的解码精度,我们推荐使用方法2,以避免大量的干扰信号的误解码。

三、参考解码软件

说明:ADD1,ADD2中为8位地址,DAT0中为4位数据 REMOTE: CLR TR2 ;探头信号检测子程序 CLR RECEIVE ; MOV DETE_LOOP,#12 ;接收12位编码 REMO0: CLR DETE_T_OVER ; MOV TH2,#0FEH ;测第1位电平宽度 MOV TL2,#041H ; SETB TR2 ; REMO1: JB REM,REMO2 ;等待出现高电平 JB DETE_T_OVER,REMO3 ;限时1500us,超时则认为误码 AJMP REMO1 ; REMO2: MOV A,TH2 ;测低电平宽度,0FF为宽脉冲,0FE为窄脉冲 CJNE A,#0FFH,REMO4 ; MOV A,TL2 ; CLR C ; CJNE A,#098H,$+3 ; JNC REMO3 ;电平过宽(超过1150us),退出 CLR C ; CJNE A,#020H,$+3 ; JC REMO3 ;电平过窄(小于780us),退出 SETB C ; AJMP REMO5 ; REMO3: AJMP REMOTE_END ; REMO4: CJNE A,#0FEH,REMO3 ; MOV A,TL2 ; CLR C ; CJNE A,#0C7H,$+3 ; JNC REMO3 ;电平过宽(超过450us),退出 CLR C ; CJNE A,#060H,$+3 ; JC REMO3 ;电平过窄(小于210us),退出 CLR C ; REMO5: MOV A,DAT0 ;存储电平值 RLC A ; MOV DAT0,A ; MOV A,ADD1 ; RLC A ; MOV ADD1,A ; REMO6: JNB REM,REMO7 ;等待出现低电平 JB DETE_T_OVER,REMO3 ;脉冲下降沿间隔限时1500us,超时则认为误码 AJMP REMO6 ; REMO7: CLR TR2 ; CLR DETE_T_OVER ; MOV A,TH2 ; CJNE A,#0FFH,REM13 ;脉冲间隔过小 MOV A,TL2 ; CLR C ; CJNE A,#050H,$+3 ; JC REM13 ;电平过窄(小于1200us),退出 MOV TH2,#0FEH ;测第2位电平宽度 MOV TL2,#041H ; SETB TR2 ; REM11: JB REM,REM12 ;等待出现高电平 JB DETE_T_OVER,REM13 ;限时1500us,超时则认为误码 AJMP REM11 ; REM12: MOV A,TH2 ;测低电平宽度,0FE为宽脉冲,0FF为窄脉冲 CJNE A,#0FFH,REM14 ; MOV A,TL2 ; CLR C ; CJNE A,#098H,$+3 ; JNC REM13 ;电平过宽(超过1100us),退出 CLR C ; CJNE A,#020H,$+3 ; JC REM13 ;电平过窄(小于1000us),退出 SETB C ; AJMP REM15 ; REM13: AJMP REMOTE_END ; REM14: CJNE A,#0FEH,REM13 ; MOV A,TL2 ; CLR C ; CJNE A,#0C7H,$+3 ; JNC REM13 ;电平过宽(超过450us),退出 CLR C ; CJNE A,#060H,$+3 ; JC REM13 ;电平过窄(小于210us),退出 CLR C ; REM15: MOV A,TEMP ;存储电平值 RLC A ; MOV TEMP,A ; MOV A,ADD2 ; RLC A ; MOV ADD2,A ; REM16: JNB REM,REM18 ;等待出现低电平 JB DETE_T_OVER,REM13 ;脉冲下降沿间隔限时1500us,超时则认为误码 AJMP REM16 ; REM17: AJMP REMO0 REM18: CLR TR2 ; CLR DETE_T_OVER ; MOV A,TH2 CJNE A,#0FFH,REM13 ;脉冲间隔过小 MOV A,TL2 ; CLR C ; CJNE A,#050H,$+3 ; JC REM13 ;电平过窄(小于1200us),退出 DJNZ DETE_LOOP,REM17 ; REM19: MOV DETE_LOOP,#4 ;把接收的编码左移4位 REM20: CLR C ;将8位密码放在同一字节上 MOV A,DAT0 ; RLC A ; MOV DAT0,A ; MOV A,ADD1 ; RLC A ; MOV ADD1,A ; CLR C ; MOV A,TEMP ; RLC A ; MOV TEMP,A ; MOV A,ADD2 ; RLC A ; MOV ADD2,A ; DJNZ DETE_LOOP,REM20 ; ;把4 位数据编码由高4 位移到低4 位上 ; MOV A,DAT0 ; SWAP A ; MOV DAT0,A ; MOV A,TEMP ; SWAP A ; MOV TEMP,A ; ANL DAT0,#0FH ; SETB RECEIVE ; REMOTE_END: ; CLR TR2 CLR REMOTING ; RET ;

四、硬件抗干扰

    在无线通讯中使用单片机会对通讯系统造成严重的干扰,相信许多技术人员一定有过同样的苦恼。如果硬件设计不当,会造成原先硬件解码时通讯距离为200米,而用软件解码后可能只有十几米,因此解决硬件抗干扰问题在很大程度上可减少软件解码的误码率。

    1、收发模块:早期常用的频率为47MHz,在这种频率下,很难有好的解决方法;建议采用目前国家允许无线遥控使用的频率315 MHz。

    2、单片机振荡频率:大量的MCS51教材中推荐大家使用的是12 MHz及11.0592MHz的晶体,这些晶体在一般场合使用没有问题,但在此却不可以,它们在300MHz左右仍然能够产生较大的干扰,为解决单片机运行速度与电磁干扰的矛盾,建议采用频率为4MHz或3.58MHz的晶体。

    3、隔离:为了有效抑制单片机对接收模块的电磁干扰,建议采用①电源隔离;②端口隔离;端口隔离可采用三极管或比较器。实践表明采用隔离的效果非常明显。

五、结束语

    PT2262的软件解码在实际应用中有较好的用武之地。采用软件解码的系统,厂家再也无须对收发设备进行配套,以利于生产于保管;对客户来说,使用软件解码无须求助,厂家只须再软件中加入自动学习功能,用户可自行使用该功能,只须轻按学习键即可学习新的通讯设备,如遥控器等。目前,该软件解码已经在某无线报警设备中采用,客户反映使用简便,效果良好。


这家伙很懒,什么也没有留下!
等级:VIP会员 参考IP地址:*.*.*.*
2021/1/12 21:26:49
sun123(普通游民)
sun123
头衔:社区公民
帮派:无帮无派
帖数:3
金钱:115
积分:6
注册时间:2023/7/14
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
不是因为开奖网寂寞才想你,是因为寂寞时想的只有你。如果找一个超级大乐透给你打电话的理由!我想你一定会失望的,因为我有福彩七乐彩那么多个理由,想听吗?等会儿接电话好了。

开奖网
等级:普通游民 参考IP地址:*.*.*.*
2023/7/14 10:31:29
Copyright © 2011 电子制作DIY. All rights reserved.电子制作DIY8044 Call, 1 Queries, Processed in 31.250 millisecond(2),