51单片机PT100温度测量系统,包含恒流源驱动、信号放大、AD转换、温度计算、显示输出等功能。
一、系统架构
PT100温度测量系统架构:
├── 传感器模块
│ ├── PT100铂电阻(三线制)
│ ├── 恒流源电路(1mA)
│ └── 信号调理电路
├── 单片机模块
│ ├── AT89C51/STC89C52
│ ├── ADC0832模数转换
│ └── 温度计算算法
├── 显示模块
│ ├── LCD1602液晶显示
│ ├── 数码管显示
│ └── 串口输出
└── 输出模块
├── 继电器控制
├── PWM输出
└── 报警输出
二、硬件连接
2.1 引脚定义
c
/* 51单片机引脚定义 */
sbit ADC_CS = P1^0; // ADC0832片选
sbit ADC_CLK = P1^1; // ADC0832时钟
sbit ADC_DIO = P1^2; // ADC0832数据
sbit LCD_RS = P2^0; // LCD1602 RS
sbit LCD_RW = P2^1; // LCD1602 RW
sbit LCD_EN = P2^2; // LCD1602 EN
#define LCD_DB P0 // LCD1602数据总线
sbit KEY_SET = P3^2; // 设置按键
sbit KEY_UP = P3^3; // 加按键
sbit KEY_DOWN = P3^4; // 减按键
sbit RELAY = P2^5; // 继电器控制
sbit BUZZER = P2^6; // 蜂鸣器报警
sbit LED_RUN = P2^7; // 运行指示灯
/* PT100测量参数 */
#define CURRENT_SRC 1.0 // 恒流源电流(mA)
#define AMP_GAIN 10.0 // 放大倍数
#define R_REF 100.0 // 参考电阻(Ω)
#define V_REF 5.0 // 参考电压(V)
#define ADC_BITS 8 // ADC位数
三、核心代码实现
3.1 主程序 (main.c)
c
#include <reg52.h>
#include <intrins.h>
#include <math.h>
#include <string.h>
typedef unsigned char uchar;
typedef unsigned int uint;
typedef unsigned long ulong;
/* 全局变量 */
float g_temperature = 0.0; // 当前温度
float g_temp_set = 50.0; // 设定温度
float g_temp_high = 80.0; // 高温报警
float g_temp_low = 10.0; // 低温报警
uchar g_display_mode = 0; // 显示模式
bit g_alarm_flag = 0; // 报警标志
bit g_relay_state = 0; // 继电器状态
/* 函数声明 */
void delay_ms(uint ms);
void adc0832_init(void);
uchar adc0832_read(uchar channel);
float pt100_resistance_to_temp(float resistance);
float adc_to_resistance(uchar adc_value);
void lcd_init(void);
void lcd_show_string(uchar x, uchar y, char *str);
void lcd_show_num(uchar x, uchar y, float num, uchar decimals);
void key_scan(void);
void control_process(void);
void display_update(void);
void alarm_check(void);
/* 主函数 */
void main(void)
{
EA = 1; // 开总中断
/* 初始化 */
adc0832_init();
lcd_init();
lcd_show_string(0, 0, "PT100 Temp System");
lcd_show_string(0, 1, "Initializing...");
delay_ms(1000);
/* 主循环 */
while(1)
{
uchar adc_value;
float resistance;
/* 读取ADC */
adc_value = adc0832_read(0); // 通道0
/* 计算电阻 */
resistance = adc_to_resistance(adc_value);
/* 计算温度 */
g_temperature = pt100_resistance_to_temp(resistance);
/* 控制处理 */
control_process();
/* 报警检查 */
alarm_check();
/* 显示更新 */
display_update();
/* 按键扫描 */
key_scan();
/* 运行指示灯闪烁 */
LED_RUN = ~LED_RUN;
delay_ms(500);
}
}
/* 延时函数 */
void delay_ms(uint ms)
{
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
/* ADC0832初始化 */
void adc0832_init(void)
{
ADC_CS = 1;
ADC_CLK = 0;
}
/* 读取ADC0832 */
uchar adc0832_read(uchar channel)
{
uchar i, dat1 = 0, dat2 = 0;
ADC_CS = 0; // 片选使能
/* 启动信号 */
ADC_CLK = 0;
ADC_DIO = 1;
_nop_();
ADC_CLK = 1;
_nop_();
/* 选择通道 */
ADC_CLK = 0;
if(channel == 0) // CH0
ADC_DIO = 1;
else // CH1
ADC_DIO = 0;
_nop_();
ADC_CLK = 1;
_nop_();
ADC_CLK = 0;
ADC_DIO = 1; // 释放数据线
_nop_();
/* 读取数据 */
for(i = 0; i < 8; i++)
{
ADC_CLK = 1;
_nop_();
ADC_CLK = 0;
dat1 <<= 1;
if(ADC_DIO)
dat1 |= 0x01;
_nop_();
}
for(i = 0; i < 8; i++)
{
dat2 >>= 1;
if(ADC_DIO)
dat2 |= 0x80;
ADC_CLK = 1;
_nop_();
ADC_CLK = 0;
_nop_();
}
ADC_CS = 1; // 片选禁止
return (dat1 == dat2) ? dat1 : 0;
}
/* ADC值转换为电阻值 */
float adc_to_resistance(uchar adc_value)
{
float voltage, resistance;
/* 计算ADC电压 */
voltage = (float)adc_value * V_REF / 255.0;
/* 计算PT100两端电压(考虑放大倍数) */
voltage = voltage / AMP_GAIN;
/* 计算PT100电阻 */
resistance = voltage / (CURRENT_SRC / 1000.0); // 电流单位转换为A
return resistance;
}
/* PT100电阻转温度(Callendar-Van Dusen方程) */
float pt100_resistance_to_temp(float resistance)
{
float temp;
float R0 = 100.0; // 0℃时的电阻
float A = 3.9083e-3; // 系数A
float B = -5.775e-7; // 系数B
float C = -4.183e-12; // 系数C(用于-200~0℃)
if(resistance < R0)
{
/* 负温度范围(-200~0℃) */
float a = 1.0;
float b = A;
float c = B;
float d = C;
float e = -R0 + resistance;
temp = (-b + sqrt(b*b - 4*a*d*e)) / (2*a*d);
}
else
{
/* 正温度范围(0~850℃) */
float a = B;
float b = A;
float c = 1.0 - resistance/R0;
temp = (-b + sqrt(b*b - 4*a*c)) / (2*a);
}
return temp;
}
/* 简化版温度计算(适合51单片机) */
float pt100_resistance_to_temp_simple(float resistance)
{
float temp;
/* 使用分段线性近似 */
if(resistance >= 100.0 && resistance <= 138.5)
{
/* 0~100℃范围 */
temp = (resistance - 100.0) / 0.385;
}
else if(resistance >= 80.0 && resistance < 100.0)
{
/* -50~0℃范围 */
temp = (resistance - 100.0) / 0.384;
}
else
{
/* 超出范围 */
temp = 999.9;
}
return temp;
}
/* 控制处理 */
void control_process(void)
{
/* 继电器控制 */
if(g_temperature >= g_temp_set)
{
RELAY = 1; // 关闭加热
g_relay_state = 0;
}
else if(g_temperature < g_temp_set - 2.0) // 回差2℃
{
RELAY = 0; // 开启加热
g_relay_state = 1;
}
}
/* 报警检查 */
void alarm_check(void)
{
if(g_temperature >= g_temp_high || g_temperature <= g_temp_low)
{
g_alarm_flag = 1;
BUZZER = 0; // 蜂鸣器响
}
else
{
g_alarm_flag = 0;
BUZZER = 1; // 蜂鸣器停
}
}
/* 显示更新 */
void display_update(void)
{
char buf[16];
if(g_display_mode == 0)
{
/* 显示当前温度 */
lcd_show_string(0, 0, "Current Temp:");
sprintf(buf, "%.1f C", g_temperature);
lcd_show_string(8, 1, buf);
}
else if(g_display_mode == 1)
{
/* 显示设定温度 */
lcd_show_string(0, 0, "Set Temp:");
sprintf(buf, "%.1f C", g_temp_set);
lcd_show_string(8, 1, buf);
}
else if(g_display_mode == 2)
{
/* 显示报警温度 */
lcd_show_string(0, 0, "Alarm Temp:");
sprintf(buf, "H:%.1f L:%.1f", g_temp_high, g_temp_low);
lcd_show_string(0, 1, buf);
}
/* 显示继电器状态 */
if(g_relay_state)
lcd_show_string(0, 1, "HEAT ON ");
else
lcd_show_string(0, 1, "HEAT OFF");
/* 显示报警标志 */
if(g_alarm_flag)
lcd_show_string(14, 1, "ALM");
else
lcd_show_string(14, 1, " ");
}
3.2 LCD1602驱动 (lcd1602.c)
c
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCD_RS = P2^0;
sbit LCD_RW = P2^1;
sbit LCD_EN = P2^2;
#define LCD_DB P0
/* 延时函数 */
void lcd_delay_us(uint us)
{
while(us--);
}
void lcd_delay_ms(uint ms)
{
uint i, j;
for(i = ms; i > 0; i--)
for(j = 110; j > 0; j--);
}
/* 写命令 */
void lcd_write_cmd(uchar cmd)
{
LCD_RS = 0;
LCD_RW = 0;
LCD_DB = cmd;
lcd_delay_us(10);
LCD_EN = 1;
lcd_delay_us(10);
LCD_EN = 0;
lcd_delay_ms(2);
}
/* 写数据 */
void lcd_write_data(uchar dat)
{
LCD_RS = 1;
LCD_RW = 0;
LCD_DB = dat;
lcd_delay_us(10);
LCD_EN = 1;
lcd_delay_us(10);
LCD_EN = 0;
lcd_delay_ms(2);
}
/* 初始化LCD */
void lcd_init(void)
{
lcd_delay_ms(15);
lcd_write_cmd(0x38); // 8位数据,2行显示,5x7点阵
lcd_delay_ms(5);
lcd_write_cmd(0x38);
lcd_delay_ms(5);
lcd_write_cmd(0x38);
lcd_write_cmd(0x0C); // 开显示,关光标
lcd_write_cmd(0x06); // 写入后地址递增
lcd_write_cmd(0x01); // 清屏
lcd_delay_ms(2);
}
/* 设置显示位置 */
void lcd_set_cursor(uchar x, uchar y)
{
uchar addr;
if(y == 0)
addr = 0x80 + x;
else
addr = 0xC0 + x;
lcd_write_cmd(addr);
}
/* 显示字符串 */
void lcd_show_string(uchar x, uchar y, char *str)
{
lcd_set_cursor(x, y);
while(*str)
{
lcd_write_data(*str++);
}
}
/* 显示数字 */
void lcd_show_num(uchar x, uchar y, float num, uchar decimals)
{
char buf[16];
char fmt[10];
sprintf(fmt, "%%.%df", decimals);
sprintf(buf, fmt, num);
lcd_show_string(x, y, buf);
}
3.3 按键处理 (key.c)
c
#include <reg52.h>
#include "main.c"
/* 按键扫描 */
void key_scan(void)
{
static bit key_lock = 0;
if(KEY_SET == 0 && key_lock == 0)
{
delay_ms(10); // 消抖
if(KEY_SET == 0)
{
key_lock = 1;
g_display_mode = (g_display_mode + 1) % 3;
}
}
else if(KEY_SET == 1)
{
key_lock = 0;
}
/* 加按键 */
if(KEY_UP == 0)
{
delay_ms(10);
if(KEY_UP == 0)
{
if(g_display_mode == 1)
{
g_temp_set += 1.0;
if(g_temp_set > 200.0) g_temp_set = 200.0;
}
else if(g_display_mode == 2)
{
g_temp_high += 1.0;
if(g_temp_high > 200.0) g_temp_high = 200.0;
}
while(KEY_UP == 0); // 等待松开
}
}
/* 减按键 */
if(KEY_DOWN == 0)
{
delay_ms(10);
if(KEY_DOWN == 0)
{
if(g_display_mode == 1)
{
g_temp_set -= 1.0;
if(g_temp_set < -50.0) g_temp_set = -50.0;
}
else if(g_display_mode == 2)
{
g_temp_low -= 1.0;
if(g_temp_low < -50.0) g_temp_low = -50.0;
}
while(KEY_DOWN == 0); // 等待松开
}
}
}
四、PT100分度表(查表法)
4.1 PT100分度表 (pt100_table.h)
c
#ifndef PT100_TABLE_H
#define PT100_TABLE_H
#include <reg52.h>
/* PT100分度表(-200~850℃,步长1℃) */
code float pt100_table[1051] = {
// -200℃ ~ -100℃
18.52, 18.96, 19.40, 19.84, 20.28, 20.72, 21.16, 21.60, 22.04, 22.48,
22.92, 23.36, 23.80, 24.24, 24.68, 25.12, 25.56, 26.00, 26.44, 26.88,
27.32, 27.76, 28.20, 28.64, 29.08, 29.52, 29.96, 30.40, 30.84, 31.28,
31.72, 32.16, 32.60, 33.04, 33.48, 33.92, 34.36, 34.80, 35.24, 35.68,
36.12, 36.56, 37.00, 37.44, 37.88, 38.32, 38.76, 39.20, 39.64, 40.08,
40.52, 40.96, 41.40, 41.84, 42.28, 42.72, 43.16, 43.60, 44.04, 44.48,
44.92, 45.36, 45.80, 46.24, 46.68, 47.12, 47.56, 48.00, 48.44, 48.88,
49.32, 49.76, 50.20, 50.64, 51.08, 51.52, 51.96, 52.40, 52.84, 53.28,
53.72, 54.16, 54.60, 55.04, 55.48, 55.92, 56.36, 56.80, 57.24, 57.68,
58.12, 58.56, 59.00, 59.44, 59.88, 60.32, 60.76, 61.20, 61.64, 62.08,
// 0℃ ~ 100℃
100.00, 100.39, 100.78, 101.17, 101.56, 101.95, 102.34, 102.73, 103.12, 103.51,
103.90, 104.29, 104.68, 105.07, 105.46, 105.85, 106.24, 106.63, 107.02, 107.40,
107.79, 108.18, 108.57, 108.96, 109.35, 109.73, 110.12, 110.51, 110.90, 111.29,
111.67, 112.06, 112.45, 112.83, 113.22, 113.61, 114.00, 114.38, 114.77, 115.15,
115.54, 115.93, 116.31, 116.70, 117.08, 117.47, 117.86, 118.24, 118.63, 119.01,
119.40, 119.78, 120.17, 120.55, 120.94, 121.32, 121.71, 122.09, 122.48, 122.86,
123.24, 123.63, 124.01, 124.40, 124.78, 125.16, 125.55, 125.93, 126.31, 126.70,
127.08, 127.46, 127.85, 128.23, 128.61, 129.00, 129.38, 129.76, 130.14, 130.53,
// 100℃ ~ 200℃
130.91, 131.29, 131.67, 132.06, 132.44, 132.82, 133.20, 133.58, 133.96, 134.35,
134.73, 135.11, 135.49, 135.87, 136.25, 136.63, 137.01, 137.39, 137.77, 138.15,
138.53, 138.91, 139.29, 139.67, 140.05, 140.43, 140.81, 141.19, 141.57, 141.94,
142.32, 142.70, 143.08, 143.46, 143.83, 144.21, 144.59, 144.97, 145.34, 145.72,
146.10, 146.47, 146.85, 147.23, 147.60, 147.98, 148.36, 148.73, 149.11, 149.48,
149.86, 150.23, 150.61, 150.98, 151.36, 151.73, 152.11, 152.48, 152.86, 153.23,
153.61, 153.98, 154.35, 154.73, 155.10, 155.48, 155.85, 156.22, 156.60, 156.97,
157.34, 157.72, 158.09, 158.46, 158.83, 159.21, 159.58, 159.95, 160.32, 160.70,
// 200℃ ~ 300℃
161.07, 161.44, 161.81, 162.18, 162.56, 162.93, 163.30, 163.67, 164.04, 164.41,
164.78, 165.15, 165.52, 165.89, 166.26, 166.63, 167.00, 167.37, 167.74, 168.11,
168.48, 168.85, 169.22, 169.59, 169.96, 170.33, 170.69, 171.06, 171.43, 171.80,
172.17, 172.54, 172.90, 173.27, 173.64, 174.00, 174.37, 174.74, 175.10, 175.47,
175.84, 176.20, 176.57, 176.93, 177.30, 177.66, 178.03, 178.39, 178.76, 179.12,
179.49, 179.85, 180.21, 180.58, 180.94, 181.30, 181.67, 182.03, 182.39, 182.76,
183.12, 183.48, 183.84, 184.21, 184.57, 184.93, 185.29, 185.65, 186.01, 186.38,
186.74, 187.10, 187.46, 187.82, 188.18, 188.54, 188.90, 189.26, 189.62, 189.98,
// 300℃ ~ 400℃
190.34, 190.70, 191.06, 191.42, 191.78, 192.14, 192.50, 192.86, 193.22, 193.58,
193.94, 194.29, 194.65, 195.01, 195.37, 195.72, 196.08, 196.44, 196.79, 197.15,
197.51, 197.86, 198.22, 198.57, 198.93, 199.29, 199.64, 200.00, 200.35, 200.71,
201.06, 201.42, 201.77, 202.13, 202.48, 202.84, 203.19, 203.55, 203.90, 204.25,
204.61, 204.96, 205.31, 205.67, 206.02, 206.37, 206.73, 207.08, 207.43, 207.78,
208.14, 208.49, 208.84, 209.19, 209.54, 209.89, 210.24, 210.60, 210.95, 211.30,
211.65, 212.00, 212.35, 212.70, 213.05, 213.40, 213.75, 214.10, 214.45, 214.80,
215.15, 215.50, 215.85, 216.20, 216.55, 216.90, 217.25, 217.60, 217.95, 218.30,
// 400℃ ~ 500℃
218.64, 218.99, 219.34, 219.69, 220.04, 220.38, 220.73, 221.08, 221.42, 221.77,
222.12, 222.46, 222.81, 223.16, 223.50, 223.85, 224.19, 224.54, 224.88, 225.23,
225.57, 225.92, 226.26, 226.61, 226.95, 227.30, 227.64, 227.98, 228.33, 228.67,
229.01, 229.36, 229.70, 230.04, 230.39, 230.73, 231.07, 231.41, 231.76, 232.10,
232.44, 232.78, 233.12, 233.47, 233.81, 234.15, 234.49, 234.83, 235.17, 235.51,
235.85, 236.19, 236.53, 236.87, 237.21, 237.55, 237.89, 238.23, 238.57, 238.91,
239.25, 239.59, 239.93, 240.26, 240.60, 240.94, 241.28, 241.61, 241.95, 242.29,
242.62, 242.96, 243.30, 243.63, 243.97, 244.31, 244.64, 244.98, 245.31, 245.65,
// 500℃ ~ 600℃
245.99, 246.32, 246.66, 247.00, 247.33, 247.67, 248.00, 248.34, 248.67, 249.01,
249.34, 249.68, 250.01, 250.34, 250.68, 251.01, 251.35, 251.68, 252.01, 252.35,
252.68, 253.01, 253.35, 253.68, 254.01, 254.34, 254.68, 255.01, 255.34, 255.67,
256.01, 256.34, 256.67, 257.00, 257.33, 257.66, 258.00, 258.33, 258.66, 258.99,
259.32, 259.65, 259.98, 260.31, 260.64, 260.97, 261.30, 261.63, 261.96, 262.29,
262.62, 262.95, 263.28, 263.61, 263.94, 264.27, 264.60, 264.93, 265.26, 265.59,
265.91, 266.24, 266.57, 266.90, 267.23, 267.55, 267.88, 268.21, 268.54, 268.86,
269.19, 269.52, 269.84, 270.17, 270.50, 270.82, 271.15, 271.48, 271.80, 272.13,
// 600℃ ~ 700℃
272.46, 272.78, 273.11, 273.43, 273.76, 274.08, 274.41, 274.73, 275.06, 275.38,
275.71, 276.03, 276.36, 276.68, 277.00, 277.33, 277.65, 277.97, 278.30, 278.62,
278.94, 279.27, 279.59, 279.91, 280.23, 280.56, 280.88, 281.20, 281.52, 281.84,
282.16, 282.49, 282.81, 283.13, 283.45, 283.77, 284.09, 284.41, 284.73, 285.05,
285.37, 285.69, 286.01, 286.33, 286.65, 286.97, 287.29, 287.61, 287.93, 288.25,
288.57, 288.89, 289.21, 289.52, 289.84, 290.16, 290.48, 290.80, 291.12, 291.43,
291.75, 292.07, 292.39, 292.70, 293.02, 293.34, 293.65, 293.97, 294.29, 294.60,
294.92, 295.23, 295.55, 295.87, 296.18, 296.50, 296.81, 297.13, 297.44, 297.76,
// 700℃ ~ 800℃
298.07, 298.39, 298.70, 299.02, 299.33, 299.64, 299.96, 300.27, 300.59, 300.90,
301.21, 301.53, 301.84, 302.15, 302.47, 302.78, 303.09, 303.41, 303.72, 304.03,
304.34, 304.66, 304.97, 305.28, 305.59, 305.90, 306.22, 306.53, 306.84, 307.15,
307.46, 307.77, 308.08, 308.39, 308.70, 309.01, 309.32, 309.63, 309.94, 310.25,
310.56, 310.87, 311.18, 311.49, 311.80, 312.11, 312.42, 312.73, 313.04, 313.35,
313.66, 313.97, 314.28, 314.59, 314.90, 315.21, 315.52, 315.82, 316.13, 316.44,
316.75, 317.06, 317.37, 317.67, 317.98, 318.29, 318.60, 318.90, 319.21, 319.52,
319.82, 320.13, 320.44, 320.74, 321.05, 321.36, 321.66, 321.97, 322.28, 322.58,
// 800℃ ~ 850℃
322.89, 323.19, 323.50, 323.80, 324.11, 324.41, 324.72, 325.02, 325.33, 325.63,
325.94, 326.24, 326.55, 326.85, 327.16, 327.46, 327.76, 328.07, 328.37, 328.68,
328.98, 329.28, 329.59, 329.89, 330.19, 330.50, 330.80, 331.10, 331.41, 331.71,
332.01, 332.31, 332.62, 332.92, 333.22, 333.52, 333.82, 334.13, 334.43, 334.73,
335.03, 335.33, 335.63, 335.94, 336.24, 336.54, 336.84, 337.14, 337.44, 337.74,
338.04, 338.34, 338.64, 338.94, 339.24, 339.54, 339.84, 340.14, 340.44, 340.74,
341.04, 341.34, 341.64, 341.94, 342.24, 342.54, 342.83, 343.13, 343.43, 343.73,
344.03, 344.33, 344.62, 344.92, 345.22, 345.52, 345.81, 346.11, 346.41, 346.70,
347.00
};
/* 使用查表法获取温度 */
float pt100_get_temp_from_table(float resistance)
{
int index;
float temp;
// 计算电阻对应的索引
if(resistance < 18.52) return -200.0;
if(resistance > 347.00) return 850.0;
index = (int)((resistance - 18.52) / 0.385); // 近似索引
if(index < 0) index = 0;
if(index >= 1050) index = 1049;
// 线性插值
float r1 = pt100_table[index];
float r2 = pt100_table[index + 1];
float t1 = -200.0 + index; // 温度从-200℃开始
float t2 = t1 + 1.0;
temp = t1 + (resistance - r1) * (t2 - t1) / (r2 - r1);
return temp;
}
#endif /* PT100_TABLE_H */
五、硬件电路设计
5.1 恒流源电路
+5V
|
|
[R1] 5kΩ
|
+----> 运放同相输入端
|
[R2] 1kΩ
|
GND
运放输出端 ----+----> PT100
|
[R3] 100Ω (采样电阻)
|
GND
5.2 信号放大电路
PT100电压 ----> 运放差分输入
|
+----> 放大10倍输出
|
ADC0832输入
5.3 完整电路连接
PT100三线制连接:
线1 ----+----> 恒流源正极
|
PT100
|
线2 ----+----> 运放差分输入+
|
线3 ----+----> 运放差分输入-
|
GND
参考代码 51单片机实现PT100温度测量程序 www.youwenfan.com/contentcsv/72054.html
六、项目配置与使用
6.1 Keil工程配置
- 创建新工程,选择AT89C51或STC89C52
- 添加所有源文件
- 设置晶振频率(11.0592MHz)
- 编译生成HEX文件
6.2 使用说明
- 上电后显示"PT100 Temp System"
- 显示当前温度
- 按SET键切换显示模式:
- 模式0:显示当前温度
- 模式1:显示设定温度
- 模式2:显示报警温度
- 在设定模式下,用UP/DOWN键调节温度
- 当温度超过设定值时,继电器断开
- 当温度低于设定值2℃时,继电器闭合
- 超温报警时蜂鸣器响
6.3 校准方法
-
使用标准温度计测量实际温度
-
比较显示温度与实际温度
-
调整程序中的系数:
c#define CURRENT_SRC 1.0 // 调整恒流源电流 #define AMP_GAIN 10.0 // 调整放大倍数 -
或在程序中加入校准偏移:
cg_temperature = pt100_resistance_to_temp(resistance) + CAL_OFFSET;