新聞中心

EEPW首頁 > 光電顯示 > 設(shè)計應(yīng)用 > 利用LIN節(jié)點的溫度顯示

利用LIN節(jié)點的溫度顯示

作者: 時間:2012-02-09 來源:網(wǎng)絡(luò) 收藏

本文引用地址:http://butianyuan.cn/article/168555.htm

內(nèi)容摩托羅拉公司8/16位應(yīng)用工程師 Peter Toppin串行多路傳輸總線如CAN或可以解決車內(nèi)因?qū)Ь€過多所帶來的許多問題。低成本的總線很適合應(yīng)用于車門等這些對傳輸速率要求不高的場合,最高速率為20kbit/s的LIN總線完全可以滿足要求。車外就是這樣一個應(yīng)用實例,外部傳感器通常布置在后視鏡中,數(shù)據(jù)產(chǎn)生于車門。但是實際位置是距此一定距離的車內(nèi),LIN總線可使布線簡單,因為LIN只有3根導(dǎo)線:LIN數(shù)據(jù)線、電源線和地線。

本應(yīng)用介紹了溫度顯示從機的設(shè)計。本節(jié)點是車門模塊的一個從機節(jié)點,整個車門模塊還包括鍵盤節(jié)點。車門報文幀用后視鏡報文響應(yīng)的一個字節(jié)來表示溫度(見表1)。作為主機節(jié)點的車身控制器一般每隔100ms發(fā)送一個含有后視鏡標(biāo)識符的報文幀頭,報文響應(yīng)有兩個字節(jié),其中一個字節(jié)用于表示溫度,變化范圍為-30 C~97.5 C,精度為0.5 C。此時,報文響應(yīng)數(shù)據(jù)可以直接被溫度顯示節(jié)點讀取(從機到從機通信),也可被主機節(jié)點讀取,再發(fā)給其他從機節(jié)點。

硬件

溫度顯示節(jié)點微控制器(MCU)選用MC68HC908EY16,在寫本文的時候,還沒有得到這種微控制器,所以選用了MC68HC908AZ60A。使用MC68HC908EY16能夠大幅度降低成本,這是因為MC68HC908EY16不僅管腳數(shù)目少,降低了成本,而且集成在片內(nèi)的時鐘發(fā)生器模塊(ICG)不需要晶體或陶瓷振蕩器,可進一步降低成本。

圖1是溫度顯示應(yīng)用節(jié)點的電路框圖。一個簡單的LIN節(jié)點除了微控制器MCU外,還需要兩個芯片,即LIN接口芯片(MC33399)和5V的電壓調(diào)節(jié)器。在未來,這兩個芯片將被一個芯片(SBC)所代替。電壓調(diào)節(jié)器選用8個管腳的LT1121芯片,在MCU的控制下,該芯片關(guān)閉進入低功耗睡眠模式。芯片LT1121可由總線活動通過MC33399來喚醒。因為MC33399已包含30kohm LIN總線上拉電阻,所以PCB板需要的元件就只有IRQ和Reset管腳的上拉電阻、去耦電容和晶振及其相關(guān)元件。除此之外,還需要2個PORTC口的上拉電阻和一個9V穩(wěn)壓管,以便使用串口進入監(jiān)控模式,實現(xiàn)片內(nèi)flash存儲器在線編程。軟件開發(fā)是在裝有目標(biāo)接口的MMDS開發(fā)板上進行的,沒有實際的MC68HC908AZ60A。

由于LED由MCU直接驅(qū)動,所以要注意避免端口管腳輸出太大的電流,防止超過5V電壓調(diào)節(jié)器規(guī)定的電流及功耗。但是要達到合適亮度的數(shù)字,所需電流對端口管腳來說太高,所以使用了FET緩沖。若選用220R的段電阻,每段電流為10mA,則整個數(shù)字電流就達到了80mA。但以25%占空比依次顯示4個數(shù)字,那么每段平均電流就為2.5mA,則顯示一個8段數(shù)字的電流只有20mA。例如顯示88.0(共21有效段)所需最大總電流為52.5mA(2.5mA 21)。

MCU的Idd是15mA,電壓調(diào)節(jié)器的壓降是9V(假設(shè)電池電壓為14V),則LT1121的最大功耗計算如下:

功耗=9V (52.5mA+15mA)~610mW設(shè)環(huán)境溫度為26 C,熱阻溫升為100C /W,則LT1121的最高溫度計算如下式:

TJ=TAmb+610mW 100C /W=26+61=87 C此值在最高溫度125 C范圍之內(nèi)。如果需要更大的段電流,就要選用段驅(qū)動器和具有更好散熱效果的電壓調(diào)節(jié)器。

MC68HC908AZ60A手冊規(guī)定總的電源電流只有10mA,同時要間歇地檢測各種條件下Voh和Vol值是否滿足手冊規(guī)定。當(dāng)然,這些電壓不是最重要的,本應(yīng)用關(guān)心的是總電流不要太大以免造成硬件損壞。只要每個管腳的絕對最大電流能達到100mA就不會有危險。此時,最大的Idd會低于100mA。以后的手冊會將這些不必要的限制刪除。

