产品概述

单片机温度采集系统 单片机实例分享,温度记忆杯垫

小编 2025-08-02 产品概述 23 0

单片机实例分享,温度记忆杯垫

“记忆杯垫”是我利用身边的材料制作的,杯垫材料是一张光盘,导热材料是硬币,用502胶水和加厚双面胶粘合,制作起来十分简单。

这个作品的设计初衷是源自个人的生活经验,希望和我有着一样烦恼的“技术宅”们会喜欢这个设计。笔者作为“职业码农”,常常遇到这样的困扰:早上冲好的咖啡,放着放着就凉了;同事胃不好,需要喝温水,可一忙就忘记了……想必每个人都有这样的经历,这次的设计,就是给大家解决这一问题——可以及时提醒人们饮用热饮。喜欢喝热饮的朋友,以后不必再因为冷却的热饮而苦皱眉头了!

功能描述

“记忆杯垫”能实现以下功能:当我们把装有温度较高液体的杯子放到杯垫上时,杯垫上安装的温度传感器开始测量杯子的底部温度,只要杯子不是隔热材料的,那么杯子的表层温度就会和里面的液体温度成正比,当杯子内的液体降到了适合人的饮用习惯时,此时按下“记忆键”,杯垫就将永久记录下此时的杯子底层温度;当使用者再次将装有热饮的杯子放在杯垫上时,液体在降温过程中,只要杯子的底层温度与之前记忆的温度接近,杯垫就可以根据设计者的要求提示主人饮用,比如通过闪烁灯提示或者通过音乐提示。

工作原理

这次设计的核心就是围绕温度传感器DS18B20和单片机EEPROM的应用。

DS18B20采集温度,单片机负责数据的处理,当有温度需要记录时,单片机将待记录温度存储到单片机EEPROM中;当EEPROM中有了温度记录后,单片机将采集到的数据与EEPROM中数据随时进行比较,当数据接近时,就会做出相应输出,开启提示功能。

当下次冲好了一杯咖啡,就可以把杯子放到杯垫上面了,温度传感器会将采集到的温度T值与EEPROM里的数值A做比较,当A-1 < T < A+1 时,杯垫侧面的8个发光二极管就会闪烁,以此来提示主人喝咖啡或水。

温度的差值也可以根据设计者的需要自行改变,比如在比较寒冷的地区,T与A的差值可以通过改变程序来实现。笔者在南方,实际测试的时候发现T与A的值在±1之间就可以了。

记忆键在向单片机记录温度数据的时候,也会擦除之前的数据,这样一个按钮就可以完成需要的操作。

国产的STC单片机大多数都自带了一定大小的EEPROM,这就给设计者带来了极大的方便。为了让电路更加简洁,这次选用的是STC11F04E的1T单片机,其具备4KB的程序存储空间和1KB的EEPROM空间,20引脚的封装设计大大减小了PCB面积。图15.1为电路原理图,制作说明见图15.2、图15.3。

图15.1 电路原理图

图15.2

图15.2 光盘中间的圆孔用来放置温度传感器,上面用金属片导热材料固定,并涂上硅脂,增加导热效果,因为大多数杯子底部是凹进去的,也可以用硬币这种有一定厚度的材料导热。

图15.3

图15.3 杯垫的背面,用双面胶(电工固定线盒那种)粘住电池盒、电路板、流水灯,温度传感器已经粘在电路板下面了

程序设计

这里要作出说明的是,大多数DS18B20程序代码都是为12T单片机设计的,而1T单片机指令速度要比12T单片机快很多,这就导致了通常的DS18B20程序不能直接拿来调用。笔者根据STC的官方资料,通过计算指令外加逻辑分析仪测试的方式,得出的结论是,11系列的1T单片机指令要比12T单片机快6.5倍左右,根据这个数据来修改原始DS18B20程序的延时程序和EEPROM程序,就能保证系统的稳定性。

