APP下载

基于单片机压力计的设计与实现

2023-09-25舒玉坤

关键词:压力计串口重量

舒玉坤

(湖北师范大学 物理与电子科学学院,湖北 黄石 435002)

0 引言

称重技术作为一种计量手段,广泛应用于各种场合,有利于生产自动化,有利于提高劳动生产效率[1]。在众多的微型控制器中,51单片机尤其是STC89C52单片机以其操作简单、功能丰富、编程语言通俗易懂等优势得到广泛的应用,在物联网、智能终端产品的开发中也有着举足轻重的地位,而PC机发展快,功能强大,将二者借助WiFi互联,可实现远程终端控制,充分发挥各自的优势[2~3]。

1 系统技术方案

1.1 系统方案

本设计主要由STC89C52单片机、压力检测传输模块、LCD1602液晶显示模块、按键模块、无线传输模块等组成。以单片机作为核心进行逻辑控制,压力检测模块对压力进行检测,由于检测出来的信号比较微小,所以将检测后的信息经过运算放大电路处理后发送至数模转换芯片,经过整合处理和AD采集后送给单片机,再将数据整理分析后传输到液晶显示模块并将所测得的数据显示出来,同时用无线传输模块传输到电脑或手机上。系统设计如图1.

图1 系统设计

1.2 开发平台

Altium Designer是原Protel软件开发商Altium公司推出的电子电路开发系统。本设计是基于单片机压力计的设计与实现,其中最为核心的是微处理器STC89C52,它是一种带8K字节FLASH存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。使用C语言进行开发,所采用的开发平台Keil5,兼容了多种功能,包括项目的编辑、程序的调试、编译、微处理器读写文件(hex文件)的生成等[4~5]。

2 系统的硬件设计

在硬件中使用到的核心是微处理器芯片STC89C52,本系统采用最小系统作为核心,再辅助其他检测元件进行数据的采集,借助显示单元实现人机交互,借助其他的电路元件逻辑控制。根据压力计所需要的功能进行分析,最终确定硬件模块的组成,包括LCD1602液晶显示模块、压力检测传输模块、STC89C52单片机、无线传输模块。压力数据采集单元需要将采集的数据传输给单片机显示,且通过模块无线传输到PC机,通过PC机的串口接收后,在PC机上显示[6]。

2.1 传感器选择

常用的传感器有两种,一种是压电传感器,又称自发电式传感器,一种是电阻应变式传感器,它利用电阻应变效应,将各种力学量转换为电信号。通过对压力传感器与电阻应变式传感器比较分析,选择电阻应变式传感器。称重范围0~5 kg,误差不大于±0.005 kg,量程为5 kg,精度为0.01%.

压力检测模块分为压力传感器部分和放大采样传输部分,利用电阻应变效应,将力学量转换为电信号[7]。此传感器满量程时,输出的电压信号5 mV,对单片机来说太微小了,所以需要先对其进行放大,而HX711则具备此功能,它内部的A输入通道,可以将模拟输入信号放大128倍,然后采样输出24 bit AD转换值,单片机可以根据指定时序将24 bit数据读出。HX711内部的稳压电源,可以直接向外部传感器和芯片内的A/D 转换器提供电源,芯片内的时钟振荡器有上电自动复位功能[8],24 bit HX711驱动程序如下:

sbit ADDO = P1^3;

sbit ADSK = P0^1;

unsigned long ReadCount(void)

{ unsigned long Count;

unsigned char i;

ADSK=0; //使能AD(PD_SCK 置低)

Count=0;

while(ADDO); //AD转换未结束等待,否则开始读取

for (i=0;i<24;i++)

{

ADSK=1;

Count = Count<<1; //下降沿时Count左移一位

ADSK=0;

If (ADDO) Count++;

}

ASDK=1;

Count=Count^0x800000; //第25个脉冲下降沿转换数据

ADSK=0;

return(Count);

}

HX711与传感器、电阻、电容、接线原理如图2.

图2 HX711接线原理图

2.2 超重报警电路设计

