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