专注于射频工程师,天线工程师和电子硬件工程师的培养
首页 > 技术文库 > 硬件设计 > 嵌入式/MCU > 基于PIC32的铁路隧道监测系统

基于PIC32的铁路隧道监测系统

时间:2020-12-13 点击:

一、引言

隧道的开采、施工和使用过程中,隧道围岩变形是围岩应力分布、整体力学形态变化和稳定状态最直接和可靠的反映,围岩净空位移的测量是隧道施工过程中一个重要环节,是判断围岩稳定性和指导施工的重要依据。对隧道围岩变形进行及时的监测和分析预报成为隧道施工中保证施工安全、防止事故发生、合理确定隧道支护的十分重要的工作。

传统的隧道围岩位移量测方法主要有两种:一种是在施工过程中布置测量断面,间隔一定的时间由人工使用各种机械式或机械-电子式收敛计量测;另一种是借助隧道断面仪定时定点量测待测断面。两者的不足之处在于:

(1)不能实时监测:即不能随时监测待测断面的变形情况,因而不能及时反映施工过程中隧道围岩的异常变化。

(2)对施工干扰大:由于变形量测中或者需要拉尺,或者需要架设断面仪,所以对施工作业,尤其是运输作业干扰很大。

(3)量测工作危险:在人员不易接近的地方,为了获取量测数据,人员不得不频繁接近危险空间,因而对人员与仪器的安全威胁较大。

(4)量测费用高:因同一断面要多次反复量测,加之量测过程繁琐,用人多,耗时长,导致量测费用较高。

(5)量测数据不可靠:造成量测数据不可靠的原因主要是量电子和机械仪表的测量精度不够和处理测量数据时造成的误差。

由于以上五个主要缺点局限了传统的隧道监测技术,本系统采用PIC32处理器构建铁路隧道监测系统,具有集成度高、处理速度快、实时监测等优势。PIC32处理器工作频率高达80MHZ,具有32位处理宽度、32K RAM、并带有10位、500ksps A/D等性能,能够减少产品的外围器件,增强系统稳定性,降低系统成本。

二、整体方案设计

用激光器光束、CCD进行铁路隧道施工中围岩位移监测原理示意图2-1。由四部分组成:半导体激光光源及光束变换传输、CCD传感器、数据采集采集处理传输模块、支架(固定CCD)光传感器与激光光源相对位置,包括微调节架等)。图2-2为在施工工地上架设的图片,图2-3为在实验室搭建的模拟平台。

图2-1 铁路隧道监测原理示意图

图2-1 铁路隧道监测原理示意图

图2-2 施工工地上架设监测平台

图2-2 施工工地上架设监测平台

图2-3 实验模拟平台

图2-3 实验模拟平台

整个系统设计框图如下所示,采用PIC32MX460F512L为核心处理器,整个系统分为数据采集、数据显示、数据存储、数据通信。

数据采集部分为:通过RA接口驱动线阵CCD TCD1501;由于线阵CCD输出的是模拟信号,需要通过ADC接口转换为MCU能够处理的数字信号,并计算出当前光斑位置;使用I2C接口连接温度传感器LM75,获取当前的温度数据;使用RTCC接口获取当前的实时时钟和日历。数据显示部分:采用PMP接口驱动字符型液晶LCD1602,显示当前的时间、温度、光斑位置信息。数据存储部分:采用SPI接口驱动常用的miniSD卡,并使用流行的文件操作系统FatFS,存储时间、温度、光斑位置数据。数据通信部分:采用USART接口,通过串口通信将数据传输到上位机电脑上,并使用图形化编程软件LabVIEW进行编程。

图2-4 整个系统框图

图2-4 整个系统框图

三 各个模块介绍

3.1线阵CCD TCD1501

3.1.1 线阵CCD工作原理

