基于PIC16F877单片机的井下压力测量技术研究

发布者:科技狂人最新更新时间:2018-04-06 来源: eefocus关键字:PIC16F877  单片机  压力测量技术 手机看文章 扫描二维码
随时随地手机看文章

    目前,我国油井主要采用的是电子式井下压力测量系统,由于电子压力传感器长期工作在高温环境中,所以存在漂移问题,而且可靠性不高。同时这种仪器大多数将采集的数据存储在存储器中,缺乏实时性测量的要求。而本文所介绍的井下压力采集系统是一种新型的压力测量系统,其主要是以惰性气体作为压力传递介质,在地面完成对井口气体压力的测量,然后通过井口压力的大小推算井下测压点处压力大小。其主要特点是所有的测量都在地面上进行,避免了井下复杂环境对测量结果造成的影响,同时也满足了系统的实时性要求。

1 井下压力测量系统工作原理
    井下测压系统的基本原理是帕斯卡定理。整个套管设备在测压时被下放到井下测压点处,地面可以通过压力泵向传压筒内充放气体,为维持井液与高压气体接触的气液面平衡,传压筒里面的气体要定期进行补充。根据帕斯卡定理,传压筒内气体的压力等于井液的压力,将信号采集到PIC16F877中,在PIC16F877中根据相应的算法计算出井内的压力值,并进行存储、实时显示和数据回放。

    2 硬件电路设计

    压力检测系统主要由以下几部分组成,分别为数据采集电路、数据存储电路、数据显示以及数据回放。数据采集电路主要使用PIC16F 877单片机对压力数据进行实时采集数据,存储电路使用型号FLASH存储芯片;数据显示使用的是智能显示器;数据回放采用RS-232串行接口,将存储在flash芯片中的数据回放到计算机中。图1为压力检测硬件电路的设计框图。

a.JPG

        2.1 压力传感器的选取

    压力的测量一直以来受到压力传感器技术的制约,其测量的准确程度取决于压力传感器的技术指标,根据压力检测系统的设计要求,最后决定选用德国HeLM公司生产的HM10高精度压阻式压力传感器,此传感器采用了最坚固可靠的压力敏感元件,特别适合于野外的压力测量。  HM10主要的性能指标如下:

    1)工作温度:-40~85℃

    2)冲 击:100 g,11 ms

    3)振 动:10 gRMS.20~2 000 Hz条件下无变化

    4)压力量程:-0.1 MPa~0~10 kPa…70 MPa


    2.2 压力采集电路设计

    压力检测系统的数据采集主要是通过单片机PIC16F877来完成。压力检测系统设计中有一项要求就是精度要达到0.1%FS,且采集最小间隔为1 s,鉴于这两个要求,在数据采集电路设计时选用精度很高的多通道24位芯片ADS1226,具有100SPS的数据采集率,符合最小1 s的数据采集间隔。

b.JPG



    图2为压力采集电路的连接图,其中,P3.0、P3.1、P3.2、P3.3为单片机的I/O接口,分别与ADS1226的START、SCLK、DOUT、MUX引脚相连。其中P3.0控制着ADS1226的启动信号,当P3.0输出高电平时,ADS1226开始进行数模转换,当P3.2输入低电平时A/D转换完成,转换完的数据信号随着SCLK传输到PIC16F877单片机内。由于压力传感器HM10输出的是4~20 mA的电流信号,而ADS1226是一个电压采集芯片,在此处选用了型号为ISO-A4-P3-04的电流转电压芯片。ISO-A4-P3-04把4~20 mA的电流信号转换成了0~5 V的电压信号。

    2.3 数据存储电路设计

    井下数据测量期间可能会有大量的原始数据,这些数据对油井状况的评估是一份宝贵的资料,因此测量系统在设计时要考虑数据的存储。本系统选用的是大容量Flash存储器。该器件采用三星公司的CMOS浮置门技术和与非存储结构,存储容量为64M×8位,除此之外还有2 048k×8位的空闲存储区。对528字节一页的写操作所需时间典型值是200 μs,而对16 k字节一块的擦除操作典型值也仅需2 ms。每一页中的数据读出速度也很快,平均每个字节只需50 ns,已经与一般的SRAM相当。8位I/O端口采用地址、数据和命令复用的方法。这样既可减少引脚数,还可使接口电路简洁。片内的写控制器能自动执行写操作和擦除功能,包括必要的脉冲产生,内部校验等,完全不用外部微控制器考虑,简化了器件的编程控制难度。如图3为单片机PIC16F877与Flash存储器的接口连接图。单片机的P5.0~P5.7管脚与Flash的8为I/O口相连。

