<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 光電顯示 > 設計應用 > 利用LIN節點(diǎn)的溫度顯示

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

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

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

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

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

硬件

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

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

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

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

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

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

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

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

軟件

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

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

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

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

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



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

評論


相關(guān)推薦

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

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>