自制温度计


doit_179885157289984
转载
发布时间: 2025-11-08 19:06:45 | 阅读数 0收藏数 0评论数 0
封面
这是一款完全由定制 PCB 和几个 3D 打印部件从零开始制作的DIY 温度计。DS18B20温度传感器探头和TTGO T型显示板是该项目的核心,我们还在板载电路中集成了一个锂电池电路为其供电。DS18B20温度传感器测量温度,测量结果随后显示在TTGO板的显示屏上。

准备工作:

材料:

  1. TTGO T 显示开发板
  2. 定制PCB
  3. 3D打印部件
  4. DS18B20
  5. IP5306 IC
  6. 10uF 电容器
  7. 3.7V 100mAh 锂聚合物电池
  8. 5.6uH电感器
  9. 水平按钮
  10. USB Micro 接口
  11. M2螺丝
1

更新设计

这个项目实际上是之前制作的类似项目的第二版。

https://www.instructables.com/DIY-Thermometer-With-TTGO-T-Display-and-DS18B20/

第一版DIY体温计完全由我们自主设计,采用TTGO T-Display电路板和DS18B20温度传感器,并封装在一个定制的3D打印外骨骼式外壳中。该设计外形简洁,显示屏和锂电池分别安装在两侧,并配有电源开关,方便操作。我们选择DS18B20传感器,是因为它外形紧凑,类似探针,并且支持可靠的1-Wire通信,经过短暂的稳定期后,即可提供精确的摄氏度读数。该项目成功展示了一款简约而实用的体温计​​,测试中最终读数为35°C。首先,我们使用 Fusion360 对 TTGO 板、DS18B20 传感器和电池进行建模。接下来,我们将温度传感器放置在正面,并将 TTGO 板放置在略微远离它的位置。为了连接这两者,我们建模了一个 PCB。

一个带有两个螺丝孔的支架部件将温度传感器固定在PCB板上。一块包含所有元件的PCB板将放置在上方,另一块空白PCB板将放置在上方。

为了准备以下设置的 PCB 设计,我们使用 PCB 的 CAD 设计中的测量数据。


3MF
PCB+SUPPORT.3mf
22.51KB
3MF
SENSORHOLDER.3mf
42.41KB
F3D
TEMP.f3d
1.34MB
2

PCB设计

PCB设计流程的第一步是绘制原理图,原理图显示TTGO T-Display板通过CON3接头引脚连接到DS18B20温度传感器。我们在传感器引脚和温度传感器VCC的CON3接头引脚之间连接一个电阻。

DS18B20 数字温度计提供 9 位至 12 位摄氏温度测量,并具有报警功能,具有非易失性、用户可编程的上限和下限触发点。

DS18B20 通过单线总线进行通信,顾名思义,单线总线通信只需要一根数据线(和一根地线)。该传感器引脚连接到 TTGO T 型显示板的 GPIO2。

这种传感器有两种形式:一种看起来像晶体管,另一种是我们在这个项目中使用的探针状设备。

查看其数据手册,了解有关传感器本身的更多信息。

https://datasheets.maximintegrated.com/en/ds/DS18B20.pdf

我们选择的电源是 IP5306 IC,这是一款知名的锂离子电源管理 IC,可从 3.7 伏锂离子电池输出稳定的 5 伏电压,并提供充电截止和电池电量指示等功能。

我们根据 CAD 设计中的 PCB 设计布局,创建 PCB 轮廓并按照布局安排所有元件。


3

PCB组装过程

  1. 首先,我们使用点焊针将焊膏逐个点涂到每个元件焊盘上,开始PCB组装过程。这里,我们使用的是标准的37/63焊膏。
  2. 接下来,我们使用防静电镊子将所有 SMD 元件拾取并放置到 PCB 上的相应位置。
  3. 我们极其小心地将整个电路板提起,放在 SMT 热板上,使 PCB 的温度升高到焊膏熔化、所有元件都连接到焊盘的程度。
  4. 接下来,我们将所有 THT 组件(包括排针、水平开关和 USB 微型端口)添加到它们的位置,然后用烙铁焊接它们的焊盘。
  5. 最后,我们通过排针将 TTGO T-Display 板安装到位,PCB 组装现已完成。


4

主要组装

  1. 主要组装过程首先是将正负极锂聚合物电池焊接到电路的电池端子上。
  2. 接下来,我们将温度传感器的导线连接到传感器电路上提供的焊盘上。
  3. 然后用 M2 螺钉将温度传感器支架和带有顶部 PCB 的后支架固定好。
  4. 为了将锂聚合物电池固定在原位,我们使用 Kapton 胶带将其固定到顶部 PCB 的背面。
  5. 接下来,我们使用一块空的PCB板,将其放置在模型的底部,并用四个M2螺丝将其固定到位。
  6. 温度计现在已经完成了;接下来让我们看看它的代码。


