这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » TI » 一起玩转TIMSPM0系列任务三:实现温度报警器

共4条 1/1 1 跳转至

一起玩转TIMSPM0系列任务三:实现温度报警器

菜鸟
2024-07-14 20:24:56     打赏

在任务一、二的上我们实现了点亮RGB 与 数码管驱动,要完成任务三,需要添加温度传感器的驱动,获取环境温度。

 

温度传感器的型号是:DS18B20 ,该传感器有以下特点:

 

独特的1-Wire总线接口仅需要一个管脚来通信。

能够采用数据线供电,供电范围为3.0V5.5V

温度可测量范围为:-55℃+125℃

温度范围超过-10℃85℃之外时测温分辨率0.5℃

内部温度采集精度可以由用户自定义为9-Bits12-Bits

温度转换时间在转换精度为12-Bits时达到最大值750ms

 

1、硬件确认

该模块比较简单,就由2个电阻,LEDDS18B20共同组成,其中一个电阻 是 LED 的限流电阻,所以DS18B20的外围非常、非常简单!!

 

2、驱动原理确认

阅读规格书发现、总结:

通过单总线访问DS18B20的执行序列如下:

步骤1:初始化

步骤2ROM操作指令

步骤3DS18B20功能指令

每一次DS18B20的操作都必须满足以上步骤,若是缺少步骤或是顺序混乱,器件将不会有返回值。搜索ROM命令和报警搜索命令除外。当这两个命令执行时,主控制器必须返回步骤1

2.1、初始化时序

image.png

按照规格书逻辑图理解为:

配置输出模式,低电平保持480us

等待15-60us

配置输入模式,电平由上拉电阻拉高,等待DS18B20输出低电平,低电平保持的时间是60-240us

 

DS18B20输出低电平时表示该线上由DS18B20存在,可以用于判断连接是否正常。

如:读取到高电平,连接或器件有问题。读取到低电平,通讯正常。


2.2、写时序

image.png

上图是写时序,写数据时最小必须有60us的电平保持时间,且写数据间至少有1us的恢复时间。


2.3、读时序

image.png

上图是读时序,读数据的窗口有60us,期间DS18B20保持电平,且读数据间至少有1us的间隔时间。

 

所以按照以上逻辑,写出代码就可以获取温度了!


3、测试代码

3.1、初始化代码

void DS18B20_Rst( void )
 
{
    DS18B20_DQ_OUT;
    DS18B20_DQ_OUTL; 
    delay_us( 750 );    
    DS18B20_DQ_OUTH; 
    delay_us( 15 );  
}


3.2、读数据

uint8_t DS18B20_Read_Bit( void ) 
{
    DS18B20_DQ_OUT;
    uint8_t data;
    DS18B20_DQ_OUTL;
    delay_cycles( 2 * 32 );
    DS18B20_DQ_OUTH;
    delay_cycles( 12 * 32 );
    DS18B20_DQ_IN;
    if ( DS18B20_DQ_READ ){
        data = 1;
    }else{
        data = 0;
    }
    delay_cycles( 50 * 32 );
    return data;
}


3.3、写数据

void DS18B20_Write_Byte( uint8_t dat )
{
    uint8_t j;
    uint8_t testb;
    DS18B20_DQ_OUT;
 
    for ( j = 1; j <= 8; j++ ){
        testb = dat & 0x01;
        dat = dat >> 1;
        if ( testb )
        {
            DS18B20_DQ_OUTL; 
            delay_us( 2 );
            DS18B20_DQ_OUTH;
            delay_us( 60 );
        }else{
            DS18B20_DQ_OUTL; 
            delay_us( 60 );
            DS18B20_DQ_OUTH;
            delay_us( 12 );
        }
    }
}


4、组合实验

GIF演示效果:

 3344.gif

上图就是温度报警器的实际演示效果,由于GIF没有声音,所以在蜂鸣器响的同时,添加了LED指示。

设定的报警温度是30℃,在正常温度下显示绿灯,用手捏住温度传感器加热它,达到30℃,蜂鸣器响,亮红灯!





关键词: TI    

专家
2024-07-14 22:39:58     打赏
2楼

感谢分享


专家
2024-07-14 22:41:22     打赏
3楼

感谢分享


院士
2024-07-15 06:56:20     打赏
4楼

谢谢楼主的分享~!


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]