一、所选主题和项目介绍
在现代工业自动化中,温度监测系统是确保设备和环境正常运行的关键一环。过高或过低的温度可能会导致设备故障,甚至引发灾难性事故,因此温度监控和报警系统的设计显得尤为重要。本项目的主题是基于带屏十二指神探控制平台设计一个远端温度变送器及报警系统。通过NTC(负温度系数热敏电阻)传感器DC103G9G与配套电路,实现远程温度采集,并通过带屏十二指神探实时显示温度数据,设置报警阈值,通过颜色变化显示温度是否超标,同时进行滤波处理避免报警的误触发。具体目标是设计一个具有较高准确度、可靠性和可扩展性的温度采集与报警系统,满足工业环境的应用需求。
二、使用到的所有硬件介绍
本项目所使用的硬件组成较为简单但功能完备,涵盖了温度传感、信号处理、显示和报警四个主要模块。具体硬件介绍如下:
NTC热敏电阻(DC103G9G)
型号:DC103G9G(NTC)
基本参数:THERMISTOR NTC 10KOHM 3575K BEAD,B0/50 3575K
工作原理:NTC热敏电阻的阻值随着温度升高而减小,通过NTC电阻值变化计算温度的变化。其典型的B值为3575K,适用于工业温度监控。
MCP6002运算放大器
功能:MCP6002运算放大器用于将从NTC热敏电阻读取到的模拟电压信号进行跟随,确保温度信号可以被精确读取。该器件具有低功耗、宽电压范围等优点,适合在低功耗系统中使用。
带屏十二指神探开发板
功能:该开发板作为系统的核心控制平台,承担温度数据采集、显示、报警控制等功能。它集成了LCD显示屏、ADC采集模块和多种外设接口,能够快速开发并测试温度监测与报警系统。
三、方案框图和项目设计思路介绍
温度采集模块:使用DC103G9G NTC热敏电阻采集远端温度。通过在NTC电阻上串联一个10K的上拉电阻,构成温度传感电路。MCP6002运算放大器通过电压跟随的方式,将温度信号转换为合适的电压值,然后送入带屏十二指神探的ADC模块进行采样。
数据采集与转换模块:带屏十二指神探通过其内建的ADC模块对温度信号进行采样,并根据NTC热敏电阻的特性,使用合适的算法将电压信号转换为实际温度值。将采集到的温度数据进行处理,显示在LCD屏幕上。用户可以通过开发板上的界面设置一个温度报警阈值。当温度超出预设阈值时,系统会通过改变显示屏区域的颜色(绿色表示正常,红色表示超温)来提示用户。
四、原理图和PCB展示及介绍
本次主要绘制的温度采集板
原理图:
温度采集电路基于NTC电阻与上拉电阻组成电桥电路,信号经过MCP6002运算放大器后,由带屏十二指神探的ADC进行采集。
PCB设计:
根据原理图,我们设计了一个简洁的PCB电路板,将各个模块合理布局,确保信号的稳定性和电源的均衡分配。在PCB设计时,还特别注意了热敏电阻的布线,以减少温度变化对其他电路的干扰。
五、调试软件、软件流程图和关键代码介绍
软件流程图:
启动初始化:系统启动时初始化各个模块,配置ADC采样频率,设置初始报警阈值。
温度采集:定时采样NTC电阻输出的电压信号,通过ADC转换为温度值。
数据处理:通过滤波算法平滑温度变化,判断温度是否超标。
报警控制:根据温度判断是否超标,改变LCD屏幕的显示颜色,触发报警输出。
关键代码:
NTC温度转换 (Steinhart-Hart方程):
def ntc_resistance(adc_value):
"""根据ADC值计算NTC电阻"""
voltage = adc_value * ADC_VREF / ADC_MAX
if voltage >= ADC_VREF - 0.01:
return 1000
if voltage <= 0.01:
return 100000
r_ntc = PULL_UP_R * voltage / (ADC_VREF - voltage)
return r_ntc
def ntc_temperature(adc_value):
"""Steinhart-Hart方程: 将NTC电阻转换为温度"""
r = ntc_resistance(adc_value)
if r <= 0:
return 0
try:
inv_t = 1.0 / NTC_T0 + (1.0 / NTC_B) * math.log(r / NTC_R0)
t = 1.0 / inv_t - 273.15
return t
except:
return 0
滤波算法:
def read_filtered_adc():
"""采集5次ADC值,返回中值"""
global buffer_index
adc_buffer[buffer_index] = adc.read_u16()
buffer_index = (buffer_index + 1) % FILTER_SIZE
sorted_values = list(adc_buffer)
sorted_values.sort()
return sorted_values[FILTER_SIZE // 2]
报警判断:
def check_alarm(temp):
"""带迟滞的报警判断"""
global alarm_triggered
if alarm_triggered:
if temp < (alarm_temp - alarm_hysteresis):
alarm_triggered = False
else:
if temp >= alarm_temp:
alarm_triggered = True
return alarm_triggered
六、硬件功能展示图及说明
硬件整体连接如下:
初始状态如下:
初始报警阈值为30℃,可通过按键进行调节。
超温报警状态如下:
当温度超出预设阈值时,LCD屏的背景颜色会变为红色,提示用户超温。
七、设计中遇到的难题和解决方法
误报警,环境中可能存在电磁干扰,导致温度数据波动,造成误报警。我们通过通过增加数字滤波算法(如滑动平均滤波),平滑温度数据,减少噪声影响。
八、心得体会(包括意见或建议)
本项目设计过程中,我们深刻认识到温度监控系统在工业自动化中的重要性。通过结合硬件与软件的协同设计,我们可以有效提高系统的准确性与可靠性。在调试过程中,过滤噪声、减少误报警是设计中的关键挑战之一,滤波技术的应用对于提高系统稳定性至关重要。
本项目展示了如何通过硬件和软件的设计来实现一个基本的远端温度变送器与报警系统。在工业自动化领域,温度监控系统的可靠性和准确性对于保障设备的安全运行至关重要。