STC绝大多数芯片都集成了EEPROM,不同型号的擦写程序也是大同小异,使用起来十分方便,无需额外EEPROM的IC,更不需要IC通信程序。因为是内部集成的,程序代码简单,很好理解,节约了设计成本的同时,也给应用者节约了程序设计时间。

STC的官方资料很明确地给出了EEPROM的原始程序,笔者根据自己的理解,为使程序更加简洁,对官方程序作了一些改动,应用了C语言的宏定义,自己也做了对应的库文件,方便实用。本程序是在Keil环境下编译的,使用时要添加我自己写的basic.h、STC11Fxx_IAP.h文件,同时要下载官方的单片机库文件,这样方可保证程序的正确编译。

■ 本制作的相关源文件可以到qq群657864614进行下载。

■介绍一个与众不同的淘宝店铺:首页-数码达人小二-淘宝网,不信你试试?

突发奇想,自制温度采集器,采集一切能采集的问题

四路温度转串口模块-DS18B20

项目背景

最近有好几个哥们都通过公众号问我DS18B20测量温度的事情。有的是自己不懂单片机想测量家里水管的温度,有的是懂一点单片机在实验室采集温度数据,有的是纯粹的自学的想测量一下温度顺便弄一下课程设计。

文末有恰饭内容,车速较快注意安全。

考虑到我祖传的焊台好久没有通电了,就规划了这个项目。秉承勤俭节约的原则,项目使用了SOP8的51单片机,用掉一路串口,还有4个IO口正好可以接4路传感器。这里感谢一位叫小明的男人帮我分担优与愁,事实证明只有男人才懂男人。

本来做完硬件就准备撤了,奈何忍受不了一包烟的诱惑,男人嘛,总有突破点。顺手又整了一个上位机,可把我的肾给亏完了,连续肝几个晚上。

其实这种数据采集系统最核心的地方在于通信协议,一个合适的通信协议能避免后期80%以上的坑。这次设计的温度采集系统采用JSON字符串交换数据,一种人类和计算机都容易理解的字符串。固定3秒主动输出一次数据,嫌慢了你可以自己改源码。这样搞的好处是不用考虑太多的数据交互问题,安心做好数据处理就完事了。

关键是温度这数据吧,还真不是啥重要数据,采集几万个数据丢那么几百个都无所谓,所以不用考虑数据重传啥的各种特殊情况,丢就丢了呗。

成果图

1,开发前规划

开发前规划

2-四路温度转串口模块-DS18B20-原理图

完整原理图: https://oshwhub.com/7a745fc8/si-lu-wen-du-zhuai-chuan-kou-mu-

配套工具-USB转TTL: https://oshwhub.com/7a745fc8/usb-zhuaittl-usb-jie-kou-shu-chu

原理图模块1

1,LDO降压到3V给单片机和传感器供电。

2,设计了一个LED,用来指示电源状态。

3,左边是一个4PIN的接口,用来下载程序,传输JSON字符串。老姚的STC单片机是通过串口下程序的,简直不要太爽。

原理图模块2

1,8个引脚100%都利用了。两个是电源,两个是TTL通信,4个是普通IO口。

2,关键是嘉立创SMT可贴片,节约肾的支出。

3,右边是一个4PIN的端子,实际上没有焊,就是预留后期备用的。

原理图模块3

1,四路传感器接口电路,完全参考规格书来的。

2,不过接口是3PIN端子的形式,自己焊插件的时候别搞错正负极,否则传感器会烫手。

3,每个IO口挂载一个传感器,且独立供电。同时传感器的数据接口要通过电阻上拉到电源。

原理图模块4

1,这个图和本项目有关联,但是不属于本项目本身的设计范畴。

2,这是一个USB转TTL的参考方案。因为下载程序和接收数据都需要一个USB转TTL嘛。你可以参考着画一个板子,这个板子上所有器件都可以SMT的,自己回来焊插件就行了。

