肖玉芝
(1.青海師范大學(xué) 計(jì)算機(jī)學(xué)院,青海 西寧 810008;2.陜西師范大學(xué) 計(jì)算機(jī)科學(xué)學(xué)院,陜西 西安 710000)
電子自旋共振現(xiàn)象被發(fā)現(xiàn)于本世紀(jì)四十年代后期,經(jīng)過(guò)幾十年的研究發(fā)展,它與核磁共振,鐵磁共振,光泵磁共振等形成了一個(gè)新的學(xué)科——磁共振波譜學(xué)。作為一項(xiàng)實(shí)用技術(shù),它在化學(xué)、物理、生物和醫(yī)學(xué)等方面獲得了廣泛的應(yīng)用,近年來(lái),與計(jì)算機(jī)技術(shù)結(jié)合,為人類(lèi)作出了巨大的貢獻(xiàn)。
文中涉及的是普通高校近代物理實(shí)驗(yàn)-電子自旋共振實(shí)驗(yàn)[1],在實(shí)驗(yàn)中要求觀察電子自旋共振現(xiàn)象,觀察順磁離子對(duì)共振信號(hào)的影響,測(cè)量DPPH(自由基二苯基三硝基苯肼)中電子的g因子(hv=gJμBB),并利用電子自旋共振測(cè)量地球磁場(chǎng)的垂直和水平分量。其中準(zhǔn)確的獲得這些實(shí)驗(yàn)數(shù)據(jù)是非常重要的,文中提出利用PC機(jī)與嵌入式單片機(jī)通信傳輸數(shù)據(jù),并且將采集到的數(shù)據(jù)繪制成可視化的共振譜線圖,通過(guò)讀取共振譜線的坐標(biāo)值來(lái)獲得實(shí)驗(yàn)所需要的數(shù)據(jù),同時(shí)將實(shí)驗(yàn)數(shù)據(jù)生成實(shí)驗(yàn)報(bào)告。大大提高了實(shí)驗(yàn)的精度和自動(dòng)化。
智能電子自旋共振儀優(yōu)越于傳統(tǒng)的電子自旋共振儀[2-3],它用單片機(jī)系統(tǒng)來(lái)判斷共振點(diǎn),用亥姆霍茲線圈取代傳統(tǒng)的螺線管線圈來(lái)測(cè)量磁場(chǎng)強(qiáng)度B0,測(cè)量準(zhǔn)確、便捷。
為了觀測(cè)到共振現(xiàn)象,需要使用一個(gè)高頻探頭,其振蕩線圈為被測(cè)物DPPH提供能級(jí)躍遷所需的能量(hυ),當(dāng)產(chǎn)生共振時(shí),振蕩器的能量被樣品吸收,振蕩幅度會(huì)發(fā)生變化,該變化經(jīng)過(guò)檢波和低頻放大后輸出,即可在外接示波器或PC機(jī)上觀察到共振峰(亦稱(chēng)為共振譜線)。儀器前端采用邊緣振蕩器來(lái)探測(cè)共振信號(hào),信號(hào)經(jīng)檢波放大后送波形變換模塊,產(chǎn)生CMOS電平的信號(hào)脈沖,然后送往微處理器的I/O口,由軟件來(lái)計(jì)算矩形脈沖的寬度,當(dāng)峰信號(hào)出現(xiàn)等間距時(shí),相鄰脈沖的寬度相等,此時(shí)即判定B0已調(diào)準(zhǔn)并給出讀取數(shù)據(jù)的指示,同時(shí)將該數(shù)據(jù)放入內(nèi)存。
實(shí)驗(yàn)儀器中嵌入了AT89C52單片機(jī)(下位機(jī)),負(fù)責(zé)數(shù)據(jù)采集、處理和控制。PC監(jiān)控機(jī)(上位機(jī))進(jìn)行現(xiàn)場(chǎng)可視化檢測(cè),它們之間采取主從串行通信方式。PC機(jī)上的串行通信通過(guò)端口RS232的RTS信號(hào)進(jìn)行二進(jìn)制數(shù)據(jù)的收發(fā)轉(zhuǎn)換與傳輸。下位機(jī)中串行數(shù)據(jù)從TXD引腳按規(guī)定的波特率輸出,接收數(shù)據(jù)時(shí)監(jiān)視RXD引腳,一旦出現(xiàn)“0”位,按規(guī)定的波特率將外圍設(shè)備送來(lái)的數(shù)據(jù)存儲(chǔ)[4]。但是,在8051單片機(jī)的內(nèi)部有一個(gè)全雙工的異步串行I/O口,它的輸入和輸出使用5 V邏輯而不是RS-232電壓,所以連接時(shí)用MAX485專(zhuān)用芯片進(jìn)行轉(zhuǎn)換。如圖1所示單片機(jī)與外設(shè)串口通信原理圖。
圖1 單片機(jī)與外設(shè)串口通信原理圖Fig.1 Communication principle between SCM and peripherals serial interface
2.2.1 通信協(xié)議
本系統(tǒng)串行通信采用異步通信方式。協(xié)議如下:
1)一幀數(shù)據(jù)由1位起始位、8位數(shù)據(jù)位、無(wú)奇偶校驗(yàn)位、1位停止位共10位組成。
2)波特率設(shè)為2 400 bps。單片機(jī)串行口按方式1工作,波特率由定時(shí)器T1控制。
PC機(jī)串口波特率通過(guò)VB通訊控件的Settings屬性設(shè)置,為保證數(shù)據(jù)傳送的準(zhǔn)確性,兩者的波特率必須一致。
2.2.2 下位機(jī)通信及程序設(shè)計(jì)
單片機(jī)可以采用中斷方式或查詢(xún)RI(接受中斷標(biāo)志位)或TI(發(fā)送中斷標(biāo)志位)方式進(jìn)行數(shù)據(jù)通信[5]。本系統(tǒng)采用查詢(xún)方式,在定時(shí)器T2中斷子程序中查詢(xún) RI,一旦檢測(cè)到RI=1則轉(zhuǎn)入接受數(shù)據(jù)子程序,在子程序中單片機(jī)讀取從上位機(jī)發(fā)送的通信指令、讀取記錄個(gè)數(shù)等數(shù)據(jù),經(jīng)校驗(yàn)正確后,即從ATC256存儲(chǔ)器中將歷史記錄數(shù)據(jù)上傳給PC機(jī)。
Uchar comReceive(void)
{while(RI==0) //表示未接收,需等待
RI=0;//接收完后清除換下一數(shù)據(jù)
Return(SBUF)
2.2.3 上位機(jī)通信及程序設(shè)計(jì)
上位機(jī)利用Visual Basic8.0編程。用VB8.0開(kāi)發(fā)串行通信程序有2種方法,一種是利用Windows的API函數(shù);另一種是采用VB8.0的通信控件MSComm。利用API函數(shù)編寫(xiě)串行通信程序較為復(fù)雜,需要掌握大量的通信知識(shí),其優(yōu)點(diǎn)是可實(shí)現(xiàn)的功能更豐富、應(yīng)用面更廣泛,適合于編寫(xiě)較為復(fù)雜的低層次通信程序。而VB8.0的MSComm通信控件提供了標(biāo)準(zhǔn)的事件處理函數(shù)、事件、方法,并通過(guò)控件屬性對(duì)串口參數(shù)進(jìn)行設(shè)置,比較容易地解決了串口通信問(wèn)題[6]。
本系統(tǒng)采用事件驅(qū)動(dòng)方式進(jìn)行串口通信設(shè)計(jì)。
該實(shí)驗(yàn)接收從單片機(jī)發(fā)來(lái)的電流值等數(shù)據(jù),并賦予數(shù)組。部分代碼如下:
Private Sub MSComm1_OnComm()'通信
…
Select Case MSComm1.CommEvent
Case comEvReceive
inbyte=MSComm1.Input
For i=LBound(inbyte) To UBound(inbyte)
If Len(Hex(inbyte(i))) =2 Then
Data_text=Data_text&Hex(inbyte(i))
Text1.Text=Text1.Text&Hex(inbyte(i)) & “ ” ’+Chr(32)
至此,該實(shí)驗(yàn)系統(tǒng)中數(shù)據(jù)的采集工作就完成了,下一步將把采集的數(shù)據(jù)可視化監(jiān)控,利用上位機(jī)完成實(shí)驗(yàn)中磁場(chǎng),g因子等各種計(jì)算。
從單片機(jī)采集到的數(shù)據(jù)傳送到PC機(jī)的存儲(chǔ)數(shù)組中,然后將每組數(shù)據(jù)繪制成共振譜線,并且通過(guò)讀取共振譜線的坐標(biāo)值來(lái)獲得實(shí)驗(yàn)數(shù)據(jù)。在VB中實(shí)時(shí)曲線的繪制一般借助于Timer控件來(lái)完成[7],使用Timer控件,定期將智能電子自旋共振儀中監(jiān)測(cè)到的數(shù)據(jù)送往pic_main,而曲線的繪制一般畫(huà)成折線圖,采用PictureBox1的Line方法繪制。用Line方法可以在窗體或圖片框上繪制一條直線或繪制一個(gè)矩形。
Line方法的一般格式:
[對(duì)象名.]Line (x1,y1)- (x2,y2) [,顏色]
其中,(x1,y1)為始點(diǎn)坐標(biāo);(x2,y2)為終點(diǎn)坐標(biāo);顏色可以使用RGB函數(shù),規(guī)定畫(huà)線或畫(huà)矩形的顏色。部分代碼如下:
Private Sub draw_line()
…
For i=1 To UBound(ValueArray)-1
next_x=XX* (i)
next_y =pic_main.ScaleHeight -ValueArray (i)/pic_max_y*pic_main.ScaleHeight
pic_main.Line (cur_x, cur_y)-(next_x, next_y)
cur_x=next_x
cur_y=next_y
Next
…
End Sub
本系統(tǒng)實(shí)驗(yàn)結(jié)束后,電子自旋共振實(shí)驗(yàn)報(bào)告由系統(tǒng)自動(dòng)生成一張WORD文檔。避免了傳統(tǒng)的手工輸入時(shí)產(chǎn)生的誤差。實(shí)驗(yàn)報(bào)告的信息內(nèi)容:姓名、標(biāo)題、表格、圖表、日期、實(shí)驗(yàn)計(jì)算及測(cè)量結(jié)果等。
Documents集合包含所有打開(kāi)的文檔。要新建一篇文檔,可使用Add方法將一個(gè)Document對(duì)象添至Documents集合[8]。
新建文檔的方法之一是使用Add方法。Add方法將返回Document對(duì)象,該對(duì)象引用新文檔。
Private Sub bcjg_Click()
Dim wrdapp As Word.Application
Set wrdapp=New Word.Application
With wrdapp'Show Word
…
End Sub
接下來(lái),向空文檔中添加文本,這將使用Paragraphs集合對(duì)象來(lái)完成此項(xiàng)工作。以下代碼向文檔某處添加一個(gè)段落并設(shè)置本段落格式:
Private Sub bcjg_Click()
Dim wrdapp As Word.Application
Set wrdapp=New Word.Application
With wrdapp'Show Word
.Visible=True
.Documents.Add
.ActiveDocument.Paragraphs (wrdapp.ActiveDocument.Paragraphs.count).Alignment=wdAlignParagraphCenter
.ActiveDocument.Paragraphs (wrdapp.ActiveDocument.Paragraphs.count).Range.Font.Bold=True
…
.ActiveDocument.Content.Text= “電子自旋共振實(shí)驗(yàn)報(bào)告”&vbTab&“”&vbCr
End With
End Sub
電子自旋共振實(shí)驗(yàn)系統(tǒng)中生成的WORD文檔除了基本信息外還包含一些表格信息,表格信息部分代碼如下:
Private Sub bcjg_Click()
Dim R As Word.Range
Dim mt As Word.Table ‘生成表格
Set R=wrdapp.ActiveDocument.Range(0, 0)
Setmt= wrdapp.ActiveDocument.Tables.Add(wrdapp.ActiveDocument.Paragraphs(27).Range, 6, 4)
…
End Sub
由于智能電子自旋共振儀器嵌入了單片機(jī)系統(tǒng),許多數(shù)據(jù)的采集由計(jì)算機(jī)自動(dòng)完成,大大提高了實(shí)驗(yàn)效率,實(shí)驗(yàn)誤差極小。通過(guò)嵌入式單片機(jī)與PC機(jī)間的通信實(shí)現(xiàn)數(shù)據(jù)的傳輸,在PC機(jī)上直觀的刻畫(huà)出實(shí)驗(yàn)的共振譜線圖,如圖2(共振譜線)所示,圖中第1個(gè)波峰值和第3個(gè)波峰值相同,此時(shí)取坐標(biāo)C0和C1的值,計(jì)算g因子和磁場(chǎng)等數(shù)值。同時(shí)自動(dòng)生成實(shí)驗(yàn)文檔進(jìn)行保存或打印,如圖3(實(shí)驗(yàn)報(bào)告)所示。
圖2 共振譜線Fig.2 Resonance spectrum line
圖3 實(shí)驗(yàn)報(bào)告Fig.3 Experiment report
利用Visual Basic的事件驅(qū)動(dòng)方式可以很方便地開(kāi)發(fā)智能電子自旋共振儀的數(shù)據(jù)采集與監(jiān)控系統(tǒng),此系統(tǒng)利用PC機(jī)強(qiáng)大的監(jiān)控和管理功能,通過(guò)監(jiān)控機(jī)與嵌入式單片機(jī)進(jìn)行通信,實(shí)時(shí)獲取實(shí)驗(yàn)數(shù)據(jù)。同時(shí)通過(guò)鼠標(biāo)讀取共振譜線圖的坐標(biāo)值來(lái)獲得實(shí)驗(yàn)中磁場(chǎng)計(jì)算、g因子計(jì)算等各種計(jì)算所需的數(shù)據(jù),避免了手工添加時(shí)的誤差。并且生成了圖文并茂的實(shí)驗(yàn)報(bào)告,同時(shí)該系統(tǒng)模型也可以被應(yīng)用到磁場(chǎng)共振波譜學(xué)的其他領(lǐng)域。
[1]戴道宜,戴樂(lè)山.近代物理實(shí)驗(yàn)[M].2版.北京:高等教育出版社,2004.
[2]陳學(xué)煌,馬俊,牟化建.電子自旋共振儀中嵌入單片機(jī)測(cè)控系統(tǒng)的設(shè)計(jì)[J].傳感器與微系統(tǒng),2005(12):70-76.CHEN Xue-huang,MA Jun,MOU Hua-jian.Design of single chip processor measurement and control system embedded in esr apparatus[J].Transducer and Microsystem Technologies,2005(12):61-63.
[3]張華.現(xiàn)代有機(jī)波譜分析[M].北京:化學(xué)工業(yè)出版社,2005.
[4]喻萍.單片機(jī)原理與接口技術(shù)[M].2版.北京:化學(xué)工業(yè)出版社,2006.
[5]孫煥銘,等.51單片機(jī)C程序應(yīng)用實(shí)例詳解[M].北京:北京航空航天大學(xué)出版社,2011.
[6]Willys.VISUAL BASIC2010入門(mén)經(jīng)典[M].6版.吳偉敏,等,譯.北京:電子工業(yè)出版社,2008.
[7]李蘭,李瑋.VISUAL BASIC.NET圖形圖像編程與實(shí)例詳解[M].2版.北京:電子工業(yè)出版社,2006.
[8]Willis T,Newsome B.VISUAL BASIC 2008入門(mén)經(jīng)典 [M].5版.徐燕華,譯.北京:清華大學(xué)出版社,2009.