CCD 是一种半导体器件,由一系列相邻的MOS(金属-氧化物-半导体) 存储单组成。在外界光照条件下,能产生电荷,并存储在 MOS 存储单元里,产生电荷的多少与入射光的强度和照射时间成正比。在一定的外加电压驱动下,CCD中存储的电荷可以一个接一个的顺序移动,通过输出放大器在输出端产生与存储电荷成正比的输出电压。CCD的一个工作周期分为两个阶段:光积分阶段和电荷转移阶段. 光积分阶段实现光电荷的积累,与此同时将上一帧移位寄存器中的电荷输出并清空像元势阱中的无效电荷;电荷转移阶段实现光电荷向移位寄存器的转移。CCD 的感光阵列与移位寄存器是分开的,像元接受外界光源照射产生电荷,通过转移栅控制光生信号电荷向移位寄存器转移,一般信号转移时间远小于光积分时间。转移信号控制转移栅,转移栅关闭,感光阵列收集光信号,此时感光阵列和移位寄存器之间为阻断态,不会发生电荷转移现象。

3.1.2 东芝TCD-1501简介

TCD-1501是由东芝半导体生产的一款具有5000个有效像元的线阵CCD,单12V供电,有极高的灵敏度,像元大小为7um×7um,典型的时钟脉冲频率为1MHz,最大可以达到12MHz。实物图如图所示:

图3-1 TCD1501实物图

图3-1 TCD1501实物图

3.1.3 PIC32驱动TCD1501

TCD1501的时序图如图2-2所示,使用Altium Designer构建的原理图如图2-3,采用PIC32的RA0到RA5这5个端口输出图2-2的时序。由于PIC内部ADC转换的范围为0到3.3,所以将输出的结果由两级比例差分放大电路LM358处理,第一级把CCD_OS与CCD_DOS相减,第二级构成电压跟随器,使用电位器R5等比例缩写输出电压。

图3-2 TCD1501时序图

图3-2 TCD1501时序图

3.1.3 MPLAP软件仿真与实验测试

采用MPLAB软件编写驱动软件,在DEBUG选择中选择MPLAB SIM进行软件仿真,如图3-4所示。然后采用泰克示波器TDS1012检测CCD输出电压,可以看到驱动成功,并输出周期性的波形。其中一个波形中,高电压部分表示此处探测到光,低电压部分表示没有光。

图3-4 使用MPLAB进行软件仿真

图3-4 使用MPLAB进行软件仿真

图3-5使用泰克示波器TDS1012检测CCD输出电压

图3-5使用泰克示波器TDS1012检测CCD输出电压

3.2 字符型液晶LCD1602

3.2.1 液晶LCD1602简介

LCD1602是常用的工业级别字符型液晶,能够同时显示16×2即32个字符。下图为实物图和引脚定义。模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码。

图3-6 液晶LCD1602实物图和引脚定义

图3-6 液晶LCD1602实物图和引脚定义

引脚

符号

功能说明

1

VSS

一般接地

2

VDD

接电源(+5V)

3

V0

液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。

4

RS

RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。

5

R/W

R/W为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。

6

EN

E(或EN)端为使能(enable)端,下降沿使能。

7

DB0

底4位三态、 双向数据总线 0位(最低位)

8

DB1

底4位三态、 双向数据总线 1位

9

DB2

底4位三态、 双向数据总线 2位

10

DB3

底4位三态、 双向数据总线 3位

11

DB4

高4位三态、 双向数据总线 4位

12

DB5

高4位三态、 双向数据总线 5位

13

DB6

高4位三态、 双向数据总线 6位

14

DB7

高4位三态、 双向数据总线 7位(最高位)(也是busy flang)

15

BLA

背光电源正极

16

BLK

背光 电源负极

3.2.2 并行主接口PWP简介

并行主端口(Parallel Master Port,PMP)是一个 8 位 /16 位并行 I/O 模块,专用于与通信外设、LCD、外部存储器件以及单片机等多种并行器件进行通信。由于并行外设接口的多样化,PMP模块具有高度可配置性。

PMP 模块的主要特性包括:

