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