c.JPG


    2.4 数据显示电路设计

    压力检测系统采用了彩色智能显示液晶屏,该系列显示器采用集成化CPU,内置一级汉字库(二级字库可选),采用标准指令集,通过RS232C接口或打印机并行口接收控制命令和数据。同时为了提高通讯速度,显示器内设置了一个256字节的输入缓冲区。在发送数据前应先检查DTR(液晶显示器上串口名称)信号,若DTR为高电平(TTL),表示缓冲区满,要等到DTR信号变为低电平(TTL)后再发送数据。即DTR为低电平(TTL)时发送数据,DTR为高电平(TTL)时停止数据发送。如果每组的数据量少于256字节,同时每组之间又有足够的间隔,则不需要判断DTR位信号也可连续发送。


    压力检测系统在处理器与液晶屏通信时采用的是串口的形式,把PIC16F877的P4.6管脚当作通用I/O口直接与液晶屏的串行接口向连接,标准的RS-232在进行通信时只需要发送、接收和地线(GND)3个管脚即可,因此液晶显示器与处理器的连接十分简单。但是由于PIC16F877管脚能承受的电平最大5.5 V,而串行接口的电平是TTL电平,所以在连接这两个器件时必须添加一个电平转换芯片MAX3232,具体的连接方式如图4所示,图中YJ-RXD是液晶屏的串行接收接口,P4.6为PIC16F877的发送端口,MAX3232起到了一个电压转换的作用。数据回放主要指的是将存储在FLASH存储芯片中的数据回放到PC机上,PC机接收数据采用的是串口RS-232,通过MAX3232进行连接,如图4所示,这里不再叙述。

d.JPG

    3 软件设计

    本系统软件设计主要是单片机系统软件设计。PIC16F877的内核CPU结构是按照精简指令集和高透明指令的宗旨来设计的,因此单片机开发采用专门用于PIC16F877系列单片机而设计集成开发环境,编程采用C语言。PIC16F877作为主CPU。PIC16F877在系统中主要负责压力数据的采集、系统的启动、采集数据的处理、数据的显示和上位机数据的回放等。其软件的主程序流程图如图5所示。

e.JPG

    在整个压力采集系统中,通过PIC16F877单片机来控制启动A/D转换,单片机共采集12个数据,去掉最大与最小的数据,取平均值,作为一个井口压力值。在根据相应的算法,通过进口压力值计算出测点压力和油层压力,再把这3个数据进行存储和显示。

    4 结束语

    本文设计的压力检测系统通过了现场实验的测试,系统稳定可靠,采集了大量的数据,通过改变测试条件验证了测得压力值的准确性,由于要长期实时监测井下压力,Flash存储器可以存储10天的数据,所以该系统连续工作10天后要对数据进行回访,并存储在计算机上,以便后续参考。井下压力检测系统是通过测量井口压力来推算井底压力的方法来实现压力测量的,这就避免了井下的复杂环境,从而减少了环境对测量的影响。同时使用液晶屏将测量数据进行实时的显示,满足了实时性测量的要求。

关键字:PIC16F877  单片机  压力测量技术 引用地址:基于PIC16F877单片机的井下压力测量技术研究

上一篇:PIC16F87x的数据存储器规划和中断编程分析
下一篇:MMC与PIC单片机接口电路和代码设计

推荐阅读最新更新时间:2024-03-16 15:59

用AT90S8515单片机实现LED数码显示
  一、电路 附图是AT90S8515控制数码显示的电路略图(图中只画出了与数码管接口的电路,其余接线略)。单片机的PBO~PB7接LED共阴数码管的a~h脚,控制段码;单片机的PDO—PD5分别接六只LED数码管DO~D5的共阴极,控制位码。其中PDO~PD5是通过SL-AVR开发实验器上的LED数码管短路块DLED接至数码管DO—D5的。      二、字符8右循环移位显示程序 在SL-AVR开发实验器LED上实现字符8右循环移位显示的源程序清单如下:   第1行表示程序中包含定义AT90S8515特殊功能寄存器的头文件8515def.inc,指明所用器件为AT90S85150接着定义寄存器r16、r22分别为
