温度传感器调试(HDC1080,TMP275)

我们需要对100°C高温的金属进行温度测量。选择的传感器芯片HDC1080 和 TMP275。 HDC1080可以同时采集温湿度信息,但他主要是湿度传感器,老板说不用这个。于是最后我选择了单独的温度传感器 TMP275

整个调试过程太辛苦了,在网上没能找到驱动代码,于是只能自己写。幸运的是,这个传感器芯片的驱动程序编写起来还算简单,最终成功的显示出了温度数值。内附 TMP275 I2C 驱动代码。

文章目录

    • 1. 设计
        • 1.1 选择温度传感器芯片
        • 1.2 绘制驱动电路板
    • 2. 调试
        • 2.1 STM32 工程文件建立
        • 2.2 TMP275 驱动思路
        • 2.3 TMP275 核心驱动代码
        • 2.4 TMP275 温度显示实验

1. 设计

1.1 选择温度传感器芯片

我在 TI公司官网 选择的数字温度传感器。本来想选择官网推荐的 TMP117,但是国内在线商城没卖的。于是,只能在在线商城(嘉立创商城)选择差不多的 现货温度传感器 ,最后选择了 TMP275.
在这里插入图片描述

1.2 绘制驱动电路板

参考 TMP275 的数据手册,获得驱动电路图。驱动电路图采用了 3 个 5KΩ 电阻和 1 个 0.01uF 电容。之后绘制 PCB 原理图和板子即可。
在这里插入图片描述
在这里插入图片描述

2. 调试

2.1 STM32 工程文件建立

找一个 STM32 的工程模板,确保里面涵盖了 I2C 的驱动程序即可。
在这里插入图片描述

2.2 TMP275 驱动思路

由于网上找不到驱动文件,或者要么就是要积分,要出钱的。被逼无奈,只能自己看 TMP275 的数据手册自己编写驱动程序。参考 数据手册 得到的驱动编写思路如下:

  • 初始化 I2C 接口
  • 配置 TM275 的 ConfigRegister 为 0x60
  • 配置 TM275 的 UpperLimit(温度上限寄存器)为 0x7FF0
  • 配置 TM275 的 LowerLimit(温度下限寄存器)为 0xC900
  • 读取 TM275 的 TempRegister 获取原始温度(16位值)
  • 温度换算

2.3 TMP275 核心驱动代码

不开源,对不起自己找不到驱动代码的心痛!

TMP275.c 如下:

