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

          新聞中心

          EEPW首頁 > 汽車電子 > 設計應用 > 基于VB串口通信的電動天窗耐久性測試系統(tǒng)的軟硬

          基于VB串口通信的電動天窗耐久性測試系統(tǒng)的軟硬

          作者: 時間:2012-08-30 來源:網絡 收藏

          摘要:提出了一種基于耐久性硬件實現(xiàn)方案。該系統(tǒng)包括PC機構成的上位機和單片機構成的下位機。上位機提供了良好的人機交互界面;下位機采用集成電路,以及信號采樣、V/F、F/V轉換和D/A轉換,通過串口通信將單片機與PC機連接。借助這一系統(tǒng),可方便靈活精確地實現(xiàn)對各種的耐久性測試。

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

          1 概述

          汽車天窗是為滿足消費者乘車健康和舒適度的要求而設計的,因此人們對天窗性能的要求不僅僅停留在美觀、豪華上,還必須滿足安全、可靠、運行自如等全方位的要求。所以,在汽車天窗裝車前要首先對其進行耐久性和安全性測試,以確保其裝車后符合技術和用戶的要求。而現(xiàn)有汽車天窗存在行程不到位,天窗打不開;行程不到位,天窗關不嚴,對汽車防盜防雨構成威脅;控制開關失靈,出現(xiàn)夾人現(xiàn)象等隱患和問題。

          目前,國內天窗測試大都采用單機式的下位機系統(tǒng)。該類系統(tǒng)雖能進行常規(guī)測試,但不能記錄或反饋測試信息。我們設計的汽車天窗分上、下位機,下位機具有控制天窗的執(zhí)行機構,不但可以控制天窗的往返等動作,完成測試項目,而且還具備自動辨別故障功能,能自動記錄天窗電機故障時間。通過上位機顯示耐久測試次數、顯示故障。依靠上位機和下位機的可靠通訊,實現(xiàn)了測試運行、信息傳遞和信息反饋。

          2 耐久性的關鍵技術

          2.1 硬件技術特性

          本硬件系統(tǒng)要實現(xiàn)天窗的開到位,關到位,中途停和電機必要休息的判斷。主要由檢測電路和控制電路兩部分組成,其系統(tǒng)原理圖如圖1所示:

          電路原理圖

          圖1 電路原理圖

          到位檢測電路:在系統(tǒng)中,為了保證天窗測試臺的自身耐久性,設計中采用非接觸式傳感器(紅外線光電式傳感器)代替易損的接觸式傳感器,而且可以靈活的調節(jié)天窗的開到位或關到位的位置,方便用戶的需求,天窗到位的電路工作原理為:電路由3D紅外線發(fā)射管和3E接收管以及運放LM324構成,當天窗未開到位或未關到位,無信號發(fā)出,只有天窗到位,才發(fā)信號給單片機。

          中途停檢測電路:系統(tǒng)中,由于控制對象(天窗電機)的負載特性,不允許天窗電機持續(xù)不停的工作,防止電機過熱而影響正常工作。在獲取中途停信號的子系統(tǒng)中,用取樣電阻采樣、保持。為了保證信號的不失真,可采用兩級放大電路,經過V/F和F/V轉換(因為取信號的地與電源地不能共地),然后再經一級放大,經過比較后接入到單片機中。

          報警控制電路:通過8255出來的信號經過7405控制光耦,若檢測到系統(tǒng)堵轉,則聲音報警。

          過流保護控制電路:當系統(tǒng)堵轉時,繼電器打開,電機立即停止工作。

          電機控制電路:開到位信號(關到位信號)經8255出來后,經過7405控制光耦的導通,然后通過晶體管控制繼電器,使電機停30秒。

          2.2 件技術特性

          單片機部分:下位機部分由單片機及擴展接口電路構成,主要有8031,地址鎖存器74LS373,用作片外程序存儲器的EPROM2764以及用于擴展I/O口的8255,然后通過RS-232接口與上位機通信。由于單片機輸入、輸出電平是TTL電平,而PC機配置的是RS-232標準串行接口,二者的電氣規(guī)范不一致,因此要完成單片機與PC機的數據通訊,必須對單片機輸出的TTL電平進行電平轉換。本電路中使用的是一種標準的RS-232芯片MAX232。下位機件由匯編語言編寫,主要由主程序、延時子程序、中斷子程序、跳過電機啟動子程序、握手聯(lián)絡子程序和賦堵轉電流子程序組成。其功能如下:

          22.jpg

          圖2 單片機程序流程圖

          主程序:完成系統(tǒng)的初始化,分配調用各子程序以實現(xiàn)系統(tǒng)功能;

          延時子程序:為了滿足天窗電機的特性要求,控制電機不連續(xù)工作;

          中斷子程序:當堵轉電流大于設定電流時,電機停止工作;

          跳過電機啟動子程序:當電機啟動時電流很大,有可能超過堵轉電流,此程序可使電機正常工作;

          握手聯(lián)絡子程序:上、下位機在通訊時, 握手聯(lián)絡子程序起到保證通訊可靠,減少誤動作的作用;

          堵轉電流子程序:設定堵轉電流值,以控制電機工作; 其部分代碼如下,程序流程圖如圖2所示:

          ORG 0000H

          LJMP MAIN

          ORG 000BH

          LJMP TOT0

          ORG 0030H

          MAIN: MOV R6,#0FFH ; 延時子程序,等待8255完全復位

          MAIN1: DJNZ R6,MAIN1

          MOV P1,#0FFH

          MOV SP,#40H

          MOV DPTR,#7FF3H ; 對8255寫控制字,PA,PB.PC輸出,0010 0100 0000 0011

          MOV A,#80H

          MOVX @DPTR,A

          MOV DPTR,#7FF0H ; PA輸出全01111111

          MOV A,#00H

          MOVX @DPTR,A

          MOV DPTR,#0BFFFH

          MOV A,#0FFH

          MOVX @DPTR,A

          MOV TMOD,#22H ; T1為波特發(fā)生器,方式2,定時.T0方式2,定時

          MOV TL1,#0F3H ; 波特為1200B/S

          上位機部分:由PC機構成,具有人機接口界面,如圖3所示。由于VISUAL BASIC語言有非常友好的界面,很好發(fā)揮了其可視化特點,深受廣大編程人員的青睞。所以,軟件編寫利用VB6.0語言環(huán)境,界面操作方便直接。在本系統(tǒng)中要使用上下位機通訊,則要用到串口技術。串口通訊一般采用RS232或者RS485等規(guī)范,并有專用芯片實現(xiàn)相關硬件通訊電路。在Windows環(huán)境下我們可以調用API函數或直接使用Ac-tiveX串口通訊控件,利用API函數編寫串口通訊程序比較復雜,而VB6.0的MSComm通訊控件為標準的通訊命令集,提供了一個接口,它允許程序員建立一個基于串行口的連接,可進行命令的確認、數據交換以及對串行接口處可能出現(xiàn)的各種事件或錯誤進行監(jiān)視,并可做出反應。另外VB6.0通過屬性方法,提供了串行通訊口參數的設置,可以較容易地解決串口通訊問題。而且MSComm控件屏蔽了通信過程中的底層操作,使串口編程非常方便。因此在進行系統(tǒng)開發(fā)時,利用MSComm控件能起到縮短設計周期、增加系統(tǒng)可靠性的作用。同時,只要了解自己需要的參數即可順序編寫上位機軟件,所以此處采用MSComm控件編程來實現(xiàn)與單片機的通訊。該控件的各項參數簡介如下:


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();