3,不想自己弄,也可以买个类似的。立创商城直接搜索下单就行,省事 C192392 。

3-绘制PCB 四路温度转串口模块-DS18B20-PCB

PCB图1

1,为了蹭LCEDA的热度我也是煞费苦心,各种LOGO走起。

2,安利一波吧。 www.oshwhub.com 是一个非常优秀的硬件开源平台,现在已经有很多先进知识分子在里面贡献自己的创意,尤其是很多又帅又有文化的。

3,看布局,充分体现了对称美。走线啥的都无所谓,关键是得美。

PCB图2

1,背面主要放一些关键信息的丝印。

2,传感器接口的丝印就在这里体现,有效防止焊插件的时候接反正负极。

3,看背面的丝印你就能猜出来,参加了开源平台的征集令,拿了几十块钱的优惠券。虽然小项目造了我大几百大洋,但是能回一点血就回一点吧。

4,况且,我看这个LOGO很漂亮啊。

4-打样焊接和调试四路温度转串口模块-DS18B20-焊接调试

B站视频:

调试/焊接1

1,这个界面是嘉立创SMT时的界面,通过DFM检查看的。这个预览效果就是实际打样回来的效果。此时如果发现出错比如方向反了等都是可以联系客服及时补救的。

2,小器件,不好焊的器件都让嘉立创SMT帮我给盘了,我收到货后只焊了几颗料而已。科技向善,一点都不假。

调试/焊接2

1,这里展示一下打样的速度。3号下单开始制造PCB,9号晚上收到货。

2,这时在疫情器件的交付速度,刚刚的。

3,佩服深圳速度,感受到了全产业链的优势。

成品图

1,从淘宝买的带不锈钢外壳的传感器,其实就是DS18B20加了一个外壳。

2,这样的好处是可以将探头安装到各种地方。淘宝逛一圈你会发现有N多安装方式可选。

3,图中的USB接头就是USB转TTL,原理图上面也分享了。自己买了一根4PIN的线,按照接线顺序焊了一下。TX和RX要交叉连接。

4,传感器:https://s.click.taobao.com/KXHOvmv

5,单片机程序 四路温度转串口模块-DS18B20-单片机程序

单片机代码1

1,截图的时候手一抖,少了一行。仔细观察哈,你能发现的。

2,主程序能看出整个程序的框架。在主循环里一直跑着一个子程序。它负责定时调用其他子程序。

3,程序初始化时将需要定时调用的子程序添加到调度器中。子程序中不要使用太多软件延时。

4,朋友你猜这个程序多少秒发送一串数据出去?

单片机代码2

1,根据规格书的提示,操作IO口写了底层驱动时序。由于传感器的特殊性,这里使用了软件延时。

2,这里参考网友的代码,写了一个CRC计算的程序。CRC是一种常见的数据完整性校验方法,用来识别一帧数据在传输的过程中是否发生了突变。

3,发送端发送数据完毕后计算一个CRC结果给你看,你收到数据后也同样方法计算一遍CRC,理论上得出的结果应该一样的,否则这个数据你应该丢弃的。

4,整个驱动暴露了两个子程序给外部接口,一个是读取传感器数据的驱动,固定时间调用一次就行,但是要注意调用间隔大于750ms。每当有新数据过来就把数据缓存到RAM中。

5,另一个是计算缓存中的数据为浮点形式的温度。这样无论何时外部程序都能调用这个接口去读取目前最新的温度数据。

6,家里穷,没有一个冰箱,没办法测试零下的温度显示啥的是否正常。

单片机代码3

1,这是运行在51内核中的简单程序调度器代码。

2,单片机开了一个定时器,每1ms进入一次中断。

3,程序在主循环中持续检测中断标志位,判断数组中哪个程序该运行了。

4,通过这种简单的方式实现了任务的定时运行,但是还没有实现不同任务间的通信。

6,上位机 四路温度转串口模块-DS18B20-上位机

