通過先進的載體設(shè)備和技術(shù)手段,檢測、診斷、維修電子噴射的現(xiàn)代化汽車。本文的汽車發(fā)動機檢測裝置就是一款具突破性的裝置。
汽車發(fā)動機檢測裝置
本文以LPC2134微處理器為核心,其他還包括高壓線圈感應(yīng)電路,低壓線圈感應(yīng)電路、電源電路、LCD點陣顯示電路以及鍵盤電路等。硬件框圖如圖1所示。
圖1 汽車速度檢測系統(tǒng)硬件框圖
這里,LPC2134微控制器基于一個支持實時仿真和嵌入式跟蹤的32位ARM7TDMI-S CPU,并帶有128kB嵌入的高速Flash存儲器。?較小的封裝和很低的功耗,以及8位ADC和10位DAC,使其特別適用于工業(yè)控制應(yīng)用以及各種測量系統(tǒng)。
本系統(tǒng)主要檢測高壓低壓線圈的波形信號,并將其顯示在LCD顯示器上,還可通過高壓信號的兩次脈沖間隔計算發(fā)動機的轉(zhuǎn)速。
本裝置直接連接220V交流市電就可以工作。
汽車發(fā)動機檢測系統(tǒng)硬件環(huán)境
電源電路
本裝置電源電路如圖2、圖3所示。
圖2 220V交流電變壓直流12V
圖3 直流12V變壓直流3.3V
圖2中,從接口S2接入的220V左右的交流電壓,經(jīng)變壓器T2變壓,經(jīng)全波整流電橋D2整流后,得到為0~12V左右的波動直流。這一波動的直流經(jīng)C5、C6、L4組成的∏型濾波后,得到一較平穩(wěn)的直流,再通過C7、C8、C12濾掉雜波,再經(jīng)圖3中HT7533穩(wěn)壓為+3.3V,經(jīng)C13、C18、C19、C20再次濾波后,得到穩(wěn)定的+3.3V直流電流,為系統(tǒng)微處理器和顯示電路供電。
點陣模塊OCM12864-5
OCM12864液晶顯示模塊是128×64點陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標準數(shù)據(jù)總線、6條控制線及電源線。這里采用KS0108控制IC。
線圈感應(yīng)及顯示硬件電路
汽車發(fā)動機檢測原理主要是通過感應(yīng)線圈感應(yīng)高壓與低壓線圈的信號,并將感應(yīng)信號通過開關(guān)管輸入到LPC2134微處理器的GPIO端口。通過微處理器的定時器測量脈沖信號的周期,再將信號顯示在LCD點陣顯示器上。由于發(fā)動機旋轉(zhuǎn)兩周就會出現(xiàn)連次高壓線圈信號,因此通過測量兩次高壓脈沖的時間間隔,就可以計算出發(fā)動機的轉(zhuǎn)速。轉(zhuǎn)速數(shù)值經(jīng)軟件轉(zhuǎn)換成顯示碼由顯示電路處理后顯示出來。 LPC2134與OCM12864接口電路如圖4所示。
圖4 LPC2134與OCM12864接口電路圖
軟件設(shè)計中,主程序?qū)︽I盤子程序進行掃描,如有鍵被按下,LPC2134微處理器相應(yīng)的端口電壓就會被拉低,單片機的功能就對端口進行定位,判斷是哪個端口被拉低,并計算建值,從而轉(zhuǎn)向執(zhí)行不同功能的子程序,并刷新顯示器的顯示內(nèi)容。鍵盤電路
硬件電路中,按鍵一端接上拉4.7kΩ電阻接ARM輸入,另一端接地,如圖5所示。
圖5 鍵盤電路
利用鍵盤掃描法,首先判斷有無鍵按下。為此,設(shè)置微處理器端口由高電平變成低電平,表明有鍵按下;若微處理器端口為高電平,則表明無鍵按下。圖中,KEY1按下顯示高壓線圈波形信號,KEY2按下顯示低壓線圈波形信號,KEY3按下顯示發(fā)動機速度,KEY4按下則打開背光。
汽車發(fā)動機檢測裝置軟件程序
本系統(tǒng)軟件主要的任務(wù)是:主程序掃描鍵盤,當(dāng)有鍵按下,判斷鍵值轉(zhuǎn)向,執(zhí)行不同的功能程序模塊,同時進行相應(yīng)測量,并通過LCD點陣顯示器顯示相應(yīng)的測量信息。
主程序由脈沖檢測子程序、鍵盤子程序、定時中斷子程序、速度計算子程序和顯示子程序等組成。如圖6所示。
圖6 程序方框圖速度脈沖計算的子程序及解釋如下:
uint32 speed(void)
{
uint32 Time;
uint32 SpeedValue;
PINSEL0 = 0x00050005;
PINSEL1 = 0x14000000;
IO0DIR = 0x02000000;
IO1DIR = 0x003f0000;
// 硬件輸入輸出接口初始化
T0TC = 0;
//定時器設(shè)置為0
T0PR = 0;
//時鐘不分頻
while((IOPIN&0x00000004) != 0); //等待p0.4低電平脈沖信號
T0TCR = 0x01;
//啟動定時器0
while((IOPIN&0x00000004) == 0)
while((IOPIN&0x00000004) != 0);
//等待p0.4下一個低電平脈沖信號
T0TCR = 0x00;
Time = T0TC;
Time = Time/Fpclk;
//記錄脈沖寬度
SpeedValue = 1/Time*60;
//計算速度每分鐘多少轉(zhuǎn)
return SpeedValue;
}
顯示部分子程序及解釋如下:
/*-顯示器初始化-*/
void init_lcd (void)
{
IO1CLR = rst;//rst=0;
delay(50);
IO1SET = rst;//rst=1;
IO1SET = cs1;//cs1=1;
IO1SET = cs2;//cs2=1;
wr_lcd (comm,disp_off); //#define comm 0 關(guān)顯示
//#define disp_off 0x3e
wr_lcd (comm,disp_on);
//#define disp_on 0x3f 開顯示
}
/*-寫數(shù)據(jù)或命令到LCD-*/
void wr_lcd (uint8dat_comm, uint8 content)
{
chk_busy ();
if(dat_comm){ IO1SET = di; }
else{ IO1CLR = di; } //di=dat_comm;
IO1CLR = rw;//rw=0;
IO0DIR = IO0DIR | IO16_23;
// 設(shè)置P0.0-P0.7為GPIO輸出模式
data_ora=( ( data_ora & !(IO16_23) ) | content<<16 );
IO1SET = e;//e=1;
IO1CLR = e;//e=0;
IO0DIR=IO0DIR & !(IO16_23);// 設(shè)置P0.16-P0.23為GPIO輸入模式
}
/*-讀LCD數(shù)據(jù)-*/
uint8 rd_lcd (void)
{
uint8 rddata;
chk_busy ();
IO1SET = di;//di=1;
IO1SET = rw;//rw=1;
IO1SET = e;//e=1;
rddata= data_ora>>16;
IO1CLR = e;//e=0;
return rddata;
}
/*-寫點陣-*/
void lat_disp (uint8 data1,uint8 data2)
{
uint8 i,j;
IO1SET = cs1;//cs1=1; //兩屏同時寫數(shù)據(jù)
IO1SET = cs2;
//cs2=1;
wr_lcd (comm,disp_on);
for(j=0;j<8;j++) //共8頁
{
wr_lcd (comm,disp_x+j);
wr_lcd (comm,disp_z);
wr_lcd (comm,disp_y);
for(i=0;i<32;i++)
{
wr_lcd (dat,data1);
wr_lcd (dat,data2); //每頁64個數(shù)
}
}
}
/*---指定位置(x,y)顯示row_xl行(每行row_yl個)漢字(大小8xl*yl)---*/
void chn_disp (uint8 x,uint8 y,uint8 xl,uint8 yl,uint8 row_xl,uint8 row_yl,const uint8 *chn)
{
uint8 i,j,k,l,a;
//row_xl:顯示row_xl行
wr_lcd (comm,disp_on);
//每行row_yl個漢字
for(l=0;l
//xl:頁大小,一頁八個點
{
//yl: 列大小,一列一個點
for(k=0;k
//x,y:起始位置
{
for(j=0;j
{
wr_lcd (comm,disp_x+x+l *xl+j);
wr_lcd (comm,disp_z);
wr_lcd (comm,disp_y+y+k*yl);
a=l*xl*yl*row_yl+k*xl*yl+j*yl; //a:數(shù)組chn[]中第a個字符
for(i=0;i
wr_lcd (dat,chn[a+i]);
}
}
}
}
結(jié)語
本系統(tǒng)以目前廣泛應(yīng)用的LPC2134 ARM為控制處理核心,以感應(yīng)高壓線圈和低壓線圈作為ARM的輸入信號,用OCM12864的點陣作為儀器的顯示,使該裝置可以有效完成對汽車發(fā)動機的的精確測量。它可以將發(fā)動機動態(tài)運行的各種參數(shù)和故障檢測診斷出來,然后通過維修、調(diào)整以達到修復(fù)發(fā)動機的目的。