•  最多 16 条可编程地址线

•  最多 2 条片选线

•  可编程选通选项

•  独立的读和写选通,或

•  带使能选通的读 / 写选通

•  地址自动递增 / 自动递减

•  可编程地址 / 数据复用

•  可编程控制信号的极性

•  支持传统并行从端口

•  支持增强型并行从端口

•  地址支持

•  4 字节深自动递增缓冲区

•  施密特触发器或 TTL 输入缓冲器

3.2.3 配置PMP用于LCD模块

从上面我们了解了液晶LCD1602,尽管我们可以如果人工访问PORTE和PORTD的各个引脚来控制I/0信号实现总线时序。但是PIC32提供的并行主接口PMP,它能够把单片机从控制慢速外围设备的繁琐任务中解脱出来。图3-7是使用PMP接口与LCD1602的连线图,图3-8是驱动液晶显示一行“EEFOCUS GOOD”字符。

图3-7 使用PMP接口与LCD1602的连线图

图3-7 使用PMP接口与LCD1602的连线图

图3-8 驱动液晶显示一行“EEFOCUS GOOD”字符

图3-8 驱动液晶显示一行“EEFOCUS GOOD”字符

2.3 串口通信COM

串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口,由于其配置简单,广泛地用于数据传输到计算机。由于开发板上没有串口模块,而且我们也没有申请串口模块,所以我们根据图3-9原理图,使用PIC32的串口2接口和MAX232芯片,自己焊接了一个串口模块,如图所示。

图3-9 PIC32的串口2接口和MAX232芯片电路连接

图3-9 PIC32的串口2接口和MAX232芯片电路连接

图3-10 串口模块实物图

3.4 温度传感器LM75A

3.4.1 LM75A简介

LM75A是一个高速I2C接口的温度传感器,可以在-55~+125的温度范围内将温度直接转换为数字信号,并实现0.125的精度。PIC32可以通过I2C总线直接读取其内部寄存器中的数据,并可通过I2C对4个数据寄存器进行操作,设置不同的工作模式。LM75A有3个可选的逻辑地址管脚,使得同一总线上可同时连接8个器件而不发生地址冲突。

3.4.2 LM75A实现

LM75A与PIC32的连接是以I2C总线的形式,如图3-11所示,总线上需要加上拉电阻,因为通信开始之前,I2C总线必须空闲或者不忙,这意味着总线上的所有器件都必须释放SCL和SDA线,SCL和SDA线被总线的上拉电阻拉高,上拉电阻取10K左右,实物连线图如图所示。

图3-11 PIC32的I2C1接口与LM75A连线图

图3-12 LM75A与I2C1接口实物连续图

3.5 实时时钟和日历

由于采集到的数据需要以时间作为标记,PIC32器件提供硬件实时时钟和日历(Real-Time Clock and Calendar,RTCC),该模块提供实时时钟和日历功能。RTCC 是为需要长时间维持精确时间的应用设计的,无需或只需最少的 CPU 干预。该模块为低功耗使用进行了优化,以便在跟踪时间的同时延长电池的使用寿命。RTCC 模块具有 100 年的时钟和日历,能自动检测闰年。时钟范围从 2000 年 1 月 1 日 00:00:00(午夜)到 2099 年 12 月 31 日 23:59:59。小时数以 24 小时 (军用时间)格式提供。该时钟提供一秒的时间粒度,用户可看到半秒的时间间隔。需要外部32.768KHZ的低速晶振。由于开发板没有焊接晶振,所以我们自己焊上晶振和一个贴片电容,加快晶振起振速度。下图是使用RTCC模块在液晶上显示当前的时间和日期,其中第一行为:Current time is:,第二行为:16-46-25 03-07,表示当前的时间为3月7日,16点46分25秒。

图3-13 使用RTCC模块显示当前时间

图3-13 使用RTCC模块显示当前时间

3.6 数据存储miniSD

本节介绍miniSD存储卡,以及与PIC32的SPI模块连接,并介绍了常用的FATFS文件操作系统。

