基于sparant6系列FPGA的小项目设计(4)

基于FPGA的DS18B20控制项目

说明:

DS18B20是一款单总线数字温度传感器,即它的供电和数据都是通过一根总线来进行交互,供电采用寄生电源方式;而对于数据它可以直接将温度转换成数字信号输出,即不需要额外的ADC模块,具有体积小、低功耗、抗干扰能力强、精度高等优点。DS18B20数字温度传感器接线方便,封装后可应用于各种场所测温,如电缆沟测温、机房测温、农业大棚测温、弹药库测温等各种非极限温度场所。适用于各种狭小空间设备数字测温和控制领域。

相关理论原理:

DS18B20的温度转换精度可以让用户通过指令方式进行配置,它提供了9bit-12bit的温度转换精度,该传感器的温度检测范围为-55℃至+125℃,在范围-10℃至+85℃之间具有±0.5℃的精度。每个DS18B20都有一个独一无二的64位序列号,所以可以在一根总线上连接多个DS18B20设备。因此在一个分布式的大环境里用一个微控制器控制多个DS18B20是非常简单的。
在这里插入图片描述
在这里插入图片描述
根据上图DS18B20结构可以看出,其内部主要分为64bit的ROM和一个高速缓存器,其中64bit的ROM内部储存着每个DS18B20的唯一序列号,他是由厂家写入不可修改的,另外在其高速缓存器结构中我们主要关心两个低字节byte0,byte1——存储着转换后的温度数据。
对于主要的温度数字测量,我们可以通过配置寄存器的方式实现9、10、11、12位温度转换,其精度分别为0.5℃、0.25℃、0.125℃、0.0625℃分辨率,若不设置则默认为12位的转换精度,其中随着转换精度的提高,必然导致温度转换时间的增加,例如12位转换精度则需要750ms的转换时间。若要测量温度,主设备必须向DS18B20发送温度转换命令[44h]才能开始温度转换。温度转换后,转换的温度值将会保存在高速缓存器的温度寄存器中。只有通过读高速缓存器命令[BEh]才能将数据读出,数据通过1位总线传输,传输顺序为低位到高位依次传输。温度数据中包含“符号”(S)位,表示温度的正负。因此只有byte0字节和byte1字节低三位表示的是读取的温度数据,而byte1字节高五位表示的则是温度正负。其温度转换关系图如图3所示。
在这里插入图片描述
在高速缓存器中,byte4字节是用来配置寄存器,用户只需要通过改变R1、R0的值就可以实现DS18B20的配置,在上电时默认为R1=1、R0=1(12位分辨率)。
在这里插入图片描述
DS18B20的资源确认后,接下来我们需要确定它各种命令状态的对应的总线时序状态,以便后面同过FPGA来进行时序控制。首先要明白的是它的初始换——复位脉冲和存在脉冲,每次DS18B20要发送ROM命令之前,必须对设备进行初始化,而其初始化主要是由主设备发出的复位脉冲及DS18B20 响应的存在脉冲组成。其时序如图6所示。
在这里插入图片描述
在初始化状态,总线上的主设备通过拉低总线最少480us来表示发送复位脉冲。发送完之后,主设备要释放总线进入接收模式。当总线释放后,5KΩ的上拉电阻将总线拉至高电平。当DS18B20检测到该上升沿信号后,其等待15us至60us后将总线拉低60us至240us来实现发送一个存在脉冲。
在这里插入图片描述
写时序:主设备向DS18B20写命令分写0和写1两种情况。当主设备将总线从高电平拉至低电平时,启动写时序,所有的写时序持续时间最少为60us,每个写时序间的恢复时间最少为1us。当总线(DQ)拉低后,DS18B20在15us至60us之间对总线进行采样,如果采的DQ为高电平则发生写1,如果为低电平则发生写0。如果要产生写1时序,必须先将总线拉至逻辑低电平然后释放总线,允许总线在写时序开始后 15us内上拉至高电平。若要产生写0时序,必须将总线拉至逻辑低电平并保持不变最少 60us。
在这里插入图片描述
读时序:当我们发送完读高速缓存器[BEh]命令时,必须及时地生成读时序,只有在读时序DS18B20才能向主设备传送数据。每个读时隙最小必须有 60us 的持续时间以及每个读时隙间至少要有1us的恢复时间。当主设备将总线从高电平拉至低电平超过1us,启动读时隙。
当启动读时序后,DS18B20将会向主设备发送“0”或者“1”。DS18B20通过将总线拉高来发送1,将总线拉低来发送0。当读时序完成后,DQ引脚将通过上拉电阻将总线拉高至高电平的闲置状态。从DS18B20中输出的数据在启动读时序后的15us内有效,所以,主设备在读时隙开始后的15us内必须释放总线,并且对总线进行采样。

PS:详细控制代码见资源文件
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值