基于ARM和CAN息線的數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
在工業(yè)生產(chǎn)的很多領(lǐng)域都需要對生產(chǎn)過程進(jìn)行監(jiān)控管理,因此以A/D轉(zhuǎn)換器為核心的數(shù)據(jù)采集系統(tǒng)必不可少。為了提高監(jiān)控系統(tǒng)的準(zhǔn)確性與可靠性,數(shù)據(jù)采集卡可選用∑一△型高分辨率的A/D轉(zhuǎn)換器。而控制器局域網(wǎng)(CAN)能有效支持具有高安全級的分布式實(shí)時(shí)控制,憑借其在噪聲環(huán)境中的可靠性及其故障狀態(tài)檢測,以及從故障狀態(tài)恢復(fù)的能力被廣泛應(yīng)用于工業(yè)控制等領(lǐng)域。本文設(shè)計(jì)了一種關(guān)于CAN總線的雙通道高精度采集系統(tǒng),提高了工業(yè)控制中的信號采集處理以及傳輸抗干擾能力。
1 系統(tǒng)原理
系統(tǒng)選用Philips公司的LPC2292(支持實(shí)時(shí)仿真和跟蹤的32位ARM7TDMI—S CPU的微控制器)作為主芯片,功耗極低,具有高速Flash存儲器、多個(gè)32位定時(shí)器、2路CAN以及多達(dá)9個(gè)外部中斷,特別適用于工業(yè)控制等。Maxim公司的MAX811作為系統(tǒng)的復(fù)位開關(guān),系統(tǒng)原理圖如圖1所示。雙通道O~5 V的模擬信號,經(jīng)過信號調(diào)理電路轉(zhuǎn)換為適合ADC采樣的電壓信號,被2個(gè)24位精度的低功耗A/D轉(zhuǎn)換器ADSl251采樣;所采樣的數(shù)據(jù)經(jīng)過LPC2292的處理后存入擴(kuò)展的SRAM靜態(tài)存儲器(Cypress公司的CY7C1061AV33)當(dāng)中,再通過ARM內(nèi)嵌的2個(gè)CAN控制器控制2路CTM8231(通用CAN隔離收發(fā)器)進(jìn)行數(shù)據(jù)傳輸。其中,CP2102是ARM中UART與USB端口的橋接芯片,它將USB口模擬為串口,可在PC機(jī)上方便地對LPC2292進(jìn)行上電之前的Flash擦寫等操作。
2 信號調(diào)理電路
其中一路通道的信號調(diào)理電路如圖2所示。ADSl251是24位低功耗、寬動態(tài)范圍、高信噪比的deIta—sigma型A/D轉(zhuǎn)換器。ADSl251為差分模擬輸入,當(dāng)參考輸入電壓等于+4.096 V時(shí),雙端輸入電壓為一4.096~+4.096 V。本設(shè)計(jì)利用LM4040AIM3—4.1穩(wěn)壓管為ADC提供+4.096 V參考電壓,系統(tǒng)時(shí)鐘信號和串行時(shí)鐘信號都由ARM提供。為了更好地發(fā)揮ADC的性能,最重要的是信號的滿量程輸入,因此在ADC雙端輸入的前端,采用軌到軌運(yùn)算放大器0PA4350設(shè)計(jì)了一個(gè)變換電平電路。首先外部信號進(jìn)入一個(gè)射隨放大器,然后通過2個(gè)運(yùn)算放大器進(jìn)行電平移位,讓0~5 V的外部信號轉(zhuǎn)變?yōu)橐?.096~+4.096 V的信號進(jìn)入ADSl251的差分輸入端。
[!--empirenews.page--]
3 CAN通信傳輸電路
CAN相關(guān)電路如圖3所示。LPC2292中雖然內(nèi)嵌CAN控制器,但是必須與CAN收發(fā)器連接才能具備收發(fā)功能,在以往的設(shè)計(jì)中ARM和CAN收發(fā)器之間通常需要加入DC-DC電源隔離模塊和高速光電耦合器組成的隔離電路,以確保在CAN總線遭受嚴(yán)重的干擾時(shí)控制器能夠正常工作。然而考慮到復(fù)雜度、系統(tǒng)集成等因素,本設(shè)計(jì)中利用CTM8231接口芯片來實(shí)現(xiàn)帶隔離的CAN收發(fā)電路。它將LPC2292中內(nèi)建的CAN控制器邏輯電平轉(zhuǎn)換為CAN總線的差分電平,實(shí)現(xiàn)起來非常簡單而且有高抗電磁干擾性;每一路獨(dú)立的CAN總線接口均配上120Ω的可跨接的終端匹配電阻,同時(shí)在印制板上留有可另接一其他阻值電阻的接口,以便在調(diào)試和使用過程中進(jìn)行終端電阻的調(diào)整,由撥碼開關(guān)選擇。CAN總線上有數(shù)據(jù)傳輸時(shí),用發(fā)光二極管閃爍指示。
4 軟件設(shè)計(jì)
4.1 A/D轉(zhuǎn)換程序設(shè)計(jì)
整個(gè)A/D轉(zhuǎn)換的時(shí)間需要384個(gè)CLK時(shí)鐘周期,ADsl251的工作時(shí)序如圖4所示。ADS1251的輸出信號DOUT/DRDY是在兩種工作模式下轉(zhuǎn)換的:第一種模式是DRDY(需要36個(gè)CLK時(shí)鐘周期),它表明新的數(shù)據(jù)已經(jīng)加載到數(shù)據(jù)輸出寄存器中,可以進(jìn)行讀操作;第二種模式是DOUT(需要384個(gè)CLK時(shí)鐘周期),它將數(shù)據(jù)以串行方式送到數(shù)據(jù)輸出寄存器DOR。DRDY模式持續(xù)t4(24個(gè)CLK時(shí)鐘周期)、t2(6個(gè)CLK時(shí)鐘周期)、t2(6個(gè)CLK時(shí)鐘周期)時(shí)間,然后在t3的下降沿進(jìn)入DOUT模式,數(shù)據(jù)在t7之后開始輸出。而LPC2292在t6時(shí)間后為ADS1251提供SCLK時(shí)鐘,并在SCLK的上升沿鎖存數(shù)據(jù),為了接收到有效數(shù)據(jù),DOR數(shù)據(jù)輸出寄存器必須在DOUT/DRDY變回到DRDY模式之前將數(shù)據(jù)讀出。
[!--empirenews.page--]
A/D轉(zhuǎn)換器的部分程序如下:
[!--empirenews.page--]
4.2 CAN控制器程序設(shè)計(jì)
CAN控制器的初始化流程是:首先將ARM中CAN控制器相關(guān)的硬件和連接的引腳使能,并對CAN控制器進(jìn)行復(fù)位操作,設(shè)置CAN總線的通信波特率;接著是中斷處理的初始化,然后配置驗(yàn)收過濾器(即對接收標(biāo)識符的查詢),最后是初始化CAN的工作模式。初始化CAN控制器之后就可以進(jìn)行數(shù)據(jù)的發(fā)送與中斷接收操作了。
CAN控制器的部分程序如下:
結(jié) 語
本文所設(shè)計(jì)的系統(tǒng)目前已經(jīng)投入工業(yè)中實(shí)際使用,其運(yùn)行性能穩(wěn)定,信噪比在93 dB以上,采樣精度為19~22位。由于LPC2292中內(nèi)置了RTC實(shí)時(shí)時(shí)鐘,所以本系統(tǒng)還可以添加實(shí)時(shí)控制的功能;也可以利用ARM剩下的I/0口等資源,輔以DC-DC電源模塊、驅(qū)動芯片、繼電器開關(guān)、光耦等元件實(shí)現(xiàn)多路可選相互隔離的穩(wěn)定電源輸出功能,作為工業(yè)相關(guān)領(lǐng)域的供電設(shè)備,以而可使系統(tǒng)的應(yīng)用更加廣泛,功能更為豐富。