NST1001温度传感器驱动-FPGA
做毕设的时候有一个温度检测模块,为了降重没有用已经被用到可以称为泛滥的QT18B20和DS18B20,而是选择了相对少见的纳芯微高精度、双引脚数字脉冲输出温度传感器NST1001。
1.1 NST1001温度传感器主要参数
该温度传感器拥有两种封装,分别是TO-92S封装和DFN2L超小封装,如图1.1所示;两种封装的引脚功能表1.1所示。
图1.1 NST1001的两种封装
表1.1 NST1001TO-92S封装引脚功能
管脚名称 |
描述 |
|
TO-92S封装 |
DQ |
供电及数据输出引脚 |
NC |
悬空 |
|
GND |
接地 |
|
DFN2L超小封装 |
DQ |
供电及数据输出引脚 |
GND |
接地或下拉电阻到地 |
NST1001的主要性能参数如下表1.2所示:
表1.2 NST1001主要性能参数
性能 |
参数 |
工作电压 工作电流 |
1.65V~5.5V 30uA |
接口方式 |
单线接口 |
工作温度 |
-50℃~+150℃ |
单次温度转换时间 |
50ms |
1.2 NST1001温度传感器应用电路
NST1001温度传感器使用起来非常简单,不像其他传统的数字温度传感器在使用时还需要进行初始化和读、写操作,只需要在使用NST1001时的单次温度转换时间后接受其输出的数字脉冲信号并对脉冲进行计数,再将其转换为温度值即可。
如图1.2所示,该温度传感器的应用电路同样十分简单,在使用时只需要在DQ引脚和FPGA芯片管脚之间接上一个上拉电阻,GND管脚直接接地即可。如果想要降低外部电路对NST1001工作时的干扰,还可以在电路上加上一个滤波电容。
图1.2 NST1001应用电路图和输出波形图
NST1001的时序图如图1.3所示,只需要记录Tdata时期的下降沿个数就可以轻松获得温度数值。
图1.3 NST1001时序图
温度传感器读取温度代码如下:
module nst1001(input clk ,input rst_n ,input i_temp ,output [7:0] o_temp
);parameter delay_time = 150000;wire temp_neg;reg [17:0] dly_3ms_cnt;reg temp_cnt_start ;reg temp_d1,temp_d2,temp_d3;reg [11:0] temp_cnt;reg [11:0] temp_cnt_cur;always @(posedge clk or negedge rst_n)beginif(!rst_n)begintemp_d1 <= 0;temp_d2 <= 0;temp_d3 <= 0;endelse begintemp_d1 <= i_temp;temp_d2 <= temp_d1;temp_d3 <= temp_d2;end
endassign temp_neg = temp_d3 && ~temp_d2;
//空闲时dly_3ms_cnt的值不断自增,每隔3ms其值被置0,无下降沿temp_cnt一直为0,temp_cnt_cur不变(默认为0);
//温度转换完成后,每次出现下降沿后时dly_3ms_cnt值置为0,temp_cnt计下降沿个数;
always @(posedge clk or negedge rst_n)beginif(!rst_n)dly_3ms_cnt <= 0;else if(temp_neg)dly_3ms_cnt <= 0;else if(temp_cnt_start)dly_3ms_cnt <= 0;else dly_3ms_cnt <= dly_3ms_cnt + 1;
endalways @(posedge clk or negedge rst_n)beginif(!rst_n)temp_cnt_start <= 0;else if(dly_3ms_cnt == delay_time - 1)temp_cnt_start <= 1;elsetemp_cnt_start <= 0;
end
//温度转换完成后,每次出现下降沿后时dly_3ms_cnt值置为0,temp_cnt计下降沿个数;
always @(posedge clk or negedge rst_n)beginif(!rst_n)temp_cnt <= 0;else if(temp_neg)temp_cnt <= temp_cnt + 1;else if(temp_cnt_start)temp_cnt <= 0;
end//若3ms内无下降沿则温度转换完成,此时temp_cnt_start值为1,将dly_3ms_cnt值置为0且temp_cnt_cur此时取temp_cnt的值(下降沿个数);
always @(posedge clk or negedge rst_n)beginif(!rst_n)temp_cnt_cur <= 0;else if(temp_cnt_start)beginif((temp_cnt >0) && (temp_cnt < 3202))temp_cnt_cur <= temp_cnt;end
end//temp = num*0.0625 - 50.0625; 0.0625 = 1/16;
//由temp = num*0.0625 - 50.0625可知将temp_cnt右移四位(/16或x0.0625)再-50就可以得到环境温度值。
assign o_temp = temp_cnt_cur[11:4] - 6'd50;endmodule
NST1001温度传感器驱动-FPGA相关推荐
- 外设驱动库开发笔记13:MLX90614红外温度传感器驱动
红外温度传感器一般用于非接触式的温度检测.在我们的系统中经常会有这样的需求.所以我们将其设计为通用的驱动库以备复用.这一篇我们将讲述MLX90614红外温度传感器驱动的设计与实现. 1.功能概述 ML ...
- ESP32设备驱动-BMP180气压温度传感器驱动
BMP180气压温度传感器驱动 1.BMP180介绍 BMP180 是Bosch Sensortec 新推出的数字气压传感器,性能非常高,可用于智能手机,平板电脑和运动设备等高级移动设备.它遵循BMP ...
- Arduino与Proteus仿真实例-LM75温度传感器驱动仿真
LM75温度传感器驱动仿真 1.LM75介绍 LM75 温度传感器包括一个 delta-sigma 模数转换器和一个数字过热检测器. 主机可以通过其 I²C 接口查询 LM75 以随时读取温度. 当超 ...
- ESP32设备驱动-BMP183温度传感器驱动
BMP183温度传感器驱动 文章目录 BMP183温度传感器驱动 1.BMP183介绍 2.硬件准备 3.软件准备 4.驱动实现 1.BMP183介绍 BMP183 是 BMP085 的功能兼容后继产 ...
- ESP8266-Arduino编程实例-BMP180气压温度传感器驱动
BMP180气压温度传感器驱动 1.BMP180介绍 BMP180 是用于测量气压和温度的最佳低成本传感解决方案. 传感器焊接在带有 3.3V 稳压器.I2C 电平转换器和 I2C 引脚上的上拉电阻的 ...
- STM32F1与STM32CubeIDE编程实例-BMP180气压温度传感器驱动
BMP180气压温度传感器驱动 1.BMP180介绍 BMP180 是用于测量气压和温度的最佳低成本传感解决方案. 传感器焊接在带有 3.3V 稳压器.I2C 电平转换器和 I2C 引脚上的上拉电阻的 ...
- Arduino与Proteus仿真实例-LM35温度传感器驱动仿真
LM35温度传感器驱动仿真 1.LM35介绍 M35 系列是精密集成电路温度器件,其输出电压与摄氏温度成线性比例. LM35 器件比以开尔文校准的线性温度传感器具有优势,因为用户无需从输出中减去一个大 ...
- 外设驱动库开发笔记20:BME280压力湿度温度传感器驱动
嵌入式产品开发中,我们常常会有检测环境温度.压力.湿度的需求.如果有一个集成有这3个传感器的元件,无疑将是很方便的.博世的BME280就能实现这一要求.在这一篇中我们将讨论BME280的驱动设计与实现 ...
- 外设驱动库开发笔记12:TSEV01CL55红外温度传感器驱动
有时候我们需要检测一些无法直接接触的器件的温度.为了实现这一需求,我们通常会选择红外温度传感器来实现这一功能.考虑到复用的问题,我们一般会将操作元器件的代码抽象为驱动函数以备调用.这里我们就来设计并实 ...
最新文章
- 别再用那些已经淘汰的技术了!2020年9大顶级Java框架出炉!!
- 输入法图标也会莫名其妙地丢失?
- Dottrace跟踪代码执行时间
- 小程序 移植 云开发_使用Kubernetes探索跨云的应用程序可移植性
- 百度android定位 602 key mcode不匹配,我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析...
- 『Python基础』第三节:变量和基础数据类型
- 中小企业应该将云存储用于主数据吗?
- 【文献阅读】深度时空网络风力预测(Jiangyuan Li等人,ArXiv,2021)
- SMAIL 语法大全(Dalvik 虚拟机操作码)
- 中文文本分类-新闻分类[数据挖掘]
- android qq 目录,手机qq存储路径在哪可以找到
- 图形图像基础 之 gif介绍
- CodeQL笔记之基本语法(一)
- Nginx访问限制配置
- 矩阵取数游戏(动态规划)
- 单片机C语言仿真图,单片机C语言程序设计代码和仿真图.doc
- 5月6日----5月9日一年级课程表
- 渗透测试学习笔记之案例五
- html鼠标的点击事件失效,为什么鼠标悬停事件不起作用呢?
- python笔记(骚操作)