王 洋
(營(yíng)口世紀(jì)電子儀器有限公司 研究所,遼寧 營(yíng)口 115003)
壓力傳感器是工業(yè)現(xiàn)場(chǎng)最為常用的一種傳感器,例如汽車(chē)中多路壓力測(cè)量,目前,市場(chǎng)上大多數(shù)的壓力傳感器以模擬量輸出為主,幾乎全部采用數(shù)字化處理,用戶需要先將模擬量轉(zhuǎn)換成數(shù)字量。隨著自動(dòng)化程度越來(lái)越高,傳感器往往與控制器越來(lái)越遠(yuǎn),特別是模擬信號(hào)的傳輸過(guò)程中也會(huì)引入干擾和損失。
因此,本文將介紹一種基于CAN 總線壓力傳感器的設(shè)計(jì),采用AduC812 為控制核心,進(jìn)行CAN 接口設(shè)計(jì)。
基于CAN 總線的高精度數(shù)壓力傳感器的原理框圖如圖1 所示。該壓力傳感系統(tǒng)器主要包括壓力信號(hào)A/D 轉(zhuǎn)換部分、主控單元部分、CAN 總線傳輸部分。
主控芯片采用AduC812 單片機(jī),引出的地址數(shù)據(jù)總線與CAN 控制器SJA1000 相連,經(jīng)過(guò)光電隔離,將地址/數(shù)據(jù)發(fā)送到CAN 收發(fā)器PCA82C250,通過(guò)CAN 收發(fā)器PCA82C250 使數(shù)據(jù)在CAN 總線上傳輸。電源轉(zhuǎn)換電路將電源和地隔離,起保護(hù)和抗干擾的作用。
AduC812 的P0 口作為地址數(shù)據(jù)總線,與SJA1000 相連。通過(guò)P0口訪問(wèn)SJA1000 內(nèi)部寄存器,并進(jìn)行寄存器的讀寫(xiě)操,經(jīng)過(guò)光電隔離,電源轉(zhuǎn)換電路將電源和地隔離,起保護(hù)和抗干擾的作用將地址/數(shù)據(jù)發(fā)送到CAN 收發(fā)器PCA82C250,通過(guò)CAN 收發(fā)器PCA82C250 使數(shù)據(jù)在CAN 總線上傳輸,AduC812 和SJA1000 的復(fù)位信號(hào)是通過(guò)復(fù)位按鈕S3 產(chǎn)生的。
AD 轉(zhuǎn)換電路:
單片機(jī)自帶有8 路模擬通道ADC 轉(zhuǎn)換為12 位精度。選擇AD0為模擬通道將A/D 轉(zhuǎn)換數(shù)據(jù)通過(guò)CAN 總線上傳到上位機(jī)。
軟件設(shè)計(jì)的指導(dǎo)思想是系統(tǒng)上電后首先對(duì)ADuc812 和SJA1000進(jìn)行初始化,以確定工作主頻、波特率、輸出特性等,然后通過(guò)模數(shù)轉(zhuǎn)換采樣值,并把該值通過(guò)SJA1000 傳送到CAN 總線上由上位PC 機(jī)進(jìn)行顯示控制,而對(duì)CAN 總線上來(lái)的信息則采用中斷方式,系統(tǒng)每接收到一幀信息,便產(chǎn)生一次中斷以觸發(fā)微處理器進(jìn)入中斷,在中斷服務(wù)程序中讀取該幀信息并傳送到現(xiàn)場(chǎng)。為防止出現(xiàn)死機(jī)和干擾,程序中還采用看門(mén)狗技術(shù)進(jìn)行定時(shí)監(jiān)控。以下CAN 總線的初始化設(shè)計(jì),假設(shè)SJA1000 的首址是0x7f00。
初始化程序
對(duì)CAN 控制器進(jìn)行初始化,實(shí)際上就是對(duì)ACR、AMR、BTR0、BTR1、OCR 這些寄存器進(jìn)行訪問(wèn)。只有當(dāng)控制寄存器CR 中的復(fù)位請(qǐng)求位為高時(shí),訪問(wèn)才被允許,否則既寫(xiě)不進(jìn)去,也讀不出正確的內(nèi)容。對(duì)CR 進(jìn)行第一次寫(xiě)操作,要設(shè)定將要開(kāi)放的中斷類型,并置位復(fù)位請(qǐng)求,允許初始化開(kāi)始。
本文設(shè)計(jì)的基于CAN 總線壓力傳感器系統(tǒng)具有精度高、可靠性高、智能化、成本低等特點(diǎn)并具有在線標(biāo)定校準(zhǔn)和CAN 通訊功能,可用于不同的工業(yè)場(chǎng)合。
[1]鄔寬明.CAN 總線原理和應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:北京航空航天大學(xué)出版社,2000 .