基于Modbus協(xié)議的線性霍爾傳感器編程器設(shè)計(jì)
引言
線性霍爾傳感器是一種重要的磁場(chǎng)測(cè)量元件,它可以將磁場(chǎng)強(qiáng)度信號(hào)轉(zhuǎn)化為電壓信號(hào)輸出,并可與磁鋼配合進(jìn)行精確的位置測(cè)量。隨著汽車電子控制器對(duì)位置測(cè)量精度要求的不斷提高,這一測(cè)量結(jié)構(gòu)被廣泛地應(yīng)用在很多汽車零部件中,如電子油門踏板的行程測(cè)量和節(jié)氣門開度測(cè)量。但是,為了讓線性霍爾傳感器能夠配合磁鋼的磁場(chǎng),正確地輸出期望的電壓信號(hào),還需要事先對(duì)線性霍爾傳感器進(jìn)行標(biāo)定。
此外,很多此類傳感器中都會(huì)預(yù)先設(shè)計(jì)一些存儲(chǔ)單元,以用來保存標(biāo)定數(shù)據(jù)。本課題針對(duì)英飛凌TLE4997霍爾傳感器,并使用英飛凌XC2000型單片機(jī),設(shè)計(jì)了一種集標(biāo)定和存儲(chǔ)數(shù)據(jù)為一體的編程工具。通過操作上位機(jī)界面,這種工具可以讀取傳感器采集的磁場(chǎng)強(qiáng)度信號(hào)和輸出電壓,并根據(jù)要求計(jì)算標(biāo)定數(shù)據(jù),最后將數(shù)據(jù)永久保存到傳感器內(nèi)的E2PROM內(nèi)。
1 項(xiàng)目主要任務(wù)
本課題以英飛凌單片機(jī)作為開發(fā)平臺(tái)來完成霍爾元件編程器的設(shè)計(jì)。該編程器能對(duì)霍爾元件進(jìn)行標(biāo)定。其主要工作有三個(gè)方面:一是用英飛凌16位單片機(jī)作為主芯片實(shí)現(xiàn)霍爾元件編程器的硬件電路,并開發(fā)相應(yīng)的軟件系統(tǒng);二是計(jì)算霍爾元件偏移量和增益;第三,由于磁場(chǎng)強(qiáng)度會(huì)因?yàn)闇囟茸兓兓?,本文?duì)此進(jìn)行了溫度補(bǔ)償;并給出了存儲(chǔ)油門踏板位置和輸出電壓等多組數(shù)據(jù)的方法。
2 英飛凌霍爾傳感器TLE4997
TLE4997的應(yīng)用非常廣泛。它在汽車領(lǐng)域的應(yīng)用包括踏板與節(jié)氣門定位、懸架控制、扭矩傳感與變速桿位置檢測(cè)等。在工業(yè)領(lǐng)域,這兩款傳感器是機(jī)器人和自動(dòng)化應(yīng)用、醫(yī)療器械以及高電流傳感應(yīng)用的理想選擇。
采用模擬輸出的TLE4997的額定輸出噪聲較低,而且整個(gè)溫度范圍內(nèi)(一40°C-150°C)的偏置漂移穩(wěn)定性高。TLE4997在整個(gè)工作溫度范圍內(nèi)具有較低的比率轉(zhuǎn)換誤差。TLE4997具備矽PROM可編程參數(shù),包括偏置、帶寬、極性、輸出位、磁體溫度漂移補(bǔ)償系數(shù)和內(nèi)存鎖,這使它可適用于廣泛的線性與角度位置傳感應(yīng)用。該傳感器具有三個(gè)可選測(cè)量范圍,包括士50、士100或±200mT,同時(shí)具備高達(dá)16位分辨率(取決于輸出方案)的精確輸出。此外,TLE4997還具備先進(jìn)的溫度補(bǔ)償功能。
TLE4997共有VDD、OUT和GND三個(gè)引腳。其中VDD和OUT引腳既可作為供電電源輸入和信號(hào)輸出,也可分別作為編程模式時(shí)的兩個(gè)接口。在編程模式的狀態(tài)下,VDD為時(shí)鐘信號(hào)接口,而OUT則可作為數(shù)據(jù)的I/O口。此時(shí),將允許多個(gè)連接的設(shè)備作為一個(gè)輸入,每個(gè)設(shè)備既可以獨(dú)立,也可以并行地存取數(shù)據(jù)。這對(duì)于E2PROM的編程尤為重要。圖1所示是TLE4997的外形圖。
2.1 TLE4997的主要功能
TLE4997具有20位數(shù)字信號(hào)處理功能以及具有溫度補(bǔ)償功能;工作溫度范圍達(dá)一40°C-150°C;同時(shí)具有可編程E2PROM,并能完成位錯(cuò)誤校正。TLE4997可重復(fù)編程,直至存儲(chǔ)器被鎖住,并帶有輸出短路電流保護(hù)功能,同時(shí)可對(duì)所有引腳進(jìn)行過壓及防反接保護(hù)。
2.2 TLE4997的編程方法
TLE4997內(nèi)部有一組由寄存器和E2PROM組成的存儲(chǔ)器,其中包含了傳感器工作的所有信息。這些存儲(chǔ)器可以通過連續(xù)地址的方式組織起來,每個(gè)存儲(chǔ)單元的大小為16位。表1所列是TLE4997中的E2PROM存儲(chǔ)器。
在編程時(shí),編程器可以通過規(guī)定的讀寫命令對(duì)這些存儲(chǔ)器的內(nèi)容進(jìn)行讀出或修改。TLE4997使用一種特殊的同步通訊方式與編程器交換數(shù)據(jù),這是一種半雙工的通訊方式。通訊以幀為單位,長(zhǎng)度固定為21bit,它的任何一個(gè)有效幀的長(zhǎng)度均為21bit,通常在時(shí)鐘信號(hào)的上升沿發(fā)送新的位,最先發(fā)送數(shù)據(jù)的最低位。而且每一幀都包含一個(gè)奇校驗(yàn)位和偶校驗(yàn)位。
本設(shè)計(jì)在硬件上采用了端口復(fù)用的方式,在編程時(shí),傳感器的5V電源輸入引腳則作為同步通訊的時(shí)鐘信號(hào),而其信號(hào)輸入引腳作為同步通訊的輸入輸出端口。同步時(shí)鐘時(shí)鐘信號(hào)由編程器提供,電平為8.5V/5V。通訊的波特率由并聯(lián)在電源和地之間的電容決定。其編程器通訊波特率與電容的關(guān)系如表2所列。圖2所示是編程器通訊波特率與電容的關(guān)系曲線。
在進(jìn)行一次通訊之前,必須先向傳感器發(fā)送一組有效的命令,以激活傳感器的通訊端口。這個(gè)用于激活端口的幀在波形上與其他幀略有不同。圖3所示是TLE4997激活端口的幀形式。
圖3TLE4997激活端口的幀形式
通常可以使用一個(gè)讀取狀態(tài)寄存器的命令幀去激活傳感器的通訊端口。TLE4997的命令幀波形如圖4所示。在成功激活端口之后,編程器可以通過發(fā)送同步時(shí)鐘信號(hào),來在Vout引腳上讀取到一個(gè)有效的反饋幀。
而當(dāng)端口打開之后,發(fā)送數(shù)據(jù)時(shí)就不必再采用激活幀的波形,而使用正常的通訊波形就可以了。圖5所示是TLE4997的正常通訊波形圖。
通常情況下,用于與傳感器通訊的幀可以分為數(shù)據(jù)幀和命令幀兩種。其中命令幀只由編程器發(fā)出,可用于對(duì)制定地址的存儲(chǔ)單元進(jìn)行確定的操作,其幀格式如圖6所示。
通常命令幀可以攜帶表3所列的幾種可能的命令。
數(shù)據(jù)幀主要用于攜帶數(shù)據(jù),其中包括從編程器發(fā)出,需要被寫入傳感器存儲(chǔ)單元的數(shù)據(jù);也包括了由傳感器發(fā)出的、被讀出的數(shù)據(jù)。圖7所示是TLE4997的數(shù)據(jù)幀格式。
不管是數(shù)據(jù)幀還是命令幀,它們都由一個(gè)顯性電平開始,也都包含了一個(gè)奇校驗(yàn)位和一個(gè)偶校驗(yàn)位。這兩個(gè)校驗(yàn)位使幀包含的內(nèi)容滿足以下條件:
bit0 XOR bit2 XOR bit4 XOR...XOR bit20=0
bit0 XOR bit3 XOR bit5 XOR...XOR bit19=0
3 編程器軟硬件設(shè)計(jì)
本設(shè)計(jì)中,下位機(jī)以英飛凌XC2267m單片機(jī)為處理核心,主要完成的任務(wù)是:采集傳感器正常工作輸出,讀取傳感器參數(shù),接受上位機(jī)命令,并對(duì)傳感器進(jìn)行編程(校驗(yàn)數(shù)據(jù)存儲(chǔ)),以及向上位機(jī)反饋數(shù)據(jù)等。
通過編程接口,可以實(shí)現(xiàn)傳感器數(shù)據(jù)的讀取和編程;采集傳感器輸出可通過單片機(jī)的模擬數(shù)字轉(zhuǎn)換模塊來實(shí)現(xiàn);上下位機(jī)的數(shù)據(jù)交流,則是基于模式總線協(xié)議(Modbus)的總線通訊系統(tǒng)。所以,在軟件上,大致分可以為三個(gè)部分:第一是傳感器輸出電壓的AD采樣和處理;第二是傳感器編程接口的訪問、數(shù)據(jù)讀取和對(duì)校驗(yàn)數(shù)據(jù)的存儲(chǔ);第三是Modbus從節(jié)點(diǎn)接收發(fā)送程序。
本系統(tǒng)的編程工具采用英飛凌專用的圖形界面代碼生成軟件(Digital Application Engineer,DAVE)和Eclipse公司提供的tasking嵌入式系統(tǒng)環(huán)境。前者可以迅速高效地生成單片機(jī)底層驅(qū)動(dòng)函數(shù),后者則可提供從代碼編輯到編譯調(diào)試下載等的完整開發(fā)工具鏈,這都可大大提高項(xiàng)目的開發(fā)進(jìn)度。
從結(jié)構(gòu)角度分析,編程器分為PC機(jī)、PC機(jī)軟件界面以及以單片機(jī)為核心的下位機(jī)和嵌入式軟件這兩大部分。TLE4997的編程器系統(tǒng)框圖如圖8所示。其中PC機(jī)界面通過VB語言編寫,主要功能包括傳感器輸出電壓的動(dòng)態(tài)顯示,設(shè)置和計(jì)算傳感器標(biāo)定參數(shù)以及控制下位機(jī)操作等。
下位機(jī)以英飛凌XC2267m單片機(jī)為處理核心,主要任務(wù)是采集傳感器正常工作輸出,讀取傳感器參數(shù),接受上位機(jī)命令,對(duì)傳感器進(jìn)行編程,以及向上位機(jī)反饋數(shù)據(jù)等。
上位機(jī)和下位機(jī)之間使用Modbus總線進(jìn)行通訊,上位機(jī)作為總線主節(jié)點(diǎn),下位機(jī)作為從節(jié)點(diǎn)。上位機(jī)通過寫入命令來修改下位機(jī)Modbus寄存器的值,實(shí)現(xiàn)對(duì)下位機(jī)的控制。同樣,也可通過對(duì)下位機(jī)寄存器的讀取來讀取希望的數(shù)據(jù)。
下位機(jī)根據(jù)其功能可以將硬件分為五個(gè)部分:即系統(tǒng)電源、單片機(jī)最小系統(tǒng)電路、傳感器信號(hào)釆樣電路、傳感器通訊電路、Modbus通訊電路等。圖9所示是編程器下位機(jī)的結(jié)構(gòu)簡(jiǎn)圖。
4 結(jié)語
本設(shè)計(jì)完成了針對(duì)線性霍爾傳感器TLE4997編程器的軟硬件設(shè)計(jì);設(shè)計(jì)分為由PC機(jī)及其軟件界面和以單片機(jī)為核心的下位機(jī)及嵌入式軟件這兩大部分。本課題的硬件設(shè)計(jì)主要針對(duì)下位機(jī)進(jìn)行?;谟w凌的XC2267m單片機(jī)用于實(shí)現(xiàn)編程器功能的硬件設(shè)計(jì)。軟件方面,本課題對(duì)英飛凌線性霍爾編程器TLE4997進(jìn)行了標(biāo)定,還進(jìn)行了溫度補(bǔ)償。此外,本課題還設(shè)計(jì)了Modbus通訊功能和CAN總線通訊功能。在當(dāng)今汽車行業(yè)電子產(chǎn)品的各種通訊方式中,CAN總線以其高可靠性、實(shí)時(shí)性、傳輸距離遠(yuǎn)等特點(diǎn)已得到廣泛的應(yīng)用,并已經(jīng)成為許多高檔汽車車電系統(tǒng)的總線標(biāo)準(zhǔn)。所以,本設(shè)計(jì)在傳感器編程器的硬件設(shè)計(jì)中,預(yù)留了CAN總線接口,以便將來的應(yīng)用可以進(jìn)一步實(shí)現(xiàn)多編程器的協(xié)同工作,這對(duì)于油門踏板的大規(guī)模自動(dòng)化生產(chǎn)意義巨大。同時(shí)也可以通過CAN總線對(duì)傳感器編程器進(jìn)行程序的升級(jí)下載以及編程器自身的參數(shù)標(biāo)定等功能,以便使編程器的功能更加靈活和強(qiáng)大。