#include "tmp275.h"
#include "sys.h"
#include "i2c.h"void TMP275_Init(void){ I2C_InitTypeDef  I2C_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C2, ENABLE); GPIO_InitTypeDef  GPIO_InitStructure; 	GPIO_InitStructure.GPIO_Pin = TMP275_SCL | TMP275_SDA;                   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(TMP275_PORT, &GPIO_InitStructure);I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;I2C_InitStructure.I2C_OwnAddress1 = TMP275_HostAddress; I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = TMP275_BusSpeed; I2C_Init(I2C2,&I2C_InitStructure);I2C_Cmd(I2C2,ENABLE);TMP275_Config();
}void TMP275_Config(void)
{uint8_t buf[1];buf[0] = 0x60; // R1:1 R2:1 -->  12 Bits (0.0625°C) 220msI2C2_SAND_BYTE(TMP275_WriteAddress,TMP275_ConfigRegister,buf[0]);uint8_t buf_UpperLimit[2];buf_UpperLimit[0] = 0x7F; //128°C -->  0111 1111 1111 0000buf_UpperLimit[1] = 0xF0;I2C2_SAND_BUFFER(TMP275_WriteAddress,TMP275_UpperLimit,buf_UpperLimit,2);uint8_t buf_LowerLimit[2];buf_LowerLimit[0] = 0xC9; //-55°C --> 1100 1001 0000 0000buf_LowerLimit[1] = 0x00;I2C2_SAND_BUFFER(TMP275_WriteAddress,TMP275_LowerLimit,buf_LowerLimit,2);}float TMP275_ReadTemp(void)
{float Temp;float Fraction;uint8_t tmp;uint8_t buf[2];I2C2_READ_BUFFER(TMP275_ReadAddress,TMP275_TempRegister,buf,2);Temp = buf[0];//参考:https://blog.csdn.net/zhangA/article/details/104137265?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522164144519616781685371726%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=164144519616781685371726&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-7-104137265.nonecase&utm_term=%E6%B8%A9%E5%BA%A6%E6%8D%A2%E7%AE%97%E5%85%AC%E5%BC%8F&spm=1018.2226.3001.4450tmp = buf[1] >> 4;Fraction = tmp & 0x0F;Fraction = Fraction * 0.0625; //精度:0.5 0.25 0.125 0.0625Temp = Temp + Fraction;return Temp;
}

TMP275.h 如下:

#ifndef _TMP275_H
#define _TMP275_H#include "sys.h"#define TMP275_PORT	    	    GPIOB	//
#define TMP275_SCL		        GPIO_Pin_10	//
#define TMP275_SDA		        GPIO_Pin_11	//
#define TMP275_HostAddress	    0xd0	//0xc0   ->   0xd0. define which you like.
#define TMP275_BusSpeed	        100000	//// get data address
#define TMP275_TempRegister          0x00
#define TMP275_ConfigRegister        0x01
#define TMP275_UpperLimit            0x02
#define TMP275_LowerLimit            0x03#define TMP275_WriteAddress        0x90  
#define TMP275_ReadAddress         0x91  //A0 A1 A2 all connect to GND(0)void TMP275_Init(void);
void TMP275_Config(void);
float TMP275_ReadTemp(void);#endif

2.4 TMP275 温度显示实验

用 OLED 进行温度显示,效果还不错。但是由于芯片内部需要进行14bit的数据转换,数据手册上说至少需要220ms的时间,于是算上延时的时间,温度数据的更新相对较慢。最终显示效果如下: 我的大拇指温度在 31.625 度。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/28000.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

chatglm常用参数 :Top-k, Top-p, Temperature

LLM探索:GPT类模型的几个常用参数 Top-k, Top-p, Temperature: 总结: 1.Temperature 用于调整随机从生成模型中抽样的程度,因此每次点击“生成”时,相同的提示可能会产生不同的输出。温度为 0 将始终产生相同的输出。温…

Stable Diffusion攻略集(Stable Diffusion官方文档、kaggle notebook、webui资源帖)

文章目录 第一部分一、 Features:Textual Inversion(文本反转)1.1 Textual Inversion 简介1.1.1 摘要1.1.2 算法1.1.3 模型效果 1.2 Textual Inversion of webai1.2.1 预训练embedding用于图片生成1.2.2 训练embedding1.2.3 Finding embeddin…

Android开发的中年坎怎么跨?与其坐以待毙的焦虑,不如找准出路提高技能!

35岁程序员的中年危机是个魔咒 35岁,已经真的成了所有职场人都不容易迈过去的一道坎。找工作,大多数公司把年龄限制在35岁以下,35岁左右的人,连面试资格都没有。 各大公司一到大规模裁员,35岁以上的普通员工&#xf…

GPT- 4 标注能力直逼人类,成本大砍90%,数据众包危矣?

人类标注员很可能将面临来自大语言模型的残酷冲击。 人工智能本身并不是很智能,这是一个公开的“秘密”。机器学习系统通常依赖低薪众包工人进行标注和微调,很难脱离“有多少人工,就有多少智能”的魔咒。 即便强大如谷歌、微软这样的大公司…

Docker 更换镜像内部的软件源为国内源(apt-get源)

Docker 更换镜像内部的软件源为国内源(apt-get源) 1、查看镜像内部的软件源2、查看系统版本3、更换软件源3.1 在镜像内部更换3.2用Dockerfile构建时更换 1、查看镜像内部的软件源 rootb09e8f69dc59:/# cat /etc/apt/sources.list deb http://deb.debian…

国内镜像源详细使用教程!

WARNING: Retrying (Retry(total2, connectNone, readNone, 这些天一直肝金融学,脑子一直放空,看不太下去,于是乎就想股票的k线图,想着怎么下载k线图,然后从下载库开始就出现大问题了,就记录了一下自己这憨…

源、镜像、镜像源,更换镜像源apt-get、pip、conda 全部搞懂

源、镜像、镜像源,更换镜像源apt-get、pip、conda 全部搞懂 1. 源是什么?2. 镜像是什么?3. 镜像源是什么?4. 更换apt镜像源4.1 清华镜像源4.2 阿里镜像源 5. 更换pip源5.1 清华镜像源5.2 其他镜像源 6. 更换conda源6.1 清华镜像源…

【笔记】pip镜像源改为国内源(Windows、Linux、Mac)

pip镜像源修改 🏷简介🏷修改pip镜像源(Windows)🏷修改pip镜像源(Linux)🏷修改pip镜像源(Mac)🏷结语 🏷简介 当我们在使用Python的pip…

ubuntu更改镜像源(软件源)

更新Ubuntu软件下载地址 1. 寻找国内镜像源 所谓的镜像源:可以理解为提供下载软件的地方,比如Android手机上可以下载软件的91手机助手;iOS手机上可以下载软件的AppStore 2. 备份Ubuntu默认的源地址 sudo cp /etc/apt/sources.list /etc/apt/…

使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion

使用Amazon SageMaker构建高质量AI作画模型Stable Diffusion 0. 前言1. Amazon SageMaker 与机器学习1.1 机器学习流程1.2 Amazon SageMaker 简介1.3 Amazon SageMaker 优势 2. AIGC 与 Stable Diffusion2.1 步入 AIGC 时代2.2 Stable Diffusion 介绍 3. 使用 Amazon SageMaker…

上海首个大模型产业发展研讨会圆满落幕,众顶尖专家共探大模型产业

4月21日,由上海市数据科学重点实验室携手达观数据、上海浦东软件园联合举办的“大模型产业发展研讨会”圆满落幕。本次研讨会是继达观数据在北京、成都顺利举办“ChatGPT及大模型专题研讨会”后的又一场科技盛会,当天大会汇聚了大模型产业国际和国内顶尖…

李永乐六套卷-2021

可以猜,应该是2-a,a-2和1比较 AB显然正确 看哪个可以对角化,且特征值为2,2,-1 注意乘2x,所以我们关注x^3 要加C

李永乐线性代数手写笔记-向量

李永乐线性代数基础知识,整理放在博客上面,方便自己复习查看。 概览请移步李永乐线性代数2020年基础课手写笔记汇总 文章目录 一 基本概念和运算二 线性表示三 相关和无关四 向量组和矩阵的秩 一 基本概念和运算 二 线性表示 三 相关和无关 四 向量组和…

B站李永乐讲解傅里叶变换--笔记

笔记目录 引言一、变换&#xff08;一&#xff09;举例&#xff08;图像<---->坐标&#xff09;&#xff08;二&#xff09;标准正交基 二、傅里叶变换&#xff08;一&#xff09;傅里叶级数&#xff08;二&#xff09;连续傅里叶变换&#xff08;三&#xff09;应用 三、…

李永乐660高等数学极限题目技巧

本文内容为李永乐660极限题目技巧&#xff0c;源文件已经上传到我的资源中,有需要的可以去看看, 我主页中的思维导图中内容大多从我的笔记中整理而来,相应技巧可在笔记中查找原题, 有兴趣的可以去 我的主页 了解更多计算机学科的精品思维导图整理 本文可以转载&#xff0c;但…

李永乐说股票

1.每股净资产 净资产/股本数 2.市值 每股价格 x 股本数 3.市净率 市值/净资产 每股价格/每股净资产 市净率越高表示市场对股票认可越高&#xff0c;越高估 越低说明股票越低估 买入会赚得多 市净率低&#xff0c;相对安全,越值钱 市盈率 1.每股利润净利润/股本数 2.…

线性代数 李永乐强化班

一、理解线代物理意义 数字强调大小&#xff0c;线代强调方向 别的向量是基向量缩放得到的 向量不平行就线性无关吗 无关的向量可以张成一个子空间&#xff0c;即表示某一维度里面的任意一个向量 A特征向量特征值E*特征向量 标准基向量表示的特征向量换一种基向量任然是 相同的…

李永乐老师卷积神经网络

https://www.youtube.com/watch?vAFlIM0jSI9I 卷积过程 卷积核表示图像特征&#xff0c;比如一个右下的线条。 卷积核在图像上移动&#xff0c;做运算&#xff0c;就会得图像的特征图&#xff08;粉色的。有右下线条的地方数字会特别大。 卷积核的维度和数目 也有竖着的卷…

李永乐老师讲辛普森悖论

有个小朋友跟我说&#xff1a;他特别喜欢看篮球比赛&#xff0c;最喜欢的球星是湖人队的勒布朗詹姆斯。他曾经把詹姆斯和历史上的著名球员马龙做过比较&#xff0c;结果发现了一个神奇的现象&#xff1a;在整个生涯中&#xff0c;无论是二分球的命中率还是三分球的命中率&#…