上位机

1,上位机接收JSON字符串。但是必须按照固定的格式发送数据,否则解析会出错。

2,一次要发送四个Key过来,包括T1,T2,T3,T4,值应该是浮点数或整型数据。

3,你可以用单片机发送其他数据,只要是浮点数就行,然后它就可以采集你的数据了。

上位机程序片段

1,上位机是用Python写的,使用PYQT的框架搭人机交互界面。

2,零妖也不是高手,代码太烂没自信。放出读取CSV文件的源码供大家参考。

7,恰饭

做事讲究动机,爱好这块内容是一方面,顺便搞包烟也可以。项目使用的是8位的单片机2^8=256,RAM大小也是256Byte,太有缘了。

256块人民币 = 板子一个+传感器四个+USB转TTL一个 纯手工玩耍,感兴趣的扫码联系我(微信公众号:物联网零妖)。有偿提供技术支持,完全凭运气安排时间,因为平时搬砖挺辛苦的。

路过的朋友也可以图个热闹,扫码关注我也是一种支持。

8,资料下载

单片机源码:单片机程序:四路温度转串口模块-DS18B20.zip

上位机(WINX64):数据采集存储分析系统.zip

在线查看原理图: https://oshwhub.com/7a745fc8/si-lu-wen-du-zhuai-chuan-kou-mu-

配套工具-USB转TTL: https://oshwhub.com/7a745fc8/usb-zhuaittl-usb-jie-kou-shu-chu

下载源文件需要注册立创商城帐号,点击链接去注册https://activity.szlcsc.com/invite/A5A96ED566B10862.html零妖送你20元代金券。

关注公众号“物联网零妖”,回复“DS18B20”获取资料。

相关问答

单片机温度 控制 系统 怎么解决?

单片机温度控制系统可以通过以下步骤来解决:选择合适的传感器:选用温度传感器来监测环境温度。连接传感器:将传感器与单片机连接,以便采集温度数据。编写...

如何把 单片机采集 到温湿度上传到redis数据库?

单片机通过以太网接口或WifI接口通过tcP或udP协议上传数据给服务器。单片机通过以太网接口或WifI接口通过tcP或udP协议上传数据给服务器。

单片机 、光耦

1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...

单片机 实现对液体里两个不同物质的浓度检测,要通过,间接检测什么信号才有用(比如 温度 ,电阻,电压等)?

这跟单片机没关系,关键看你用什么传感器或滴定法。比如用滴定法,单片机采集的就是标准溶液用量和颜色传感器的信号。这跟单片机没关系,关键看你用什么传感器...

单片机温度 报警器用的哪种传感器分辨率多少?

DS18B20可以测得最高12位的精度。-50~+125°范围(1)适应电压范围更宽,电压范围:3.0~5.5V,寄生电源方式下可由数据线供。(2)独特的单线接口方式,DS18B...DS.....

上位机如何接收 单片机 上传的 温度 值?

串口或usb

c51 单片机温度 报警器灯不亮?

是致命错误。问题原因:编译工具及相关库文件在KEIL的tool.ini初始化文件指定的路径不存在或者指定的路径下的文件找不到。解决方案,有两种:1、安装KEIL...

app inventor 温度 传感器的使用?

主要通过STM32单片机内部温度传感器采集芯片内部温度,并通过ESP8266-01模块连接路由器,将采集的数据通过HTTP协议发送到oneNET云服务器,使用APPInventor开发A...

单片机 temp是什么?

temp就是一个临时变量,随便用好了。temp就是一个临时变量,并不是一定要放引脚初值,其实,引脚也没有什么初值可保存的。通常习惯上用temp变量存放一个临...

英语翻译用 单片机 实现高精度宽范围的 温度 测量的 系统 摘要:本...

[最佳回答]Realizesthehighaccuracywidthscopetemperaturesurveysystemwiththemonolithicintegratedcircu...

猜你喜欢