不同的传感器有不同的称重范围,为了有效保护传感器,提高系统的安全性,在系统中设计了报警指示电路。报警指示电路由三极管8550、蜂鸣器、电阻等实现,通过单片机I/O口控制8550,当单片机的I/O口输出低电平时,8550导通,蜂鸣器通电发出报警声,当单片机I/O口输出高电平时,8550截止,蜂鸣器停止报警。

2.3 按键电路设计

按键输入电路用来在电子称测量过程中输入单价值,按键输入电路采用4*4矩阵键盘,采用“行扫描法”实现。首先确定键盘是否有按键,将Y0-Y3置低电平,然后检测列线的状态。一个列的电平表示在键盘按下了一个键,而关闭的键位于四个按钮中的一个按钮上,在这个按钮上,低电平线跨越了四行。如果所有的列线都是高电平,键盘就没有按键了。系统开机检测托盘重量,并将托盘重量清零,即每次开机后检测托盘重量,程序自动将托盘重量保存在一个变量中,称量过程中每次都将获得的重量减去托盘重量,而得到所要称量物体的真正的重量。在正确输入了单价之后,按下计算按键,将会计算出金额,并在液晶显示器上显示出重量、单价、总价。

2.4 无线传输模块

在硬件设备的开发中,借助无线传输模块实现单片机与PC计算机的数据通讯,而在使用的过程中需要借助处理芯片串口实现数据的收发,该无线传输模块内嵌了IEEE802.11b.g.n协议栈和能够进行数据网络传输的协议,即TCP/IP协议栈。在设计中,采用无线模块,实现数据的收发[9~11]。无线传输模块的STATE是连接状态引脚,未使用该引脚。RXD为串口输入引脚,需与单片机模块TXD引脚相连;TXD为串口输出脚,需与单片机RXD引脚相连。GND和VCC分别为地引脚和电源引脚。EN为空引脚,不使用。

在Protues仿真软件中,使用Virtual Terminal(虚拟终端),此模块的协议与本文使用的协议一致,所以能在Virtual Terminal上显示出所需要传输给计算机的数据[12]。

3 系统的软件设计

该单片机压力计,以程序的布局、构架和实现的方式进行程序的编写,进而实现相关的功能。在程序语言的选择上,可供选择的语言有C语言和汇编语言,开发中选用了较为简便的C语言进行程序框架的设计和逻辑语言的编辑[13]。

3.1 单片机的软件设计

分析元器件后绘制原理图,再根据原理图,分析需要用STC89C52的哪些寄存器,逐步完成寄存器的调用,完成传感器程序的逻辑开发,完成环境参数数据的采集,在main()主函数中执行和调用,达到预期的功能。在控制硬件所需要的程序开发中,将所需要的功能一一实现后,再统一调试,避免程序中出现错误现象。而实现数据的发送环节,借助串口调试软件,检测数据是否通过串口发送出去。按照C51开发的逻辑将程序编译后,转换为单片机可执行的hex文件,再通过串口进行程序的烧录,将所需要的驱动安装完成之后,借助仿真器(STC-ISP)将程序及时烧录入芯片之中。

3.2 读取压力数据

系统采用HX711压力传感器测量压力,该模块能够在较短的时间内进行压力数据的读取,当模块接收到压力数据后,把数据放入内置的数据存储单元,然后根据具体需求进行数据的读取。在将24 bit数据通过串口传输给单片机,单片机内部读取数据时,需要了解HX711传输数据的协议才能准确无误的获得传感器的数据。为此,需要了解HX711芯片数据传输的时序图,才能正确读取数据,串口通讯线由管脚PD_SCK和DOUT组成,其中PD_SCK为断电和串口时钟输入,DOUT为数据输出。HX711从复位状态进入正常工作状态,通道A和增益128会被自动选择作为第一次 A/D 转换的输入通道和增益,为了保证串口通讯正常进行,PD_SCK应在25~27之间。当 A/D 转换器的输入通道或增益改变时,DOUT 在4个数据输出周期后,从高电平变低电平达到稳定,输出有效数据[7~8]。HX711数据输出时序如图3.

图3 HX711数据输出时序

3.3 数据处理流程

AD数据的转换已经由HX711来完成,所以输入到单片机的信号是24 bit的数字信号,可以直接进行调用。开中断获取经过HX711放大和AD转换后的数据,数据无误后关中断,按键扫描,若去皮按键按下,则保存此时重量,输出重量需要用实际重量减去保存的重量,若未按下,则输出重量直接等于实际重量,再将输出重量进行显示。

3.4 计算机的软件设计

Windows Sockets 是 Microsoft Windows的网络程序接口。套接字(Socket)是应用层与TCP/IP协议族通信的中间抽象层,它把复杂的 TCP/IP协议族隐藏在Socket接口的背后,通过Socket函数调用符合指定协议的数据,一个套接字只能与同一区域内的套接字交换数据。TCP/IP提供了流式套接字(SOCK_STREAM)、数据报套接字(SOCK _DGRAM)、原始套接字(SOCK _RAW),不论什么套接字,实际网络编程一般采用C/S模型按各自的时序调用[14]。

服务器调用socket()建立数据报套接字(s),通过bind()将套接字(s)与本地地址相连,recvfrom()/sendto()通过套接字(s)读写数据,直到数据交换完成、最后通过closesocket()关闭套接字(s),结束服务。计算机客户端依次调用socket()、connect(),向单片机服务器发送一个连接请求;单片机服务器监听到这个请求之后,就会调用accept()函数接收请求,如果accpet成功,则返回由内核自动生成的一个全新的描述字,至此服务器与客户建立好连接;接下来就可以调用网络I/O进行读写操作,从而实现计算机与单片机不同进程之间的通信。

计算机通过clientSocket = new Socket(HOST, PORT)连接单片机,其中,HOST为单片机地址,PORT为单片机的端口。然后由 mReceiveThread = new ReceiveThread(clientSocket)、mReceiveThread.start()开启接收数据线程,由于采用多线程通讯方式实时接收数据,有效提高了其性能。计算机接收单片机数据如图4.

图4 计算机接收单片机数据

4 功能测试及可靠性

完善电路布局,实现模块与模块之间电路的互联互通,在程序上逐步完善所需要的功能,之后将功能进行组合,全面检测每一个环节、每一个功能的具体实现,以测试的数据作为单片机压力计的设计与实现成果分析的依据。所测试的数据也可作为后面需要完善的时候进行参考的依据,最终实现基于单片机压力计的综合功能。

4.1 功能测试

以单片机作为核心的压力计要进行功能测试,常用的测试方法包括模块仿真法、数据分析法、观察法,为确保参数的有效读取和操作的简便,此处的检测采用直接观察法进行功能的测试。测试的内容是将程序按照功能分别烧录,在将检测到的数据逐步记录,分析其中的数值是否是正常的,还需借助温度的变化检测校准、减少传感器检测的数据带来的误差,将误差达到最小,以确保硬件、软件的正确性。

4.2 可靠性检测

为确保设计完成后能够有效稳定地运行,将硬件检测确认无误后,把完整功能的程序烧录单片机中,让所有的功能运行起来。运行一周左右检测运行的可靠性,并每间隔24小时检测一次各个环节各个功能是否达到预先的数据指标。查看需要采集的参数有无误差、报警模块有无正常工作,多进行几次测量物体的更换,对数据进行误差分析等等。

5 总结

压电传感器的不足之处主要表现在高内阻、功率小,输出的信号弱,电缆的分布电容及噪声干扰也会影响输出的特性。因此,对电路要求很高。本方案克服了这一弱点,实现了一款具有多线程实时通讯功能的压力计,使传统的电子测量仪器能在远程、功能、精度及自动化水平等方面得以显著提高,具有一定的实用性。

猜你喜欢

压力计串口重量
浅谈AB PLC串口跟RFID传感器的通讯应用
重量
高精度井下存储式电子压力计的研制
活塞压力计的活塞系统设计研究
USB接口的多串口数据并行接收方法探索
堵塞式压力计验封资料分析与应用
基于数字压力计的精密压力表示值误差的不确定度分析
基于蓝牙串口适配器的GPS接收机与AutoCAD的实时无线通信
基于并行控制的FPGA多串口拓展实现
灰的重量