Arduino 简易屏显电子温度计
- 一、前言
- 二、硬件要求
- 三、参数基础
- 四、原理剖析
- 五、实验思路
- 六、程序概要
- 七、arduino使用接线
- 八、成果展示
- 九、总结
一、前言
温度计的使用,在日常生活中随处可见,电子行业也有相应的温控传感器设备,不管的是电子芯片的种类,还是信号的输出处理协议上,已经是十分常见的了。
本次给各位介绍的就是一款,以热电偶为主体用来测温的模块,用来搭配成为显示便捷的电子温度计。
二、硬件要求
MAX6675是一个复杂的单片热电偶数字转换器,内部具有信号调节放大器、12位的模拟/数字化热电偶转换器、冷端补偿传感和校正、数字控制器、1个SPI兼容接口和1个相关的逻辑控制。
热电偶的功能是检测热、冷两端温度的差值,热电偶热节点温度可在0℃-1023.75℃范围变化。冷端即安装MAX6675的电路板周围温度,该温度在20℃-85℃范围内变化。
0.96寸i2c协议的黄绿双色OLED显示屏一块,用来显示数值,不多赘述。
无源蜂鸣器模块一块,此处用来对温高或温低进行报警。
三、参数基础
MAX6675
支持协议:SPI
测温范围:0℃~ 1024℃
转换器温度分辨率:0.25°C
工作电压范围 :3. 0~5. 5V
工作电流 :50mA。
工作温度范围:-20℃~ 85℃
模块尺寸:15mm*28mm 含一个3mm直径螺丝孔
K型热电偶接线位置,使用301普通接线端子,方便简洁
oled显示屏
大小:0.96寸
分辨率:12864
宽电压:3.3-5v
体积: 27mm27mm*2mm
温度范围:-30℃-70℃
使用寿命: ≥16000小时
支持协议:iic
无源蜂鸣器模块
工作电压:3.3-5v
小板pcb尺寸:3.3cm-1.3cm
四、原理剖析
MAX6675内部具有将热电偶信号转换为与ADC输入通道兼容电压的信号调节放大器,T和T-输入端连接到低噪声放大器A1,以保证检测输入的高精度,同时使热电偶连接导线与干扰源隔离。热电偶输出的热电势经低噪声放大器A1放大,再经过A2电压跟随器缓冲后,被送至ADC的输入端。在将温度电压值转换为相等价的温度值之前,需要对热电偶的冷端温度进行补偿,冷端温度即MAX6675周围温度与0℃实际参考值之间的差值。
当冷端温度波动时,MAX6675仍能精确检测热端的温度变化。MAX6675是通过冷端补偿检测和校正周围温度变化的,该器件可将周围温度通过内部的温度检测二极管转换为温度补偿电压,为了产生实际热电偶温度测量值,MAX6675从热电偶的输出和检测二极管的输出测量电压。该器件内部电路将二极管电压和热电偶电压送到ADC。
oled使用较为简易的ssd1306库,利用display一系列函数,编辑字体、颜色。。。。。。
无源蜂鸣器模块利用所测数值反馈的数值设定,达到需要的范围时,可通过开发板发出低电平,就可鸣叫示意。
五、实验思路
六、程序概要
#include <GyverMAX6675.h>// 6675的库
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h> //1306的库文件
#define CLK_PIN 13 // SCK接线13
#define DATA_PIN 12 // SO接线12
#define CS_PIN 10 // CS接线10
GyverMAX6675<CLK_PIN, DATA_PIN, CS_PIN> sens; //调用GyverMAX6675子函数
#define OLED_RESET 13 //设置复位是13号引脚
Adafruit_SSD1306 display(OLED_RESET);
#define m 7 //设置蜂鸣器的电平显示为7号引脚
void setup() {
// put your setup code here, to run once:
display.begin(SSD1306_SWITCHCAPVCC,0x3C); //刷新
display.clearDisplay(); //清屏
display.setTextColor(WHITE); //字体白色
display.display(); //显示
pinMode(m, OUTPUT); //定义引脚为输出脚
}
void loop() {
// put your main code here, to run repeatedly:
display.setTextSize(2); //字体大小为2号
display.setCursor(0,0); //字体排布在oled里面的行、列数
if (sens.readTemp()) {
display.print("Temp:");
display.print(sens.getTemp()-2); //显示读出值
display.print(" *C");
display.display();
display.clearDisplay(); //if函数,读取并显示此时的温度值,如果没有oled也可换为串口显示。不仅需要display改为Serial还有一次循环上,增加一个Serial.begin(需要的波特率)
if((sens.getTemp()-2) > 37){
digitalWrite(7,0);
}
else digitalWrite(7,1); //对蜂鸣器的一个判断。
//Serial.print(sens.getTempInt());
} else display.print("Error");
}
七、arduino使用接线
线路连接:
MAX6675:
VCC——3.3V
GND——GND
SCK——13
SO——12
CS——10
OLED显示(IIC):
VCC——5V
GND——GND
SCL—— A5
SDA——A4
无源蜂鸣器:
VCC——VIN
GND——GND
八、成果展示
九、总结
1、本次使用中是以人体温度为测,较长的感应头可以方便伸入衣服等地方。不过误差在±1%,需要进行校正,上述程序就是借助得出值-2来进行精确,实验仅作参考。
2、程序中采集中,保证oled采集连贯显示,未设置延时,蜂鸣器仅出现嘀嗒声,不会连贯。
(电子助力亿点点,科技便捷每一天)