MP4
FOQBNHAMFBHFXNO.mp4
491.54KB
5

代码

#include <OneWire.h>
#include <DallasTemperature.h>
#include <TFT_eSPI.h> // ST7735驱动芯片的图形和字体库
#include <SPI.h>
#include <WiFi.h>

#define TFT_BLACK 0x0000 // 黑色
#define ONE_WIRE_BUS 2

OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature 传感器(&oneWire);

TFT_eSPI tft = TFT_eSPI(); // 调用库,引脚定义在 User_Setup.h 中

void setup(void)
{
tft.init();
tft.setRotation(1);
Serial.begin(9600);
sensors.begin();

}
void loop(void)
{
Serial.print("正在请求温度...");
sensors.requestTemperatures(); // 发送命令以获取温度读数
Serial.println("完成");

tft.fillScreen(TFT_BLACK);
tft.setCursor(0, 0, 2);
tft.setTextColor(TFT_WHITE,TFT_BLACK);
tft.setTextSize(2);
tft.println("温度为:");

tft.setCursor(0, 40, 2);
tft.setTextColor(TFT_WHITE,TFT_BLACK);
tft.setTextSize(3);
tft.println(sensors.getTempCByIndex(0));

延迟(2000);
}

以下是代码分解——

#include <OneWire.h>
#include <DallasTemperature.h>
#include <TFT_eSPI.h> // ST7735驱动芯片的图形和字体库
#include <SPI.h>
#include <WiFi.h>

#define TFT_BLACK 0x0000 // TFT屏幕的黑色颜色代码
#define ONE_WIRE_BUS 2 // 连接到 DS18B20 传感器的引脚

OneWire oneWire(ONE_WIRE_BUS); // 使用指定引脚的 OneWire 实例
DallasTemperature sensors(&oneWire); // 使用 OneWire 实例的 DallasTemperature 实例

TFT_eSPI tft = TFT_eSPI(); // 用于 TFT LCD 屏幕的 TFT_eSPI 实例

这里包含了所需的库,并定义了 OneWire、DallasTemperature 和 TFT_eSPI 的一些常量和实例。

void setup(void)
{
tft.init(); // 初始化TFT屏幕
tft.setRotation(1); // 设置屏幕旋转
Serial.begin(9600); // 初始化串口通信
sensors.begin(); // 初始化 DS18B20 传感器
}
void loop(void)
{
Serial.print("正在请求温度...");
sensors.requestTemperatures(); // 发送命令以获取温度读数
Serial.println("完成");

tft.fillScreen(TFT_BLACK); // 将 TFT 屏幕填充为黑色

// 在TFT屏幕上显示温度信息
tft.setCursor(0, 0, 2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextSize(2);
tft.println("温度为:");

tft.setCursor(0, 40, 2);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
tft.setTextSize(3);
tft.println(sensors.getTempCByIndex(0)); // 显示温度值

delay(2000); // 等待 2 秒后再进行下一次循环迭代
}

循环函数中,它从 DS18B20 传感器请求温度读数,清除 TFT 屏幕,并将温度信息显示在屏幕上。温度值通过`sensors.getTempCByIndex(0)`获取并打印到屏幕上。然后,它等待 2 秒钟,之后进行下一次迭代。

总的来说,这段代码从 DS18B20 传感器读取温度,并将其显示在通过 SPI 连接的 TFT LCD 屏幕上。

在使用此草图之前,您需要先下载并安装以下库:

https://github.com/milesburton/Arduino-Temperature-Control-Library

https://github.com/Bodmer/TFT_eSPI


6

测试

我们首先使用热介质——一杯茶——来测试温度计。将DS18B20传感器的探针浸入茶杯中,等待一分钟后读取温度,结果显示温度达到64°C。

接下来,我们将DS18B20传感器探头浸入一杯冰水(一种低温介质)中,并使其读取一分钟的数据。由此得到的温度读数为0.56°C。


MP4
FRUPK75MFBHFY7E.mp4
666.63KB
7

结论

这就是这个简单制作的最终成果:一个可以完美测量所有温度(无论是冷还是热)的自制温度计。

我们采用像 T 型显示板这样的开发板,它内置显示屏,使设备更加紧凑,从而节省了大量空间。

我已经把所有文件都附上了,你可以尝试自己制作一个。


阅读记录0
点赞0
收藏0
禁止 本文未经作者允许授权,禁止转载
猜你喜欢
评论/提问(已发布 0 条)
评论 评论
收藏 收藏
分享 分享
pdf下载 下载
pdf下载 举报