一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于DS18B20的多點(diǎn)測(cè)溫方案詳解

CHANBAEK ? 來(lái)源:redeemer奇 ? 作者:redeemer奇 ? 2023-09-15 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1、DS18B20多點(diǎn)測(cè)溫方案概述

DS18B20 單線數(shù)字溫度傳感器,多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。具體方案主要是以下步驟:

  1. 寫一個(gè)獲取DS18B20的64位序列號(hào)的keil工程,獲取需要連接的DS18B20器件的序列號(hào)。
uint8_t rom[8];
void read_rom(void)
{
    uint8_t index;

    ds18b20_init();
    ds18b20_write_byte(0x33);

    for (index = 0;index < 8;index++)
    {
        rom[index] = ds18b20_read_byte();
    }
}
  1. 將獲取到的DS18B20器件的序列號(hào)通過(guò)數(shù)組保存起來(lái),再新建一個(gè)獲取多點(diǎn)溫度的keil工程,發(fā)送匹配64位序列號(hào),獲取溫度即可。
uint8_t rom1[8]={0x28,0x0B,0xAC,0x79,0x97,0x16,0x03,0x39};
uint8_t rom2[8]={0x28,0xF2,0x80,0x79,0x97,0x15,0x03,0x51};
uint8_t rom3[8]={0x28,0xFF,0x64,0x79,0x97,0x16,0x03,0x8B};
uint8_t rom4[8]={0x28,0x6F,0x31,0x79,0x97,0x15,0x03,0x28};
uint8_t rom5[8]={0x28,0x1C,0x5C,0x79,0x97,0x15,0x03,0x14};
uint8_t rom6[8]={0x28,0xED,0xD8,0x79,0x97,0x16,0x03,0xD0};
uint8_t rom7[8]={0x28,0x94,0xB0,0x79,0x97,0x15,0x03,0xA4};
uint8_t rom8[8]={0x28,0xAE,0xD5,0x79,0x97,0x16,0x03,0x10};
uint8_t rom9[8]={0x28,0xC0,0xC2,0x79,0x97,0x16,0x03,0xED};

void DS18B20_Matrom(unsigned char a) 
{
    unsigned char j;  //用于循環(huán)
    ds18b20_init();
    ds18b20_write_byte(0x55);    //發(fā)送匹配ROM命令
    if(a==1)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom1[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==2)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom2[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==3)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom3[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==4)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom4[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==5)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom5[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==6)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom6[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==7)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom7[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }

    if(a==8)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom8[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }
    if(a==9)
    {
        for(j=0;j< 8;j++)
        {
             ds18b20_write_byte(rom9[j]);//發(fā)送18B20的序列號(hào),先發(fā)送低字節(jié)
        }
    }
}

int16_t read_temp(uint8_t rom)      //啟動(dòng)溫度轉(zhuǎn)換,讀取溫度
{
    u8 tl=0,th=0;
    if(ds18b20_init())
        return 0x7fff;
    ds18b20_write_byte(0xCC);
    ds18b20_write_byte(0x44);//啟動(dòng)DS18B20進(jìn)行溫度轉(zhuǎn)換

    DS18B20_Matrom(rom);//匹配RAM,適用多個(gè)點(diǎn)的情況

    ds18b20_write_byte(0xBE);//讀DS18B20內(nèi)部RAM中9字節(jié)的溫度數(shù)據(jù)
    tl=ds18b20_read_byte();//讀低8位
    th=ds18b20_read_byte();//讀高8位
    return (th< 8)+tl;
}

float get_ntemp(uint8_t rom)
{
    float   temp=0;
    temp = read_temp(rom);
    temp = temp*0.0625;

    return temp;
}

2、DS18B20簡(jiǎn)介

2.1、DS18B20特點(diǎn)

  1. 采用單總線的接口方式
  2. 測(cè)量溫度范圍寬,測(cè)量精度高 DS18B20 的測(cè)量范圍為 -55 ℃ + 125 ℃ ; 在 -10 +85°C范圍內(nèi),精度為 ± 0.5°C 。
  3. 供電方式靈活 DS18B20可以通過(guò)內(nèi)部寄生電路從數(shù)據(jù)線上獲取電源。因此,當(dāng)數(shù)據(jù)線上的時(shí)序滿足一定的要求時(shí),可以不接外部電源,從而使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。
  4. 測(cè)量參數(shù)可配置 DS18B20 的測(cè)量分辨率可通過(guò)程序設(shè)定 9~12 位。
  5. 負(fù)壓特性電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。
  6. 掉電保護(hù)功能 DS18B20 內(nèi)部含有 EEPROM,在系統(tǒng)掉電以后,它仍可保存分辨率及報(bào)警溫度的設(shè)定值。
  7. DS18B20具有體積更小、適用電壓更寬、更經(jīng)濟(jì)、可選更小的封裝方式,更寬的電壓適用范圍,適合于構(gòu)建自己的經(jīng)濟(jì)的測(cè)溫系統(tǒng),因此也就被設(shè)計(jì)者們所青睞。

