基于单片机控制的DDZ型热工仪表检测仪的设计

时间:2023-07-24
摘 要:本文以PIC16F877单片机作为主要的部件,通过对A/D转换、串口通信、键盘设置等模块的软件编程,设计了一个测量准确、动态显示,并能与外部计算机进行通信的DDZ型热工仪表检测仪。
关键词:单片机;串行通信; 检测仪


引言
传统的DDZ型热工仪表检测仪以模拟显示为主,有性能不稳定、误差较大等缺点。针对这一问题研制了基于单片机控制的热工仪表检测仪,它不仅能在DDZ 型热工仪表的设计、校正、维修中提供信号源,而且能把某些仪表端口的信号采集到计算机上处理并且打印出数据,以便相关人员分析处理并作出相应的反应。


仪表的功能和硬件结构
仪表的功能
本仪表不仅能测量和产生DDZ型热工仪表统一的联络信号,而且能数字化并显示信号大小,具有动态显示、性能稳定等优点。概括起来,仪表具有如下功能:
(1) 可以测量和产生DDZ-Ⅱ型仪表间的联络信号:0~10mA DC。
(2) 可以测量和产生DDZ-Ⅲ型仪表间的联络信号:4~20mA DC,1~5V DC。
(3) 具有RS-232串行通信口,可以和上位机进行通信。
(4) 通过按键设定信号输出值,信号输出和显示的整个过程在毫秒内完成。
(5) 4位数码管动态地显示测量和产生信号值大小。
仪表的硬件结构
本仪表主要由PIC16F877单片机和外围器件及其相应的软件编程构成。可分为7大模块:输入模块、A/D转换模块、数码显示模块、串口通信模块、键盘设置模、D/A转换模块和电源模块。
本文主要介绍输入模块、通信模块、A/D转换模块、及键盘设置模块,以便更好地说明该仪表的硬件电路和软件编程。

关键芯片和技术
输入模块
输入模块设计了三路模拟量输入电路:一路输入0~10mA DC电流信号,通过500?的精密电阻转化为0~5V DC电压信号;一路输入1~5V DC 电压信号;另一路输入4~20mA电流信号,经过250?的精密电阻转化为1~5V DC电压信号。由于使用OP07运放器构成电压跟随器,显著提高了抗干扰能力和,输入模块的硬件电路。
OP07运放器后接了一个超量程报警系统,它由稳压管、报警器、过电压继电器和动断触点组成。稳压管和过电压继电器的额定电压都是+5V,当输入电压值超过该值时,过电压继电器就会使动断触点断开从而自动切断电路,与此同时稳压管导通,报警器产生一个报警信号。
由于测量现场往往有磁干扰和火花干扰,所以本设计选用低通滤波器用于对现场强电磁和火花干扰的抑制和消除,同时除掉直流信号中混入的交流信号。
A/D转换模块
本设计采用PIC16F877单片机作为芯片,其A/D转换值为10位,可设置1~8个A/D转换通道。本仪表将A口的RA0引脚设定为模拟电压输入,进行A/D转换后先将A/DRESH和A/DRESL寄存器中的值经数据处理变为与实际模拟量相对应的二进制数,再变换成对应的BCD码,送到与C口相连的数码显示模块上进行显示。
设置输入/输出引脚
由于PIC16F877的引脚同时具备输入/输出的功能,因此使用前必须进行设置,其初始化引脚的命令如下:
banksel TRISC ;选择TRISC寄存器所在的数据存储体
clrf TRISC,<3:0> ;设定C口的RC3:RC0为数据输出口
bsf TRISA,0 ;设定A口的RA0为输入口
进行A/D转换的步骤
(1) A/D转换的初始设定:对A/DCON1和A/DCON0寄存器中的位进行设置。
(2) 选择A/D转换的模拟输入端:A/DCON0寄存器的<5:3>位设为000,表示选择A口<0>位RA0为模拟输入端。
(3) 启动A/D转换:A/DCON0寄存器的<2>位GO/DONE为1时,表示正开始进行A/D转换。
(4) 查看A/D转换是否完成:GO/DONE同时作为A/D转换的标志信号,若为1时,表示正在进行A/D转换,转换工作尚未结束;若为0时,表示A/D转换已完成,可以读取转换结果。
(5) 存放A/D转换的结果:把A/D转换的结果存放在A/DRESH和A/DRESL寄存器中。
RS-232 串口通信
PIC16F877与PC之间的双向RS-232通信的目的是把A/DRESH、A/DRESL中的数据传到上位机(计算机),上位机采用C语言编辑的接收软件接收数据,并进行更进一步的处理。
选择波特率
在PIC16F877的UART模块中,8位寄存器SPBRG的值X和寄器TXSTA中的BRGH位决定通信时的波特率。当BRGH=1 时,由于该仪器的波特率设为9600bit/s, Fosc=4MHz,通过计算可以得到X=25.042≈25,此时其误差仅为:(9615-9600)/9600=0.16%,表示波特率选择合适。
数据格式
设RC7为PIC16F877的数据输出口,RC6为数据输入口,通过MAX232转化模块与PC机相连。由于PIC 单片机的RS-232的通信格式固定为1个开始位,1个停止位,没有奇偶校验位,设计数据位为8位。
传输方式
采用中断的方式来实现单片机与PC之间的通信,UART的传输与接收可以分别产生一个中断源,寄存器PIE1中的位TXIE=1时产生传输中断源;RCIE=1时产生接收中断源。进行串口通信时PC机发一个请求发送信号”Requst”给单片机,单片机接收到此信号后查询PIR1寄存器中的位TXIF是否为1,若为1表示传送数据寄存器TXREG为空,将待传送的数据写入TXREG寄存器,即刻开始执行UART的传送工作,按照单片机和PC机共同定义的通信协议将数据发送完毕。
键盘设置
仪表的表面板上有4个开关键(“Reset”键和控制3路模拟量输入的3个开关键K1,K2,K3),和一个键盘(10个数字键,6个功能键)。 键盘设置用来控制仪表执行何种功能:是测量信号还是产生信号,测量和产生的分别是那一种信号都可以通过按键来完成,通过对键盘接口的编程把各模块联系起来统一的工作。