[单片机]
用AT90S8515<font color='red'>单片机</font>实现LED数码显示
TI 使用支持 Matter 的无线 MCU 软件对分散的 IoT 生态系统统一管理
工程师可以在 Wi-Fi® 和 Thread 网络上安全可靠地连接各种品牌的智能家居生态系统中的设备 在现实生活中实现更智能的连接,德州仪器 (TI) 今日面向 Wi-Fi 和 Thread SimpleLink™ 无线微控制器 (MCU) 推出了支持 Matter 的全新软件开发套件,将简化 Matter 协议在物联网 (IoT) 应用中的采用。TI 通过与连接标准联盟密切合作以及在 2.4GHz 连接领域的创新,构建了这款软件。 工程师可以使用这款全新软件以及 CC3235SF 和 CC2652R7 等无线 MCU,创建具有超低功耗、由电池供电的安全智能家居和工业自动化 IoT 应用,使这些应用能够与各种专有生态系统
[物联网]
单片机控制的迫击炮防止重装弹装置
在进行迫击炮实弹射击过程中,迫击炮炮弹不发火现象较为常见,若迫击炮炮弹不发火,则严禁再次装填炮弹,若再次装填,则易产生膛炸,造成严重人员伤亡。如何判定迫击炮炮弹不发火,防止重装弹,目前通常靠炮手观察炮口情况或听发射声音确定炮弹是否出膛,这种观察判断的方法不可靠。实弹射击时炮手心理高度紧张,往往造成观察结果不精确,为此设计本系统,防止重装弹,避免重大事故的发生。 1 系统特点 目前国内外研究发展的迫击炮防重装装置主要有机械式、电子式等,本系统是机电结合式,系统只有在检测到填装的炮弹发生滞留时,才启动机械装置,使再次填装炮弹的过程无法进行。纯机械式的装置在装弹的过程会通过重力启动机械装置,这样对装弹操作会有一定的影响,并且在发
[单片机]
<font color='red'>单片机</font>控制的迫击炮防止重装弹装置
PIC单片机 C编程技巧
1、PICC和MPLAB集成 PICC和MPLAB集成: PICC有自己的文本编辑器,不过是DOS风格的,看来PICC的工程师 要专业冷到酷底了... 大家大可不必用它,如果你没什么癖好的话,你不会不用UltraEdit 吧? 1:建立你的工作目录: 建 议在C盘根目录下建立一个以A开头的文件夹做为工作目录.因为你会发现它总是在你查找文件时候第 一个跳入你眼中. 2:MPLAB调用 PICC.(以MPLAB5.7版本为例子) 启动MPLAB.在Project-- Install Language Tool: Language Suite----- hi-tech picc Tool Name ---- PICC Compiler E
[单片机]
单片机ADC采样算法----限幅消抖滤波法
限幅消抖滤波法相当于“限幅滤波法”+“消抖滤波法” 。 下面直接看C代码的实现 #define A 200 #define N 20 //返回两个整数差 unsigned int num_sub( unsigned int a, unsigned int b ) { return ( a = b ? ( a - b ) : ( b - a ) ); } unsigned int filter10( void ) { unsigned int count = 0; unsigned int new_value = 0; static unsigned int last_value = 0; new
[单片机]
<font color='red'>单片机</font>ADC采样算法----限幅消抖滤波法
基于QR Code条码的飞机加油统计系统
目前我军飞机加油统计过程还是通过飞机加油单来实现,其基本程序是加油员填写加油单,给飞机实施加油,加油员在加油单上记录加油数量,经机务人员签字,然后由统计员统计进行日结算和月结算,此统计方法复杂。因此,研究QR Code条码在飞机加油记录系统中的应用,对提高飞机加油记录系统的效能必将具有重大意义。 1、 QR Code条码技术 二维条码通常分为两种类型:行排式二维条码和距阵式二维条码。行排式二维条码编码原理是建立在一维条码基础之上,按需要堆积成二行或多行。目前常用的有PDF417、 Code49、Code16k等;矩阵式二维条码是建立在计算机图像处理技术、组合编码原理等基础上的—种新型图形符号自动识读处理码制,具有代表性的矩阵式
[单片机]
基于QR Code条码的飞机加油统计系统
51单片机驱动能力上拉电阻分析
单片机输出低电平时,将允许外部器件,向单片机引脚内灌入电流,这个电流,称为 灌电流 ,外部电路称为 灌电流负载 ;单片机输出高电平时,则允许外部器件,从单片机的引脚,拉出电流,这个电流,称为 拉电流 ,外部电路称为 拉电流负载 。 这些电流一般是多少?最大限度是多少? 这就是常见的单片机输出 驱动能力 的问题。 早期的 51 系列单片机的带负载能力,是很小的,仅仅用 能带动多少个 TTL 输入端 来说明的。P1、P2 和 P3口,每个引脚可以都带动 3 个 TTL 输入端,只有 P0 口的能力强,它可以带动 8 个! 分析一下 TTL 的输入特性,就可以发现,51 单片机基本上就没有什么驱动能力。它的引脚,甚至不能带动当时的 LED
[单片机]
51<font color='red'>单片机</font>驱动能力上拉电阻分析
RTOS实现双核MCU消息通信
手机、电脑多核的CPU你可能经常看见,但多核的单片机相对来说就不那么常见了。随着需求的增加、技术的进步,单片机已不再局限于单核了,因此,近几年陆续出现了双核的单片机了。 你可能会好奇,双核单片机之间怎么通信?其实,通信的方式和方法有很多种。本文就给大家描述一下:使用FreeRTOS消息缓冲区,实现简单的非对称多处理(AMP)核心到核心通信,结合STM32H7(M4和M7) 双核处理器为例。 分享正文之前推荐一个嵌入式招聘信息的平台: 概述 实现STM32H7双核之间通信是FreeRTOS官方提供的一个方案,是基于FreeRTOS消息缓冲区,该消息缓冲区是无锁循环缓冲区,可以将大小不同的数据包从单个发送方传递到单个接收方。
[单片机]
RTOS实现双核<font color='red'>MCU</font>消息通信
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved