第一章 倒車雷達工作原理
1.1、單片機的發展及其應用
單片機又稱微控制器,是在一塊矽片上內建了各種部件化微型計算機,這些部件包括中央處理器CPU、資料存貯器RAM、程式存貯器ROM、定時器/計數器和多種I/O接口電路。單片機體積小、重量輕、具有很強的靈活性而且價格不高,越來越得到廣泛的應用。8051在小中型應用場合很常見,已成為單片機領域的實際标準。80年代中期,Intel公司将8051核心使用權以專利互換或出售形式轉給世界許多著名IC制造廠商,如PHILIPS、西門子、AMD、OKI、NEC、Atmel等,這樣8051就變成有衆多制造廠商支援的、發展出上百個品種的大家族。90年代,PHILIPS推出支援16位計算的X4系列。XA系列是16位單片機,又可完全相容8051的指令系統。Intel推出的80C51也是與8051在機器代碼級相容,這樣保證了8051使用者到21世紀技術的領先性。随着硬體的發展,8051軟體工具已有C級編譯器及實時多任務作業系統(RIOS),單片機的程式設計更簡單、更可靠、實時性更強。因而8051系列是單片機教學的首選機型。而有内部可擦寫RAM的89C51/52是目前我們常用的晶片。
1.2超音波測距
1.2.1 超音波測距的基本原理
1、超音波發生器
為了研究和利用超音波,人們已經設計和制成了許多超音波發生器。總體上講,超音波發生器可以分為兩大類:一類是用電氣方式産生超音波,一類是用機械方式産生超音波。電氣方式包括壓電型、磁緻伸縮型和電動型等;機械方式有加爾統笛、液哨和氣流旋笛等。它們所産生的超音波的頻率、功率和聲波特性各不相同,因而用途也各不相同。目前較為常用的是壓電式超音波發生器。2、壓電式超音波發生器原理
壓電式超音波發生器實際上是利用壓電晶體的諧振來工作的。超音波發生器内部結構如圖1所示,它有兩個壓電晶片和一個共振闆。當它的兩極外加脈沖信号,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片将會發生共振,并帶動共振闆振動,便産生超音波。反之,如果兩電極間未外加電壓,當共振闆接收到超音波時,将壓電壓電晶片作振動,将機械能轉換為電信号,這時它就成為超音波接收器了。1.3超音波測距原理
超音波發射器向某一方向發射超音波,在發射時刻的同時開始計時,超音波在空氣中傳播,途中碰到障礙物就立即傳回來,超音波接收器收到反射波就立即停止計時。超音波在空氣中的傳播速度為340m/s,根據計時器記錄的時間t,就可以計算出發射點距障礙物的距離(s),即:s=340t/2
1.3.1認識超音波
超音波是指振動頻率大于20KHz以上的,其每秒的振動次數(頻率)甚高,超出了人耳聽覺的上限(20000Hz),人們将這種聽不見的聲波叫做超音波。超聲和可聞聲本質上是一緻的,它們的共同點都是一種機械振動,通常以縱波的方
式在彈性媒體内會傳播,是一種能量的傳播形式,其不同點是超聲頻率高,波長短,在一定距離内沿直線傳播具有良好的束射性和方向性,目前腹部超聲成像所用的頻率範圍在 2∽5MHz之間,常用為3∽3.5MHz(每秒振動1次為1Hz,1MHz=106Hz,即每秒振動100萬次,可聞波的頻率在16-20,000HZ 之間)。
1.3.2 利用超音波測距
超音波測距是單片機控制超音波傳感器發射出超音波束,遇到障礙後傳回,然後接收它的回波,利用發、收過程中産生的時間差,就可以計算出前方物體離超音波傳感器的實際距離。設計為了能測量汽車不同位置障礙物距離,設計成多傳感器測距。經分析可知:頻率為400KHZ左右的超音波在空氣中傳播的效率最佳,是以,為了友善處理,發射的超音波被調制成40KHZ左右、具有一定間隔的調制脈沖波信号,如圖1所示。
1.4超音波倒車雷達系統工作原理
倒車雷達隻需要在汽車倒車時工作,為駕駛員提供汽車後方的資訊。由于倒車時汽車的行駛速度較慢,和聲速相比可以認為汽車是靜止的,是以在系統中可以忽略多普勒效應的影響。在許多測距方法中,脈沖測距法隻需要測量超音波在測量點與目标間的往返時間,實作簡單,是以本系統采用了這種方法。
1.4.1 系統工作原理框圖
如圖A所示,駕駛員将搖桿轉到倒車檔後,系統自動啟動,超音波發送向後發射40kHz的超音波,經障礙物反射,由超音波接收子產品收集,進行放大和比較,AT89C2051将此信号送入顯示子產品,同時觸發語音電路,發出同步語音提示,當與障礙物距離小于1m、0.5m、0.25m時,發出不同的報警聲,提醒駕駛員停車。
圖A 系統工作原理框圖
1.5超音波倒車雷達的晶片選擇
1單片機控制晶片
AT89C2051簡介:
AT89C2051是一個低電壓,高性能CMOS 8位單片機,片内含2k bytes的可反複擦寫的隻讀Flash程式存儲器和128 bytes的随機存取資料存儲器(RAM),器件采用ATMEL公司的高密度、非易失性存儲技術生産,相容标準MCS-51指令系統,片内置通用8位中央處理器和Flash存儲單元,功能強大AT89C2051單片機可為您提供許多高成本效益的應用場合。 AT89C2051是一個功能強大的單片機,但它隻有20個引腳,15個雙向輸入/輸出(I/O)端口,其中P1是一個完整的8位雙向I/O口,兩個外中斷口,兩個16位可程式設計定時計數器,兩個全雙向串行通信口,一個模拟比較放大器。同時AT89C2051的時鐘頻率可以為零,即具備可用軟體設定的睡眠省電功能,系統的喚醒方式有RAM、定時/計數器、串行口和外中斷口,系統喚醒後即進入繼續工作狀态。省電模式中,片内RAM将被當機,時鐘停止振蕩,所有功能停止工作,直至系統被硬體複位方可繼續運作。
主要功能特性:
1.6 超音波倒車雷達的工作原理
倒車雷達隻需要在汽車倒車時工作,為駕駛員提供汽車後方的資訊。由于倒車時汽車的行駛速度較慢,和聲速相比可以認為汽車是靜止的,是以在系統中可以忽略多普勒效應的影響。在許多測距方法中,脈沖測距法隻需要測量超音波在測量點與目标間的往返時間,實作簡單,是以本系統采用了這種方法。
如圖A所示,駕駛員将搖桿轉到倒車檔後,系統自動啟動,超音波發送向後發射40kHz的超音波,經障礙物反射,由超音波接收子產品收集,進行放大和比較,AT89C2051将此信号送入顯示子產品,同時觸發語音電路,發出同步語音提示,當與障礙物距離小于1m、0.5m、0.25m時,發出不同的報警聲,提醒駕駛員停車。
圖A 系統工作原理框圖
第二章 系統硬體設計與相應的軟體設計
2.1倒車語音及報警電路及控制程式
單片機采用89S51 或其相容系列。采用12MHz 高精度的晶振,以獲得較穩定的時鐘頻率,減小測量誤差。單片機用P1.0 端口輸出超音波轉化器所需的40KHz 方波信号,利用外中斷0 口檢測超音波接受電路輸出的傳回信号。顯示電路采用簡單實用的4 位共陽LED 數位管,段碼用74LS245 驅動,位碼用PNP9012 三極管驅動。單片機系統及顯示電路如下圖所示:
2.2 超音波發射電路與接收電路及其距離測算程式
發射電路主要由反向器74LS04和超音波發射換能器T構成,單片機P1. 0端口輸出的40 kHz防抖信号一路經一級反向器後送到超音波換能器的一個電極,另一路經兩級反向器後進到超音波換能器的另一個電極。用這種推挽形式将防抖信号加到超音波換能器兩端,可以提高超音波的發射強度。輸出端采用兩個反向器并聯,用以提高驅動能力。上拉電阻R10、R11,一方面可以提高反向器74LS04輸出高電平的驅動能力,另一方面可以增加超聲換能器的阻尼效果,縮短其自由振蕩的時間。
壓電超音波轉換器的功能:利用壓電晶體諧振工作。内部結構上圖所示,它有兩個壓電晶片和一個共振闆。當它的兩極外加脈沖信号,其頻率等于壓電晶片的固有振蕩頻率時,壓電晶片将會發生共振,并帶動共振闆振動産生超音波,這時它就是一超音波發生器;如沒加電壓,當共振闆接受到超音波時,将壓電壓電振蕩器作振動,将機械能轉換為電信号,這時它就成為超音波接受轉換器。超音波發射轉換器與接受轉換器其結構稍有不同。
2.3超音波檢測接受電路
參考紅外轉化接收期刊的電路采用內建電路CX20106 J4,這是一款紅外線檢波接收的專用晶片,常用于電視機紅外遙控接收器。考慮到紅外遙控常用的載波頻率38KHz 與測距超音波頻率40KHz 較為接近,可以利用它作為超音波檢測電路。實驗證明其具有很高的靈敏度和較強的抗幹擾能力。适當改變C4 的大小,可改變接受電路的靈敏度和抗幹擾能力。
2.4 超音波測距儀的算法設計
下圖示意了超音波測距的原理
即超音波發生器T在某一時刻發出一個超音波信号,當這個超音波遇到被測物體後反射回來,就被超音波接收器R所接收到。這樣隻要計算出從發出超音波信号到接收到傳回信号所用的時間,就可算出超音波發生器與反射物體的距離。
距離的計算公式為:d=s/2=(c×t)/2
其中d為被測物與測距器的距離,s為聲波的來回的路程,c為聲速,t為聲波來回所用的時間。
2.5距離計算程式:
*************************************************** 距離計算程式 (=計數值*17/1000cm) ***************************************************
work: PUSH ACC
PUSH PSW
PUSH B
MOV PSW, #18h
MOV R3, 45H
MOV R2, 44H
MOV R1, #00D
MOV R0, #17D
LCALL MUL2BY2
MOV R3, #03H
MOV R2, #0E8H
LCALL DIV4BY2
LCALL DIV4BY2
MOV 40H, R4
MOV A,40H
JNZ JJ0
MOV 40H,#0AH ;最高位為零,不點亮
JJ0: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #100D
LCALL DIV4BY2
MOV 41H, R4
MOV A,41H
JNZ JJ1
MOV A,40H ;次高位為0,先看最高位是否為不亮
SUBB A,#0AH
JNZ JJ1
MOV 41H,#0AH ;最高位不亮,次高位也不亮
JJ1: MOV A, R0
MOV R4, A
MOV A, R1
MOV R5, A
MOV R3, #00D
MOV R2, #10D
LCALL DIV4BY2
MOV 42H, R4
MOV A,42H
JNZ JJ2
MOV A,41H;次次高位為0,先看次高位是否為不亮
SUBB A,#0AH
JNZ JJ2
MOV 42H,#0AH ;次高位不亮,次次高位也不亮
JJ2: MOV 43H, R0
POP B
POP PSW
POP ACC
RET
****************************************************
* 兩位元組無符号數乘法程式 *
****************************************************
R7R6R5R4 <= R3R2 * R1R0
MUL2BY2: CLR A
MOV R7, A
MOV R6, A
MOV R5, A
MOV R4, A
MOV 46H, #10H
MULLOOP1: CLR C
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
JNC MULLOOP2
MOV A, R4
ADD A, R2
MOV R4, A
MOV A, R5
ADDC A, R3
MOV R5, A
MOV A, R6
ADDC A, #00H
MOV R6, A
MOV A, R7
ADDC A, #00H
MOV R7, A
MULLOOP2: DJNZ 46H, MULLOOP1
RET
****************************************************
* 四位元組/兩位元組無符号數除法程式 *
****************************************************
R7R6R5R4/R3R2=R7R6R5R4(商)...R1R0(餘數)
DIV4BY2: MOV 46H, #20H
MOV R0, #00H
MOV R1, #00H
DIVLOOP1: MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
MOV A, R0
RLC A
MOV R0, A
MOV A, R1
RLC A
MOV R1, A
CLR C
MOV A, R0
SUBB A, R2
MOV B, A
MOV A, R1
SUBB A, R3
JC DIVLOOP2
MOV R0, B
MOV R1, A
DIVLOOP2: CPL C
DJNZ 46H, DIVLOOP1
MOV A, R4
RLC A
MOV R4, A
MOV A, R5
RLC A
MOV R5, A
MOV A, R6
RLC A
MOV R6, A
MOV A, R7
RLC A
MOV R7, A
RET
delay_250: push psw
push 07h
mov r7,#0ffh
delay_250_1:
nop
nop
nop
nop
djnz r7,delay_250_1
pop 07h
pop psw
ret
END
2.6倒車語音電路和報警電路及其控制程式
SC1060是本公司最新開發應用于倒車雷達等的新型語音晶片,外圍元件少,電路簡單,控制友善,成本低.
引腳功能
注:NC腳懸空不接.
電路原理圖
外接功放應用電路
2.6.2倒車語音及報警控制程式
報警裝置是用單片機控制脈沖,在一定的距離讓發光二極管發光,來作為報警信号,提示具體位置。
1.聲光報警: mm0: MOV A,43h;
cjne A,#00h,nn1
mm1: MOV A,42h;
cjne A,#00h,qq1
ajmp mm2
qq1:cjne a,#05h,nn1
mm2: MOV A,41h;
cjne A,#01h,qq2
lcall BJ1
qq2:cjne a,#02h,nn1
lcall bj1
nn1: setb et0
mov th0,00h
mov tl0,00h
SETB TR1 ;重新開啟測距定時器
SETB EA
SJMP Start1
BJ1: clr p1.6 ;40KHZ
lcall DELAY20MS
lcall DELAY20MS
lcall DELAY20MS
lcall DELAY20MS
lcall DELAY20MS
setb p1.6
RET
其他的硬體電路
複位開關電路
第三章 主程式
主程式首先是對系統環境初始化,設定定時器TO工作模式為16位定時計數器模式,置位總中斷允許位EA并給顯示端口PO和P2清O。然後調用超音波發生子程式送出一個超音波脈沖,為了避免超音波從發射器直接傳送到接收器引起的直射度觸發,需要延時約0. l ms(這也就是超音波測距器會有一個最小可測距離的原因)後,才打開外中斷0接收傳回的超音波信号。由于采用的是12MHz的晶振,計數器每計一個數就是1μs,當主程式檢測到接收成功的标志位後,将計數器T0中的數(即超音波來回所用的時間)按式(4-2)計算,即可得被測物體與測距器之間的距離,設計時取20℃時的聲速為344m/s(不同溫度下超音波産波速率不同)則有:
D=(c×t)/2=172TO/10 000 cm (4-2)
其中TO為計數器T0的計數值。
測出距離後結果将以十進制BCD碼方式送往LED顯示約0.5 s,然後再發超音波脈沖重複測量過程。為了有利于程式結構化和容易計算出距離,主程式采用c語言編寫。下圖為主程式流程圖。
主程式流程圖
3.1主程式如下:
********************************************
* 主 程 序 *
********************************************
START: MOV SP,#4FH
MOV R0,#40H ;40H-43H為顯示資料存放單元(40H為最高位)
MOV R7,#0BH
CLEARDISP: MOV @R0,#00H
INC R0
DJNZ R7,CLEARDISP
MOV 20H,#00H
MOV TMOD,#11H ;T1為 T0為16位定時器
MOV TH0,#00H ;65毫秒初值
MOV TL0,#00H
MOV TH1,#00H
MOV TL1,#00H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV P3,#0FFH
MOV R4,#04H ;超音波防沖個數控制(為指派的一半)
SETB PX0
SETB ET1
SETB EA
SETB TR1 ;開啟測距定時器
start1: LCALL DISPLAY
JNB 00H,START1 ;收到反射信号時标志位為1
CLR EA
LCALL WORK ;計算距離子程式
clr EA
MOV R2,#32h;#64H ;測量間隔控制(約4*100=400MS)
LOOP: LCALL DISPLAY
DJNZ R2,LOOP
CLR 00H
setb et0
mov th0,00h
mov tl0,00h
SETB TR1 ;重新開啟測距定時器
SETB EA
SJMP Start1
3.2超音波發生子程式和超音波接收中斷程式
超音波發生子程式的作用是通過P1 O端口發送2個左右超音波脈沖信号(頻率約40kHz的方波),脈沖寬度為12μs左右,同時把計數器T0打開進行計時。超音波發生的程式較簡單,但要求程式運作時間準确,是以采用彙編語言程式設計。下圖所示流程圖,
超音波測距器主程式利用外中斷O檢測傳回超音波信号,一旦接收到傳回超音波信号(即INT0引腳出現低電平),立即進入中斷程式。進入該中斷後就立即關閉計時器T0停止計時,并将測距成功标志字指派1。
如果當計時器溢出時還未檢測到超音波傳回信号,則定時器T0溢出中斷将外中斷0關閉,并将測距成功标志宇指派2以表示本次測距不成功。
程式如下:
超音波測距器
; IC :AT89C51
; OSCCAL :XT (12M)
; display :共陽LED顯示
;測距範圍0.4CM-4M,堆棧在4FH以上,20H用于标志
;顯示緩沖單元在40H-43H,使用記憶體44H、45H、46H用于計算距離
VOUT EQU P1.0 ; 紅外脈沖輸出端
speakequp1.1
********************************************
* 中斷入口程式 *
********************************************
ORG 0000H
LJMP START
ORG 0003H
LJMP PINT0
ORG 000BH
reti
ORG 0013H
RETI
ORG 001BH
LJMP INTT1
ORG 0023H
RETI
ORG 002BH
RETI
***************************************************
* 中斷程式* *
****************************************************
;T1中斷,發超音波用
;T1中斷,65毫秒中斷一次
INTT1: CLR EA
CLR TR0
clr ex0
MOV TH0,#00H
MOV TL0,#00H
MOV TH1,#00H
MOV TL1,#00H
SETB ET0
SETB EA
SETB TR0 ;啟動計數器T0,用以計
intt11:CPL VOUT ;40KHZ
nop
nop
nop
nop
nop
nop
nop
nop
nop
DJNZ R4,intt11 ;超音波發送完畢,
MOV R4,#04H
lcall delay_250 ;延時,避開發射的直達聲波信号
SETB EX0 ;開啟接收回波中斷
RETIOUT: RETI;外中斷0,收到回波時進入
PINT0: nop
jb p3.2,pint0_exit
CLR TR0 ;關計數器
CLR EA ;
CLR EX0 ;
MOV 44H,TL0 ;将計數值移入處理單元
MOV 45H,TH0 ;
mov th0,#00h
mov tl0,#00h
job p3.2,$
SETB 00H ;接收成功标志
pint0_exit:RETI
安裝調試及分析
4.1 硬體部分
由于本項目規模較大,時間緊張、加之我們經驗不足,我們的第一套方案不順利,CAD設計制版後組裝的實驗闆沒能調出正确結果,也沒有資金和時間再做一塊闆。我們采用了第二套備用方案,根據自己原有的電路圖通過專業技術員的改動做成了一塊闆子,這樣性能比較穩定,我們通過軟體程式設計和調試完成了設計課題要求的任務及系統要求的功能。
一個系統要良好運作,就需每一個子產品或每一個部分都要調試正确。它可以進行單獨調試,将程式下載下傳入89S52晶片,将所測距離顯示在數位管上。采用數位管顯示的是障礙物到超音波探頭的距離.可以很直覺地顯示出距離的大小.與實際調試時完全相符,效果良好,直覺且精确,符合标準。
超音波測距儀的制作和調試,其中超音波發射和接收采用Φ15 的超音波換能器TCT40-10F1(T 發射)和TCT40-10S1(R 接收),中心頻率為40kHz,安裝時應保持兩換能器中心軸線平行并相距4~8cm,其餘元件無特殊要求。若将超音波接收電路用金屬殼屏蔽起來,則可提高抗幹擾能力。根據測量範圍要求不同,可适當調整與接收換能器并接的濾波電容C4 的大小,以獲得合适的接收靈敏度和抗幹擾能力。
這個闆不管前面有無遮擋物總是顯示27,這是因為标有T字樣的超音波接收頭沒有收到正确的回波資訊導緻工作異常引起的,我們發現接收頭比較嬌嫩,輕微的磕碰就會導緻内部器件錯位影響正常工作,但是隻要稍稍旋轉或者上下撥動一下接收頭,很多情況就會排除故障又能正常工作了。最小檢測距離為27厘米,是為了防止超音波發射傳感器發出超音波沿電路闆或者外殼直接進入超音波接收傳感器内引起誤判斷,是以程式要求超音波發射若幹時間後必須停止若幹時間,這個時間大約是超音波在空氣中傳播20多厘米的時間,這段時間内是不接受信号的,主要就是為了躲開直接傳導的信号避免引起誤判斷。
附電路的PCB圖
實物圖
4.2 軟體實作與操作
系統軟體的整體結構各子產品在前面已介紹。先在WAVE下編完程式,然後編譯好通過後,生成目标檔案十二和十六進制,燒錄到89S52片子中時,先下載下傳監控程式加上我們編譯好的十六進制程式,再寫入晶片中即可調試,通過不斷修改完善,最終很好地實作了我們的目标。
根據實際情況可以修改超音波發生子程式每次發送的脈沖寬度和兩次測量的間隔時間,以适應不同距離的測量需要。根據所設計的電路參數和程式,測距儀能測的範圍為27cm-400cm,測距儀最大誤差不超過3cm。系統調試完後應對測量誤差和重複一緻性進行多次實驗分析,不斷優化系統使其達到實際使用的測量要求。
測距儀改進的設想
電路闆上包括超音波收發傳感器、接收放大電路、四位LED數位顯示、四位按鍵(四個按鈕和蜂鳴器屬于功能預留,程式中無定義),電源部分自帶整流、濾波、穩壓電路,允許交流7~15V或者直流9~16V輸入。語音子產品為後期制作,沒有在原來電路闆上展現。電路闆上有四個按鈕和蜂鳴器沒有用,這是為後續開發應用所預留的,我們可以在程式中定義為開關功能,按下一個按鍵,電路闆開始測距、按下另一個按鍵電路闆停止測距,或者定義為多檔距離報警設定,當檢測到低于設定距離時,驅動蜂鳴器報警。其我們的電路闆也可以再加以改進,例如用1602的液晶子產品代替數位管顯示、增加語音電路實作語音播報探測距離,溫度控制等等。但是這些程式比較複雜,最主要的改進是溫度控制,由于受環境溫度、濕度的影響,超聲傳感器的測量值與實際值總有一些誤差,溫度測量的精度不僅直接影響了速度的測量精度,而且也間接影響距離的測量精度,是以溫度的測量很關鍵。我們測量的結果與實際誤差是3cm。由于超音波也是一種聲波,其聲速c與溫度有關,下表列出了幾種不同溫度下的超音波聲速。在使用時,如果溫度變化不大,則可認為聲速是基本不變的。如果測距精度要求很高,則應通過溫度補償的方法加以校正。聲速确定後,隻要測得超音波往返的時間,即可求得距離。