基于智能电子自旋共振仪的信号测量与监控系统
2012-01-15肖玉芝
肖玉芝
(1.青海师范大学 计算机学院,青海 西宁 810008;2.陕西师范大学 计算机科学学院,陕西 西安 710000)
电子自旋共振现象被发现于本世纪四十年代后期,经过几十年的研究发展,它与核磁共振,铁磁共振,光泵磁共振等形成了一个新的学科——磁共振波谱学。作为一项实用技术,它在化学、物理、生物和医学等方面获得了广泛的应用,近年来,与计算机技术结合,为人类作出了巨大的贡献。
文中涉及的是普通高校近代物理实验-电子自旋共振实验[1],在实验中要求观察电子自旋共振现象,观察顺磁离子对共振信号的影响,测量DPPH(自由基二苯基三硝基苯肼)中电子的g因子(hv=gJμBB),并利用电子自旋共振测量地球磁场的垂直和水平分量。其中准确的获得这些实验数据是非常重要的,文中提出利用PC机与嵌入式单片机通信传输数据,并且将采集到的数据绘制成可视化的共振谱线图,通过读取共振谱线的坐标值来获得实验所需要的数据,同时将实验数据生成实验报告。大大提高了实验的精度和自动化。
1 智能电子自旋共振仪
智能电子自旋共振仪优越于传统的电子自旋共振仪[2-3],它用单片机系统来判断共振点,用亥姆霍兹线圈取代传统的螺线管线圈来测量磁场强度B0,测量准确、便捷。
为了观测到共振现象,需要使用一个高频探头,其振荡线圈为被测物DPPH提供能级跃迁所需的能量(hυ),当产生共振时,振荡器的能量被样品吸收,振荡幅度会发生变化,该变化经过检波和低频放大后输出,即可在外接示波器或PC机上观察到共振峰(亦称为共振谱线)。仪器前端采用边缘振荡器来探测共振信号,信号经检波放大后送波形变换模块,产生CMOS电平的信号脉冲,然后送往微处理器的I/O口,由软件来计算矩形脉冲的宽度,当峰信号出现等间距时,相邻脉冲的宽度相等,此时即判定B0已调准并给出读取数据的指示,同时将该数据放入内存。
2 信号测量
2.1 通信原理
实验仪器中嵌入了AT89C52单片机(下位机),负责数据采集、处理和控制。PC监控机(上位机)进行现场可视化检测,它们之间采取主从串行通信方式。PC机上的串行通信通过端口RS232的RTS信号进行二进制数据的收发转换与传输。下位机中串行数据从TXD引脚按规定的波特率输出,接收数据时监视RXD引脚,一旦出现“0”位,按规定的波特率将外围设备送来的数据存储[4]。但是,在8051单片机的内部有一个全双工的异步串行I/O口,它的输入和输出使用5 V逻辑而不是RS-232电压,所以连接时用MAX485专用芯片进行转换。如图1所示单片机与外设串口通信原理图。
图1 单片机与外设串口通信原理图Fig.1 Communication principle between SCM and peripherals serial interface
2.2 数据通信程序设计
2.2.1 通信协议
本系统串行通信采用异步通信方式。协议如下:
1)一帧数据由1位起始位、8位数据位、无奇偶校验位、1位停止位共10位组成。
2)波特率设为2 400 bps。单片机串行口按方式1工作,波特率由定时器T1控制。
PC机串口波特率通过VB通讯控件的Settings属性设置,为保证数据传送的准确性,两者的波特率必须一致。
2.2.2 下位机通信及程序设计
单片机可以采用中断方式或查询RI(接受中断标志位)或TI(发送中断标志位)方式进行数据通信[5]。本系统采用查询方式,在定时器T2中断子程序中查询 RI,一旦检测到RI=1则转入接受数据子程序,在子程序中单片机读取从上位机发送的通信指令、读取记录个数等数据,经校验正确后,即从ATC256存储器中将历史记录数据上传给PC机。
Uchar comReceive(void)
{while(RI==0) //表示未接收,需等待
RI=0;//接收完后清除换下一数据
Return(SBUF)
2.2.3 上位机通信及程序设计
上位机利用Visual Basic8.0编程。用VB8.0开发串行通信程序有2种方法,一种是利用Windows的API函数;另一种是采用VB8.0的通信控件MSComm。利用API函数编写串行通信程序较为复杂,需要掌握大量的通信知识,其优点是可实现的功能更丰富、应用面更广泛,适合于编写较为复杂的低层次通信程序。而VB8.0的MSComm通信控件提供了标准的事件处理函数、事件、方法,并通过控件属性对串口参数进行设置,比较容易地解决了串口通信问题[6]。
本系统采用事件驱动方式进行串口通信设计。
该实验接收从单片机发来的电流值等数据,并赋予数组。部分代码如下:
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)
至此,该实验系统中数据的采集工作就完成了,下一步将把采集的数据可视化监控,利用上位机完成实验中磁场,g因子等各种计算。
3 信号监控
从单片机采集到的数据传送到PC机的存储数组中,然后将每组数据绘制成共振谱线,并且通过读取共振谱线的坐标值来获得实验数据。在VB中实时曲线的绘制一般借助于Timer控件来完成[7],使用Timer控件,定期将智能电子自旋共振仪中监测到的数据送往pic_main,而曲线的绘制一般画成折线图,采用PictureBox1的Line方法绘制。用Line方法可以在窗体或图片框上绘制一条直线或绘制一个矩形。
Line方法的一般格式:
[对象名.]Line (x1,y1)- (x2,y2) [,颜色]
其中,(x1,y1)为始点坐标;(x2,y2)为终点坐标;颜色可以使用RGB函数,规定画线或画矩形的颜色。部分代码如下:
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
4 实验报告的生成
本系统实验结束后,电子自旋共振实验报告由系统自动生成一张WORD文档。避免了传统的手工输入时产生的误差。实验报告的信息内容:姓名、标题、表格、图表、日期、实验计算及测量结果等。
4.1 新建文档
Documents集合包含所有打开的文档。要新建一篇文档,可使用Add方法将一个Document对象添至Documents集合[8]。
新建文档的方法之一是使用Add方法。Add方法将返回Document对象,该对象引用新文档。
Private Sub bcjg_Click()
Dim wrdapp As Word.Application
Set wrdapp=New Word.Application
With wrdapp'Show Word
…
End Sub
4.2 添加文本
接下来,向空文档中添加文本,这将使用Paragraphs集合对象来完成此项工作。以下代码向文档某处添加一个段落并设置本段落格式:
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= “电子自旋共振实验报告”&vbTab&“”&vbCr
End With
End Sub
电子自旋共振实验系统中生成的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
5 实验结果
由于智能电子自旋共振仪器嵌入了单片机系统,许多数据的采集由计算机自动完成,大大提高了实验效率,实验误差极小。通过嵌入式单片机与PC机间的通信实现数据的传输,在PC机上直观的刻画出实验的共振谱线图,如图2(共振谱线)所示,图中第1个波峰值和第3个波峰值相同,此时取坐标C0和C1的值,计算g因子和磁场等数值。同时自动生成实验文档进行保存或打印,如图3(实验报告)所示。
6 结束语
图2 共振谱线Fig.2 Resonance spectrum line
图3 实验报告Fig.3 Experiment report
利用Visual Basic的事件驱动方式可以很方便地开发智能电子自旋共振仪的数据采集与监控系统,此系统利用PC机强大的监控和管理功能,通过监控机与嵌入式单片机进行通信,实时获取实验数据。同时通过鼠标读取共振谱线图的坐标值来获得实验中磁场计算、g因子计算等各种计算所需的数据,避免了手工添加时的误差。并且生成了图文并茂的实验报告,同时该系统模型也可以被应用到磁场共振波谱学的其他领域。
[1]戴道宜,戴乐山.近代物理实验[M].2版.北京:高等教育出版社,2004.
[2]陈学煌,马俊,牟化建.电子自旋共振仪中嵌入单片机测控系统的设计[J].传感器与微系统,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]张华.现代有机波谱分析[M].北京:化学工业出版社,2005.
[4]喻萍.单片机原理与接口技术[M].2版.北京:化学工业出版社,2006.
[5]孙焕铭,等.51单片机C程序应用实例详解[M].北京:北京航空航天大学出版社,2011.
[6]Willys.VISUAL BASIC2010入门经典[M].6版.吴伟敏,等,译.北京:电子工业出版社,2008.
[7]李兰,李玮.VISUAL BASIC.NET图形图像编程与实例详解[M].2版.北京:电子工业出版社,2006.
[8]Willis T,Newsome B.VISUAL BASIC 2008入门经典 [M].5版.徐燕华,译.北京:清华大学出版社,2009.