單片機(jī)典型案例開發(fā)(四)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
一、基于STC單片機(jī)的智能LED路燈控制器設(shè)計(jì)
摘要:為了充分節(jié)約能源,提高路燈控制系統(tǒng)的智能化,介紹了一種基于STC 單片機(jī)的智能LED 路燈控制器,引入在線監(jiān)測、PWM 和電力線載波通信技術(shù),實(shí)踐應(yīng)用效果良好,具有成本低、運(yùn)行穩(wěn)定的特點(diǎn)。本控制器對智能化路燈管理有很大幫助,應(yīng)用前景廣闊。
當(dāng)前巨量的能源消耗和由此引起的能源短缺、價(jià)格上漲等已使得節(jié)約能源成為一項(xiàng)十分迫切的任務(wù)。各國消耗的能源中很大一部分用于照明,其中城市公共照明(主要是道路照明和景觀照明)在我國照明耗電中占30%.有資料顯示,每年用于照明的電力在3 000 億度以上,若采用LED 照明,每年就可以節(jié)約1/3 的照明用電,基本上相當(dāng)于總投資規(guī)模超過2 000 億元的三峽工程的全年發(fā)電量。綜合以上優(yōu)點(diǎn),LED光源自然成為城市公共照明的首選,同時(shí)目前國內(nèi)大部分城市的道路照明管理系統(tǒng)直至現(xiàn)在仍在沿用簡單的光控、鐘控等傳統(tǒng)控制方式。這些系統(tǒng)普遍存在著難以反饋路燈運(yùn)行狀態(tài)信息、難以進(jìn)行遠(yuǎn)程控制等局限,基本沒有節(jié)電效果,并且采用傳統(tǒng)的人工巡檢,不僅使路燈管理部門的任務(wù)繁重,也增加了運(yùn)行維護(hù)的費(fèi)用??紤]到這些因素,本文針對LED 光源開發(fā)了智能路燈控制器。結(jié)合LED 光源的特點(diǎn),并引入了電力線載波通信技術(shù),PWM 調(diào)光技術(shù)。
1 LED 技術(shù)概述
1.1 體積小而堅(jiān)固耐用
LED 基本上是一塊很小的晶片被封裝在環(huán)氧樹脂里面,它比燈泡和熒光燈管都堅(jiān)固。燈體內(nèi)也沒有松動(dòng)的部分,不易損壞。
1.2 耗電量低
一般來說LED 的工作電壓是2~3.6 V.工作電流是0.02~0.03 A.這就是說:它消耗的電不超過0.1 W.
1.3 使用壽命長
當(dāng)光通量衰減到80%時(shí),其壽命達(dá)到了25 000 h.而金屬鹵化物燈的壽命在6 000~12 000 h,高壓鈉燈的壽命是12 000 h.
1.4 調(diào)光功能
由于LED 的工作范圍較大,其光輸出和工作電流成正比,因此可以通過減小電流的方法來調(diào)光。LED 的調(diào)光還可以采用脈沖寬度調(diào)節(jié)的方法來得到,通過調(diào)節(jié)電壓的占空比和工作頻率,有效調(diào)節(jié)LED 的發(fā)光強(qiáng)度。
1.5 環(huán)保
LED 是由無毒的材料制成,不像熒光燈含水銀會(huì)造成污染,同時(shí)LED 也可以回收再利用。
1.6 光色、顯色性好
在中間視覺水平下,人眼在高色溫環(huán)境里比低色溫環(huán)境更容易辨別事物。白光LED 的顯色性也比高壓鈉燈好很多,高壓鈉燈的顯色指數(shù)只有20 左右,而白光LED 可以達(dá)到65~80.
2 系統(tǒng)的工作原理
智能LED 路燈控制器是作為智能路燈控制系統(tǒng)參考的一部分,主要由STC 單片機(jī)、采樣電路、載波收發(fā)模塊等組成。系統(tǒng)上位機(jī)的命令和控制器的反饋都通過載波模塊利用電力線進(jìn)行收發(fā);路燈的電壓、電流由采樣電路實(shí)時(shí)采集;單片機(jī)實(shí)時(shí)處理采集的電壓、電流,進(jìn)行判斷處理,同時(shí)判斷執(zhí)行上位機(jī)的指令,及時(shí)反饋路燈的信息。
3 硬件電路的設(shè)計(jì)
3.1 主要器件的選擇和相關(guān)的性能
STC12C5404AD 單片機(jī)是一款高速、寬電壓、低功耗的增強(qiáng)型8051 內(nèi)核單片機(jī),最高16 k 字節(jié)片內(nèi)Flash 程序存儲(chǔ)器,512 字節(jié)片內(nèi)RAM 數(shù)據(jù)存儲(chǔ)器。STC12C5404AD 有10 位ADC 通道捕獲/ 比較單元,6 個(gè)16 位定時(shí)器,硬件看門狗,高速SPI 通信端口,全雙工異步串行口,每個(gè)通用I/O 口驅(qū)動(dòng)能力均可達(dá)到20 mA.在線可編程,無需編程器,無需仿真器,可遠(yuǎn)程升級,有效節(jié)約成本,方便客戶的各種應(yīng)用。
PL2102 是特別針對中國電力網(wǎng)惡劣的環(huán)境所研制開發(fā)的低壓電力線載波通信芯片。它僅由單一的+5 V 電源供電,以及一個(gè)外部的接口電路與電力線耦合。PL2102 除具備基本的通訊控制功能外,還內(nèi)置了五種常用的功能電路:可數(shù)字頻率校正的實(shí)時(shí)鐘電路、32 Bytes SRAM、電壓監(jiān)測、看門狗定時(shí)器及復(fù)位電路。它們通過標(biāo)準(zhǔn)的I2C 接口與外部的微處理器相聯(lián),其中實(shí)時(shí)鐘與32 Bytes SRAM 在主電源掉電的情況下可由3 V 備用電池供電繼續(xù)保持工作。由于采用大規(guī)模數(shù)字/ 模擬混合0.35 μm CMOS 工藝制作,所以在抗干擾、抗衰落性能以及國內(nèi)外同類產(chǎn)品性能價(jià)格比等方面有著出眾的表現(xiàn)。
3.2 通信技術(shù)特點(diǎn)
本控制器采用了主流的擴(kuò)頻通信技術(shù),有效提高了通信的可靠性,同時(shí)創(chuàng)造性的采用動(dòng)態(tài)路由算法,可靠的延長了控制范圍。
(1)擴(kuò)頻通信技術(shù)其信號所占有的頻帶寬度遠(yuǎn)大于所傳信息必須的最小帶寬。頻帶的展寬是通過編碼及調(diào)制的方法來實(shí)現(xiàn)的,與所傳信息數(shù)據(jù)無關(guān)。接收端使用與發(fā)送端相同的擴(kuò)頻碼進(jìn)行相關(guān)解調(diào),恢復(fù)出所傳輸?shù)男畔?。根?jù)香農(nóng)關(guān)于信道容量的理論:
C=WLog2(1 十P/N)。
式中:C 稱為信道容量;W 是頻帶寬度;P/N 是信號與噪聲的功率比。此式說明:在保持信息容量C 不變的條件下,可以有不同的W 和P/N,亦即,如果頻帶寬度變寬,信道的信噪可以比較低,而可以達(dá)到同樣的信道容量(有效的信息傳輸速率)。甚至,在信號被噪聲淹沒的情況下,只要相應(yīng)地增加信號傳輸帶寬,也能夠達(dá)到可靠傳輸?shù)哪康摹U(kuò)頻通信就是基于這一原理。
(2)動(dòng)態(tài)路由方法需要在集中器建立中心路由表和信息素表,各終端建立子路由表,集中器和所有終端都要建立各自的電氣距離表, 用來記錄與其能夠直接通信的其他終端的電氣距離。算法主要包含路由發(fā)現(xiàn)和路由維護(hù)兩部分,下面分別進(jìn)行描述。
路由發(fā)現(xiàn),是指按一定的規(guī)則來尋找并發(fā)現(xiàn)路由,即路由邏輯樹的建立過程。集中器根據(jù)目的終端的回應(yīng)信號建立中心路由表,其他終端通過接收或監(jiān)聽電力線上的信號,根據(jù)計(jì)算出的電氣距離值不斷地更新其電氣距離表,從而調(diào)整其可直達(dá)節(jié)點(diǎn)路由表。
載波信號從集中器出發(fā),根據(jù)約束集的約束、信息素濃度τi,j以及問題的啟發(fā)信息,按一定策略選擇下一終端,直至到達(dá)目標(biāo)終端。同時(shí)載波信號按原路徑返回,回到集中器之后,對路徑質(zhì)量進(jìn)行評估, 采用全局更新規(guī)則對迭代或全局最優(yōu)路徑上的信息素濃度進(jìn)行更新。
由于電力線信道環(huán)境隨時(shí)間會(huì)發(fā)生緩慢的變化,信息素表中在較早時(shí)間里獲得的信息素會(huì)逐漸失去代表電力線信道當(dāng)前環(huán)境狀況的效力,所以對其他路徑的信息素采取定期按照一定比例揮發(fā)的機(jī)制。同時(shí)為了避免搜索出現(xiàn)停滯現(xiàn)象,設(shè)定了路徑上信息素的濃度值的上、下限。當(dāng)獲得的最優(yōu)路徑達(dá)到要求的精度時(shí),認(rèn)為本次路由發(fā)現(xiàn)完成。集中器通過不斷發(fā)出尋路信號,來完成各終端的路由發(fā)現(xiàn)過程,最終建立到達(dá)各終端的中心路由表。
算法中,載波信號在選擇下一個(gè)節(jié)點(diǎn)的時(shí)候,采用了氣距離作為約束的候選集策略,并結(jié)合了確定性隨機(jī)性的選路原則。首先,設(shè)定一個(gè)能正常通的電氣距離的閥值,當(dāng)電氣距離大于這一閥值時(shí),認(rèn)為信道狀態(tài)較差,兩節(jié)點(diǎn)間不能直接通信。
從大量的實(shí)驗(yàn)結(jié)果來看,最大可通信距離附近的節(jié)點(diǎn)在通信上并不穩(wěn)定,不適合作為中繼使用,所以,在算法中選擇電氣距離為閥值的[1/2,3/4]這個(gè)區(qū)間上的節(jié)點(diǎn)作為下一節(jié)點(diǎn)的候選集。同時(shí)通過公式(1)作為下一節(jié)點(diǎn)的選擇策略。
式中:pi,j(t)為在第t 次迭代中,編號為i 的節(jié)點(diǎn)到編號為j 的節(jié)點(diǎn)的轉(zhuǎn)移概率;τi,j(t)為路徑(i,j)上的信息素強(qiáng)度;a 為信息素調(diào)整因子;ηi,j為節(jié)點(diǎn)i 到節(jié)點(diǎn)j 的電氣距離值;allowed 為載波信號下一跳候選節(jié)點(diǎn)集合;q 為在[0,1]區(qū)間隨機(jī)產(chǎn)生的服從均勻分布的隨機(jī)數(shù);q0為載波信號選擇下一跳的概率度量閥值。當(dāng)q≤q0時(shí),載波信號選擇信息素最大的路徑節(jié)點(diǎn)作為下一跳節(jié)點(diǎn),這就是確定性選擇策略,當(dāng)q》q0時(shí),根據(jù)公式(2),用賭輪法隨機(jī)選擇下一跳,這就是隨機(jī)性選擇策略。算法的確定性使選擇趨向于獲得最優(yōu)候選解,而隨機(jī)性則通過擾動(dòng)來發(fā)現(xiàn)新的解,防止陷入局部最優(yōu)。
路由維護(hù)是指當(dāng)以前的路由變得無效時(shí)或?yàn)榱藢ふ乙粭l更加適合當(dāng)前電力線狀況的更優(yōu)路由,需要對路由表進(jìn)行更新的過程。當(dāng)集中器按照中心路由表中的路由向目標(biāo)終端發(fā)送控制命令,由于該路由中某一路徑上的負(fù)載變大或受到強(qiáng)干擾而使通信失敗,則集中器在確認(rèn)該路徑已經(jīng)不適合當(dāng)前信道的情況下,將重新選擇路由或使用路由發(fā)現(xiàn)規(guī)則尋找到達(dá)目標(biāo)節(jié)點(diǎn)的新路由。進(jìn)行路由維護(hù)的搜索過程是針對個(gè)別節(jié)點(diǎn)或局部區(qū)域節(jié)點(diǎn)進(jìn)行的,因此可以大大地節(jié)約時(shí)間。
3.3 電路設(shè)計(jì)
STC 單片機(jī)將路燈電壓、電流的現(xiàn)場數(shù)據(jù)進(jìn)行采集,利用單片機(jī)內(nèi)部AD 進(jìn)行轉(zhuǎn)換并與正常的上下限值進(jìn)行比較得到路燈的運(yùn)行狀態(tài)信息,判斷是否向上位機(jī)報(bào)警。STC 單片機(jī)的PWM 引腳輸出占空比可調(diào)的信號,直接控制LED 驅(qū)動(dòng)芯片,調(diào)節(jié)LED 光源的亮度,實(shí)現(xiàn)有效的節(jié)能。電力載波模塊將需要傳遞的信息利用電力線進(jìn)行收發(fā)??刂破髡w結(jié)構(gòu)見圖1.
圖1 整體結(jié)構(gòu)
如圖2、圖3 所示,電壓、電流采集電路[3]分別通過電壓、電流互感器感應(yīng)交流的電壓、電流,再通過I-V 互換得出相應(yīng)電壓值。
圖2 電壓采集電路
圖3 電流采集電路
電力載波通信由PL2102 和STC 單片機(jī)配合操作完成,主要外圍電路有功率放大電路、濾波整形電路、耦合電路組成。電力載波通信主要電路組成見圖4.
圖4 載波電路
功率放大電路是用來將PL2102 芯片產(chǎn)生的載波調(diào)制信號進(jìn)行功率放大后耦合到電力線上。載波功能被使用后,載波信號由PSK-OUT 輸出,波形為0~5 V 變化的方波,包含豐富的諧波;經(jīng)過推挽電路進(jìn)行功率放大后,PSK-OUT 的方波信號被放大為IN 點(diǎn)信號。功率放大電路見圖5.
圖5 功率放大電路
圖7 中電感L1、電容C3 完成整形濾波后,再通過耦合線圈T1 耦合到低壓電力線上,雙向二極管D7 起保護(hù)作用。圖7 中包含接收回路部分。R3 在接收本地強(qiáng)發(fā)射信號時(shí)可以有效吸收衰減;電感L2、電容C6 組成并聯(lián)諧振回路,諧振以中心頻率為120 kHz 設(shè)計(jì),完成對有效信號的帶通濾波;良好的選頻回路可以有效提高載波接收靈敏度。載波耦合及接收電路見圖6.
圖6 載波耦合及接收電路
4 路燈控制器的軟件設(shè)計(jì)
軟件程序使用C51 語言,采用模塊化方式編程。軟件主要由主程序、AD 采樣程序、PWM 程序、通信程序組成。
4.1 主程序
系統(tǒng)開始工作后主程序首先對單片機(jī)內(nèi)部及外部的資源初始化,然后依次調(diào)用各功能模塊程序。
4.2 A/D 采樣程序
A/D 采樣程序由主程序循環(huán)調(diào)用,每次對外部10 個(gè)模擬量采集12 次,經(jīng)由數(shù)字濾波后送到數(shù)據(jù)緩沖區(qū),供其他程序使用。
4.3 PWM 程序
單片機(jī)將上位機(jī)命令解碼后,內(nèi)部控制寄存器置位,啟動(dòng)可編程計(jì)數(shù)器陣列(PCA)/PWM 工作,輸出可調(diào)PWM,實(shí)現(xiàn)調(diào)光的功能。
4.4 通信程序
載波通信模塊提供透明數(shù)據(jù)傳輸通道,用戶通信的可靠性由用戶的通信協(xié)議保證。上位機(jī)通過載波通信模塊向路燈控制器發(fā)出命令,由STC 命令解碼后,置位相應(yīng)的寄存器,實(shí)現(xiàn)對應(yīng)功能。
主程序框圖、中斷程序流程圖見圖7、圖8.
圖7 主程序框圖
圖8 中斷程序流程圖
5 結(jié)論
智能LED 路燈控制器采用智能化設(shè)計(jì),能夠可靠地對城市路燈進(jìn)行有效的數(shù)據(jù)采集,自動(dòng)判斷,自動(dòng)報(bào)警。同時(shí)它作為智能路燈系統(tǒng)的一部分,通過電力線載波通信技術(shù)與上位機(jī)方便地聯(lián)系,便捷地接收系統(tǒng)命令并且利用自有的PWM 功能對LED 光源進(jìn)行調(diào)光操作,達(dá)到節(jié)能要求,具有體積小,工作可靠,控制便捷的優(yōu)點(diǎn)。智能LED 路燈控制器如能推廣使用,會(huì)使城市路燈管理工作提高到一個(gè)新的水平,不但節(jié)約能源,同時(shí)也可減少照明燈具的損耗,因此具有廣泛的推廣前景。
由圖7 所示的脈沖信號控制IGBT 導(dǎo)通和關(guān)斷,在負(fù)載兩端產(chǎn)生等效于圖4 的電壓,從而使電感L 上的電壓如圖8 所示,最終產(chǎn)生的電流波形如圖9.可以看出,電流波形為線性度良好的三角波。通過實(shí)驗(yàn)驗(yàn)證得到的數(shù)據(jù)與理論分析結(jié)果相一致,證明了該系統(tǒng)的正確性和可行性。
二、基于Web的單片機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)方案
摘 要:傳統(tǒng)的遠(yuǎn)程監(jiān)控系統(tǒng)一般采用C/S 模型的方式,針對大型設(shè)備,成本高。文章采用SOC 芯片C8051F020 和10M 自適應(yīng)網(wǎng)絡(luò)芯片RTL8019AS 接口的方案,在單片機(jī)中嵌入了精簡的TCP/IP 協(xié)議棧,構(gòu)建了基于Web 的單片機(jī)遠(yuǎn)程監(jiān)控系統(tǒng)軟、硬件平臺,在此基礎(chǔ)上實(shí)現(xiàn)了基于單片機(jī)的數(shù)據(jù)采集和遠(yuǎn)程監(jiān)控,所實(shí)現(xiàn)的系統(tǒng)具有成本低廉、操作方便、可靠等優(yōu)點(diǎn)。
1. 引言
單片機(jī)系統(tǒng)以其簡單、高效的特點(diǎn),在工業(yè)控制和日常生活中應(yīng)用越來越廣泛。目前大多數(shù)單片機(jī)系統(tǒng)是以51 單片機(jī)為核心,與檢測、伺服、顯示設(shè)備配合起來實(shí)現(xiàn)監(jiān)控功能。[!--empirenews.page--]
然而,這些監(jiān)控系統(tǒng)的數(shù)據(jù)傳輸多采用RS-232、RS-485 以及各種現(xiàn)場總線,這些方式有些通信速度不夠快,有些距離不夠遠(yuǎn),且各種總線之間難于實(shí)現(xiàn)互連和互操作。以太網(wǎng)作為目前應(yīng)用最為廣泛的局域網(wǎng),在工業(yè)自動(dòng)化和過程控制領(lǐng)域得到了越來越多的應(yīng)用。同時(shí),隨著Internet 的普及,現(xiàn)代通信技術(shù)的進(jìn)步,基于TCP/IP 和Client/Server 架構(gòu)的分布式監(jiān)控技術(shù)也日趨成熟。把嵌入式系統(tǒng)連接到Internet 上,就可以方便、低廉地把信息傳送到世界的任何一個(gè)地方。
傳統(tǒng)的遠(yuǎn)程監(jiān)控系統(tǒng)一般采用C/S 模型的方式,主要針對大型的設(shè)備進(jìn)行監(jiān)控。對于如攝像頭圖象監(jiān)控﹑家用儀表﹑門禁控制系統(tǒng)等小型的設(shè)備的監(jiān)控就需要采用低成本的方案。
鑒于此,在低成本的單片機(jī)系統(tǒng)上移植精簡的TCP/IP 協(xié)議簇,實(shí)現(xiàn)對于小型設(shè)備遠(yuǎn)程監(jiān)控是最佳選擇。該系統(tǒng)以Web 方式實(shí)現(xiàn),用戶可以在任何一臺裝有瀏覽器的PC 機(jī)上進(jìn)行遠(yuǎn)程監(jiān)視與控制,具有價(jià)格低廉、操作方便、界面友好等優(yōu)點(diǎn)。傳統(tǒng)的遠(yuǎn)程監(jiān)控系統(tǒng)模型與本系統(tǒng)采用的模型如圖1 和圖2 所示。
圖1 傳統(tǒng)遠(yuǎn)程監(jiān)控系統(tǒng)模型
圖2 單片機(jī)監(jiān)控系統(tǒng)模型
2. 系統(tǒng)硬件設(shè)計(jì)
本系統(tǒng)以 Cygnal 公司的完全集成的混合信號系統(tǒng)級芯片(SOC)C8051F020 單片機(jī)為核心,采用Realtek 公司的10M 自適應(yīng)以太網(wǎng)控制器RTL8019AS 實(shí)現(xiàn)系統(tǒng)的網(wǎng)絡(luò)接口部分。
SRAM 部分用于存放大量的數(shù)據(jù)信息。數(shù)據(jù)采集部分用于采集系統(tǒng)需要監(jiān)控的設(shè)備的運(yùn)行情況,由于C8051F020 內(nèi)部帶有真正12 位100 ksps 的8 通道ADC 帶PGA 和模擬多路開關(guān),還有兩個(gè)12 位DAC 可編程更新時(shí)序,可以方便的進(jìn)行模擬信號采集和對外設(shè)進(jìn)行控制。
C8051F020 單片機(jī)內(nèi)置64K FLASH 程序存儲(chǔ)器、4K 內(nèi)部SRAM,可以嵌入TCP /IP 協(xié)議, 從而實(shí)現(xiàn)嵌入式Web Sever 的功能。RTL8019AS 集成了介質(zhì)訪問控制子層(MAC)和物理層的性能,與單片機(jī)的接口簡單,可以方便地用來設(shè)計(jì)基于ISA 總線的系統(tǒng)。另外,它還具有與NE2000 兼容、軟件移植性好以及價(jià)格低廉等優(yōu)點(diǎn),所以特別適合用于嵌入式系統(tǒng)。
圖3 系統(tǒng)框圖
3.系統(tǒng)軟件設(shè)計(jì)
3.1 軟件流圖設(shè)計(jì)
軟件的實(shí)現(xiàn)主要是根據(jù)數(shù)據(jù)在網(wǎng)絡(luò)中傳輸?shù)姆较蚝蛿?shù)據(jù)的流向來實(shí)現(xiàn)的。在本設(shè)計(jì)中數(shù)據(jù)的流向?yàn)椋赫埱笮畔木钟蚓W(wǎng)中來,通過RJ 45 送到RTL80l9AS,處理后的數(shù)據(jù)包送入單片機(jī)系統(tǒng)的協(xié)議棧,由協(xié)議棧對數(shù)據(jù)包進(jìn)行解析,得到原始請求信息。請求信息再經(jīng)過單片機(jī)系統(tǒng)的處理,產(chǎn)生回復(fù)信息?;貜?fù)信息到局域網(wǎng)的過程與上面正好相反。整個(gè)系統(tǒng)的軟件流程如上圖4 所示。
圖4 軟件框圖
3.2 RTL8019 接收與發(fā)送數(shù)據(jù)
1.RTL8019 芯片初始化主要是將網(wǎng)卡設(shè)置成正常的模式,跟外部網(wǎng)絡(luò)連接。清除所有中斷標(biāo)志位,讓芯片開始工作。
2.對RTL8019 接收數(shù)據(jù)操作,有查詢和中斷兩種方式。因?yàn)閱纹瑱C(jī)的速度和PC 機(jī)相差太遠(yuǎn),而且還有一些采集任務(wù),本系統(tǒng)不采用中斷方式,用查詢方式。在查詢方式下,通過查詢CURR 和BNRY 兩個(gè)寄存器的值來判斷是否收到一幀數(shù)據(jù)。當(dāng)BNRY+1 與CURR不相等,說明接收緩沖區(qū)接收到了新的數(shù)據(jù)幀。圖5 為RTL8019 報(bào)頭格式,接收部分子程序如下:
UCHAR xdata * rcve_frame(void) //如收到有效數(shù)據(jù)包,返回收到的數(shù)據(jù),否則返回NULL
圖5 RTL8019 報(bào)頭格式
3.數(shù)據(jù)的發(fā)送包含三個(gè)步驟:封裝數(shù)據(jù)包;通過遠(yuǎn)程DMA 將數(shù)據(jù)包送入RTL8019AS的數(shù)據(jù)發(fā)送緩沖區(qū);通過RTL8019 的本地DMA 將數(shù)據(jù)送入FIFO 進(jìn)行發(fā)送。具體過程如下:
?。?)包在發(fā)送前應(yīng)該按規(guī)定的格式封裝好,格式如下圖6 所示:
圖6 MAC 幀首部
?。?)把上面的數(shù)據(jù)包通過遠(yuǎn)程DMA 寫入RTL8019AS 的數(shù)據(jù)發(fā)送緩沖區(qū);
?。?)啟動(dòng)本地DMA,把數(shù)據(jù)發(fā)送出去,數(shù)據(jù)包長度最小為60 字節(jié),最大1514 字節(jié)。
發(fā)送子程序?yàn)椋簐oid send_frame(UCHAR xdata * outbuf,UINT len)//發(fā)送一個(gè)數(shù)據(jù)包3.3 TCP/IP 協(xié)議棧的實(shí)現(xiàn)。
3.3.1 ARP 協(xié)議的實(shí)現(xiàn)
ARP 地址解析協(xié)議的本質(zhì)是完成網(wǎng)絡(luò)地址到物理地址的映射。物理地址有以太網(wǎng)和令牌環(huán)網(wǎng)兩種基本類型,網(wǎng)絡(luò)地址特指IP 地址。具體到以太網(wǎng),使用的是動(dòng)態(tài)綁定轉(zhuǎn)換的方法,但是會(huì)遇到許多細(xì)節(jié)問題,例如減少廣播,ARP 包丟失,物理地址變更(更換網(wǎng)卡)、移動(dòng)(移動(dòng)設(shè)備到另一子網(wǎng))、消失(關(guān)機(jī))等。一般是設(shè)置ARP 高速緩存,通過學(xué)習(xí)、老化、更新、溢出算法處理ARP 映射表來解決這些問題。整個(gè)ARP 處理過程,主要用5 個(gè)函數(shù)實(shí)現(xiàn)。
在實(shí)現(xiàn)網(wǎng)卡驅(qū)動(dòng)程序后,所有ARP 處理操作就是填寫ARP 包。主要程序代碼編制如下:
(1)void init_arp(void)//完成ARP 表初始化,概括說就是ARP 表state 字段清0
?。?)void arp_send(UCHAR * hwaddr,ULONG ipaddr,UCHAR msg_type)//完成ARP 請求
?。?)void arp_rcve(UCHAR xdata * inbuf)// 完成響應(yīng)操作
(4)UCHAR xdata * arp_resolve(ULONG dest_ipaddr) //完成從cache 里面查找對應(yīng)//IP 地址的物理地址,如果沒有,就發(fā)送ARP 請求
3.3.2 IP 協(xié)議的實(shí)現(xiàn)
網(wǎng)際協(xié)議 IP 是TCP/IP 協(xié)議族中最為核心的協(xié)議,它的主要功能是負(fù)責(zé)把數(shù)據(jù)交付給主機(jī),當(dāng)目標(biāo)主機(jī)與原主機(jī)處于不同的物理網(wǎng)絡(luò)中時(shí),IP 負(fù)責(zé)把數(shù)據(jù)包路由到相應(yīng)的目標(biāo)網(wǎng)絡(luò)上。Internet 上所有的數(shù)據(jù)都以IP 數(shù)據(jù)包格式傳輸。IP 協(xié)議最大的特點(diǎn)是提供不可靠的和無連接的數(shù)據(jù)包傳送服務(wù)。IP 協(xié)議主要實(shí)現(xiàn)以下兩個(gè)子程序:[!--empirenews.page--]
(1) void ip_send(UCHAR xdata*outbuf,ULONG ipaddr, UCHAR proto_ id,DINT len)//發(fā)送IP 數(shù)據(jù);該子程序用來創(chuàng)建一個(gè)發(fā)送數(shù)據(jù)報(bào)。
(2) void ip_rcve(UCHAR xdata *inbuf) //接收IP 數(shù)據(jù);該子程序檢測一個(gè)外來數(shù)據(jù)包,并對數(shù)據(jù)包作相應(yīng)的處理。
3.3.3 TCP 協(xié)議的實(shí)現(xiàn)
1.使用TCP 狀態(tài)機(jī):TCP 協(xié)議是整個(gè)TCP/IP 協(xié)議的核心,也是傳輸層中最復(fù)雜的協(xié)議。TCP 協(xié)議在兩個(gè)端點(diǎn)之間建立了等效于物理連接的邏輯連接。數(shù)據(jù)沿著這個(gè)連接雙向傳輸。連接的雙方必須對發(fā)送和接收的數(shù)據(jù)保持跟蹤,以便能夠檢測出數(shù)據(jù)流中的遺漏和重復(fù)。
2.使用簡單的確認(rèn)機(jī)制:序列號和確認(rèn)號這兩個(gè)字段用于協(xié)同完成TCP 協(xié)議中的確認(rèn)工作。對于每個(gè)接收到的數(shù)據(jù)包進(jìn)行確認(rèn)號的計(jì)算,需要從接收到的數(shù)據(jù)包中提取TCP 報(bào)文的數(shù)據(jù)部分長度,并進(jìn)行計(jì)算,這增加了處理器的運(yùn)算量。但如果每次只對單個(gè)TCP 報(bào)文進(jìn)行確認(rèn)的話,并沒有太大的難度。TCP 協(xié)議主要包含的程序如下:
?。?) init_tcp(void) //初始化TCP 協(xié)議
(1) Tcp_send(UINT flags, DINT hdr_len, UCHAR nr) //發(fā)送TCP
?。?) Tcp_retransmit(void) //重發(fā)TCP 數(shù)據(jù)
?。?) Tcp_inactivity(void) //停止TCP
(4) Tcp_rcve(UCHAR xdata * inbuf, UINT len) //接收TCP 數(shù)據(jù)
3.3.4 HTTP 協(xié)議簡介
HTTP 協(xié)議是TCP 協(xié)議的高層協(xié)議,HTTP 的請求和應(yīng)答都是一行或多行文本,它的結(jié)束標(biāo)志是一個(gè)換行符[5]。如果請求成功,數(shù)據(jù)就沿著該連接發(fā)送,直到發(fā)送完為止。HTTP的端口號為80.HTTP 中的命令稱呼為方法(method),其中GET 語句用來獲取文檔,POST語句用來粘貼文檔。通過判斷GET 和POST 語句后面的文件名來判斷所需要傳遞的文件的位置。
請求:
GET / HTTP/1.1
響應(yīng):
HTTP/1.1 200 OK
Content-type: text/html
……
《html》
《body》
……
《/body》
《/html》
4.應(yīng)用部分
本 WEB 服務(wù)器系統(tǒng)幾乎可以應(yīng)用于所有對實(shí)時(shí)性要求不是很高的場合,只要對本系統(tǒng)的相關(guān)部分做些修改或改進(jìn),例如:客戶端的訪問權(quán)限、IP 地址的過濾等,就可應(yīng)用于諸如遠(yuǎn)程抄表、信息家電的遠(yuǎn)程控制等場合。下面圖7 為ping 命令測試網(wǎng)絡(luò)不通到通的連接狀態(tài),圖8 實(shí)現(xiàn)了局域網(wǎng)內(nèi)任意主機(jī)通過ip 地址形式訪問單片機(jī)內(nèi)部存諸的網(wǎng)頁,從而實(shí)現(xiàn)對單片機(jī)系統(tǒng)的遠(yuǎn)程監(jiān)控。
圖7 網(wǎng)絡(luò)連接測試
圖8 遠(yuǎn)程監(jiān)控溫度
5.結(jié)束語
實(shí)現(xiàn)了基于單片機(jī)的 TCP/IP 協(xié)議棧,使單片機(jī)控制的系統(tǒng)具有了WebServer 的功能,這樣可以使用PC 機(jī)通過因特網(wǎng)遠(yuǎn)程訪問單片機(jī)系統(tǒng),也可以使用單片機(jī)系統(tǒng)將有用的信息通過因特網(wǎng)發(fā)送到遠(yuǎn)端的PC 或其它終端上。為嵌入式設(shè)備實(shí)現(xiàn)遠(yuǎn)程數(shù)據(jù)采集、遠(yuǎn)程監(jiān)控、遠(yuǎn)程診斷、遠(yuǎn)程幫助、遠(yuǎn)程升級、遠(yuǎn)程重構(gòu)等功能提供了可能,這是嵌入式系統(tǒng)發(fā)展的趨勢。
三、基于89C52單片機(jī)的微電壓信號源設(shè)計(jì)
1 設(shè)計(jì)原理
被測設(shè)備要求提供0.5~50mV的可調(diào)直流模擬電壓,分辨率達(dá)10微伏,精度達(dá)±0.01mV,溫度跟隨性要好,即要求提供高精度的微電壓信號。
如果采用單片機(jī)通過D/A轉(zhuǎn)換器輸出所需電壓,輸出范圍0~5V,LSB=0.01mV,則D/A轉(zhuǎn)換器的位數(shù):
X=lg2(5000/0.01)≈19(Bit)
考慮D/A轉(zhuǎn)換器的量化誤差、溫漂、噪聲和其他各種誤差的影響,至少選擇21Bit以上的D/A轉(zhuǎn)換器,但目前尚無適合本系統(tǒng)設(shè)計(jì)的D/A轉(zhuǎn)換器。因此,在考慮系統(tǒng)分辨率和輸出電壓范圍的前提下,采用如下方案:先將小于50 mV的電壓數(shù)值擴(kuò)大100倍,再用 16Bit D/A轉(zhuǎn)換器輸出,然后通過200倍的高精密分壓器和超低漂移的運(yùn)算放大器緩沖輸出。與此同時(shí),采用高位A/D轉(zhuǎn)換器組成電壓反饋回路,對輸出進(jìn)行差值補(bǔ)償,進(jìn)一步提高信號精度和穩(wěn)定性。 其原理結(jié)構(gòu)如圖1所示。
2 硬件設(shè)計(jì)
2.1 電壓輸出電路
在單片機(jī)(89C52)、D/A轉(zhuǎn)換器、分壓、運(yùn)放組成的微電壓輸出電路中,設(shè)計(jì)的要點(diǎn)是如何用單片機(jī)控制D/A轉(zhuǎn)換器的輸出。本設(shè)計(jì)采用美國BB公司生產(chǎn)的16位高精度數(shù)/模轉(zhuǎn)換器DAC714(單通道、串行通訊方式,工作電壓±12V或±15V,能實(shí)現(xiàn)±10V、±5V和0~10V的模擬電壓輸出)。圖 2是D/A轉(zhuǎn)換器與單片機(jī)的連接電路。DAC714采用 ±15V工作電壓,通過外部連接的增益(OFFS)和雙極性偏移(GADJ)電位計(jì)調(diào)整,實(shí)現(xiàn)對輸出電壓的精度要求。在調(diào)節(jié)這兩個(gè)參數(shù)時(shí),為了避免零點(diǎn)對比例調(diào)節(jié)的影響,應(yīng)注意先調(diào)整比例系數(shù),后調(diào)零點(diǎn)。其中,A0為輸入寄存器控制信號,A1為D/A鎖存控制信號,SDI為串行數(shù)據(jù)輸入。數(shù)據(jù)控制均為低電平有效,當(dāng)A0=0時(shí),當(dāng)前數(shù)據(jù)進(jìn)入移位寄存器;當(dāng)A1=0時(shí),數(shù)據(jù)進(jìn)入D/A鎖存。
5V滿刻度的16位DAC714轉(zhuǎn)換器,1LSB對應(yīng)76μV。如果輸出端的負(fù)載電流為5mA,則60mΩ的線路和接觸電阻,就會(huì)產(chǎn)生300μV的壓降;此外,還有印刷電路板產(chǎn)生的壓降。因此,將模擬地和數(shù)字地分開,采用單點(diǎn)連接,盡量減小接地回路。模擬插釘互相靠近,有利于模擬與數(shù)字信號的隔離,而模擬信號應(yīng)該盡量遠(yuǎn)離數(shù)字信號。為了將D/A轉(zhuǎn)換器與開關(guān)電流隔離,模擬地設(shè)在D/A周圍或者在其下方的模擬信號和電源的附近,最好在DAC714轉(zhuǎn)換器的下面將DCOM與ACOM直接接地。
2.2 電壓反饋電路
DAC714轉(zhuǎn)換器的輸出電壓經(jīng)精密分壓電路和OPA111BM運(yùn)放組成的緩沖電路輸出后,理論上完全可達(dá)22位分辨率。但是由于溫漂和其他誤差影響,實(shí)際輸出時(shí)為19位分辨率,精度不能滿足要求,為此,設(shè)計(jì)了反饋補(bǔ)償電路。用22位A/D轉(zhuǎn)換器測量實(shí)際輸出電壓,在單片機(jī)中將實(shí)際輸出電壓與理論輸出值比較,其差值信號作為DAC714的補(bǔ)償電壓輸出,確保了電壓輸出精度。
圖3是由ADS1212組成的電壓反饋電路。 ADS1212是美國BB公司生產(chǎn)的高精度、寬動(dòng)態(tài)特性的22位單通道Δ-Σ模擬/數(shù)字轉(zhuǎn)換器。其差動(dòng)輸入端直接與微小的電壓信號相連。由于采用了低噪聲的輸入放大器,在轉(zhuǎn)換速度為10Hz時(shí)仍可獲得20位的有效分辨率。它有一個(gè)靈活的同步串行接口,單一+5V供電,有內(nèi)/外參考電壓和內(nèi)部自校準(zhǔn)系統(tǒng)。與外部器件接口的形式有雙線制、三線制、四線制和多線制,此處采用三線制來實(shí)現(xiàn)與單片機(jī)的接口,接口信號是數(shù)據(jù)準(zhǔn)備就緒線(DRDY)、數(shù)據(jù)輸入輸出線 (SDIO)、時(shí)鐘信號線(SCLK)。
2.3 溫控電路
為了進(jìn)一步降低溫漂的影響,必須保證系統(tǒng)工作溫度變化在一個(gè)較小的范圍內(nèi),為此,設(shè)計(jì)了自動(dòng)恒溫控制電路。該電路由TMP01溫度控制芯片(AD公司)和加溫、降溫電路等組成。
TMP01通過外接電阻值來設(shè)定高、低溫度控制點(diǎn)。當(dāng)系統(tǒng)溫度高于或低于設(shè)定值時(shí),輸出電壓控制信號,啟動(dòng)加溫或降溫電路的工作。TMP01溫度控制精度達(dá)±1℃,負(fù)載能力達(dá)20mA,可直接驅(qū)動(dòng)繼電器。
3 軟件流程
本電壓信號源采用液晶顯示屏顯示漢字和數(shù)字,可通過按鍵直接控制輸出電壓的大小。用匯編語言編程,實(shí)現(xiàn)電壓的自動(dòng)輸出。軟件流程如圖4所示。
4 結(jié)束語
本文介紹的數(shù)字式微電壓信號源,利用精密分壓和反饋補(bǔ)償原理,實(shí)現(xiàn)了用16位D/A數(shù)模轉(zhuǎn)換器輸出19位分辨率的直流電壓的目標(biāo)。部隊(duì)實(shí)際使用表明,采用單片機(jī)控制的數(shù)字式微電壓信號源不僅電壓精度穩(wěn)定,而且成本低,體積小,提高了測試自動(dòng)化的程度。
四、一款自制簡易示波器設(shè)計(jì)
這款簡易示波器的性能如下:
1.電壓擋位:200mV、500mV、1V、2V、5V、12.5V、25V、50V。
2.頻率擋位:12MHz、6MHz、4MHz、3MHz、2MHz、1MHz、500kHz、250kHz、100 kHz、50kHz、25kHz、10kHz。
3.能較好地測量300 kHz的波形。
這次DIY的示波器性能雖然較弱,僅僅能用來測試音頻等300kHz以下頻率的周期波形。不過它還有一個(gè)實(shí)用的功能,可以用來測試+/-50V的電壓(量程是自動(dòng)切換的)。
主要零件
編號 零件名稱 數(shù)量
1 ATMEGA8單片機(jī) 1
9 24MHz有源晶振 1
8 128x64液晶屏
?。跾T7565控制器] 1
2 5532運(yùn)放 2
3 AD603壓控放大器 1
4 TLV5618[DA] 1
5 ADS830E[AD] 1
6 IDT7205 1
7 ILC7660 2
10 1117-5.0 2
11 1117-3.3 1
12 79L05 1
13 繼電器 2
14 電容、電阻、二極管 若干
15 三極管 2
16 洞洞板 1
17 按鈕 2
電路分析
這個(gè)版本示波器的電路原理如圖1所示。電路制作時(shí),我用了1塊16cm×10cm的萬用板,電路中僅僅使用2個(gè)按鈕來操作示波器,因?yàn)槲抑皇褂昧艘黄琈8單片機(jī)作為控制器,1個(gè)按鈕用于循環(huán)改變采樣頻率,另一個(gè)按鈕用來選擇信號的耦合方式,直流或者交流耦合。
大家要問了,如何用一片 M8 單片機(jī)產(chǎn)生12MHz的采樣時(shí)鐘呢?呵呵,其實(shí)我對M8單片機(jī)進(jìn)行了超頻,使用24MHz的有源晶振作為它的時(shí)鐘頻率。然后,通過定時(shí)器2的比較匹配翻轉(zhuǎn)電平,以產(chǎn)生不同的時(shí)鐘。當(dāng)OCR2=0時(shí),單片機(jī)的OC2引腳就能產(chǎn)生12MHz的方波了。當(dāng)然,如果大家不想超頻,那么最高的采樣頻率就是16MHz的一半,8MHz了。因?yàn)?,M8的技術(shù)手冊上建議最高為16MHz的時(shí)鐘,而比較匹配的最高頻率為系統(tǒng)時(shí)鐘的2分頻,即8MHz。本次制作的源代碼使用WinAVR編譯。如果使用16MHz的晶振,請自行修改源代碼。
電路中,被測量的信號,經(jīng)過500kΩ、480 kΩ、20 kΩ電阻串聯(lián)回路,通過繼電器進(jìn)入第1個(gè)運(yùn)放,運(yùn)放起到阻抗匹配的作用,因?yàn)锳D603的輸入電阻僅為100Ω。單片機(jī)通過繼電器選擇合適的衰減倍數(shù),在默認(rèn)情況下,為1/2倍的衰減。在測量較大的電壓時(shí),單片機(jī)會(huì)選擇1/50 的衰減。選擇衰減的目的是為了方便后期的2次放大。后期放大使用了一片AD603,它是壓控放大器。通過改變GPOS(第1腳)與GNEG(第2腳)之間的電壓差,即可控制它的放大倍數(shù)。AD603的GPOS(第1腳)的電壓通過一片DA5618控制,它是12位串口DA,它的參考電壓為1.25V,由2個(gè)電阻分壓而得。整個(gè)電路的運(yùn)放可以使用NE5532、AD8066、LM6172等,它們的引腳都是兼容的。由于采樣的速度比較快,遠(yuǎn)大于M8單片機(jī)的讀取及處理速度,所以通過IDT7205來緩沖高速采樣的電平數(shù)據(jù)。最后,單片機(jī)讀取采樣的數(shù)據(jù),并在128×64的液晶上顯示。