摘要:傳統(tǒng)解碼方法存在只能針對特定振蕩頻率的波形進(jìn)行解碼的問題。為了改進(jìn)傳統(tǒng)解碼方法的局限性,設(shè)計了一種基于單片機(jī)的具有自學(xué)習(xí)功能的集成編碼芯PT2262解碼器。該解碼器實現(xiàn)了在未知發(fā)射電路的振蕩電阻參數(shù)情況下,通過自學(xué)習(xí)獲取參數(shù)并完成解碼;同時,突破了傳統(tǒng)解碼方法中數(shù)據(jù)位只有4~6位的限制,12位編碼數(shù)據(jù)幀格式可根據(jù)實際使用場合靈活定義。實驗結(jié)果表明,在無線傳輸距離為200m的情況下,解碼正確率為99.8%。
PT2262/2272是一種CMOS工藝制造的低功耗、低價位、通用編解碼集成電路?,F(xiàn)已廣泛應(yīng)用于紅外遙控、智能報警、門禁管理等領(lǐng)域,也可擴(kuò)展應(yīng)用于串行數(shù)據(jù)傳送。在一般應(yīng)用情況下,PT2262和PT2272需要配對使用,對地址位的設(shè)置和振蕩電阻的配置有嚴(yán)格要求,而且如果使用PT2272硬件電路解碼,數(shù)據(jù)位只有4~6位,這就限制了其應(yīng)用的領(lǐng)域和使用的靈活性。
近年來,基于波形分析的軟件解碼或者軟硬結(jié)合解碼的方法被提出來。但是,這些方法都不具有自學(xué)功能,只針對特定振蕩頻率的波形進(jìn)行解碼,當(dāng)不知道發(fā)射電路PT2262的振蕩電阻的配置的情況下無法解碼,或者需要手工調(diào)整程序的參數(shù)。
本文提出了一種具有自學(xué)習(xí)功能的基于單片機(jī)的軟件解碼方法并完成了設(shè)計,這種新方法可以在未知發(fā)射電路的配置參數(shù)的情況下,通過先學(xué)習(xí)、后解碼的過程實現(xiàn)解碼,且可以實現(xiàn)自定義數(shù)據(jù)幀的格式,使編碼的地址位和數(shù)據(jù)位的設(shè)置更加靈活。從而可以將通用編碼集成電路擴(kuò)展應(yīng)用于數(shù)據(jù)通信,智能控制等領(lǐng)域。
1 PT2262工作原理
PT2262最多可有12位(A0~A11)三態(tài)地址端管腳(懸空,接高電平,接低電平)任意組合可提供531441種地址碼。最多可以有6位(D0~D5)數(shù)據(jù)位,設(shè)定的地址碼和數(shù)據(jù)碼與同步碼組成數(shù)據(jù)幀以串行數(shù)據(jù)方式輸出。
當(dāng)PT2262和PT2272配對使用時,要求發(fā)端編碼芯片F(xiàn)T2262的地址編碼與收端解碼芯片PT2272的地址編碼相一致,而且振蕩頻率相匹配。而發(fā)端向收端發(fā)送的指令等信息可編碼在編碼芯片的數(shù)據(jù)端,通過無線傳送后,在解碼芯片的數(shù)據(jù)端取出。
編碼芯片PT2262發(fā)出的編碼由地址碼、數(shù)據(jù)碼、同步碼組成。地址碼和數(shù)據(jù)碼都用寬度不同的脈沖來表示,兩個窄脈沖表示“0”;兩個寬脈沖表示“1”;一個窄脈沖和一個寬脈沖表示“f”(“懸空”)。圖1所示為PT2262編碼格式圖。
圖中的T為時鐘振蕩周期的2倍,同步碼低電平寬度是窄脈沖寬度的31倍。
2 硬件電路
2.1 發(fā)射電路
發(fā)射電路由PT2262編碼器和無線發(fā)射模塊組成,如圖2所示。當(dāng)PT2262和無線發(fā)射模塊同時上電時(這里用開關(guān)S1代替,實際使用中可以加入控制電路),設(shè)定的地址碼和數(shù)據(jù)碼與固定的同步碼組成一組編碼從17腳串行輸出到315MHz的無線數(shù)據(jù)發(fā)送模塊。振蕩電阻Rosc用來調(diào)節(jié)編碼發(fā)射頻率,適當(dāng)調(diào)高電路工作電源VCC可以增大發(fā)射距離。12位編碼共531441種組合可以滿足各種智能控制和低速、少數(shù)據(jù)量、短距離數(shù)據(jù)通信。
2.2 接收電路
接收電路由無線接收模塊,信號變換模塊和89C51單片機(jī)組成。無線接收模塊集無線接收、解調(diào)、放大、整形于一體,并能輸出與TTL電平信號兼容的數(shù)字信號。信號變換模塊主要完成信號隔離、編碼反相、為單片機(jī)提供中斷信號功能,如圖3所示。
當(dāng)接收到編碼信號后,編碼信號反相后送到單片機(jī)的P0口進(jìn)行解碼,同時在INT端會產(chǎn)生下降沿,并在整個信號接收過程中保持低電平,當(dāng)發(fā)送端停止發(fā)送編碼信號后,INT回到高電平,INT端口信號為單片機(jī)解碼提供中斷信號。89C51單片機(jī)完成軟件解碼和控制外部執(zhí)行電路功能,外接4MHz晶體振蕩器,如圖4所示。由于采用中斷方式判斷有無發(fā)射信號到來,從而大大減少了單片機(jī)處理開銷,降低了功耗,也提高了抗干擾性能。
3 解碼原理
3.1 波形分析
PT2262每次發(fā)射時至少發(fā)射4組碼字,每組字碼之間有同步碼隔開,一個碼字包括同步碼、地址位、和數(shù)據(jù)位,波形振蕩頻率f=2x1000x16/Rosc kHz,其中Rosc為振蕩電阻。圖5所示的一個碼字從左到右依次由“f”、“f”、“f”、“f”、“f”、“f”、“f”、“f”、“0”、“0”、“1”、“0”、同步碼組成。
3.2 解碼方法
單片機(jī)軟件解碼時,程序需要判斷出同步碼,然后對后面的碼字進(jìn)行脈沖寬度識別即可。為方便判讀同步碼,在解碼前將信號反相,如圖6所示,上半部分為反相前信號,下半部分為反相后信號。
碼字中的每一位都可以分成兩段,以每段中的高電平寬度來描述碼位,如表1所示。
4 軟件設(shè)計
解碼過程分為自學(xué)習(xí)和數(shù)據(jù)解析兩個步驟完成。自學(xué)習(xí)實現(xiàn)從一個碼字中檢測出同步碼頭和計算同步碼高電平寬度(反相后),其流程圖如圖7所示。
數(shù)據(jù)解析實現(xiàn)從碼字中解析出地址位和數(shù)據(jù)位的值,解析過程如圖8所示。由于加入了自學(xué)習(xí)過程,程序自動完成同步碼高電平寬度的計算,從而根據(jù)同步碼高電平寬度和數(shù)據(jù)“0”、“1”、“f”的波形高電平寬度之間的倍數(shù)關(guān)系計算出數(shù)據(jù)“0”、“1”、“f”波形的高電平寬度。所以解碼軟件不受PT2262編碼芯片振蕩電阻(Rosc)的限制,即使在未知發(fā)射電路中的Rosc參數(shù)值或者是Rosc參數(shù)值發(fā)生了改變,也不必更改解碼軟件。
5 抗干擾措施
本系統(tǒng)采取的措施包括硬件措施和軟件措施。硬件措施包括:1)為了有效抑制單片機(jī)對接收模塊的電磁干擾采用了電源隔離和端口隔離技術(shù);2)在接收電路部分,對接收信號進(jìn)行整形、放大、倒相,倒相后同步碼頭的高低電平保持時間相反,高電平保持時間由原來的4T提高到了124T,提高了抗突發(fā)脈沖干擾的能力和解碼的準(zhǔn)確率;3)在接收電路部分加入了INT信號產(chǎn)生端口,只有檢測到編碼信號到來時,INT端才有下降沿產(chǎn)生,如果干擾信號是負(fù)向干擾,則INT端不會產(chǎn)生下降沿,有效抑制了負(fù)向干擾;4)收發(fā)模塊采用目前國家允許無線遙控使用的頻率315MHz;5)單片機(jī)振蕩頻率采用頻率為4MHz的晶體,而不是C51單片機(jī)常用的12MHz及11.0592MHz的晶體。軟件措施包括:在程序中增加了自學(xué)習(xí)功能,通過自學(xué)習(xí)程序判斷出同步碼頭高電平保持時間和數(shù)據(jù)“0”、“1”、“f”的高電平保持時間之間是否滿足固定的倍數(shù)關(guān)系。只有滿足固定的倍數(shù)關(guān)系才進(jìn)行解碼,否則認(rèn)為是誤碼,不予解碼。
6 結(jié)束語
本設(shè)計的軟件解碼過程加入了自學(xué)習(xí)環(huán)節(jié),可以在未知發(fā)射端編碼芯片的振蕩電阻參數(shù)的情況下完成解碼,增加了解碼器的通用性和靈活性。本設(shè)計方案已應(yīng)用于無線報警系統(tǒng),經(jīng)實踐證明,該方案經(jīng)濟(jì),解碼器性能可靠,可以將其擴(kuò)展應(yīng)用于智能遙控、數(shù)據(jù)通信等領(lǐng)域。