沈周鋒
(漳州職業(yè)技術(shù)學(xué)院電子工程學(xué)院,福建 漳州 363000)
目前,智能家電進(jìn)入人們生活中,極大地方便人們的生活。電燈、風(fēng)扇、風(fēng)暖、空調(diào)等設(shè)備均引入了遙控器控制,用戶家中遙控器數(shù)量眾多,管理起來較為煩瑣。主機(jī)設(shè)備外接控制器的方式,目前仍然是主流趨勢,如空調(diào)和熱水器等家用電器普遍采用外接控制器的方式。傳統(tǒng)設(shè)備采用地線、電源線、若干信號線實(shí)現(xiàn)主機(jī)設(shè)備和控制器間通信,線材對于普通安裝人員來說較為特殊,且有線序的要求。普通水電安裝人員未經(jīng)家電生產(chǎn)商專門培訓(xùn),無法勝任此類家電安裝的技能要求。而且不同的電器所需線材長度不同,線材較難獲得。因此,需要設(shè)計(jì)一種控制器,安裝線路簡單,最好只有電源線和地線,且無線序要求。一方面線材可以采用隨手可得的家用輸電線材,另一方面連接簡單,無需復(fù)雜的專業(yè)培訓(xùn),兩個(gè)端子連接上即可正常工作。
筆者采用單片機(jī)技術(shù)、設(shè)計(jì)了一種安裝方便、具有雙向通信功能的控制器??刂破鞲淖児ぷ麟娏?,主機(jī)設(shè)備檢測控制器工作電流的變化,解碼為碼流信息。主機(jī)設(shè)備改變供電電壓,控制器檢測供電電壓變化,解碼為碼流信息。通過電流電壓傳送方式,實(shí)現(xiàn)半雙工的通信。硬件連接只需要兩條線,供應(yīng)電源的同時(shí)傳送碼流,經(jīng)過特殊的硬件設(shè)計(jì),使兩條線無線序要求,在實(shí)現(xiàn)控制、顯示功能的同時(shí),極大地方便了安裝和維護(hù)。開發(fā)者還可擴(kuò)展命令列表,方便地添加顯示、按鍵等新功能。
傳統(tǒng)設(shè)備通信方式如圖1所示。采用電源和地線為控制器供電,通信碼流通過信號線傳輸。若用單個(gè)信號線通信,可采用類似DHT11傳感器的通信方式[1]。碼流在信號線中傳輸,通過計(jì)算高低脈沖的時(shí)間寬度,判斷碼元的邏輯電平,可實(shí)現(xiàn)較慢速的半雙工方式。也可采用多條信號線的通信方式,類似的通信協(xié)議有SPI、RS232等[2-3]。不同傳輸方向的碼流在不同信號線中傳輸,可以實(shí)現(xiàn)較快速的半雙工或者全雙工通信。但是,上述通信方式存在抗干擾性能低的問題。電源線和地線電流傳輸方向相反,電流大小基本一致,可采用雙絞線解決電磁損耗問題,減小線路衰減。信號線電流大小和方向隨機(jī),無法采用雙絞線方式解決損耗問題,線路加長時(shí),穩(wěn)定性大打折扣。USB通信協(xié)議采用四線通信協(xié)議,除了地線和電源線,還有D+和D-兩條信號線,傳輸相差180°的兩路信號[4]。因此D+和D-可用一對雙絞線解決衰減和干擾問題。但是仍然存在線材較為特殊,線序顛倒后無法正常使用的問題,且協(xié)議復(fù)雜成本較高。
圖1 傳統(tǒng)設(shè)備的通信方式
無信號線通信方式電路框圖如圖2所示。虛線框?qū)㈦娐贩譃橹鳈C(jī)設(shè)備和控制器兩部分。主機(jī)設(shè)備中,單片機(jī)作為控制核心,控制外圍功能單元的運(yùn)行。采用工作電壓調(diào)節(jié)電路發(fā)送主機(jī)碼流。當(dāng)有碼流需要發(fā)送至控制器時(shí),工作電壓在+12~+11 V之間變化。例如+12 V表示邏輯1,+11 V表示邏輯0。每個(gè)碼元時(shí)間片內(nèi),使工作電壓處于既定值,控制器利用電源電壓檢測電路,即可解碼出碼流。控制器的工作電流調(diào)節(jié)電路,改變控制器工作電流在兩個(gè)不同值之間跳動(dòng),即可將邏輯0和邏輯1發(fā)送至主機(jī)設(shè)備。主機(jī)設(shè)備工作電流檢測電路檢測電流值跳動(dòng),即可解碼出碼流。工作電壓的跳動(dòng),會(huì)影響控制器的工作電流值,因此筆者采用半雙工的通信方式進(jìn)行設(shè)計(jì)。
圖2 無信號線通信方式電路框圖
由于用戶隨時(shí)可能按動(dòng)控制器鍵盤,突發(fā)事件較多,為了使整機(jī)能快速響應(yīng)鍵盤事件,因此由控制器負(fù)責(zé)發(fā)起通信。主機(jī)設(shè)備將工作電壓控制在+11 V,控制器周期性發(fā)起通信,首先將12位碼流發(fā)送至主機(jī)設(shè)備。前3位固定為“101”,便于通信兩端實(shí)現(xiàn)位同步。第4~11位為控制字,發(fā)送鍵盤事件等信息對應(yīng)的控制字,第12位奇偶校驗(yàn)位。隨后主機(jī)設(shè)備調(diào)節(jié)工作電壓,發(fā)送9位碼流信息。前8位碼流為控制字,第9位為奇偶校驗(yàn)位??刂破鞑还苡袩o鍵盤事件,每隔一段時(shí)間發(fā)起一次通信,以便接收主機(jī)設(shè)備信息。
控制器電源電路如圖3所示。J1為控制器與主機(jī)設(shè)備連接的端子。由于通信的要求,J1接口的電壓值具有一定紋波,隔離不恰當(dāng)容易導(dǎo)致控制器無法正常工作。因此采用兩級穩(wěn)壓電路。電源線和地線接入J1后,經(jīng)過整流橋D1整流后,送入Q1三極管。Q1、R1至R3、D2和C1組成DC-DC電路,將電壓穩(wěn)定在9 V。當(dāng)電壓大于9 V時(shí),R2和R3分壓所得電壓值大于2.5 V,反饋回D2并使其AK兩極導(dǎo)通,Q1三極管截止,迫使+9 V節(jié)點(diǎn)電壓下降。當(dāng)電壓小于9 V時(shí),R2和R3分壓所得電壓值小于2.5 V,D2的AK兩極截止,Q1三極管由于R1的上拉作用而導(dǎo)通,迫使+9 V節(jié)點(diǎn)電壓升高。合理選擇R2和R3的分壓比,即可穩(wěn)定輸出電壓。C1的作用是穩(wěn)定反饋電壓,減小電路擾動(dòng)和外界工頻干擾對+9 V節(jié)點(diǎn)的影響。U1采用AMS1117三端穩(wěn)壓器,將電壓穩(wěn)定在+5 V為控制器中的其他部件供電。C2和C3采用電解電容,作為U1的輸入輸出端去耦電容。另外,整流橋D1的整流作用,使控制器和主機(jī)設(shè)備連接無線序要求,極大方便了安裝和維護(hù)。
圖3 控制器電源電路
控制器采用改變工作電流方式發(fā)送碼流,設(shè)置一個(gè)電流值固定且受控于單片機(jī)的電流負(fù)載電路,即可完成碼流發(fā)送。如圖4所示,R9、R10和Q2組成發(fā)送電路。R9與Q2的基極串聯(lián),起到限制基極電流的作用。Tx連接單片機(jī)普通IO口,當(dāng)電位拉高時(shí),Q2飽和,電流從V1流出經(jīng)過R10和Q2集電極發(fā)射極流入地線。發(fā)射電路工作電流變化范圍應(yīng)該遠(yuǎn)大于控制鍵盤中的其他部件,才能有效地避免其他部件帶來的干擾,防止主機(jī)設(shè)備誤判??刂奇I盤中單片機(jī)、鍵盤和顯示電路工作電流基本在10 mA以下。發(fā)送電流變化范圍控制在0~150 mA,可有效防止誤判。根據(jù)V1的電壓值將R10電阻設(shè)置為80 Ω,可得工作電流變化范圍為0~150 mA。
圖4 控制器接收和發(fā)射電路
控制器接收電路以U2運(yùn)放為核心組成遲滯比較電路[5],比較電源電壓和參考電壓大小,輸出0~5 V的數(shù)字信號供單片機(jī)讀取。采用R7和R8分壓后,送入運(yùn)放反相輸入端。當(dāng)V1為12 V時(shí),分壓得到3.84 V;當(dāng)V1為11 V時(shí),分壓得到3.52 V。變化范圍約320 mV,遠(yuǎn)大于運(yùn)放的輸入失調(diào)電壓,可以穩(wěn)定可靠的進(jìn)行電壓比較。R4至R6、D3、C4、C5組成參考電位發(fā)生電路。+5 V電源通過R6為D3供電。R4和R5對Vref分壓,送入D3的參考電位端。分壓電壓大于2.5 V時(shí)D3導(dǎo)通,迫使Vref電位下降;反之,分壓電壓小于2.5 V時(shí),D3截止,迫使Vref電位上升。閉環(huán)負(fù)反饋環(huán)路,將Vref電壓穩(wěn)定在固定值:
(1)
R11,R12和U2組成遲滯比較電路。當(dāng)V1過低,導(dǎo)致U2輸出高電平5 V時(shí),通過正反饋電阻R12,將同相輸入端電位拉高,比較閾值變?yōu)?.683 V。當(dāng)V1過高,導(dǎo)致U2輸出低電平0 V時(shí),R12將同相輸入端電位拉低,比較閾值變?yōu)?.639 V。R12正反饋的引入,避免了V1電位處于臨界值時(shí),比較器異常翻轉(zhuǎn),Rx信號產(chǎn)生毛刺。Rx節(jié)點(diǎn)連接單片機(jī)普通IO口,即可讀取接收碼流。
主機(jī)設(shè)備接收和發(fā)射電路如圖5所示。發(fā)射電路除了發(fā)射碼流,還需要給控制器提供電源,因此以U3 TPS560430電源芯片為核心[6-7]。該芯片是一款同步降壓DC-DC轉(zhuǎn)換器,輸入端耐壓達(dá)到36 V,輸出電壓最大為24 V,輸出電流最大600 mA。+24 V電源經(jīng)過C7去耦后,輸入VIN引腳。開關(guān)引腳SW連接功率電容L1給C9充電,提供電源VCC。VCC通過R13和R14分壓后,反饋回FB。U3對比FB的電壓,控制SW占空比,將VCC穩(wěn)定在特定值。合理控制R13和R14的阻值,VCC可保持在12 V附近。FB引腳外接R15電阻,連接單片機(jī)IO口作為發(fā)射引腳。當(dāng)Tx1節(jié)點(diǎn)高電平時(shí),U3減小占空比,VCC電壓下降;當(dāng)Tx1節(jié)點(diǎn)低電平時(shí),U3增大占空比,VCC電壓上升。合理配比R13至R15電阻值,即可令Tx1=5 V時(shí),VCC=11 V;Tx1=0 V時(shí),VCC=12 V。
圖5 主機(jī)設(shè)備接收和發(fā)射電路
J2為主機(jī)設(shè)備與控制鍵盤連接的接口,引腳2返回的電流,經(jīng)過分流電阻R16后流入地線。R16取2 Ω阻值,將控制器工作電流信號轉(zhuǎn)化為電壓RxSig。接收電路利用放大器處理RxSig電壓波形,得到數(shù)字信號Rx1。假設(shè)控制器工作電流在10~160 mA之間變化,則RxSig電壓為20~320 mV。U4A、R17至R19組成同相比例放大電路,對RxSig進(jìn)行同相放大,放大倍數(shù)為11倍,生成220 mV至3.52 V的波形。U4B、R21和R22組成遲滯比較器,用于對比放大后的電流信號與參考電壓。R20和D4組成2.5 V參考電壓發(fā)生電路。單片機(jī)讀取Rx1方波信號,即可得到控制鍵盤發(fā)出的碼流。R17和R23為阻抗平衡電阻,平衡U4的同相反相輸入端的阻抗。C10為電源去耦電容,減少電源紋波對運(yùn)放的干擾。
通信時(shí)序圖如圖6所示。信道空閑時(shí),控制器Tx節(jié)點(diǎn)為低電平,主機(jī)設(shè)備Tx1節(jié)點(diǎn)為高電平,減少電能消耗。控制器周期性的發(fā)起通信,先發(fā)“101”3個(gè)bit作為同步頭,主機(jī)設(shè)備Rx1節(jié)點(diǎn)在接收同步頭期間檢測每個(gè)bit的時(shí)長,自適應(yīng)的選取最佳采樣時(shí)刻。同步頭發(fā)送結(jié)束后,控制器繼續(xù)發(fā)送8個(gè)bit數(shù)據(jù)+1個(gè)bit奇偶校驗(yàn)位。主機(jī)設(shè)備在最佳采樣時(shí)刻讀取Rx1節(jié)點(diǎn)電壓,奇偶校驗(yàn)后檢索命令列表,即可解碼出相應(yīng)命令。從T13至T21時(shí)刻,控制器Tx節(jié)點(diǎn)恢復(fù)低電平,主機(jī)設(shè)備根據(jù)同步頭檢測到的bit時(shí)長,發(fā)送8個(gè)bit的數(shù)據(jù)+1個(gè)bit奇偶校驗(yàn)位,供控制器接收。在命令集中,以0x00作為空指令,周期性的通信時(shí)若無需發(fā)送數(shù)據(jù),收發(fā)兩端互發(fā)0x00即可避免誤解碼。奇偶校驗(yàn)位用于驗(yàn)證碼流是否發(fā)生誤碼。當(dāng)奇偶校驗(yàn)失敗時(shí),控制器可適當(dāng)加長bit時(shí)長,提高通信的可靠性[8]。主機(jī)設(shè)備根據(jù)同步頭脈寬,檢測比特時(shí)長,跟隨控制器修改bit時(shí)長。
圖6 通信時(shí)序圖
控制器主循環(huán)的流程圖如圖7所示。單片機(jī)上電啟動(dòng)后,先進(jìn)行內(nèi)部單元初始化,檢測按鍵事件,生成按鍵動(dòng)作標(biāo)志。當(dāng)定時(shí)通信時(shí)刻到來或者按鍵有動(dòng)作,則發(fā)起通信。先根據(jù)按鍵動(dòng)作標(biāo)志編寫碼流數(shù)據(jù),再開啟負(fù)責(zé)通信的定時(shí)器。然后接收緩存寄存器不為空時(shí),進(jìn)行奇偶校驗(yàn),若校驗(yàn)正確,則執(zhí)行響應(yīng)動(dòng)作;若校驗(yàn)失敗,則修改bit時(shí)長寄存器,進(jìn)行下一輪的死循環(huán)。
圖7 控制器主循環(huán)流程圖
負(fù)責(zé)通信的定時(shí)器每隔一段時(shí)間進(jìn)入中斷程序入口,讀寫Tx和Rx引腳,進(jìn)行發(fā)送和接收,流程圖如圖8所示。首先判斷是否處于T1至T3時(shí)刻,若是則依次發(fā)送同步頭“101”,每次進(jìn)入中斷發(fā)送一個(gè)bit。當(dāng)時(shí)間進(jìn)入T4至T12時(shí)刻,改變Tx引腳的電平,發(fā)送主循環(huán)中生成的碼流數(shù)據(jù),每次發(fā)送一個(gè)bit,高位先發(fā)送,奇偶校驗(yàn)位最后發(fā)送。進(jìn)入T13至T21時(shí)刻,Tx引腳返回低電平,單片機(jī)將定時(shí)器中斷響應(yīng)時(shí)間點(diǎn)推后半個(gè)bit的時(shí)間,定時(shí)讀取Rx引腳電平,按位存入接收緩存,得到接收碼流。主循環(huán)中檢測到接收緩存已滿時(shí),對碼流進(jìn)行奇偶校驗(yàn)和解析,執(zhí)行相應(yīng)動(dòng)作。主機(jī)設(shè)備的程序流程圖與控制鍵盤類似。主要不同點(diǎn)在于,通信發(fā)起初期,利用引腳外部中斷功能,檢測Rx1引腳跳變沿,根據(jù)3個(gè)跳邊沿時(shí)間計(jì)算出每bit時(shí)長和最佳采樣點(diǎn)。然后再開啟負(fù)責(zé)通信的定時(shí)器,接收和發(fā)送碼流信息。主機(jī)設(shè)備利用同步頭,能夠跟隨控制器修改bit時(shí)長。
圖8 控制器通信定時(shí)中斷流程圖
采用10 m長雙絞線,對收發(fā)兩端進(jìn)行測試。任意對調(diào)線路,對通信無影響。bit時(shí)長由5~100 ms之間自適應(yīng)調(diào)整。周圍無強(qiáng)電線路時(shí),5 ms的bit時(shí)長,誤碼率為0。人為地將交流電線路緊貼雙絞線時(shí),由于強(qiáng)電場和強(qiáng)磁場干擾誤碼率有所上升。控制器能自適應(yīng)增大bit時(shí)長,當(dāng)bit時(shí)長大于50 ms時(shí),誤碼率基本為0。對控制器各種狀態(tài)下的工作電流進(jìn)行測試,如表1所示。信道空閑、控制器發(fā)送邏輯“0”時(shí)刻、主機(jī)設(shè)備發(fā)送邏輯“1”時(shí)刻,Tx=0且Tx1=1,測得工作電流6.1 mA。該時(shí)刻,控制器電源電壓為11 V,工作電流用于維持收發(fā)電路、單片機(jī)、LCD屏幕和屏幕背光燈運(yùn)行??刂破靼l(fā)送邏輯“1”時(shí)刻,Tx=1且Tx1=1,測得工作電流140.6 mA。由于發(fā)送控制器中R10電阻接通,導(dǎo)致控制器工作電流上升約134.5 mA。主機(jī)設(shè)備發(fā)送邏輯“0”時(shí)刻,由于控制器電源升至12 V,工作電流相比情況一有所上升,變?yōu)?.2 mA。假設(shè)T4至T21時(shí)刻,數(shù)據(jù)碼流邏輯“0”和邏輯“1”分別占50%,容易得到通信期間平均工作電流約為47.8 mA,平均功率約為0.53 W。
表1 控制器工作電流
通信波特率為200~10 bit/s之間自適應(yīng)切換,通信速率較低,適用于電器外接控制器這類低速率數(shù)據(jù)通信的場合,穩(wěn)定可靠。平均功耗適中,對于家電設(shè)備基本可忽略不計(jì)。其優(yōu)點(diǎn)在于安裝方便,線材隨手可得,無線序要求,大大降低了安裝和維護(hù)的門檻。
利用單片機(jī)加模擬電路的形式,設(shè)計(jì)了一種能夠進(jìn)行低速率碼流通信的控制器。該控制器無需信號線,只需電源線和地線,且無任何線序要求。該技術(shù)極大地方便了電器安裝和維護(hù)人員,極大地降低了作業(yè)人員的技能門檻和線材選取的要求。功耗適中,對于AC供電設(shè)備基本可以忽略不計(jì)。其缺點(diǎn)在于通信速率較低,目前僅適用于低速率通信的場合,如何提高通信速率成為未來研究提供了方向。