2.2、總線掛接多個(gè)DS18B20的具體原因

DS18B20主要由4部分組成:

  1. 64 位ROM
  2. 溫度傳感器
  3. 非揮發(fā)的溫度報(bào)警觸發(fā)器TH和TL
  4. 配置寄存器

ROM中的64位序列號(hào)是出廠前被光刻好的,它可以看作是該DS18B20的地址序列碼,每個(gè)DS18B20的64位序列號(hào)均不相同。64位ROM的排的循環(huán)冗余校驗(yàn)碼(CRC=X^8+X^5+X^4+1)。

圖片
ROM

ROM的作用是使每一個(gè)DS18B20都各不相同,這樣就可以實(shí)現(xiàn)一根總線上掛接多個(gè)DS18B20的目的。

2.3、多個(gè)DS18B20的供電方式

在DS18B20溫度轉(zhuǎn)換期間通過(guò)寄生電源供電

圖片
寄生電源供電

用外部電源對(duì)DS18B20供電
圖片
外部電源供電

3、DS18B20工作時(shí)序詳解

主要以下四個(gè)方面:

  1. 初始化時(shí)序
  2. 寫時(shí)序
  3. 讀時(shí)序
  4. 獲取溫度

詳細(xì)解析如下。

3.1、初始化時(shí)序

圖片
初始化時(shí)序

主機(jī)首先發(fā)出一個(gè)480-960微秒的低電平脈沖,然后釋放總線變?yōu)楦唠娖剑⒃陔S后的480微秒時(shí)間內(nèi)對(duì)總線進(jìn)行檢測(cè),如果有低電平出現(xiàn)說(shuō)明總線上有器件已做出應(yīng)答。若無(wú)低電平出現(xiàn)一直都是高電平說(shuō)明總線上無(wú)器件應(yīng)答。

uint8_t ds18b20_init(void)
{
    uint8_t ack=1;
    DS18B20_DQ_OUT();
    DQ_L();
    delay_us(500);
    DQ_H();
    delay_us(60);
    DS18B20_DQ_IN();
    ack=DQ_Read();
    delay_us(180);
    DQ_H();
    return ack;
}

做為從器件的DS18B20在一上電后就一直在檢測(cè)總線上是否有480-960微秒的低電平出現(xiàn),如果有,在總線轉(zhuǎn)為高電平后等待15-60微秒后將總線電平拉低60-240微秒做出響應(yīng)存在脈沖,告訴主機(jī)本器件已做好準(zhǔn)備。若沒(méi)有檢測(cè)到就一直在檢測(cè)等待。

3.2、讀/寫時(shí)序

圖片
讀寫時(shí)序

寫周期最少為60微秒,最長(zhǎng)不超過(guò)120微秒。寫周期一開(kāi)始做為主機(jī)先把總線拉低1微秒表示寫周期開(kāi)始。隨后若主機(jī)想寫0,則繼續(xù)拉低電平最少60微秒直至寫周期結(jié)束,然后釋放總線為高電平。若主機(jī)想寫1,在一開(kāi)始拉低總線電平1微秒后就釋放總線為高電平,一直到寫周期結(jié)束。而做為從機(jī)的DS18B20則在檢測(cè)到總線被拉底后等待15微秒然后從15us到45us開(kāi)始對(duì)總線采樣,在采樣期內(nèi)總線為高電平則為1,若采樣期內(nèi)總線為低電平則為0。

static void ds18b20_write_byte(uint8_t byte)
{
    uint8_t i;
    DS18B20_DQ_OUT();
    for(i=0 ; i< 8 ; i++)
    {
        if (byte&0x01) 
        {
                DQ_L();// Write 1
                delay_us(2);                            
                DQ_H();
                delay_us(60);             
        }
        else 
        {
                DQ_L();// Write 0
                delay_us(60);             
                DQ_H();
                delay_us(2);                          
        }
        byte=byte >>1;
    }
}