3.6.1 miniSD简介

mini-SD卡是在数码相机,PDA等所用的Flash。全称Memory Card(中文名:快闪存储卡)基础上发展出的一种更小更适合小型手机用的存储卡。尽管mini-SD卡的外形大小及接口形状与原来的SD卡不同,但接口等电气标准相同,以确保兼容性。将mini-SD卡插入专用适配器,可通过原来的SD卡插槽读写mini-SD卡。不过,不具备像SD卡那样防写入的锁定功能。

3.6.2 miniSD与PIC32连接

如图2-13所示,使用SPI1接口与miniSD卡相连,图2-14为实物连接图。

图3-14 使用SPI1接口与miniSD卡连接

图3-14 使用SPI1接口与miniSD卡连接

图3-15 实物连接图

图3-15 实物连接图

3.6.3 Fatfs文件操作系统

FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 的编写遵循ANSI C,因此不依赖于硬件平台。它可以嵌入到便宜的微控制器中,如 8051, PIC, AVR, SH, Z80, H8, ARM 等等,不需要做任何修改。其特点: FAT12, FAT16 与 FAT32.多个卷(物理驱动器与分区).两种分区规则: FDISK 与 Super-floppy.多种配置选项:长文件名支持。可选的编码页,包括DBCS(DBCS为双位元组字元系统 Double Byte Char Systems )多任务支持只读,最小化API,缓冲区配置等等应用程序接口。因为FatFs模块完全与磁盘I/O层分开,因此需要下面的函数来实现底层物理磁盘的读写与获取当前时间。底层磁盘I/O模块并不是FatFs的一部分,并且必须由用户提供。

图3-16 FatFs文件操作系统模型

图3-16 FatFs文件操作系统模型

3.7 上位机LabVIEW

3.7.1 LabVIEW简介

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是与传统文本编程语言不同的图形化编程语言开发环境,采用图形模式的结构和框图构建程序代码。由美国国家仪器NI公司开发的一款虚拟仪器开发平台,也是目前最流行、功能最强、发展最快的图形化编程语言,通常称为G语言。

传统的文本编程语言,如C、Java、VB等,它们具有一个相同的特点:就是使用字母构成单词,用单词表达某种数据操作;再用单词构成语句,用语句表示对某个数据的赋值和运算等操作。这几种计算机语言参考了人类自然语言,是一种高度抽象的语言。它的优势在于效率高,用简短的语句就能表达复杂的功能;缺点在于:文本不够直观,也不容易学习。开发者需要花费大量的时间学习并记忆其关键字、编程语法规则等等,而且文本语言往往不能直观地给阅读者提供信息,需要阅读完整段代码程序才能了解其意义。目前许多高级语言,如VB、VC等在程序界面设计时引入可视化设计方式,直接使用鼠标选择和调整程序界面的方式,能够直接看到程序运行时的效果。虽然它们在界面设计使用图形化方式,但是程序的功能依然需要通过文本编程方式来实现。LabVIEW与上述编程语言相比,不但在程序设计时采用图形化编程方式,而且在编写程序代码和实现程序功能的时候,也使用图形化编程方式。在一个LabVIEW程序当中,看到不是一行行文本,而是由线和各种小图形块的连接组成。由于图形比文字更为直观,因此LabVIEW相比其他编程语言更容易学习,让开发者可以把更多时间分配到数据处理和算法分析上,提高了编程效率,降低硬件成本,减少了系统开发周期。

3.7.2 上位机程序

使用到LabVIEW中VISA模块实现串口通信,编写程序界面如下,通过选择串口号和通信的波特率,就能在面板上显示出CCD的波形数据,与图3-5示波器采集数据一致。

图3-17 上位机界面

图3-17 上位机界面

四 模块化软件设计

CopyRight © 2009-2021,易迪拓培训 All Rights Reserved,沪ICP备05048810-2号 版权所有

网站地图

Top