软件设计
由于本仪表的功能较多,因此不但硬件电路复杂,同时也需很强的软件系统支持。本仪表的软件系统由一个主程序和多个子程序组成。
仪表的主程序
仪表的软件系统总的来说有三大部分组成:
(1) 系统的初始化。它包括PIC16F877芯片本身的初始化,串口、键盘接口、数码显示模块的初始化等。
(2) 响应外部中断由键盘中断程序来完成仪表具体执行那项任务:测量或输出模拟信号,并动态显示信号大小。
(3) 数据的采集、计算、显示部分。在这个循环中,程序根据不同的输入信号每10ms采集、刷新显示。
仪表的子程序及功能
软件系统由多个子程序组成,现就主程序中的A/D转换来介绍一下其程序原理和流程。
A/D转换的程序原理与流程
以循环扫描方式利用PIC16F877的A/D转换读取RA0管脚上输入的模拟电压,并将其数值大小在数码管上显示出来。设计主程序的扫描时间为10ms,经过运算处理输出模拟量对应的BCD码至C口并重复循环。使用PIC16F877单片机的Timer1产生2ms的定时中断作为程序的基本时序,其主程序和中断服务程序的流程。
PIC16F877芯片使用外部4MHz的石英振荡器,其指令周期为1?s,Timer1子程序中预先定义的寄存器Scaler的值为5,在每中断过程中都使其值减1,主程序中检测Scaler寄存器中的值是否等于0,不等于0则主程序处于等待状态,当等于0时则使用命令:movlw 5 ;addwf Scaler,f 使寄存器Scaler始终为5,并返回到A/D转换子程序,这样使主程序的循环时间为10ms。
A/D转换中的编码运算
A/D转换的位数是10位,根据每次A/D转换后A/DRESH和A/DRESL中的值由公式:
A=(5/1023)*D可以计算出转换前模拟量的值。在进行动态显示时,采用4位数码管显示2位整数、2位小数,从高位到低位依次设为S3 S2 S1 S0,单片机依次送出S0 S1 S2 S3对应的BCD码到显示模块,并通过对数码管位选端的控制来实现动态显示的功能。

结语
随着仪器、仪表在日常生产、生活频繁的使用,其维修也越来越频繁。热工仪表检测仪作为提供维修信号源的标准仪表发挥着十分重要的作用。该设备采用集成的原理做成了一个便携式的装置,经过实际反复测试,性能良好,有着广泛的市场应用前景。

上一篇:采用自适应算法进行便携式电池电量的计量
下一篇:uC/&nbsp;OS&nbsp;-&nbsp;II&nbsp;在ARM系统上...

免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

相关技术资料