所謂動態(tài)稱重是指通過分析和測量車胎運動中的力,來計算該運動車輛的總重量、軸重、輪重和部分重量數(shù)據(jù)的過程。動態(tài)稱重系統(tǒng)按經(jīng)過車輛行駛的速度劃分,可分為低速動態(tài)稱重系統(tǒng)與高速動態(tài)稱重系統(tǒng)。因為我國高速公路的限速最高是120,所以高速動態(tài)稱重系統(tǒng)在理論上可對5到120之間時速通過稱量裝置的車輛進(jìn)行動態(tài)稱重。而低速動態(tài)稱重系統(tǒng)則一定要限制通過車輛的行駛速度,要想有較高的測量精度,理論要求車輛在5km/h以下時速勻速通過。在我國,車輛動態(tài)稱重一般都使用低速動態(tài)稱重來完成,在很多收費站和車輛檢測站都有應(yīng)用,國家也出臺了相關(guān)的測量標(biāo)準(zhǔn)。
與傳統(tǒng)意義上的靜態(tài)稱重相比,動態(tài)稱重可以在車輛緩慢運動情況下直接進(jìn)行稱重,這樣動態(tài)稱重的高效率、測量時間短、能流暢交通等主要特點就凸顯出來了。動態(tài)稱重的問世,不但使車輛的管理上有了很大的促進(jìn)作用,而且還對我國的公路管理和維護(hù)起到了至關(guān)重要的作用。
二 系統(tǒng)總體結(jié)構(gòu)及其功能設(shè)計總體結(jié)構(gòu)是以51單片機為處理器的系統(tǒng),如圖3.1所示。
本設(shè)計要求能判斷出車輛是否超載,如果車輛超載,本系統(tǒng)能夠提供該車輛的超載信息并發(fā)出警報。本設(shè)計采用STC89C52單片機作為系統(tǒng)的處理核心,利用橋式稱重傳感器采集到車輛重量并轉(zhuǎn)換成電壓信號,然后通過放大電路將電壓信號進(jìn)行放大處理后,傳送到A/D轉(zhuǎn)換器中轉(zhuǎn)換為數(shù)字信號,再經(jīng)過單片機處理、傳輸?shù)浇涌陔娐,最后送到上位機,該數(shù)據(jù)可以與上位機里用鍵盤事先輸入設(shè)定的總重量作比較并判斷出該車輛是否超載,如果超載,則可通過顯示器、蜂鳴器作顯示超載信息并報警,當(dāng)然,鍵盤的作用除了輸入設(shè)定值還可以解除和開啟警報。
三 動態(tài)稱重系統(tǒng)的組成動態(tài)稱重系統(tǒng)主要由車輛重量(含超載、偏載檢測)檢測子系統(tǒng)、貨車長、寬、高三維尺寸超限檢測子系統(tǒng)、自動觸發(fā)攝像拍照子系統(tǒng)、車輛類型自動判別子系統(tǒng)、系統(tǒng)配置及系統(tǒng)維護(hù)子系統(tǒng)、行駛車輛速度測量子系統(tǒng)、數(shù)據(jù)統(tǒng)計、報表處理子系統(tǒng)和單據(jù)輸出打印子系統(tǒng)這幾部分組成。該系統(tǒng)組成完善,部件考慮周全,能很好的完成稱重任務(wù)。
四 動態(tài)稱重系統(tǒng)的主要功能(1) 動態(tài)檢測出通過車輛的軸數(shù)、軸重、軸距、輪數(shù)、車速等;
(2) 能自動檢測出車輛的高、寬、長等外圍尺寸是否超出最大標(biāo)準(zhǔn),并能給出超出部位的具體位置和具體數(shù)據(jù);
(3) 拍攝機器在車輛經(jīng)過時能自行對要被檢測的車輛進(jìn)行拍照,該機器能對車牌號碼、車輛種類進(jìn)行識別,最終作為圖像證據(jù);
(4) 可以將不合格車輛的處理記錄、超限情況進(jìn)行打印,根據(jù)車輛超限的程度來計算罰款數(shù)額并打印收據(jù)或罰款單;
(5) 檢測到的數(shù)據(jù)全部存入數(shù)據(jù)庫中,并對被監(jiān)測到的數(shù)據(jù)進(jìn)行分析、統(tǒng)計。便于匯總上報、日常管理和進(jìn)行查詢。
五 單片機的選用本設(shè)計采用的是INTEL公司研究開發(fā)生產(chǎn)的STC89C52單片機,其內(nèi)部置有256字節(jié)的內(nèi)部數(shù)據(jù)存儲器、8位中央處理單元、8K片內(nèi)程序存儲器、3個16位定時/計數(shù)器、32個雙向I/O口和一個片內(nèi)時鐘振蕩電路,全雙工串行通信口, 5個兩級中斷結(jié)構(gòu)。89C52的引腳圖如圖4.1所示。
本設(shè)計使用的是單片機的最小系統(tǒng),其中電路包括下載口電路、復(fù)位電路和晶振電路。復(fù)位電路中,電阻在下接地,電容在上接高電平,中間為RST。復(fù)位電路工作原理是:通電時,由于電流很大,從而相當(dāng)于電容被短路,這樣RST引腳上處于高電平,這時的單片機為禁止工作狀態(tài)。如果要使單片機正常工作,就要使RST端電壓慢慢下降并到一定程度,也就是RST端為低電平,這就需要通過電源對電容進(jìn)行充電。
復(fù)位電路復(fù)位的方式有手動復(fù)位、上電復(fù)位兩種。所謂上電復(fù)位,就是通電瞬間,由于電流很大,從而相當(dāng)于電容被短路,這樣RST引腳上處于高電平,自動復(fù)位;相反,通過對改變電容電流,當(dāng)電流很小的時候,我們就可以把電容當(dāng)做開路狀態(tài),RST端就處于低電平,程序就能正常的運行。而手動復(fù)位要在上電復(fù)位的基礎(chǔ)上,按下復(fù)位按鍵,使VCC直接與RST相連,電容處于放電狀態(tài),以高電平形成復(fù)位;松開復(fù)位按鍵,RST仍舊是高電平,這時充電電流作用于電阻上,VCC給電容進(jìn)行充電,還是復(fù)位狀態(tài),充電結(jié)束后,RST為低電平,能夠正常工作。
A/D轉(zhuǎn)換器A/D轉(zhuǎn)換器根據(jù)輸出的信號格式有并行A/D和串行A/D兩種。ADC0832 是一種具有雙通道 A/D 轉(zhuǎn)換芯片和8 位分辨率。它的優(yōu)點有體積小,兼容性強,性價比高,從而深受個人的歡迎和企業(yè)的認(rèn)可,目前在世界上也已經(jīng)有了較高的使用率。
ADC0832具有能夠進(jìn)行雙通道A/D 轉(zhuǎn)換,分辨率高達(dá)8位;當(dāng)供電電源為5V時,輸入電壓能穩(wěn)定的保持在0~5V 之間;TTL/CMOS與輸出輸入電平兼容;功耗很低,只有15mW;轉(zhuǎn)換工作時間只有 32μS,也就是頻率僅有 250KHZ等特點。其引腳功能圖如圖4.6所示,芯片引腳接口說明如表4所示。
接口 | 說明 |
CS | 片選使能,輸入低電平能使芯片工作 |
CH1 | 模擬的輸入通道 1,或作為 IN+/-使用 |
CH0 | 模擬的輸入通道 0,或作為 IN+/-使用 |
GND | 接地 |
DO | 轉(zhuǎn)換數(shù)據(jù)輸出,數(shù)據(jù)信號輸出 |
DI | 選擇通道控制,數(shù)據(jù)信號輸入 |
CLK | 芯片時鐘脈沖輸入 |
Vcc/REF | 5V參考電壓輸入和電源輸入 |
通常情況下的單片機和ADC0832的接口的數(shù)據(jù)線應(yīng)為4條,分別是 CS、CLK、DO、DI。由于ADC0832的數(shù)據(jù)信號輸入輸出口與單片機具有雙向接口通信,輸入輸出口也不同時使用,所以可以將數(shù)據(jù)信號輸入輸出口并聯(lián)后當(dāng)一條數(shù)據(jù)線進(jìn)行使用。它們的硬件接口電路與單片機連接的原理如圖4.7所示。
最后將以上的惠思登電橋、放大器、ADC0832轉(zhuǎn)換器和STC89C52單片機連接起來,就組成了系統(tǒng)的采集模塊。
本系統(tǒng)要實現(xiàn)一旦檢測到車輛超載超限,就會立刻鳴笛報警,通過操作人員的檢查處理后,解除報警。本設(shè)計選用蜂鳴器作為發(fā)聲裝置,蜂鳴器可利用三極管來進(jìn)行放大驅(qū)動。該接口電路如圖4.15所示:
當(dāng)系統(tǒng)上電復(fù)位后,系統(tǒng)開始初始化,包括端口等;初始化完畢后,調(diào)用串口輸出提示語,開始準(zhǔn)備串口輸出電壓;準(zhǔn)備完畢后,調(diào)用串口輸出電壓值,開始從串口輸出電壓值;輸出完畢后,調(diào)用串口輸出換行值;最后開始延時200ms。根據(jù)系統(tǒng)方案,設(shè)計出本設(shè)計的主程序流程,可以用框圖表示。
首先要將芯片開始使能,即CS使能端置于低電平,然后通過DI和DO的同一數(shù)據(jù)輸入端口,可實現(xiàn)通道功能的選擇,再調(diào)用通道初始化程序,初始化完畢后,在8個時鐘邊沿獲得正序和反序8位數(shù)據(jù),最后返回數(shù)據(jù)。根據(jù)此方案,設(shè)計出本設(shè)計中A/D轉(zhuǎn)換程序流程,如圖5.2所示。
當(dāng)兩位數(shù)據(jù)都為0時,CH1作為負(fù)輸入端 IN-,而CH0就作為正輸入端IN+來進(jìn)行相關(guān)輸入。當(dāng)此兩位數(shù)據(jù)都為1時,CH1進(jìn)行單通道轉(zhuǎn)換而CHO不轉(zhuǎn)換。當(dāng)兩位數(shù)據(jù)分別為0和1時,CH1作為正輸入端IN+,CH0作為負(fù)輸入端IN-來進(jìn)行相關(guān)輸入。當(dāng)兩位數(shù)據(jù)為分別為1和0時,CH0進(jìn)行單通道轉(zhuǎn)換而CH1不轉(zhuǎn)換。ADC0832的功能項如表7所示。
MUX Address | Channe# | ||
SGL/DIF | ODD/SIGN | 0 | 1 |
1 | 0 | + |
|
1 | 1 |
| + |
0 | 0 | + | _ |
0 | 1 | _ | + |
ADC0832沒有工作時,DO/DI和CLK的電平可高可低,但CS的輸入端口應(yīng)必須顯示高電平,此時芯片處于禁用狀態(tài)。當(dāng)A/D轉(zhuǎn)換進(jìn)行時,CS端口必須處于低電平并且一直將低電平保持到轉(zhuǎn)換全部結(jié)束。當(dāng)芯片轉(zhuǎn)換工作開始,芯片的CLK端口會接收到處理器傳送來的一時鐘脈沖,DO/DI并聯(lián)端口將使用數(shù)據(jù)輸入信號的DI端口。
第一個時鐘脈沖的下沉出現(xiàn)之前,DI端口一定要是高電平,表示啟始信號的發(fā)出,在第二、三個脈沖的下沉出現(xiàn)之前,DI端口要輸入兩位數(shù)據(jù)來選擇通道。第三個脈沖出現(xiàn)下沉之后,DI端口就不再起任何作用,此后 DO/DI并聯(lián)端口則是被DO端口占領(lǐng)進(jìn)行讀取轉(zhuǎn)換數(shù)據(jù)。第四個下沉脈沖出現(xiàn)開始,DO端口輸出最高位的轉(zhuǎn)換數(shù)據(jù)DATA7,接下來每個脈沖下沉之后DO端口都會輸出下一位的轉(zhuǎn)換數(shù)據(jù)。直到發(fā)出最低位數(shù)據(jù)DATA0,也就是由第十一個脈沖發(fā)出的數(shù)據(jù)之后,這樣一個字節(jié)的數(shù)據(jù)輸出就完成了。再從第十一個脈沖下沉開始從DATD0開始輸出下一個相反數(shù)據(jù)字節(jié)。然后一直到第十九個脈沖完成數(shù)據(jù)的輸出,這樣一次A/D 轉(zhuǎn)換才結(jié)束。最后,要想將轉(zhuǎn)換后的數(shù)據(jù)進(jìn)行相關(guān)處理就必須將芯片禁用,也就是將CS端口輸入高電平。
5.4 LCD顯示程序設(shè)計首先設(shè)置顯示模式,設(shè)置第(x,y)個字符的DDRAM的地址,為15×2顯示,因為液晶顯示為15列,所以x位置的范圍是0到15,同理,因為顯示2行,所以y位置的范圍是0到1。顯示程序如下:
void Lcd_Pos(uchar yPos,uchar xPos)
{
uchar tmp;
xPos &= 0x0f; //x位置范圍是0~15,因為顯示15列
yPos &= 0x01; //y位置范圍是0~1,因為顯示2行
if(yPos==0) //顯示第一行
{
tmp = xPos;
}
else
{
tmp = xPos + 0x40; //顯示第二行
}
tmp |= 0x80;
Write_com(tmp);
}
5.5 主函數(shù)軟件主要分成四個部分:串口配置,ADC0832的初始化,等待接受數(shù)據(jù)和輸出數(shù)據(jù)。程序如下:
void main(void)
{
InitUART(); //串口初始化
Lcd_init();
Write_String("Weight: ", 0, 0);
Write_String("H=", 1, 0);
Write_String("L=", 1, 6);
Beep = 1;
while(1)
{
Process10ms();
DispVal(Wh, 1, 2);
DispVal(Wl, 1, 8);
CheckProcess();
if (flagget10s == 1)
{
flagget10s = 0;
Get_temp(sum*100);
ET0 = 1;
TR0 = 1;
Disp_Voltage(); //采集電壓并發(fā)送
}
}
}
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |