基于ESP32的温度控制检测装置

2023-10-31 06:58覃昇学叶运黎陈锦辉车志强
信息记录材料 2023年9期
关键词:温度传感器寄存器时钟

覃昇学,叶运黎,陈锦辉,车志强

(广东理工学院电气与电子工程学院 广东 肇庆 526100)

0 引言

温度的检测与控制是工业生产中自动执行控制系统的重要任务之一,绝大多数故障的原因是因为电路板从生产区开始出现的漏焊、假焊、虚焊,以及长时间不规范操作导致电路板损害、温度过高、线路熔断短路等情况。在维修过程中,往往要依靠万用表以及红外检测仪等工具结合实际的功能进行维修检测,定位故障点位,而故障点位有以下几个问题:因短路引起的发热,或短路引起的不工作,以及接触不良引起的电压不稳定或低于额定工作值,这些在电路板温度检测系统中都会以异常温度的形式对外表现。在生产过程中,机器损坏时每一秒都要承受相应的经济损失,所以,工业上对机器检测与维护的高效性、精确性、智能化要求逐渐升高。由此看来,温度的最终检测和控制在工业上是相当重要的。因此,在生产中,温度的监测与调控十分关键,可削减维修次数和维修用度,实现确切维修和即时监测。

该装置能够给机器维修和维护减少寻找故障发热点的时间和步骤,通过长时间的观察分析得出损害原因,方便机械设计者对机器进行改进,减少该类问题的发生,强化机器的稳定性,保证生产的有序进行。

1 系统总体设计

以ESP32为基础,研制了一种以ESP32为核心的测温设备,其整体结构见图1,主体结构为ESP32最少体系,包含显示电路、VCC-GND、SD卡、报警电路、独立按键、步进电机驱动电路L298N、继电器。本系统中主要的控制元件是ESP32,它的成本低,并且具有极好的性能。方便嵌入到任何产品,功能强大,支持LWIP(TCP/IP)协议,支持freeRTOS操作系统,WIFI的连接方式有AP、STA、AP+STA模式,并且支持Lua编程,开发更简单。温度传感器采用模数温度传感器MAX6675。显示用电器采用SSD1306液晶高清显示器。报警检测电路采用低电平、一个LED指示灯结构设计,逐步实现检测报警。独立式多媒体按键用来设置当前实测时间(年、月、日、时、分、秒)和设定不同时间段温度上升报警的上下限阈值。当实测环境温度值大于设定时间段的温度上限值时,系统实现自动判断进入散热运作模式,步进驱动电动机运转顺畅带动散热装置具体工作,而且输出信号响、LED指示灯点亮数据全面上传。若低于设定时间段的温度下限值,智能系统自动停止进入加热运作模式,交流接触器控制加热新设备工作,从而高电平响、LED指示灯点亮综合数据上传。若当前温度处于设定时间段的温度上下限阈值之间时,关闭散热装置、加热设备及报警电路,更容易使温度控制在设定的范围内[1]。

图1 总体设计框图

2 系统硬件设计

2.1 温度传感器电路设计

温度传感器主要是用来检测与采集温度数据的元件,本装置主要采用模数温度传感器MAX6675,如图2所示,MAX6675是美国MAXIM公司生产的带有冷端补偿、线性校正、热电偶断线检测的串行K型热电偶模数转换器,它的温度分辨能力为0.25 ℃,冷端补偿范围为-20~+80 ℃,电压为3.0~5.5 V。

MAX6675是一个8脚SO的组件,该组件包括12 bit A/D变换器、2台放大器、冷端校正和基准电压的输出。skeeze K型温差电位计与T+、 T-连接,通过二级放大器进行放大、过滤,使其与晶片内部 A/D变换器对应。实际上,K形温差的大小是恒定的,MAX6675就是通过对温差的测量来获得温度的重要信息。同时,热电偶输出的热电势只与工作端(一般称为热端)和参考端(一般称作冷端)的日温差有关,因为当换热(即MAX6675所在的居住环境)的自然温度变化时,MAX6675是经过内置的冷端补偿的电路来同步实现冷端补偿的。该传感器可以将变化的温度信号转换为相应的电平上的信号显示出来,有了这些电压信号系统的信号和热电偶的输出热电势,便能得知测量端的正常外界温度值。

2.2 显示器电路设计

显示器主要是用于显示出温度数据的数值,而且还可以显示出实时时间(年、月、日、时、分、秒)和设定不同时间段的温度阈值。本装置主要采用SSD1306液晶显示器,如图3所示,SSD1306是一款带控制器的用于OLED点阵图形显示系统的单片CMOS OLED/PLED驱动器。SSD1306液晶显示屏中包括了128个SEG(列)和64个COM(行)。SSD1306采用了一个反差操作器、一个显示RAM(GDDRAM)以及一个振荡器来降低外部器件的数目和功率消耗。该芯片有256级亮度控制。常规数据或命令由通用微控制器通过硬件设计选择的6800/8000系通用并行控制接口、I2C接口或串行外围接口发送。该芯片适用于许多小型便携式应用,如手机副显示屏、MP3播放器和计算器等。

图3 SSD1306液晶显示器电路

图4 PCF8563时钟芯片电路

SSD1306本身支持多种总线驱动方式,包括SPI以及并口等,通过芯片的相应IO口拉低拉升来选择哪一种MiniUSB接口,本例中基本模块通过电阻将相应I/O口配置固化后使用了I2C接口连接,使用I2C Spdif接口时,SSD1306允许有最多两个7位的I2C地址,进而通过相应的I/O口拉低拉升来切换,一般默认是0x3c,在屏幕模块的背面,都能看到一个I2C地址切换模式提示,需要改变模块I2C地址时,只需要把提示区域的电阻取出来手工焊接到另外一端即可。要提醒的是板上的I2C是加上了第零位读写位后的数值范围,即0x78=0x3c<<10x7A=0x3d<<1。

2.3 报警电路设计

报警内部电路是将温度的变化转化为数字信号的结构变化,而且需要实现AD模数转换即将模拟信号转换成数字信号,也要为处理器所接受,并且能通过计算获得真实完整的温度信息以便进行进一步的处理,在其电路上,加装一个蜂鸣器和LED指示灯。重点实现以下情况:(1)比较实际温度与设定时间段的温度阈值,判断当前环境温度有否大于已设定当前时间的温度上限阈值。(2)如果是,执行控制电源接警,LED指示灯闪烁发光,步进减速箱带动相关散热装置工作,执行降温操作。(3)如果否,判定目前周围环境的实际温度低于设定的目前时刻的最低气温临界值。(4)倘若是,执行按钮开关报警,LED指示灯闪烁发光,借助继电器控制加热硬件设备,执行温度上升操作。(5)相反,就说明当前周围环境温度稳定在已设定的时间段温度阈值之内,那么就关闭散热、加热及报警功能。

2.4 时钟电路设计

时钟电路系统就是像时钟一样准确运动的放大或缩小的驱动电路。任何工作都能够按时间顺序进行。最重要的是用来产生这个时间的信号电路系统,也就是时钟电路组件。对于时钟电路设计,本装置选用的是PCF8563。PCF8563可以完成各种复杂的定时服务,实现各种报警功能、定时器功能、时钟输出功能和手动中断输出功能,或为单片机提供看门狗的一些功能。它是一种高性能、高价值的专用时钟芯片。在电表、水表、煤气表、电话、便携式仪器和普通电池供电仪器等领域得到了广泛的应用。

PCF8563有16个8位寄存器,包括:一个可自动递增的地址寄存器、一个内置32.768 KHz 的振荡器(带有光纤层集成整流晶体管)、一个分频器(用于向实时时钟提供源时钟)、一个可编程的时钟输出界面、一个定时器和一个警报器、一个掉电检测器和一个400 KHz的I2C总线接口。

所有16个寄存器都设计为可寻址的8位并行寄存器,但并非所有位都有用。前两个寄存器(内存地址00 h、01 h)用于控制寄存器和状态寄存器,内存地址02 h~08 h用于时钟驱动数码管显示(第二年计数器),地址09 h~0ch用于紧急报警寄存器(两个用于定义报警处理),地址0dh控制CLKOUT管脚的输出交流频率,地址0eh和0fh用于定点定时停滞控制寄存器和状态寄存器。秒、分、时、日、月、年、分钟报警、小时报警、每日报警寄存器,编码格式为BCD,周报警寄存器不以BCD格式编码。读取RTC寄存器时,所有计数器的内容都被锁定。事实上,在传输条件下,可以快速扩展并禁止错误读取时钟芯片。

3 系统软件设计

本系统的软件设计应用C语言与Java语言共同编写,最终由主程序调用各部子程序来实现整体功能。编写此系统中的程序的步骤如下:(1)用Java语言编写Web页面以及手机APP程序。(2)用C语言编写ESP32程序,总体程序包括主程序设计、连接WiFi程序设计、初始化程序设计、温度获取以及PID->PID调节温度程序设计。整体的多种功能都在主程序的调用中实现,进入主程序,要先进行系统的WiFi连接操作。WiFi连接操作的细节是选择WiFi并等待其与WiFi进行相连,然后对其进行初始化操作,初始化其PID与温度传感器,并且要分配好存储器开发资源,实现更好的简单编程和调用。本设计方式对温度的采集可实现无线采集。无线采集室温后被无线发送模块觉查并将数据发送给无线接收模块,最后需要将温度值在SSD1306液晶显示器上公开显示。本地所测温度值与装置实体按键设置的报警温度值都将在手机APP与网页上进行展示。若MAX6675感应的实际温度超出满量程,就会在网页上显示出来并启动报警部分指定程序,随之开关电路便会报警[2],最后会在调试中发现不足并及时完善。

3.1 程序头文件程序设计

对程序进行头文件设定,保存及声明其程序,链接其应用程序及其函数库,防止其程序错乱。将其模块管脚的接口连接到装配检索引脚,定义其对应引脚的新模块,并定义其对应的Alpine程序。程序如下:

#include

#include

#include

#include

#include

#include

#define SCK_PIN 12 // 模块上的SCK口连接到 pin3

#define CS_PIN 14 // 模块上的CS口连接到 pin4

#define SO_PIN 27 // 模块上的SO口连接到 pin5

#define A0 33

#define A1 25

const char* ssid ="aqq";

如何判断你家的宠物狗是“左撇子”还是“右撇子”?这并不是一件容易的事情。麦克里维和他的研究小组准备了一种圆筒状的容器,里面盛好狗食。接受测验的狗要吃容器里的食物,就必须用一只爪子按住容器,使之静止不动。每只狗接受100次这样的测验,然后研究人员根据这100次内这只狗使用左爪和右爪的偏好,判断这只狗是“左撇子”还是“右撇子”。

const char* password = "88888888";

3.2 连接WiFi程序设计

进行WiFi连接,等待WiFi释放信号,搜索其附近IP地址,连接其WiFi,另一方面也能寻找其对应的IP地址进行直接连接。程序如下:

void connect_TO_WiFi()

{

WiFi.begin(ssid, password);

Serial.println();

Serial.print("Connecting");

while(WiFi.status() !=WL_CONNECTED) {

delay(500);

Serial.print(".");

}

Serial.println();

Serial.print("Connected, IP address: "); //连接的IP地址

Serial.println(WiFi.localIP());

Serial.print("Connected, IP address: "); //连接的IP地址

Serial.println(WiFi.gatewayIP());

Serial.print("Connected, IP address: "); //连接的IP地址

Serial.println(WiFi.dnsIP(0));

}

void setup()

3.3 温度获取以及PID->PID调节温度设计

获取MAX6675的温度数据,将获取的温度数据通过http发送到电脑或服务器上,定义其温度,将数据类型由double转为char型,然后获取http传回来的数值,将string数据转换为int型的数据,将数值进行处理放入到PID->PID调节温度。

void loop()

{

Init();

float a;

//char* dtostrf(double _val,signed char _width, unsigned char prec, char* _s); //函数

while(1)

{

double celsius = thermocouple->readCelsius(); // 摄氏度

Serial.print("Temperature: ");

//Serial.println(String(celsius) + " C, ");

Serial.println(int(celsius));

////

a=float(celsius);

char baseUrl[128] = {0};

//temp="12";

char temp[20];

sprintf(temp,"%.0f", a); //数据类型转换double转为char类型

strcpy(baseUrl, "http://37978cg590.qicp.vip:80/receiveWd?wd="); //电脑IPV4的地址

char* getUrl = strcat(baseUrl,temp);

HTTPClient httpClient;

httpClient.begin(getUrl);

Serial.println(getUrl);

int httpCode;

httpCode = httpClient.GET();

if(httpCode >0){

String payload = httpClient.getString();

int n = atoi(payload.c_str());

Setpoint=n;

Serial.println(n);

}

4 系统运行

温度控制检测装置见图5,在完成实物图片焊接后,将编写的每个程序写入ESP32芯片中完成实物系统调试。DS18B20测量的温度出现异常室温值,报警喇叭就会报警、LED指示灯会发光。当启动该装置后,装置中的温度传感器将其数据传输到http当中,同时存储其数据到SD存储卡中,实现一个循环流程。图6是温度检测记录数据曲线图。

图5 温度控制检测装置

图6 温度检测记录数据曲线

问题与改进主要表现在以下3个方面:

(1)检测电子元件所用的温度监测器在市面上大多使用红外热成像仪,但是红外热成像仪无法直接安装在机器内部,对于检测电子元件故障检测来说十分不便。

(2)传统温度检测类机器没有与网络连接,也没有与之相匹配的大数据分析,该项目会弥补在机械温度异常检测中大数据的空缺。

(3)异常的电子元件往往会造成电路短路,强大的电流通过多个元器件造成多个元器件损害,如何在短路后第一时间隔离短路电子元件的检测或保护系统是需要探究的,特别是该系统与保护电路之间的互相扶持以及系统对异常电子元件的监控与上传。

5 结语

目前我国温度控制检测系统还处于发展阶段,如何准确地检测以及控制温度的变化,是我们应该着重思考以及探索的问题,高精度、低成本的温度控制检测系统对于我国工业发展是一个强有力的提升。基于ESP32的温度检测系统,实现了低成本与实时反馈数据等功能,在一些小型工业检测温度上,可以大大降低其检测时间以及成本。

猜你喜欢
温度传感器寄存器时钟
别样的“时钟”
古代的时钟
Lite寄存器模型的设计与实现
温度传感器DS18B20在温度计设计中的应用
一种高性能CMOS温度传感器
XTR105电流变送器在温度传感器中的应用
分簇结构向量寄存器分配策略研究*
有趣的时钟
时钟会开“花”
温度传感器在笔记本电脑散热系统中的应用