色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

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

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

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

          本文引用地址:http://cafeforensic.com/article/168555.htm

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

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

          硬件

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

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

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

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

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

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

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

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

          軟件

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

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

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

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

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



          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