若在2s內(nèi)總線沒有活動,該節(jié)點就進入睡眠模式。當(dāng)檢測到這種狀態(tài)時,MCU使MC33399的EN管腳變?yōu)榈碗娖?,同時INH管腳輸出低電平給LT1121調(diào)節(jié)器,使其進入等待模式并停止向MCU提供電源?;謴?fù)的總線活動會喚醒MC33399,使電壓調(diào)節(jié)器向MCU提供電源。為了降低睡眠模式的電流,采用一個穩(wěn)壓二極管提供進入監(jiān)控模式所要求的高電壓。在睡眠模式時所測電流消耗為40 A,是MC33399和LT1121靜態(tài)電流之和(兩者都約為20 A)。

軟件

溫度顯示模塊使用Motorola/Metrowerks LIN驅(qū)動程序,因此只要使用LIN_GetMsg()這樣簡單的代碼就能獲得位于后視鏡的傳感器產(chǎn)生的數(shù)據(jù),進而處理所有的輸入/輸出動作。LIN驅(qū)動程序的使用使溫度節(jié)點的應(yīng)用軟件變得相當(dāng)簡單。為了響應(yīng)主機的請求命令幀(ID 0 3C),用戶程序里必須包含函數(shù)void LIN_Command()。這就是說,比如,主機是如何要求所有的從節(jié)點進入低功耗等待或睡眠模式的。在這項應(yīng)用中,當(dāng)總線沒有活動時,這個函數(shù)就僅僅相當(dāng)于一個空循環(huán),即進入睡眠模式。只要所有變量都已經(jīng)被聲明了,就初始化CONFIG和I/O寄存器。CONFIG1寄存器設(shè)成0 71,禁用看門狗(COP),CONFIG2寄存器設(shè)成0 19,將MCU設(shè)置成MC68HC908AZ60A(相對于AS60A)。由于中斷被允許,因此只要通過LIN_init()進行了初始化,LIN驅(qū)動程序就能起作用。主循環(huán)使用了可編程中斷定時器(PIT),使重復(fù)頻率基于8MHz的晶振就能達到200Hz。每5ms PIT的溢出標(biāo)志就被置位一次,主循環(huán)就將二進制輸入數(shù)據(jù)轉(zhuǎn)換成7段碼格式。這個200Hz的頻率還被用來產(chǎn)生一個50Hz的4位LED多通道顯示的循環(huán)刷新頻率。雖然每一次都讀LIN緩沖區(qū),也把溫度值轉(zhuǎn)換成4位7段碼格式,但實際上每5ms只有一位被刷新。

LIN驅(qū)動程序中的函數(shù)LIN_IdleClock能夠檢查是否有總線活動。如果沒有就將一個計數(shù)器的值加一,然后與LIN_IDLETIMEOUT(在slave.cfg中定義)比較。如果計數(shù)器的值超過了LIN_IDLETIMEOUT,那么函數(shù)LIN_DriverStatus()就停止返回a1(LIN_STATUS_RUN),表明總線已經(jīng)空閑了2秒鐘。在這個例子中,如果檢測到這種情況,就將MC33399的enable管腳拉低,通過禁用LT1121使MCU掉電。程序也將顯示設(shè)置成....,但是這種掉電操作在開發(fā)環(huán)境下并不能作為檢測到總線處于空閑狀態(tài)的標(biāo)志,因為在開發(fā)環(huán)境中MCU的電源不通過LT1121來控制。在這項應(yīng)用中,如果模塊沒有接收到溫度數(shù)據(jù),就能進行特別的顯示,如沒有這個附加功能,則仍將繼續(xù)顯示最近接收到的溫度值(或者如果最近一次上電后沒有接收到任何信息,就顯示 30 C)。使用LIN_MsgStatus(0 0A)并結(jié)合變量error_count就能將這些特點結(jié)合起來,在一秒鐘沒收到帶0A這個ID的LIN信息之后,將顯示變成----,見圖2。

為了完成換算,將溫度字節(jié)轉(zhuǎn)換成變量bits,如果溫度是正的,就減去偏移量60(30 C)。如果溫度是負的(60),就會造成變量bits的錯誤下溢,因此如果這種情況下完成了減法,那就用另外一種圓整方式(60bits)來得到符合實際的(正的)溫度值。如果事實上溫度值是負的話,就通過置negative標(biāo)志位來記錄。

bits的值通過使用數(shù)組seg轉(zhuǎn)換成所需要的7段碼格式。首先根據(jù)bits的最低有效位將小數(shù)點后的那一位設(shè)置成0或者5。然后將bits除以2,得到二進制的攝氏溫度值。再除以10就得到十位的數(shù)字,同時余數(shù)就是個位的數(shù)字。然后將個位,十位和符號位(百位)的數(shù)字設(shè)置成相應(yīng)的段碼,惟一復(fù)雜的地方就是個位數(shù)字要帶小數(shù)點。如果十位的數(shù)字是零,就應(yīng)該不顯示出來,除非溫度值是負的。在這種情況下,將負號顯示在十位上要比顯示在百位上好看的多。

為了輸出LED顯示的信息變量dcount每次都自加一,然后通過dcount的最低兩個有效位來選中此次應(yīng)該刷新的那一位。在存放段碼數(shù)據(jù)并輸出到portD的數(shù)組display和存放位刷新數(shù)據(jù)并輸出到portF的數(shù)組scan中,都將用來作為一個標(biāo)志。



關(guān)鍵詞: 顯示 溫度 節(jié)點 LIN 利用

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