基于單片機(jī)及CPLD的B超檢測(cè)工裝設(shè)計(jì)
圖3中,U25(MAX038)是函數(shù)發(fā)生器產(chǎn)生芯片,其3腳A0、4腳A1是輸出波形選擇端,輸出波形的選擇由邏輯地址引腳A0和A1的組合來決定:A1A0=10或11時(shí),輸出正弦波;A1A0=00時(shí),輸出方波;A1A0=01時(shí)輸出三角波。波形切換可在0.3μs內(nèi)完成,但輸出波形有0.5μs的延遲時(shí)間。MAX038的19腳是波形輸出端,本設(shè)計(jì)輸出正弦波,頻率為3.5MHz,幅度P-P 在1V左右。此正弦波通過雙刀雙擲開關(guān)S2(此時(shí)應(yīng)該撥到接收位置),在微處理器AT89S52的控制下,給出SDATA3, SCLK3, SLD3,RESET3串行控制信號(hào),控制U12~U20,將此正弦波切換到(96選1)探頭上,即PA0~PA95分別得到此正弦波,通過轉(zhuǎn)接線JP5、JP6、JP7送到AFE9624板。根據(jù)轉(zhuǎn)接線JP5、JP6、JP7接到該探頭,和微處理器用繼電器控制其工作。正弦波經(jīng)過12個(gè)高壓開關(guān)HV20220(和發(fā)射時(shí)是同一組高壓開關(guān)),經(jīng)過發(fā)射、接收隔離電路得到接收信號(hào)(這里是我們工裝給出的正弦波),再通過AFE9624板上的前放電路放大,通過工裝上轉(zhuǎn)接線JP3、JP4送到圖2中發(fā)射工裝上的U3~U5的IP001~IP024端和U6~U8的IN001~IN024端。同樣在微處理器AT89S52的控制下,高壓開關(guān)輪流導(dǎo)通,此時(shí)高壓開關(guān)的另一端IP和IN得到正弦波,經(jīng)過雙刀雙擲開關(guān)S1(S1此時(shí)需撥到接收位置)。在J1接雙蹤示波器就能看到差分的2個(gè)正弦波。三極管Q5發(fā)射極輸出TGC增益控制信號(hào),通過轉(zhuǎn)接線JP10送到AFE9624板上的前放電路的增益控制端,控制接收信號(hào)的幅度。
圖3 發(fā)射、接收工裝設(shè)計(jì)電路中接收部分原理圖
軟件設(shè)計(jì)
本工裝使用CPLD產(chǎn)生發(fā)射波形,使用微處理器AT89S52控制整個(gè)工裝板,還給要測(cè)試的B超板(AFE9624)提供繼電器和高壓開關(guān)的切換指令。
發(fā)射波形的產(chǎn)生
周期20ms、脈寬330ns、帶660ns死區(qū)時(shí)間的2個(gè)方向相反的脈沖信號(hào),是用Verilog HDL語(yǔ)言編寫,由EPM7064的21腳和25腳輸出。源碼如下:
module pwm(clock,pwm_out,pwm_out1);
input clock;
output pwm_out;
output pwm_out1;
reg [20:0] count;
reg pwm_reg;
reg pwm_reg1;
always @ (posedge clock)
begin
count=count+1;
if (count4) //330ns脈寬
begin
pwm_reg=1;
pwm_reg1=1;
end
else if (count12)//660ns死區(qū)時(shí)間
begin
pwm_reg=0;
pwm_reg1=1;
end
else if(count21apos;d16) //330ns負(fù)脈沖
begin
pwm_reg=0;
pwm_reg1=0;
end
else if(count==21apos;d240000)//12M晶振,12000000/240000=50Hz,即20毫秒
begin
ount=21apos;d000000;
pwm_reg=1;
pwm_reg1=1;
end
else
begin
pwm_reg=0;
pwm_reg1=1;
end
end
assign pwm_out=pwm_reg;
assign pwm_out1=pwm_reg1;
endmodule
微處理器AT89S52控制代碼
評(píng)論