<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          關(guān) 閉

          新聞中心

          EEPW首頁 > 安全與國防 > 設(shè)計(jì)應(yīng)用 > 基于I2C總線的電氣化鐵路導(dǎo)線磨耗儀的設(shè)計(jì)與應(yīng)用

          基于I2C總線的電氣化鐵路導(dǎo)線磨耗儀的設(shè)計(jì)與應(yīng)用

          作者:■ 南開大學(xué)信息學(xué)院 廖日坤 李寧宇 林銳 葛穎 時(shí)間:2005-04-28 來源:eaw 收藏

          摘    要:本文簡要介紹了基于內(nèi)部集成電路總線I2C的儀的設(shè)計(jì)與應(yīng)用。在開發(fā)電氣鐵路遙測儀的過程中,通過使用和單片機(jī)的I/O口,可以控制DS1307、AT24C256和IC卡。這種設(shè)計(jì)方法縮短了開發(fā)周期,提高了系統(tǒng)的整體穩(wěn)定性。
          關(guān)鍵詞:;;

          本文引用地址:http://www.ex-cimer.com/article/5415.htm

          引言
          接觸網(wǎng)斷線問題一直是困擾牽引供電設(shè)備安全的主要問題;同時(shí),這也是接觸網(wǎng)系統(tǒng)各檢測項(xiàng)目中的難點(diǎn)。導(dǎo)線磨耗遙測儀的研究就是針對(duì)此問題,利用CCD(電荷耦合器件)作為傳感器,利用微控制器進(jìn)行控制與數(shù)據(jù)傳輸,配合PC機(jī)構(gòu)成的一套智能檢測系統(tǒng)。
          本文設(shè)計(jì)的電氣鐵路導(dǎo)線磨耗遙測儀,采用測量導(dǎo)線磨耗殘存高度的方法,比較好的解決了接觸網(wǎng)帶電測量的問題。

          導(dǎo)線磨耗儀系統(tǒng)結(jié)構(gòu)與原理
          導(dǎo)線磨耗目前比較典型的測量方法主要有以下三種:測量接觸導(dǎo)線的磨耗滑面寬度;測量導(dǎo)線截面積;測量接觸導(dǎo)線的殘存高度。
          通過分析對(duì)比,我們選擇了測量導(dǎo)線磨耗殘高的方法。這種方法具有以下優(yōu)點(diǎn):
          (1)由于接觸線磨耗面有波狀磨耗、局部磨耗,表面狀態(tài)各異。采用反射法測殘面高度,不可避免的存在反射光不均勻,凹陷處反射特性很差,因此必然造成目標(biāo)邊緣模糊。而且反射法的檢測精度受接觸線高度影響較大,高懸掛點(diǎn)處磨耗檢測值精度隨距離增大而降低,對(duì)偏磨更是無能為力。而本文法則能很好解決這一問題。
          (2)精度高:采用本方法,測量精度可小于0.05mm。
          (3)檢測直觀:我國限于檢測手段,只能用卡尺測量殘高。所以這種方法檢測直觀方便、不必進(jìn)行換算。
          便攜式導(dǎo)線磨耗帶電遙測儀分為檢測裝置、地面接收機(jī)和上位機(jī)三部分。檢測裝置由光學(xué)照明系統(tǒng)、光學(xué)成像系統(tǒng)、CCD陣列及驅(qū)動(dòng)電路、光電信息處理電路、穩(wěn)功率電源、調(diào)制發(fā)射電路等組成。其結(jié)構(gòu)框圖見圖1。
          測量時(shí),光學(xué)照明系統(tǒng)產(chǎn)生一束均勻的平行光,從接觸線側(cè)面平行射入,線高經(jīng)光學(xué)成像系統(tǒng)映射在CCD線陣靶面上,并在線陣響應(yīng)的像元中獲得一定寬度的脈沖信號(hào)。該信號(hào)經(jīng)光電信息處理后變成二進(jìn)制信號(hào),經(jīng)調(diào)制后發(fā)射出去。
          地面接收裝置由紅外接收電路、解調(diào)電路、單片機(jī)、串行口等組成。結(jié)構(gòu)框圖見圖2。
          地面接收裝置將接收到的特征信號(hào)解調(diào)后,經(jīng)單片機(jī)系統(tǒng)計(jì)算出導(dǎo)線殘留高度及磨耗百分比,顯示在LCD上,也可通過串行口上傳到PC機(jī)中。上位機(jī)是安裝有Windows 9x/2000操作系統(tǒng)的PC機(jī),本設(shè)計(jì)使用微軟公司的Visual C++ 6.0編寫數(shù)據(jù)接收、處理、存儲(chǔ)和顯示的程序,界面友好,簡潔易用。

          I2C總線及其硬件設(shè)計(jì)
          I2C總線原理
          I2C總線通過一根數(shù)據(jù)線SDA和一根時(shí)鐘線SCL實(shí)現(xiàn)全雙工的同步數(shù)據(jù)通信。同一總線上可以連接多個(gè)帶有I2C接口的器件,每個(gè)器件都有一個(gè)唯一的地址,既可以是單接收的器件,也可以是能夠接收發(fā)送的器件。發(fā)送器或接收器可以在主模式或從模式下操作,這取決于芯片是否必須啟動(dòng)數(shù)據(jù)的傳輸還是僅僅被尋址。I2C還是一個(gè)多主總線,即它可以由多個(gè)連接的器件控制。圖3顯示了I2C總線上的數(shù)據(jù)穩(wěn)定規(guī)則,圖4是I2C總線的起始位和停止位。
          每次數(shù)據(jù)傳輸都是以一個(gè)起始位開始,而以停止位結(jié)束。傳輸?shù)淖止?jié)數(shù)由主機(jī)決定,沒有限制。最高有效位MSB將首先被傳輸,接收方收到第8位數(shù)據(jù)后會(huì)發(fā)出應(yīng)答位。數(shù)據(jù)傳輸通常分為兩種:主機(jī)發(fā)送從機(jī)接收和從機(jī)發(fā)送主機(jī)接收。這兩種模式都需要主機(jī)發(fā)送起始位和停止位。應(yīng)答位由接收方產(chǎn)生。從機(jī)地址一般是1或2個(gè)字節(jié),用于區(qū)分連接在同一I2C上的不同器件。
          I2C相關(guān)硬件設(shè)計(jì)
          本導(dǎo)線磨耗儀系統(tǒng)中有三個(gè)部分帶有I2C接口,分別是實(shí)時(shí)時(shí)鐘芯片DS1307、串行EEPROM AT24C256和IC卡AT24C16。
          DS1307內(nèi)部具有地址指針,每次讀寫操作之后會(huì)自動(dòng)加1,到達(dá)存儲(chǔ)器的末尾(3FH)會(huì)翻轉(zhuǎn)為0。時(shí)間信息的地址是00H~06H,因此讀取之前應(yīng)先向3FH中寫入一個(gè)字節(jié)的數(shù)據(jù),以便將地址指針復(fù)位到00H。
          AT24C256是帶的串行EEPROM,對(duì)AT24C256寫操作可分為字節(jié)模式和頁模式。如果采用字節(jié)模式,主機(jī)在發(fā)送從機(jī)地址(1字節(jié))和字地址(2字節(jié))之后,再送出1字節(jié)的數(shù)據(jù),而后EEPROM返回應(yīng)答位,主機(jī)以停止位結(jié)束操作。然后AT24C256進(jìn)入自定時(shí)的寫周期,將收到的數(shù)據(jù)寫入非揮發(fā)性的存儲(chǔ)器,此時(shí)對(duì)于任何的輸入都不會(huì)作出響應(yīng)。而頁模式的初始化過程與字節(jié)模式相同,在收到第1個(gè)數(shù)據(jù)字節(jié)的應(yīng)答位之后,主機(jī)并不產(chǎn)生停止位,而是繼續(xù)發(fā)送數(shù)據(jù),每頁最多包括64個(gè)字節(jié)。每收到1個(gè)字節(jié)的數(shù)據(jù),EEPROM都會(huì)返回應(yīng)答位,直到主機(jī)產(chǎn)生停止位結(jié)束操作。AT24C256讀操作的初始化過程與寫操作基本相同,只是從機(jī)地址的最低位設(shè)置略有差別。
          IC卡AT24C256具有2K字節(jié)的EEPROM。由于帶電插拔可能會(huì)對(duì)IC卡造成損傷,因此需要在硬件和軟件兩方面對(duì)它的電源進(jìn)行控制。如果有卡插入,卡座內(nèi)部的按鍵被按下,通知主機(jī)可以進(jìn)行檢測。主機(jī)應(yīng)首先檢查插入的卡片是否會(huì)將電源Vcc與地GND短路,若沒有問題可以打開IC卡的電源,否則提示插入的是廢卡。如果插入的卡片是已經(jīng)擊穿的壞卡或者金屬片,不經(jīng)檢測就打開電源會(huì)造成供電回路的短路,嚴(yán)重時(shí)甚至導(dǎo)致整個(gè)系統(tǒng)損壞。單片機(jī)的I/O口通過一個(gè)小功率三極管控制IC卡的電源開關(guān),每次插卡并檢測后接入5V電源,讀寫完畢后應(yīng)及時(shí)切斷,以便IC卡的拔出。

          軟件設(shè)計(jì)
          導(dǎo)線磨耗遙測系統(tǒng)的軟件主要分由主控制程序、接口程序、輔助程序、上位機(jī)軟件等幾部分組成。
          (1)導(dǎo)線磨耗系統(tǒng)的主控制程序控制整個(gè)系統(tǒng)的流程,主要完成程序的初始化、中斷方式的設(shè)置、計(jì)數(shù)器的工作方式的設(shè)置及相關(guān)子程序的調(diào)用。主控制程序除了管理資源、控制各模塊、處理數(shù)據(jù)外,還包括開機(jī)界面的六個(gè)顯示子菜單:測量溫度、參數(shù)設(shè)置、查看記錄、上傳數(shù)據(jù)、時(shí)鐘和休眠。
          在數(shù)據(jù)處理算法方面,則使用采樣取平均的方法。在對(duì)查表得到溫度值的基礎(chǔ)上,與室溫比較,并進(jìn)行距離、輻射率的補(bǔ)償。
          (2)接口程序即各個(gè)接口的驅(qū)動(dòng)程序,包括存儲(chǔ)器、時(shí)鐘、液晶、鍵盤、串口、ADC、時(shí)鐘和定時(shí)器。每個(gè)接口程序都應(yīng)分別進(jìn)行調(diào)試,按照協(xié)議編寫,注意時(shí)序問題。I2C電路可根據(jù)其接口時(shí)序進(jìn)行調(diào)試。由于單片機(jī)資源有限,所以需要注意資源的管理。
          (3)輔助程序主要是字模提取和寫入,包括圖像圖標(biāo)和文字的字模提取與保存,圖象的旋轉(zhuǎn)、縮放、平移、反顯,顏色與大小的修改等。
          (4)上位機(jī)軟件可以用VC或VB編寫,由串行端口控件MSComm來為應(yīng)用程序提供串行通信,打開串口、讀取數(shù)據(jù)、存儲(chǔ)和顯示。上位機(jī)軟件還可以統(tǒng)計(jì)數(shù)據(jù)、連接數(shù)據(jù)庫和遠(yuǎn)程管理。數(shù)據(jù)庫可以使檢測記錄格式統(tǒng)一,便于集中處理。遠(yuǎn)程管理可以加快數(shù)據(jù)傳輸速度,節(jié)省時(shí)間,減少事故發(fā)生的機(jī)會(huì)。
          另外,由于這套系統(tǒng)要長期在野外工作,對(duì)穩(wěn)定性要求較高。除了設(shè)置硬件看門狗外,還在編程時(shí)增加了許多軟件陷阱,使得程序必要時(shí)可以迅速復(fù)位。

          結(jié)語
          I2C總線電路結(jié)構(gòu)簡單,符合系統(tǒng)設(shè)計(jì)向小型化低功耗方向的發(fā)展趨勢。在軟件方面,由于使用平臺(tái)模式的VIIC軟件包,保證了在較短的時(shí)間內(nèi)開發(fā)出高穩(wěn)定性的驅(qū)動(dòng)程序。
          本導(dǎo)線磨耗帶電遙測儀基于I2C總線設(shè)計(jì),可以快速準(zhǔn)確的帶電遙測輸電導(dǎo)線殘高,并能夠自動(dòng)計(jì)算和存儲(chǔ),還可保存環(huán)境溫度、電源電壓與時(shí)間信息。具有操作簡單、界面友好、易擴(kuò)充等優(yōu)點(diǎn),對(duì)促進(jìn)電氣鐵路的管理科學(xué)化具有重要的應(yīng)用和推廣價(jià)值。■

          參考文獻(xiàn)
          1 孫涵芳、徐愛卿著.MCS51/96系列單片機(jī)原理及應(yīng)用(修訂版).北京:北京航空航天大學(xué)出版社,1996
          2 周航慈著.單片機(jī)應(yīng)用程序設(shè)計(jì)技術(shù).北京:北京航空航天大學(xué)出版社,1991



          評(píng)論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();