磁场扫描仪
马凯;谌辰睿;张恒康
1 设计概述
1.1 设计目的
磁场测量是研究物质特性、探索未知世界的有效手段之一,广泛应用于 水下通信、空间磁场探测、地质勘探等军事和民用领域[1]。本作品是为了设计实现出一款快速低功耗小型化的磁场扫描仪,通过扫描的方式来得到该区域的磁场测量图像,为后续的探测或检测提供磁场图像数据。
1.2 应用领域
本磁场扫描仪得到的图像可以运用于地下磁性小目标的检测[2],也可以运用于无损缺陷检测领域,目前已经有研究应用于核电站蒸汽发生器换热管检测[3]、油气井套管变形段位置及缺陷检测[4]、铝板的裂纹检测[5, 6]等。
1.3 主要技术特点
(1) 自主设计制作了基于 HMC1001 的磁传感器;
(2) 基于磁阵列传感器扫描成像;
(3) Adc 采集精度为 24 位,采集速度最大可达 256KSPS;
(4) 自主设计了 AD7768 配置和接收的 IP 核;
(5) 自主设计了 256 位采集数据传输 DDR 存储的 IP 核;
(6) SD 卡存储数据,为了以后的验证成像的准确性和进一步的处理做准备。
1.4 关键性能指标
(1) 磁传感器的检测精度;
(2) 阵列传感器每个传感器之间的间隔距离要小于 5cm;
(3) 采集精度要大于 16 位;
(4) 采集所有磁场数据所用时间要小于 2 分钟;
(5) 算法的运行时间小于 1 分钟;
1.5 主要创新点
(1) 自主设计的基于 HMC1001 芯片的磁场传感器;
(2) 基于 8 个 HMC1001 磁场传感器组成的传感阵列来扫描得到区域磁场数据;
(3) 8 路的磁场数据用 FPGA 同步,高速采集;
(4) 磁场图像的复原算法与实现;
(5) 扫描后的生成的磁场图像实时在 LCD 屏幕上实时显示出来,磁场强度大小以不同的颜色进行标明,更直观。
2 系统组成及功能说明
2.1 整体介绍
我们设计的是一款磁场扫描仪,工作原理图如图 1 所示,Zynq7010 芯片来控制传动装置运动,传动装置带动阵列磁传感器来扫描下方区域的磁场情况,然后通过 AD7768 芯片来把磁阵列传感传输的电压模拟值转换成数字信号数据传输给 zynq7010。Zynq7010 来接收和处理采集到的磁场数据,当扫描完一个区域后把这片区域的磁场情况显示在 lcd 液晶屏上并把数据存储到 SD 卡中。
2.2 各模块介绍
根据总体系统框图,整个系统是主要由这几个模块组成:磁阵列传感器模块、 AD7768 数模转换模块、zynq7010是系统的控制和数据处理模块、lcd 显示模块, 传动模块。下面就针对这几个模块做具体的设计说明。
2.2.1 磁阵列传感器
这部分是使用 8 个磁传感器并排排放组成并排阵列分布,每个磁传感器是由 自主设计并制做,实物图如图 3 所示,是基于 HMC1001 芯片并设计了后面的信 号处理电路。HMC1001 芯片由内置 4 个磁阻组成惠斯顿电桥[7]如图 2 所示,当 外部磁场平行于传感器内部电流所形成的磁场时,传感器内部电阻值不发生变化; 当外部磁场与内部磁化方向不一致时,电阻值大小发生变化。
磁传感器信号处理电路的工作原理如图 4 所示,磁场强度信号经过 HMC1001 芯片转换成电压信号,然后经过放大电路把 HMC1001 芯片传输的微小电压信号放大,再经过放大且消除自激震荡后反馈给 HMC1001 芯片来消除环境磁场的干扰,最后再经过滤波输出。
2.2.2 AD7768 数模转换模块
模/数转换器(ADC) 的作用是将在时域和幅值上都连续变化的模拟信号转换为时域上离散、幅值上量化的等效数字信号。当分辨率很高(16bit 以上)时, 由于前端需要设置抗混叠滤波器、采样/保持电路,增加了采集系统的复杂度, 使得传统的奈奎斯特速率 ADC 的测量精度受限;而 模/数转换采用过采样技术,对输入的模拟信号以高于奈奎斯特频率若干倍的频率进行采样,随后进行低比特量化,再将这种高采样率、低分辨率的数字信号经数字抽取滤波器进行 抽取滤波,最终获得以奈奎斯特采样频率输出的高分辨率数字信号。AD7768 芯 片是 AD 公司生产的 24 位
型 ADC 芯片,AD7768 芯片工作原理图如图5所示,采集的数据首先经过
模/数采样,然后经过数字滤波器来消除转换 过程中注入的一些噪声。相较与其他 ADC 芯片,AD7768 芯片具有 8 个通道的 差分同步采样输入接口和 8 个同步输出接口,同时每个通道的采样速率高达 256 KSPS.
2.2.3 传动模块
传动模块的工作原理图如图 6 所示,光电门负责给 zynq7010 传输位置信息, Zynq7010 负责传送控制信号来控制电机的转速和运动,控制信号要经过 3.3V 转 5V 模块把电压升为 5V,因为步进电机驱动器的信号驱动要求电压达到 5V。步进电机驱动器如图 7 所示,负责接收控制信号,根据控制信号来控制步进电机,步进电机带动丝杆滑台运动。
2.2.4 zynq7010 模块
Zynq7010 用的是黑金的开发板,如图 8 所示,该开发板采用的是 xilinx 公司的 zynq7010.芯片,有 4G 的高速 DDR3 作为数据的存储,同时提供了管脚丰富的扩展口。我们设计实现的功能有:配置 AD7768,接收、转换、传输和存储 AD7768 传输的数据,数据的处理,数据的算法拟合,数据转换成彩色图像传输给 lcd 显示。
(1) 配置 AD7768
根据 AD7768 手册,AD7768 配置采用的是 SPI 接口,使用的是帧外协议, 即第一帧为命令,第二帧为响应,波形如图 9 所示。本设计就是根据该波形在 PL 端设计实现 zynq7010 来配置 AD7768 采集模式。
(2) 接收 AD7768 数据
AD7768 传输的数据时序图如图 10 所示,本设计的接收 AD7768 数据就是根据该波形接收并转换成 256 位的数据,然后经过 FIFO 和 DMA 传输到 DDR 中 存储。
(3) 拟合算法
拟合算法的作用是把采集的 8*1024 的数据扩展为 600*1024 的数据用于 lcd 显示,该拟合算法使用的双线性插值,又称为双线性内插。在数学上,双线性插值是有两个变量的插值函数的线性插值扩展,其核心思想是在两个方向分别进行一次线性插值。双线性插值作为数值分析中的一种插值算法,广泛应用在信号处 理,数字图像和视频处理等方面。
如图 11,已知Q12 ,Q22 ,Q11,Q21,但是要插值的点为 P 点,这就要用双线性插值了,首先在 x 轴方向上,对 R1 和 R2 两个点进行插值,然后根据 R1 和 R2 对P 点进行插值,这就是所谓的双线性插值。
假设已知四个点的坐标为 Q11(x1,y1),Q12(x1,y2),Q21(x2,y1),Q22(x2,y2)。 首先在 x 轴方向进行插值得到:
然后在 y 方向进行线性插值,得到:
即插值公式可以化简为:
(4) LCD 显示
LCD 显示模块:使用了 VDMAIP 核,功能为将处理后的像素数据从 DDR 缓存帧取出发送给 Video Out IP 核,Video Out IP 核再配合 VTC IP 核(负责产生 LCD 屏幕时序)将流数据重新组织成 RGB 格式的数据,发送给 rgb2lcd IP 核, rgb2lcd IP 核将像素数据和时序数据发送给 LCD 屏幕,最终在屏幕上显示出画面。
3 完成情况及性能参数
(1) 目前完成了 6 个磁传感器组成的阵列扫描,如图 12 所示。
(2) 数模转换精度位数为 24 位,最大转换输出速率为 256KSPS。
(3) 采集和数据处理运行时间为:106179581us
(4) 对 6*1024 个 double 类型数据插值为 600*1024 个数据所用时间为:2.534s。
(5) 采集的数据转换为 rgb 数据用时:0.16s。
(6) LCD 屏幕刷新率可达 60FPS,实验显示情况如图 13:
图 13 是做实验最后在 LCD 显示的情况,图 14 是用 MATLAB 根据 SD 卡中存储的数据做的插值和显示图像。这两个图像对比可以看出本系统做的图像差值和显示是正确的。
4 总结
4.1 可扩展之处
目前整个程序都是在裸机下运行,后面可以加上 Linux 操作系统,在操作系 统下运行程序,好处:可使用 OpenCV 等库函数对图像做精细化处理;操作系统 下对于数据的处理方式更多,效果更好。还可以用上深度学习技术根据得到的磁 场图来检测和定位扫描的管道缺陷位置和类型[4]。