《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 嵌入式汽車發(fā)動機(jī)檢測裝置設(shè)計
嵌入式汽車發(fā)動機(jī)檢測裝置設(shè)計
電子設(shè)計應(yīng)用
劉志博
摘要: 嵌入式汽車發(fā)動機(jī)檢測裝置設(shè)計,通過先進(jìn)的載體設(shè)備和技術(shù)手段,檢測、診斷、維修電子噴射的現(xiàn)代化汽車。本文的汽車發(fā)動機(jī)檢測裝置就是一款具突破性的裝置。汽車發(fā)動機(jī)檢測裝置本文以LPC2134微處理器為核心,其他還包括高壓線圈感應(yīng)電路,低
關(guān)鍵詞: ARM LPC2134 汽車發(fā)動機(jī)
Abstract:
Key words :

通過先進(jìn)的載體設(shè)備和技術(shù)手段,檢測、診斷、維修電子噴射的現(xiàn)代化汽車。本文的汽車發(fā)動機(jī)檢測裝置就是一款具突破性的裝置。

  汽車發(fā)動機(jī)檢測裝置

  本文以LPC2134微處理器為核心,其他還包括高壓線圈感應(yīng)電路,低壓線圈感應(yīng)電路、電源電路、LCD點(diǎn)陣顯示電路以及鍵盤電路等。硬件框圖如圖1所示。

  

汽車速度檢測系統(tǒng)硬件框圖

 

  圖1 汽車速度檢測系統(tǒng)硬件框圖

  這里,LPC2134微控制器基于一個支持實(shí)時仿真和嵌入式跟蹤的32位ARM7TDMI-S CPU,并帶有128kB嵌入的高速Flash存儲器。?較小的封裝和很低的功耗,以及8位ADC和10位DAC,使其特別適用于工業(yè)控制應(yīng)用以及各種測量系統(tǒng)。

  本系統(tǒng)主要檢測高壓低壓線圈的波形信號,并將其顯示在LCD顯示器上,還可通過高壓信號的兩次脈沖間隔計算發(fā)動機(jī)的轉(zhuǎn)速。

  本裝置直接連接220V交流市電就可以工作。

  汽車發(fā)動機(jī)檢測系統(tǒng)硬件環(huán)境

  電源電路

  本裝置電源電路如圖2、圖3所示。

  

220V交流電變壓直流12V

 

  圖2 220V交流電變壓直流12V

  

 直流12V變壓直流3.3V

 

  圖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)微處理器和顯示電路供電。

  點(diǎn)陣模塊OCM12864-5

  OCM12864液晶顯示模塊是128×64點(diǎn)陣型液晶顯示模塊,可顯示各種字符及圖形,可與CPU直接接口,具有8位標(biāo)準(zhǔn)數(shù)據(jù)總線、6條控制線及電源線。這里采用KS0108控制IC。

  線圈感應(yīng)及顯示硬件電路

  汽車發(fā)動機(jī)檢測原理主要是通過感應(yīng)線圈感應(yīng)高壓與低壓線圈的信號,并將感應(yīng)信號通過開關(guān)管輸入到LPC2134微處理器的GPIO端口。通過微處理器的定時器測量脈沖信號的周期,再將信號顯示在LCD點(diǎn)陣顯示器上。由于發(fā)動機(jī)旋轉(zhuǎn)兩周就會出現(xiàn)連次高壓線圈信號,因此通過測量兩次高壓脈沖的時間間隔,就可以計算出發(fā)動機(jī)的轉(zhuǎn)速。轉(zhuǎn)速數(shù)值經(jīng)軟件轉(zhuǎn)換成顯示碼由顯示電路處理后顯示出來。 LPC2134與OCM12864接口電路如圖4所示。

  

LPC2134與OCM12864接口電路圖

 

  圖4 LPC2134與OCM12864接口電路圖

  軟件設(shè)計中,主程序?qū)︽I盤子程序進(jìn)行掃描,如有鍵被按下,LPC2134微處理器相應(yīng)的端口電壓就會被拉低,單片機(jī)的功能就對端口進(jìn)行定位,判斷是哪個端口被拉低,并計算建值,從而轉(zhuǎn)向執(zhí)行不同功能的子程序,并刷新顯示器的顯示內(nèi)容。鍵盤電路

 

  硬件電路中,按鍵一端接上拉4.7kΩ電阻接ARM輸入,另一端接地,如圖5所示。

  

鍵盤電路

 

  圖5 鍵盤電路

  利用鍵盤掃描法,首先判斷有無鍵按下。為此,設(shè)置微處理器端口由高電平變成低電平,表明有鍵按下;若微處理器端口為高電平,則表明無鍵按下。圖中,KEY1按下顯示高壓線圈波形信號,KEY2按下顯示低壓線圈波形信號,KEY3按下顯示發(fā)動機(jī)速度,KEY4按下則打開背光。

  汽車發(fā)動機(jī)檢測裝置軟件程序

  本系統(tǒng)軟件主要的任務(wù)是:主程序掃描鍵盤,當(dāng)有鍵按下,判斷鍵值轉(zhuǎn)向,執(zhí)行不同的功能程序模塊,同時進(jìn)行相應(yīng)測量,并通過LCD點(diǎn)陣顯示器顯示相應(yīng)的測量信息。

  主程序由脈沖檢測子程序、鍵盤子程序、定時中斷子程序、速度計算子程序和顯示子程序等組成。如圖6所示。

  

嵌入式汽車發(fā)動機(jī)檢測裝置程序框圖

 

  圖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;

  }

  /*-寫點(diǎn)陣-*/

  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:頁大小,一頁八個點(diǎn)

  {

  //yl: 列大小,一列一個點(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個字符

  for(i=0;i

  wr_lcd (dat,chn[a+i]);

  }

  }

  }

  }

  結(jié)語

  本系統(tǒng)以目前廣泛應(yīng)用的LPC2134 ARM為控制處理核心,以感應(yīng)高壓線圈和低壓線圈作為ARM的輸入信號,用OCM12864的點(diǎn)陣作為儀器的顯示,使該裝置可以有效完成對汽車發(fā)動機(jī)的的精確測量。它可以將發(fā)動機(jī)動態(tài)運(yùn)行的各種參數(shù)和故障檢測診斷出來,然后通過維修、調(diào)整以達(dá)到修復(fù)發(fā)動機(jī)的目的。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。