對(duì)于讀數(shù)據(jù)操作時(shí)序也分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。讀時(shí)隙是從主機(jī)把單總線拉低之后,在1微秒之后就得釋放單總線為高電平,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在檢測(cè)到總線被拉低1微秒后,便開(kāi)始送出數(shù)據(jù),若是要送出0就把總線拉為低電平直到讀周期結(jié)束。若要送出1則釋放總線為高電平。主機(jī)在一開(kāi)始拉低總線1微秒后釋放總線,然后在包括前面的拉低總線電平1微秒在內(nèi)的15微秒時(shí)間內(nèi)完成對(duì)總線進(jìn)行采樣檢測(cè),采樣期內(nèi)總線為低電平則確認(rèn)為0。采樣期內(nèi)總線為高電平則確認(rèn)為1。完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成

static uint8_t ds18b20_read_byte()
{
    uint8_t i;
    uint8_t byte;                //byte為要接收到的數(shù)據(jù)
    for(i=0 ; i< 8 ; i++)
    {
        DS18B20_DQ_OUT();
        DQ_L(); 
        delay_us(2);
        DQ_H();
        DS18B20_DQ_IN();
        delay_us(12);
        byte > >= 1;    
        if(DQ_Read())
            byte |= 0x80;
        delay_us(50);           

    }
    return byte;
}
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 傳感器
    +關(guān)注

    關(guān)注

    2565

    文章

    52995

    瀏覽量

    767373
  • DS18B20
    +關(guān)注

    關(guān)注

    10

    文章

    782

    瀏覽量

    82187
  • 數(shù)字溫度傳感器

    關(guān)注

    0

    文章

    196

    瀏覽量

    15749
  • 多點(diǎn)測(cè)溫
    +關(guān)注

    關(guān)注

    0

    文章

    7

    瀏覽量

    6387
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    基于DS18B20和LabVIEW的多點(diǎn)溫度測(cè)量系統(tǒng)

    今天我們一起完成一個(gè)比較完整的作品,基于DS18B20和LabVIEW的多點(diǎn)溫度測(cè)量系統(tǒng)。我重點(diǎn)介紹實(shí)現(xiàn)多點(diǎn)DS18B20溫度驅(qū)動(dòng)模塊的思路,具體實(shí)現(xiàn)大家可以閱讀源碼。驅(qū)動(dòng)源碼參考了不
    發(fā)表于 09-26 10:28 ?2142次閱讀

    DS18B20測(cè)溫系統(tǒng)設(shè)計(jì)

    誰(shuí)那有DS18B20測(cè)溫系統(tǒng)設(shè)計(jì)幫忙發(fā)過(guò)來(lái)吧,時(shí)間緊迫,老師催著交,最好有原理圖和仿真的原件
    發(fā)表于 12-04 13:14

    我用PROTUS仿真ds18b20多點(diǎn)測(cè)溫,但是LCD1602沒(méi)有顯示,是怎么回事???

    我用PROTUS仿真ds18b20多點(diǎn)測(cè)溫,但是LCD1602沒(méi)有顯示,是怎么回事?。砍绦蛟诟郊锩?,大神幫幫忙
    發(fā)表于 06-14 11:06

    DS18B20實(shí)現(xiàn)多點(diǎn)測(cè)溫

    本帖最后由 小白鼠5509 于 2016-7-31 21:34 編輯 用DS18B20實(shí)現(xiàn)串口多點(diǎn)測(cè)溫,讀出溫度傳感器的序列碼!大概的要求如下!求大神發(fā)一下電路原理圖,和protues的仿真程序!謝謝啦!大概一樣就行
    發(fā)表于 07-31 21:30

    DS18B20多點(diǎn)測(cè)溫方法探討

    摘要:多點(diǎn)測(cè)溫廣泛應(yīng)用于工業(yè)自動(dòng)化控制、農(nóng)業(yè)生產(chǎn)溫度測(cè)量等領(lǐng)域。本文介紹了智能集成數(shù)字溫度傳感器DS18B20 的特點(diǎn)和工作原理,對(duì)基于DS18B20
    發(fā)表于 11-02 16:10

    DS18B20的特點(diǎn)是什么

    范圍為 -55 ℃ ~+ 125 ℃ ; 在 -10~+ 85°C 范圍內(nèi),精度為 ± 0.5°C 。(3)持多點(diǎn)組網(wǎng)功能 多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。
    發(fā)表于 01-10 06:25

    一種新型多點(diǎn)測(cè)溫系統(tǒng)的設(shè)計(jì)(基于DS18B20設(shè)計(jì)的多點(diǎn)測(cè)溫

    一種新型多點(diǎn)測(cè)溫系統(tǒng)的設(shè)計(jì)(基于DS18B20設(shè)計(jì)的多點(diǎn)測(cè)溫系統(tǒng)) 介紹DS18B20的基本特
    發(fā)表于 10-15 23:50 ?2078次閱讀
    一種新型<b class='flag-5'>多點(diǎn)</b><b class='flag-5'>測(cè)溫</b>系統(tǒng)的設(shè)計(jì)(基于<b class='flag-5'>DS18B20</b>設(shè)計(jì)的<b class='flag-5'>多點(diǎn)</b><b class='flag-5'>測(cè)溫</b>

    基于DS18B20測(cè)溫系統(tǒng)設(shè)計(jì)

    針對(duì)單線總線數(shù)字溫度傳感器 DS18B20 的工作特性,本文對(duì)基于DS18B20測(cè)溫系統(tǒng)進(jìn)行了硬件和軟件的設(shè)計(jì)。仿真實(shí)驗(yàn)結(jié)果表明,該測(cè)溫系統(tǒng)具有電路結(jié)構(gòu)簡(jiǎn)單,測(cè)試精度高的優(yōu)點(diǎn),適用于
    發(fā)表于 07-22 16:13 ?552次下載
    基于<b class='flag-5'>DS18B20</b><b class='flag-5'>測(cè)溫</b>系統(tǒng)設(shè)計(jì)

    DS18B20原理圖

    DS18B20溫度傳感器原理圖,電路圖詳解。
    發(fā)表于 05-11 13:49 ?61次下載

    DS18B20構(gòu)成測(cè)溫系統(tǒng)

    學(xué)習(xí)單片機(jī)電路圖的很好的資料——DS18B20 構(gòu)成測(cè)溫系統(tǒng)
    發(fā)表于 11-03 15:15 ?0次下載

    ds18b20測(cè)溫程序詳解

    DS18B20是一種單總線數(shù)字溫度傳感器,測(cè)試溫度范圍-55℃-125℃,具有體積小,硬件開(kāi)銷低,抗干擾能力強(qiáng),精度高的特點(diǎn)。網(wǎng)上關(guān)于DS18B20的資料很多,但是光有程序,沒(méi)有講解,導(dǎo)致身邊很多同學(xué)即使拿到源碼也無(wú)從下手,下面就來(lái)看一下
    發(fā)表于 10-18 11:33 ?4.2w次閱讀
    <b class='flag-5'>ds18b20</b><b class='flag-5'>測(cè)溫</b>程序<b class='flag-5'>詳解</b>

    DS18B20讀寫操作程序詳解

    DS18B20的初始化、讀寫操作以及程序詳解。
    發(fā)表于 11-06 18:04 ?2.7w次閱讀

    ds18b20測(cè)溫電路圖詳解

    對(duì)于DS18B20的電路連接,除了上面所說(shuō)的傳統(tǒng)的外部電源供電時(shí)的電路連接圖,DS18B20也可以工作在“寄生電源模式”,而下圖則表示了DS18B20工作在“寄生電源模式”下的電路連接圖。沒(méi)錯(cuò),這樣就可以使
    發(fā)表于 11-07 10:16 ?9.2w次閱讀

    dht11和ds18b20區(qū)別_dht11與ds18b20哪個(gè)測(cè)溫度更精確

    本文開(kāi)始介紹介紹了DHT11特性、DHT11技術(shù)參數(shù),其次介紹了DS18B20工作原理與DS18B20技術(shù)性能,最后介紹了DS18B20&DHT11區(qū)別,詳細(xì)解答了dht11與ds18b20
    發(fā)表于 01-26 12:19 ?9w次閱讀

    基于DS18B20多點(diǎn)測(cè)溫源碼

    DS18B20 單線數(shù)字溫度傳感器,多個(gè) DS18B20 可以并聯(lián)在惟一的單線上,實(shí)現(xiàn)多點(diǎn)測(cè)溫。里面包含源碼和文章詳解。致力于開(kāi)源項(xiàng)目的分享
    發(fā)表于 01-05 16:28 ?25次下載