基于PIC單片機(jī)的嵌入式CAN智能節(jié)點(diǎn)及其與PC通信
本文介紹了基于pic16f874單片機(jī)的嵌入式can智能節(jié)點(diǎn)的軟硬件設(shè)計(jì),同時(shí)應(yīng)用pcl-841 can接口卡使嵌入式can智能節(jié)點(diǎn)與pc之間實(shí)現(xiàn)了通信,完成了電壓、電流、溫度等信號(hào)的實(shí)時(shí)采集、可靠傳輸和實(shí)時(shí)顯示,實(shí)現(xiàn)了pc端對(duì)嵌入式can智能節(jié)點(diǎn)pwm波輸出的脈沖寬度的控制。
引言
can總線是一種串行數(shù)據(jù)通信協(xié)議,其通信接口中集成了can協(xié)議的物理層和數(shù)據(jù)鏈路層功能,可完成對(duì)數(shù)據(jù)的成幀處理。can協(xié)議的一個(gè)最大特點(diǎn)是廢除了傳統(tǒng)的站地址編碼,而代之以對(duì)通信數(shù)據(jù)塊編碼,采用這種方法可使網(wǎng)絡(luò)內(nèi)節(jié)點(diǎn)個(gè)數(shù)在理論上不受限制,還可使不同的節(jié)點(diǎn)同時(shí)收到相同的數(shù)據(jù)。
本文介紹了嵌入式can智能節(jié)點(diǎn),并且應(yīng)用pc和嵌入式can智能節(jié)點(diǎn)組成了can通信系統(tǒng),完成了電壓、電流、溫度等信號(hào)的實(shí)時(shí)采集、可靠傳輸和實(shí)時(shí)顯示,實(shí)現(xiàn)了pc端對(duì)嵌入式can智能節(jié)點(diǎn)pwm波輸出的脈沖寬度的控制。
基于pic單片機(jī)的嵌入式can智能節(jié)點(diǎn)的設(shè)計(jì)
嵌入式can智能節(jié)點(diǎn)以pic16f874單片機(jī)作為嵌入式微控制器,以mcp2510作為can控制器,以pca82c250作為can收發(fā)器,具有現(xiàn)場(chǎng)/遠(yuǎn)程控制功能。根據(jù)用戶的需求,嵌入式can智能節(jié)點(diǎn)通過連接相應(yīng)的傳感器可以完成多種信號(hào)的實(shí)時(shí)采集、可靠傳輸和實(shí)時(shí)顯示,pwm波輸出可以用于控制相應(yīng)的負(fù)載。嵌入式can智能節(jié)點(diǎn)通過外接電路可以實(shí)現(xiàn)電路保護(hù)、現(xiàn)場(chǎng)組態(tài)、自動(dòng)調(diào)節(jié)、故障診斷報(bào)警、狀態(tài)檢測(cè)等功能,完成對(duì)電機(jī)、閥門、泵等電器的驅(qū)動(dòng)和智能控制。
硬件設(shè)計(jì)
microchip公司的單片機(jī)pic16f874采用risc指令系統(tǒng),哈佛總線結(jié)構(gòu),低功耗,高速度。內(nèi)部集成了adc、串行外圍接口(spi)和flash程序存儲(chǔ)器等,具有pwm輸出、lcd驅(qū)動(dòng)等功能。pic16f874通過spi接口可以實(shí)現(xiàn)與can控制器mcp2510的無縫連接。pic16f874的i/o資源豐富,共有a、b、c、d、e五個(gè)i/o口,每個(gè)i/o口除了基本用途外還有一些特殊功能。
can通信模塊
嵌入式can智能節(jié)點(diǎn)的can通信模塊由can控制器mcp2510和can收發(fā)器pca82c250組成。mcp2510可以完成can總線的物理層和數(shù)據(jù)鏈路層的所有功能,支持高速spi接口(最高數(shù)據(jù)傳輸速率可以達(dá)到5mb/s),支持can2.0a/can2.0b協(xié)議。can收發(fā)器pca82c250是can控制器與物理總線之間的接口,對(duì)物理總線提供差動(dòng)發(fā)送能力,對(duì)can控制器提供差動(dòng)接收能力,同時(shí)它可以增大通信距離,提高嵌入式can智能節(jié)點(diǎn)的抗干擾能力。
pic16f874通過spi與can控制器mcp2510連接,其串行數(shù)據(jù)輸入(sdi)腳與mcp2510的so腳相連,其串行數(shù)據(jù)輸出(sdo)腳與mcp2510的si腳相連,其串行時(shí)鐘(sck)腳與mcp2510的sck腳相連。mcp2510的復(fù)位信號(hào)、片選信號(hào)由單片機(jī)a口的ra5、ra2提供,mcp2510的中斷信號(hào)、接收緩沖區(qū)滿中斷信號(hào)輸出到單片機(jī)b口的rb0、rb5。
通過設(shè)置pic16f874的spi接口狀態(tài)寄存器和控制寄存器使spi接口工作于主動(dòng)方式。pic16f874與mcp2510進(jìn)行通信時(shí)的時(shí)序是非常重要的。發(fā)送數(shù)據(jù)時(shí),先發(fā)送寫指令,再發(fā)送寄存器地址,最后發(fā)送數(shù)據(jù)。當(dāng)mcp2510接收到由總線傳來的數(shù)據(jù)時(shí)會(huì)產(chǎn)生中斷,單片機(jī)響應(yīng)中斷,讀取數(shù)據(jù)時(shí)先發(fā)送讀指令,再發(fā)送寄存器地址,數(shù)據(jù)會(huì)自動(dòng)寫入單片機(jī)spi接口的緩沖器中。
顯示模塊
嵌入式can智能節(jié)點(diǎn)采用ocmj4χ8顯示模塊,該顯示模塊可以顯示漢字、ascii碼等,其所有的設(shè)置初始化工作都可以在上電時(shí)自動(dòng)完成。
ocmj4χ8顯示模塊的數(shù)據(jù)線db0~db7與單片機(jī)的d口相連,請(qǐng)求(req)腳、應(yīng)答(busy)腳分別與單片機(jī)b口的rb4、e口的re2相連。顯示模塊的rt1、rt2引腳外接可調(diào)電阻用于調(diào)節(jié)lcd的亮度。
顯示模塊接口協(xié)議為請(qǐng)求/應(yīng)答(req/busy)握手方式。busy為高電平表示顯示模塊忙;當(dāng)busy為低電平時(shí)表示顯示模塊空閑,等待接收命令。單片機(jī)先向顯示模塊發(fā)送命令或數(shù)據(jù),然后發(fā)送請(qǐng)求信號(hào),請(qǐng)求顯示模塊進(jìn)行處理,顯示模塊置busy為高電平,對(duì)命令或數(shù)據(jù)進(jìn)行處理,處理結(jié)束后置busy為低電平。
模擬量獲取模塊
pic16f874單片機(jī)a口的ra0、ra1、ra3用于模擬量輸入。嵌入式can智能節(jié)點(diǎn)的模擬量獲取模塊的主要功能是將需要采集的電流信號(hào)通過電流互感器轉(zhuǎn)換為電壓信號(hào),將需要采集的溫度信號(hào)通過溫度傳感器ad590轉(zhuǎn)換為電壓信號(hào)。
開關(guān)量輸入/輸出模塊
嵌入式can智能節(jié)點(diǎn)通過i/o擴(kuò)展提供了4路開關(guān)量輸入和7路開關(guān)量輸出。開關(guān)量輸入用于電路的保護(hù)、故障報(bào)警、狀態(tài)檢測(cè)等,只要被控制對(duì)象擁有相應(yīng)的檢測(cè)元件,接入相應(yīng)的接口即可。開關(guān)量輸出用于驅(qū)動(dòng)繼電器,可以根據(jù)負(fù)載的大小確定是否需要連接接觸器控制電機(jī)、閥門、泵等電器執(zhí)行元件。根據(jù)用戶的需求,此部分電路可以做相應(yīng)的變化。
評(píng)論