基于Pcap01的数据采集系统及图像重建毕业论文.doc_第1页
基于Pcap01的数据采集系统及图像重建毕业论文.doc_第2页
基于Pcap01的数据采集系统及图像重建毕业论文.doc_第3页
基于Pcap01的数据采集系统及图像重建毕业论文.doc_第4页
基于Pcap01的数据采集系统及图像重建毕业论文.doc_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于Pcap01的数据采集系统及图像重建毕业论文目 录摘 要IAbstractII第1章 绪论1 1.1 ECT系统研究意义和背景11.2 ECT技术原理分析及系统组成21.3 研究内容及主要工作3第2章 设计思想及方案42.1数据采集技术难点和问题42.2 传统测量方法52.3 系统整体方案7第3章 数据采集系统的硬件设计93.1电容传感器93.1.1 测量原理93.1.2 Pcap01芯片的主要特点93.1.3 Pcap01的工作模式103.1.4 Pcap01的连接123.2主控电路133.3矩阵开关153.4显示电路163.4.1液晶介绍163.5 元件间的通讯173.5.1 Pcap01与STM32的通讯173.5.2液晶与STM32的通讯18第4章 数据采集系统的软件设计204.1系统总体设计204.2电容传感器模块214.2.1电容传感器的配置214.2.2 I2C配置234.3矩阵开关模块244.4显示模块254.4.1 SPI配置254.4.2 液晶控制流程27第5章 系统调试285.1系统硬件调试285.2系统软件调试30第6章 ECT技术图像重建算法32 6.1 线性反投影LBP算法326.2 迭代算法34第7章 结论36参 考 文 献37致 谢39附 录40附录1部分程序代码40附录2 原理图45II 第1章 绪论1.1 ECT系统研究意义和背景 在当今社会现代科技迅猛发展的浪潮中,数据采集系统占据了一支主流,它有着可采用电气量和非电气量的双重优势,以其强大的通用性得到了迅速的发展。在20世纪80年代中期,发展起了一种具有良好工业前景的层析成像技术-电容层析成像技术(ECT)。ECT技术应用范围十分的广泛,它可以对多相流的参数进行检测,还可以检测多相流的流动过程,ECT技术与其他技术相比优势也十分明显,它在结构简单成本比较低的条件下仍然能够实现可视化。 ECT系统主要的组成部分为传感系统,数据采集系统和图像重建系统。CDC电容数字转换器技术作为ECT技术的一部分也逐步成为了主流,应用也越来越广,在医疗工业汽车等领域中也得到了广泛的应用,比如飞机场火车站的安检仪等都用到了该技术。但一般需求较大的是那些功耗低,成本低,可以提供多元化人机工程设计的电容测量元件及数字转化系统。 PT技术是利用传感器来检测管道或者容器内部的变化,可以获得管道容器内部不同角度的投影信息,从而为密闭管道内部状态变化的检测研究提供了准确的数据,很直观。因此PT检测技术成为了十分有前途的发展方向。目前PT技术的研究可以包括硬场检测和软场检测两类。硬场检测的特点是敏感场与介质分布无关,例如光学PT、微波PT等;软场检测的特点是敏感场会受到介质分布的影响,如电学PT。在应用中,应该根据不同的需求及现场环境采用不同的PT技术,各种PT技术有着不同的特点。如下表1-1所示为常见PT技术特点。 表1-1 常见PT技术特点传感机理特性敏感参数结构分辨率测量光学干涉、散渉复杂高相位,幅度超声反射、衰减简单中 低衰减量,反射时间X,射线衰减复杂高线性线积分电容介电常数简单低非线性面体ECT电容层析成像技术的原理是根据多相流中,各个分相的介质的介电常数是不同的,当多相流改变时,电容值会随着介电常数发生变化,因此多相流各相浓度的分布情况就可以用电容值的改变反映出来。所以,利用电容传感器,用过多相流的浓度可以反映出电容值,利用多个极板所得到的多组电容数据,就可以显示出多相流体浓度的分情况,劲儿利用图像重建的算法将电容值的变化投影出来,就可以得到被测区域内部多相流的介质分布情况。1.2 ECT技术原理分析及系统组成电容层析成像技术(Electrical Capacitance Tomography,简称ECT),是分布在管道或容器外壁的极板作为传感器,当混合流体流过发生变化时,极板感的介电常数就会发生变化,从而引起各个极板对间电容变化。ECT技术的原理就是感应管道,通过一定的电容测量方法测量极板对间电容值及变化量,得到管道或容器各个角度的投影数据,再利反投影,Landweber等重建算法,获得管道或容器内部的较为准确的可视化及量化信息。ECT系统主要由三部分组成1。电容传感器,电容数据采集系统和上位机。如图1-1所示。图像重建计算机电极电子元件外壁竖起管道传感系统图像重建图形显示数据采集系统图1-1 ECT系统组成传感器由均匀分布在管道外壁的极板阵列组成,极板间电容变化,反应管道内部填充物变化引起的介电常数变化。数据采集系统主要通过一定的电容测量电路,测得并采集各极板对间微小电容变化。上位PC机,与下位机进行通讯,读取电容值,并通过图像重建算法,获得管道内部实时图像以及相关参数信息。1.3 研究内容及主要工作 本文以STM32为控制核心,设计一种基于Pcap01的ECT数据采集系统,完成电容采集电路和主控芯片的控制电路的硬件设计,通过C语言编程,完成主控芯片对外围芯片的控制和驱动,从而完成整个系统的设计。此外,本文还对ECT系统中成像系统的图像重建算法稍作分析,以LBP算法和迭代算法两种常用的图像重建算法为主。第2章 设计思想及方案2.1数据采集技术难点和问题ECT技术存在的难点有:(1)被测电容微小造成测量难度大,对测量电路灵敏度,抗干扰能力提出了很高的要求。(2)ECT技术本身的软场特性,给图像重建带来了难度。而本设计ECT数据采集系统,主要是解决问题是电容测量的问题。ECT数据采集系统的核心是对极板间电容的测量。极板间电容值通常很小,本体电容大约在0.01pF0.5pF左右,电容变化量更小,大概只有0.005pf0.08pf左右,而杂散电容和耦合电容等测量干扰因素却很大,可以达到几十到上百皮法,这就对微小电容检测电路提出了很高的要求。要求电路具备以下特征8:(1) 较高的测量灵敏度和精度。因为极板输出电容非常微小,管道内介质变化引起的微小电容变化更小,要感应微小敏感量,要求电容检测电路有较高的灵敏度和测量精度。(2) 大的动态测量范围。相邻极板和相对极板之间电容有较大差距,而对于三维电容传感器9,不同极板对间电容值差异会更大。因此,为了适应不同数量级之间的变化,得到准确的电容数据,数据采集系统要求具备足够的动态测量范围。(3) 很强的杂散电容抑制能力。ECT系统存在的电容,除了极板间电容以外,也附加了一定大小的杂散电容10。这些杂散电容包括极板与屏蔽罩之间的电容,极板选择模拟开关耦合电容(约8PF)以及连接极板与检测电路之间芯线与屏蔽罩和地之间电容。以上杂散电容高达150PF,影响测量结果精度。因此要求数据采集系统有一定的杂散电容抑制能力。(4) 较好的实时性。工业管道内部两相或多相流运动速度往往很高,为了适应管道内部流体速度,保证图像重建速度,较为真实反应管道内部信息,满足实际需要。(5) 低漂移因为待测电容微小,为保证数据采集系统长期稳定工作,要求系统具备低漂移的特性,以免漂移量覆盖测量值。(6) 线性度好要求整个数据采集系统有较强的抗干扰能力,并能保证不同数量级信号处理能力的一致性。2.2 传统测量方法传统的电容检测方法多由分立元件实现,常用的检测方法有18:谐振法、震荡法、充放电法、交流电桥法。这些方法构成的检测电路一般有充放电电容测量电路,交流C/V电容检测电路,AC电桥电容测量电路,交流锁相放大电容测量电路14,基于电荷放大原理的电容测量电路。其中较为常用的是充放电测量电路和交流C/V电容检测。(1) 直流充放电检测直流充放电电路是一定时钟控制开关闭合,给待测充放电,输出与电容和频率成正比的电压。如图2-1所示的差动式直流充放电电路是典型应用。由频率f控制充放电周期,模拟开关S1,S4闭合,S2,S3断开,电路处于充电周期,在放电周期,S1,S4断开,经过分析运算得, 公式(2-1)式中K为差动放大器D3的放大倍数。a) 电路 b) 开关波形图2-1 差动式直充放电电路该电路CS1,CS2分别等效源极和检测极对地的杂散电容。CS1,CS2电容接地,流经该电容的电流不经过电路,因此差动式充放电电路有较好的杂散电容抑制能力。且电路结构简单,成本低,运行速度快。软件补偿后达到较好的稳定性。但有漂移量较大缺点,并存在注入问题。(2)交流C/V电容检测电路15交流C/V电容检测电路,如图2-2所示,由C/V转换电路,交流放大电路,相敏解调和低通滤波和AD转换等几部分构成。CfCf1CxAD转换低通滤波相敏解调Vs放大电路C/V转换电路 图2-2 C/V电容检测电路其中,交流C/V转换如图2-3所示。激励源Vs的作用与被测电容Cx,产生交流电流,通过Rf,Cf构成的放大电路,获得交流电压Vo。输出电压: 公式(2-2)当Rf足够大时,使得时,公式可化为 公式 (2-3)VoVs图2-3 交流C/V电路从公式2-3可得出,输出电压与被测电容成正比。该电容检测电路与上述直流充放电电路一样,也是通过Cs1,Cs2接地起到杂散电容抑制作用,电路分辨率和信噪比较高,漂移小。但是电路复杂,成本较高,工作频率受到限制16。被测电容值经过C/V转换,转化为电压值后,由放大电路放大该电压信号,在相敏解调电路中以信号发生器产生的信号作为参考信号,进行相关运算,剔除干扰、噪声,捕捉有用信号,再由滤波滤掉与被测电容无关的交流信号。此后输出结果通过A/D转换,转化为数字。2.3 系统整体方案 传统的测电容的方法本身具有很大的局限性,它们是分立元件,造成尺寸特别大,抗噪音等干扰条件的能力也很差,这些都不适用于工业生产,测量结果不准确就会导致图像重建的质量差,因此集成芯片电容检测电路得了了快速的发展。本文采用的是电容测量芯片是由德国ACAM公司研发的Pcap01,它是带有单片机处理单元的一款专门进行电容测量的数字转换芯片方案。这颗芯片测量范围覆盖了从几fF到几百nF,而且可以非常简单的通过 配置来满足各种不同应用的需求。 主控芯片采用了STM32系列。STM32系列的特点是高性能,低成本,低功耗。而且它还拥有ARM Cortex-M3內核处理器,可以同时对多个操作并行执行,加快了应用程序的执行速度。 图2-4为整体系统框图。Pcap01测量芯片CH446矩阵开关被测电容液晶显示STM32图2-4 整体系统框图如图2-4所示。本文所设计的系统,包括电容传感器,极板选择电路,液晶显示电路,及主控芯片STM32。本系统由STM32控制矩阵开关来选择被测的电容,通过I2C通讯来配置电容传感器,以及控制其工作,通过SPI通讯来控制液晶显示被测的电容值。22 第3章 数据采集系统的硬件设计3.1电容传感器对于电容传感器的测量来说,传统的电路方式有其无法克服的局限性。复杂的模拟电路设计,难以扩展的电容测量范围,都会给开发带来非常大的阻力。德国ACAM公司专利的PICOCAP测量原理则给电容测量提供了革命性的突破。在2011年推出了最新的带有内部DSP单片机的单芯片电容测量方案Pcap01, 这个芯片会使电容测量提高到一个前所未有的水平。3.1.1 测量原理PICOCAP 测量原理展示了对于电容测量的新的革命性的方式。在这个原理中,一个传感器的电容和一个参考电容被连接到同一个放电电阻,组成了一个Low-pass低通滤波。电容首先被充电到电源电压,然后通过电阻进行放电。而放电到一个可控制阈值电压的水平将会被芯片内部的非常高精度时间数字转换器TDC所记录下来11。这个测量过程将会在传感器和参考电容上重复交错进行,应用同样的电阻。计算的结果是测量的比值结果,是与电阻和比较器温度相关性有关。传感器和参考电容数值 的选择应该为统一范围来降低增益偏移。实践角度讲,对于被测电容没有大小的限制。传感器几乎可以从0fF到几十nf。PICOCAP同时也支持差动电容传 感器的测量带有内部的线性补偿12。3.1.2 Pcap01芯片的主要特点(1) 一颗芯片可以适合多种应用,测量灵活性非常高;低测量功耗,在10Hz最低仅2 A;测量精度最高达 22 位有效位, 4 aF rms 精度;测量频率可以最高达500 kHz。(2) 非常宽的电容测量范围, 从几 fF 到上百nF。(3) 超低增益和offset漂移。(4) 18 位高分辨率温度测量。(5) 48-位 DSP, 4k byte OTP, 4k byte SRAM。(6) 内部或者外部时钟振荡。(7) 最多可以支持6个IO口。(8) IIC, SPI, PWM, PDM 接口。(9) 宽的电源电压范围从2.1 V 到 3.6 V。(10) 宽操作温度范围( -40 C 到 +125C)。(11) QFN32 或者 QFN24 封装。内部结构原理图如图3-1所示:图3-1 Pcap01内部结构原理图3.1.3 Pcap01的工作模式Pcap01芯片提供了多种测量方式:(1)单一传感器,漂移模式如图3-2:原理图中的传感器部分:在任何可能的情况下,请连接为漂移模式,不要连接为接地模式。图3-2 单一传感器,漂移模式连接图(2) 单一传感器,接地模式如图3-3: 图3-3 单一传感器,接地模式连接图 本系统中使用的是单一传感器,漂移模式。3.1.4 Pcap01的连接Pcap01的接线图如图3-4所示:图3-4Pcap01的接线图如图3-8,Pcap01所需的外设非常少,仅需几个滤波电容(C1、C2、C3)即可。14引脚为OTP编程引脚,在普通操作中接下拉电阻然后接地。本系统使用的是QFN24封装,引脚少,使用更简便。15、17引脚为I2C通讯总线,18脚为I2C使能引脚,接高电平使能I2C通讯,接低电平使能SPI通讯。11脚可以作为中断引脚来使用,只需在配置寄存器配置一下。其他不用引脚可悬空。3.2主控电路主控芯片:STM32F103VCT6STM32F103x8和STM32F103xB 增强型系列使用高性能的ARM Cortex-M3 32位的RISC内核,工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K 字节的SRAM),丰富的增强I/O 端口和联接到两条APB总线的外设。所有型号的器件都包含2个12位的ADC、3个通用16位定时器和1个PWM定时器,还包含标准和先进的通信接口:多达2个I2C 接口和SPI接口、3个USART接口、一个USB接口和一个CAN接口。 STM32F103xx中等容量增强型系列产品供电电压为2.0V至3.6V,包含-40C 至+85C 温度范围和-40C 至+105C的扩展温度范围。一系列的省电模式保证低功耗应用的要求。芯片引脚图如图3-5所示:图3-5 STM32F103VCT6引脚图最小系统原理图如图3-6所示:图3-6 STM32最小系统板原理图3.3矩阵开关CH446是8x16矩阵模拟开关芯片。CH446包含128只模拟开关,分布于8x16信号通道矩阵的各个交叉点,每只模拟开关都可以独立的开启或者关闭,从而实现8x16信号通道的任意路由。如图3-7所示:图3-7 CH446结构图串行地址输入方式下的控制步骤:通过 DAT 引脚依次提供7位地址并用CS/CK引脚的7个上升沿移入CH446,通过DAT引脚提供数据、向STB 引脚提供一个高电平脉冲。主控芯片通过SPI总线连接CH446,SPI提供的一字节8位数据的位7将被CH446丢弃,SPI的位6到位0作为地址,单片机SPI的串行数据输出引脚连接DAT引脚提供开关数据,单片机使用一个独立引脚控制CH446的STB引脚。CH446通过串行方式与STM3通讯,其串行方式的接线图如图3-8所示:图3-8 CH446串行输入电路图3.4显示电路3.4.1液晶介绍在本系统中采用的是MzLH01-12864LED显示模块。MzLH01-12864为一块 128X64点阵的 LCD显示模组,模组自带两种字号的二级汉字库,并且自带基本绘图GUI 功能,包括画点、画直线、矩形、圆形等;此外还自带有两种字号的ASCII 码西文字库。模组上为串行SPI 接口,除电源和背光之外通讯仅需要连接一根从机选择线(SS)、一根时钟线(SCK )、一根数据线(SDA )以及一根 BUSY 线即可;接口简单、操作方便;与各种 MCU均可进行方便简单的接口操作。 3.5 元件间的通讯3.5.1 Pcap01与STM32的通讯Pcap01同时支持I2C和SPI两种通讯,在本文设计的系统中使用的是I2C通讯方式。STM32有内置的I2C接口,各个芯片间的I2C总线接口连接着微控制器和I2C总线,可以控制全部的I2C总线拥有疼的时序,协议,仲裁和定时。 I2C是PHILIPS公司推出的串行总线。目前很多器件上都已经配有了I2C总线的接口,都是通过I2C总线来实施控制,因此它的应用也是非常的广泛。I2C总线是一种具有自动寻址、高低速同步和仲裁等功能的高性能总线,能够实现完善的全双工数据传送,是各种总线中使用信号线最少的。I2C总线只有两根信号线:数据线SDA和时钟线SCL。所有进入I2C总线系统中的设备都带有I2C总线接口,符合I2C总线电气规范的特性,只需将I2C总线上所有节点的串行数据线SDA和时钟线SCL分别与总线的SDA和SCL相连即可。各节点供电可以不同,但须共地,另外SDA和SCL须分别接上拉电阻。数据线SDA和时钟线SCL都是双向传输线,平时均是处于高电平备用状态,只有当需要关闭I2C总线时,SCL线才会箝位在低电平。在I2C总线上,SDA的作用是传送有效数据,它上传送的每一位有效数据对应于SCL线上的一个时钟脉冲。因此,只有当SCL线上为高电平(SCL=1)时,SDA线上的数据信号才会有效(高电平表示1,低电平表示0);SCL线为低电平(SCL=0)时,SDA线上的数据信号就会无效。只有当SCL线为低电平(SCL=0)时,SDA线上的地平状态才允许发生变化。时序图如图3-9所示: 图3-9 I2C总线信号时序3.5.2液晶与STM32的通讯在本系统中,液晶与STM32的通讯方式是采用SPI通讯方式。SPI(Serial Peripheral Interface,串行外围设备接口)是由Motorola公司开发,它可以为微控制器和外围设备的通讯连接提供一个低成本且使用简介的接口。这种接口用途十分广泛,不仅可以用来连接存储器,转换器,时钟日历等,甚至还可以连接其他的处理器。SPI接口由于其应用范围广,因此支持这种接口的元器件的种类也十分丰富。 SPI主要使用4个信号:主机输出/从机输入(MOSI)、主机输入/主机输出(MISO)、串行SCLK或SCK和外设芯片(CS)。有些处理器有SPI接口专用的芯片选择,称为从机选择(SS)。 在SPI传输线连接的主机和外设中都存在着一个串行以为寄存器,首先主机向它的SPI串行寄存器内写入一个字节来完成一次传输。串行寄存器通过MOSI信号线将刚刚写入的字节传输给外设,与此同时,外设将自己内部的移位寄存器中的数据通过MISO信号线再返送回主机。这样就实现了两个寄存器将各自储存的内容进行交换。这里要说明一下,在外设中,读写操作是同步完成的,在主机的移位脉冲信号下,数据按位依次传输,高位在前地位在后,是一种全双工通讯模式,因此传输速度上要比I2C总线快,速度可以到到几百Mbps,是一个更有效的协议。如果仅仅只是进行写的操作的话,主机就只需要输出字节,可以忽略收到的字节;相反的,如果主机仅仅只是想读到外部设备上传输的字节,就必须发送一个空的字节来发起外设进行传输。如果主机希望一次传输多个字节和信息,就需要SPI外设中的芯片选择端在整个数据传输过程中保持低电平。 在第四章中我们会介绍STM32与液晶通讯时SPI的一些配置。 第4章 数据采集系统的软件设计4.1系统总体设计系统总体流程图如图4-1所示:图4-1 系统总体流程图首先,配置SPI、I2C、GPIO、RCC等外设,然后配置电容传感器,向其中下载标准固件,然后写入配置和参数寄存器。设置测量模式,选择测量通道,并开始测量,将测量结果显示到液晶上。再转换测量通道,再次测量并将结果显示出来。4.2电容传感器模块4.2.1电容传感器的配置该模块的软件流程图如图4-2所示:开始通讯测试下载标准固件设置配置和参数寄存器部分复位开始测量等待测量完成读出结果并显示 N Y N Y图4-2 测量电容流程图测量步骤:首先先通讯测试。这里用向内部SRAM中写入数据并读回。通过操作码 “Write to SRAM” 和 “Read SRAM”可以对于 SRAM进行任何读或者写的操作。24位操作码如表4-1所示:表4-1 Pcap01的24操作码命令Byte2Byte1 Byte0 写入SRAM 1001address data 读取SRAM 0001address data 通讯测试通过之后,需要下载固件。固件就是为已经写好的DSP程序,在标准固件中,只进行电容的测量,不进行特殊的数据处理,并将结果写入结果寄存器中。下载固件后,就是向配置和参数寄存器中写入相应的数值。在标准固件中提供了20个配置和参数寄存器以及12个读寄存器。其中配置寄存器直接设置了CDC、RDC、接口、时钟以及DSP,为寄存器0到寄存器10和寄存器20,参数寄存器设置了固件的数值,因此为特定固件,从Param0到Param8。在本系统中主要配置寄存器0,寄存器2到寄存器6,寄存器8到寄存器10和寄存器20。参数寄存器为特定固件所设置故不用配置。在对其他所有配置和参数寄存器设置完成后,最后向寄存器20的bit0位写1,表示开启运行模式。总体的配置和参数寄存器设置为:寄存器0:0x4200ff寄存器1:0x201022寄存器2:0x0f460b寄存器3:0x0d0064寄存器4:0x080000寄存器5:0x000000寄存器6:0x000040寄存器7:0x1f0000寄存器8:0x800030寄存器9:0xff000f寄存器10:0x180087寄存器20:0x000001 写入配置和参数寄存器时使用32位命令 表4-2 Pcap01的32位操作码命令 Byte3 Byte2 Byte1 Byte0 写配置 11Cf_Address Registry Parameter读结果 01Rs_Address Measurement Results or Measurement Results然后写入8位命令的部分复位之后写入开始测量命令。表4-3 Pcap01的8位操作码操作码作用 h88 上电复位。这个命令将会复位所有的状态。h8A “Initial” 或者 “partial” 复位,这个复位下SRAM内容和寄存器配置将不会改变。主要复位了重要的部分,比如 front-end 转换器和DSP数据处理部分。 h8C 开始一次电容测量。h84 终止write-to-OTP 的进程。h8E 开始一次温度测量。部分复位命令0x8A,开始测量命令为0x8C。在测量完成后发送32位命令读取结果寄存器,读寄存器的内容是完全由固件所制定的,寄存器1的值为C1/C0电容测量比率,无符号固定点数带有3位整数21位小数,0 到 7.9999精度 0.477 ppm。寄存器8为状态寄存器。bit23表示通信在测量当中发生,测量质量可能会因此下降,增加sequence time可以有帮助;bit22表示温度测量结束,根据所设置的模式,这一位还可以表示目前设备正在等待一个开始命令或者处罚下一次开始测量的条件;bit20显示在配置寄存器20中设置的RUNBIT的状态;bit16这是所有错误条件给出一个综合;bit13显示测量溢出或者CDC的其它错误;bit12-bit5显示在 CDC 端口有一个端口错误(可能电容太大);bit3显示测量溢出或者 RDC的其它错误。在测量开始后延时等待然后检测状态寄存器是否是0x100000,若处理错误继续等待,是则读取寄存器1的值,并将结果显示出来。4.2.2 I2C配置在STM32中有丰富的库函数来配置它所包含的外设,使使用更简便。首先配置IO口,I2C通讯共需两条线,即使用两个IO口,需要将其配置成漏极开路新的形式。在STM32中有着该外设对应的IO口故将其配置成复用模式输出速率大于400k即可,故其配置函数为GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD; GPIO_Init(GPIOB, &GPIO_InitStructure);I2C的配置函数为:I2C_InitTypeDef I2C_InitStructure;I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;I2C_InitStructure.I2C_DutyCycle= I2C_DutyCycle_2;I2C_InitStructure.I2C_OwnAddress1 =0x30;I2C_InitStructure.I2C_Ack =I2C_Ack_Enable;I2C_InitStructure.I2C_AcknowledgedAddress= I2C_AcknowledgedAddress_7bit;I2C_InitStructure.I2C_ClockSpeed = 100000 ;I2C_Cmd(I2C1, ENABLE);I2C_Init(I2C1, &I2C_InitStructure);I2C_AcknowledgeConfig(I2C1, ENABLE);首先I2C的模式选择可选I2C模式,SMBus模式,在本系统中设置为I2C模式,设置时钟占空比和主机地址。设置I2C应答使能,设置I2C应答7位地址,设置I2C时钟速度为100kHz。由于Pcap01的I2C通讯最大只能到100kHz,故这里只能设成100kHz。然后使能I2C,初始化I2C,并且使能I2C应答功能。这样就完成了I2C的配置。4.3矩阵开关模块CH446是SPI串行通讯,但是串行通讯的过程当中开启开关和关闭开关是依靠数据线在STB线激活期间的高低状态决定的。而STM32的硬件SPI是标准的SPI通讯不能自由的控制数据线,故CH446与STM32的通讯使用模拟SPI的方式来通讯的。CH446的操作非常简便,只需在开始是给出一个复位信号,然后输入开关地址然后输入开关信号即可。其时序图如图4-3所示:图4-3 CH446的串行通讯时序4.4显示模块4.4.1 SPI配置对于SPI的配置首先是要配置引脚/配置MOSI和SCK为复用推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15|GPIO_Pin_13;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;GPIO_Init(GPIOB, &GPIO_InitStructure);/配置MISO为浮空输入GPIO_InitStructure.GPIO_Pin = GPIO_Pin_14;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;GPIO_Init(GPIOB, &GPIO_InitStructure); /配置NSS为推挽输出GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);时钟线和数据线需要配置成复用形式,从机选择需要软件控制故不需要配置成复用模式。然后是外设SPI的配置SPI_InitTypeDef SPI_InitStructure;/SPI初始化SPI_InitStructure.SPI_Direction = SPI_Direction_1Line_Tx;/单线双向发送SPI_InitStructure.SPI_Mode = SPI_Mode_Master;/设置为主模式SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;/发送8位数据SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;/空闲时时钟为高SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge; /在时钟的第二个边沿数据采样(上升沿)SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;/软件控制NSS信号SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64; /72M,64分频SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;/高位在前SPI_InitStructure.SPI_CRCPolynomial = 7;SPI_Init(SPI2, &SPI_InitStructure);SPI_Cmd(SPI2, ENABLE);SPI_SSOutputCmd(SPI2, ENABLE);液晶的读写时序如图4-4所示:图4-4 液晶SPI时序根据图4-4将SPI配置成上述模式,其中液晶的传输速度不能超过2M故SPI的速度设置为72M的64分频。4.4.2 液晶控制流程在对模组进行字节写入操作时,建议先对 Busy信号进行检测,当检测忙信号为低时,才可对模组进行串行数据传输。控制流程图如图4-5所示:图4-5 写入操作的操作流程在一次完整的控制操作过程当中,在控制指令以及指令所要求的数据传输结束之前,务必保证SS信号为低,否则将中断此次控制操作。 第5章 系统调试5.1系统硬件调试整体硬件图如图5-1所示:图5-1 整体硬件图在图5-1中,最右端的一排电容为待测电容;中间绿色的板是向导师借的一块废板改装而成,在上面有电容测量芯片Pcap01和矩阵开关CH446;左侧为STM32的最小系统板;图中的一块小板上焊着一些必要的滤波电容,以及电源和地线的拓展;图的最下面是液晶。图5-2为自制仿真器与最小系统板。图5-2 STM32最小系统及仿真器硬件图 硬件的调试主要是元件焊接,STM32引脚非常多,焊了几次都没办法达到理想的效果,于是就请了一个研究生同学帮忙,然而Pcap01这款芯片就非常的不好焊了。它是QFN24封装,QFN是一种无引脚封装,呈正方形或矩形,封装底部中央位置有一个大面积裸露焊盘用来导热,围绕大焊盘的封装外围四周有实现电气连结的导电焊盘。由于它无引脚,所以它不能像往常那种贴片芯片一样焊。只能用热风枪吹。以前从来没用过热风枪焊芯片,焊之前很紧张。在焊的时候首先要在每个焊盘上涂上锡,然而中间的焊盘上锡要慎重,一旦涂上过多的锡,在最后向下按芯片使它焊接更牢固的时候会使得中间焊盘多余的锡向外溢出,而使得一些引脚短路。出现这种情况非常难办,从外便很难把锡吸吸出来,而中间焊盘锡的溢出就意味着中间焊盘焊得很牢固,想拆下来就很难。就因为这样我在拆卸的过程中不小心将焊盘上的引脚卸掉,还好脱落的不是很严重,用个电阻腿接上了,使系统依旧可以正常工作。5.2系统软件调试在最开始接触到STM32时,感觉这个非常的难。因为它与51单片机的编程思想很不一样。STM32有着独有的固件函数库,所有对芯片外设的操作都是基于这个库函数的。虽然它可以类似51单片机,采用对寄存器直接操作的方法来控制,但是STM32中的外设非常的丰富,其控制寄存器也非常的繁多,故要配置的东西就太多了。因此这种方式并不好用。所以还是学习一些这库函数的操作体系。要写好一个程序,首先要建立一个工程。在库函数体系下,建立一个库函数工程框架是很重要的事情。一开始我是直接拷贝例程的工程,将一些函数进行改动。后来我也在网上找一些教程,也开始自己建立工程,添加必要的文件,对于不同版本的库函数,使用的函数也有少许区别,逐渐的建立起来一个自己熟悉的工程框架。由于本系统的最小系统板并没有太多的外部应用,只有最小系统,所以想学习STM32的外设还需要一个完整的开发板。恰好有同学也在学习STM32,我们就在一起共同研究,并且做一些基础实验。点亮一盏LED,AD转换,串口通讯,然后就是SPI 通讯,就是与液晶之间的通讯。在调试液晶时也遇到了一些困难。这款液晶我在51单片机上用过,我想将程序移植过来,原来的51单片机没有SPI接口,是使用的模拟SPI。这次的硬件SPI在配置上就需要更深入的理解SPI的工作模式,以便更好地移植。在移植的过程当中,最重要的问题是时序问题。STM32要比51快的多,因此在一些函数的操作时序上需要很大改动。而我并没有深入的学习Cortex-M3内核,因此这时序只能靠仿真一步一步的实现,以及用示波器来观察重要的时序。最终实现了显示。有了这个经验,在调试STM32与CH446的通讯中就方便了很多,很快就调出来了。然而最困难的是STM32与Pcap01的通讯。一开始我认为它们之间的通讯与STM32和液晶之间的通讯一样,只是Pcap01允许更快的串行速度,然而事实并不是这样,一直只能读数据而不能写数据。这样的通讯时失败的。于是就尝试更复杂的,速度更慢的I2C通讯。I2C通讯的原理开始从头学起,学习I2C的控制时序,学习I2C的配置,通过不断地实验,终于使STM32与Pcap01成功通讯。在成功通讯之后,新的问题出现了。测量数据的问题。由于Pcap01的所有操作都经过内部的DSP,所以我一开始以为还要学习如何对这个内置的 DSP编程,后来通过向ACAM公司的技术支持咨询才知道只要下载固件即可。固件可在官网上下载到,将928字节的固件载入芯片的SRAM中即可开始进行测量。最终测量出电容,完成了功能。结果如图5-3所示:图5-3 测量结果显示 第6章 ECT技术图像重建算法6.1 线性反投影LBP算法线性反投影算法,简称LBP算法。是最早应用在医学技术CT投影领域中的算法,也是最早应用在ECT技术图像重建中的算法,它的原理是将非线性问题转换成线性问题来得到有效的解决方案。一般ECT图像重建问题是分成两个部分来解决的:正问题和逆问题。如公式6-1所示为图像重建的求解正问题:已知介电常数的分布,求出传感器各个极板之间形成的电容值。这种求解方式反映出了电容C受物质G分布变化所产生的影响。 (6-1) (6-2) 上式中,C为测得的电容向量(电容测量值矩阵),G为介电常数分布矩阵,S为系数矩阵。即传感器灵敏度矩阵。 LBP算法在ECT技术中,是以灵敏度信息为权值来使用的。但是有两个假设的前提条件:(1)假设介电常数的分布对传感器灵敏度分布的影响非常微小,即可以忽略不计。(2)电容的变化是均匀的随着介电常数的变化而变化。因此,LBP算法是运用灵敏度加强的方法来求解像素的灰度值即公式6-2所示的原理,如果被成像中两种介质A,B且AB,点击数为n,那么在图像重建中,第K个像素的灰度值g(k)就可以表示为: (6-3)式中是极板对i-j间的独立电容测量值,为空管电容值,为满管电容值。是像素k对电级i,j之间的电容敏感度。其定义式为6-4 (6-4)(k)在式中为像素K的面积决定系数,也可定义为总面积与像素面积之比。通过已知的两极板之间的空管满管电容值以及测量出来的填充物的电容值,就可以计算出所要重建的图像的灰度值矩阵,图6-1给出了两种原型分布以及经过LBP算法进行图像重建处理后的原型位置分布。由图可以看出,LBP算法会略有些失真,但是由于的的算法结构简单,因此运算结果也是十分迅速的,所以在ECT技术领域通常将LBP算法的结果作为图像重建的定性分析。 (a)原型分布图 (b)重建图像图图6-1 LBP算法的原型分布和重建图像6.2 迭代算法由于介电常数的分布和测量的电容值之间并不是线性的关系,所以通过简化了的线性反投影算法的出的图像重建结果不可能很精徐,而迭代算法却可以在LBP算法上提高图像重建的画面质量。在图像重建中经常使用的迭代算法主要有迭代的代数法ART,同步迭代法SIRT,基于Landweber的迭代法等。这些算法对数据的处理上都是十分相似的,先利用上一节所提到的LBP线性反投影算法来得到一个初始图像,然后利用式6-1的正问题求解法计算出初始图像形成的电容值,将这个计算出来的电容值与实际测量出来的电容值进行比较得到一个偏差值,接着修正灵敏度信S后重复上述过程,直到偏差小于一个规定偏差。线性反投影算法的具体步骤如下:(1) 首先利用线性反投影算法获得图像重建的初始化图像(2) 把由步骤(1)获得的介电常数的分布进行正问题求解,获得一组仿真后的电容值,将该值与测量的电容值进行比较,若误差达到标准要求,则算法结束,如果还未带到标准要求,则进行下一步。(3) 修正灵敏度的信息(4) 利用修正后的灵敏度信息,用仿真电容值重新进行线性反投影,接下来实行步骤(2),循环迭代直到获得满意的结果为止。 Landweber的迭代算法是近几年来应用的比较多比较广泛的成像方法,其数学描述如下: (6-5) 在上式中为初始化图像,为经过K次迭代计算后的图像,为灵敏度矩阵,为迭代步长,=+/k,k为迭代次数,是松弛因子。f为滤波因子,一般情况下采用0-1滤波。图6-2给出了两种原型分布以及经过Landweber的迭代算法进行图像重建处理后的原型位置分布。 (a)原型分布图 (b)重建图像图 图6-2 Landweber的迭代算法的原型分布和重建图像 第7章 结论ECT技术由于具有非侵入非辐射、结构简单、响应速度快、成本低等优点,成为PT技术的研究热点之一。研究主要切入以下几个方面:(1)主控芯片选用了STM32系列,其性能远远高于传统的51单片机,拥有丰富的外设使得,系统不需要太多的元件,减少了出错的可能。其价格上也比较便宜使得它的性价比很高。(2)选用了Pcap01作为测电容芯片。它有着体积小,精度高,稳定性

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论