Spring til hovedindhold (tryk på Enter)

DS18B20

DS18B20 er den mest udbredte digitale temperaturføler til hobby- og automationsprojekter, og med god grund: den måler fra -55 °C til +125 °C, den skal ikke kalibreres, og den kræver kun én dataledning uanset hvor mange følere du sætter på. Hver chip har sit eget serienummer fra fabrikken, så ti følere kan dele samme ben på mikrocontrolleren.

Denne side samler det, vi oftest får spørgsmål om — hvilken variant du skal vælge, hvorfor den viser -127 °C, hvor langt kablet må være, og hvordan du kender en original fra en kopi.

Hvilken variant skal du vælge?

Skal den… Vælg
sidde på et print eller i et breadboardDen bare chip i TO-92-hus
måle i væske, jord eller udendørsVandtæt føler i rustfrit stålrør
ligge mod en overflade, et rør eller en kølefladeFlad overfladeføler med silikonekabel
sidde tæt på elektronikken2 meter
nå fra en beholder ind til styringen5 meter
nå ud i en brønd, en tank eller et fyrrum10 meter — husk 2,2 kΩ pull-up
loddes som overflademontageSMD-udgaven
bruges i et Shelly-anlægShelly-udgaven med stik

Alle varianter bruger den samme chip og den samme kode. Forskellen er kapslingen og kablet.

Køber du flere, falder prisen. Mængderabatten står på hver vare, og da flere følere kan dele den samme dataledning, er det sjældent meget dyrere at måle fem steder end ét.

  • DS18B20 Waterproof Temperature Probe Sensor, 2m
    Mængderabat

    Trusted Supplier

    DS18B20 vandtæt temperaturføler, 2 meter

    55,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DS18B20 temperaturføler i TO-92 hus

    Trusted Supplier

    DS18B20 temperaturføler, TO-92 chip

    15,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • Temperatursensor DS18B20 3 m (Shelly)
    Mængderabat

    SHELLY

    DS18B20 temperaturføler, 3 meter (Shelly)

    103,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DS18B20 Waterproof Temperature Probe Sensor, 2m
    Mængderabat

    Trusted Supplier

    DS18B20 vandtæt temperaturføler, 10 meter

    85,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DS18B20 Waterproof Temperature Probe Sensor, 5m
    Mængderabat

    Trusted Supplier

    DS18B20 vandtæt temperaturføler, 5 meter

    67,50
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DFRobot temperatursensor DFR0024
    Mængderabat

    DFRobot

    Temperature Sensor DS18B20 High Accuracy, Ultra-Small Size

    65,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DFRobot temperatursensor SEN0511
    Mængderabat

    DFRobot

    DS18B20 overfladeføler, 1 m silikonekabel (DFRobot)

    81,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DFRobot temperatursensor DFR0198
    Mængderabat

    DFRobot

    DS18B20 vandtæt temperaturføler, 95 cm (DFRobot)

    73,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .
  • DFRobot temperatursensor-kit KIT0021
    Mængderabat

    DFRobot

    DS18B20 Sensor Kit, Waterproof, 9-12 Bit, 3.0-5.5V

    93,00
    DKK

    This item is only sold in badges of .

    eller

    Du skal vælge en variant.
    Please fill in all required fields.
    Minimumsmængde nået.
    Maksimal mængde nået
    Du er ved at bestille mere end vi har på lager. Resterende antal bliver bestilt fra vores leverandør. Lager beholdning = .

Pull-up-modstanden — den hyppigste fejl

1-Wire-bussen har brug for en modstand mellem dataledningen og plus. Uden den kan mikrocontrolleren ikke trække linjen op igen efter en bit, og du får -127 °C. Det er langt den hyppigste årsag til, at en DS18B20 ikke virker.

Værdien afhænger af kablets længde, fordi ledningens kapacitet bremser signalet:

Samlet kabellængdePull-up
under 5 m4,7 kΩ
5 til 30 m2,2 kΩ
30 til 100 m1,0 kΩ

Bemærk at det er den samlede længde på bussen. Sidder tre følere à 5 meter på samme ben, er bussen 15 meter lang, og så skal du ned på 2,2 kΩ — også selvom hver enkelt føler er kort nok til 4,7 kΩ.

Flere følere på samme ben

Det er her DS18B20 for alvor adskiller sig fra en almindelig analog føler. Hver chip har et unikt 64-bit serienummer brændt ind fra fabrikken, så mikrocontrolleren kan tale med dem én ad gangen over den samme ledning. Du bruger stadig kun én pull-up-modstand i alt.

Sådan finder du adresserne på de følere, der sidder på bussen:

#include <OneWire.h>
#include <DallasTemperature.h>

OneWire oneWire(2);
DallasTemperature foelere(&oneWire);

void setup() {
  Serial.begin(9600);
  foelere.begin();

  int antal = foelere.getDeviceCount();
  Serial.print("Fandt ");
  Serial.print(antal);
  Serial.println(" foeler(e)");

  DeviceAddress adresse;
  for (int i = 0; i < antal; i++) {
    if (foelere.getAddress(adresse, i)) {
      Serial.print("Foeler ");
      Serial.print(i);
      Serial.print(": ");
      for (uint8_t b = 0; b < 8; b++) {
        if (adresse[b] < 16) Serial.print("0");
        Serial.print(adresse[b], HEX);
        if (b < 7) Serial.print("-");
      }
      Serial.println();
    }
  }
}

void loop() {}

Skriv adresserne ned. Når du kender dem, kan du spørge en bestemt føler frem for at gætte på rækkefølgen — den ændrer sig nemlig, hvis du tilføjer eller fjerner en føler:

DeviceAddress fremloeb = { 0x28, 0xFF, 0x12, 0x34, 0x56, 0x00, 0x00, 0xAB };
float t = foelere.getTempC(fremloeb);

Sådan lægger du bussen

  • Kæde, ikke stjerne. Før kablet fra controlleren til føler 1, videre til føler 2 og så videre. En stjerne med lige lange grene ud fra ét punkt giver refleksioner på linjen og er den klassiske årsag til en bus, der virker med to følere og fejler med fire.
  • Parsnoet kabel over et par meter. Læg DATA og GND i samme par. Det er den enkelte ting, der betyder mest for stabiliteten.
  • Hold afstand til stærkstrøm. Ikke parallelt med motorkabler, relæledninger eller frekvensomformere. Skal de krydse, så lad dem krydse vinkelret.
  • 5 V frem for 3,3 V, hvis bussen er lang. Højere signalniveau giver større margin. Men forsyn føleren med 3,3 V, hvis den læses af en ESP32 — ellers kan dataledningen beskadige controllerens ben.

Parasitisk forsyning

DS18B20 kan køre på to ledninger i stedet for tre. VDD forbindes da til GND, og chippen henter strøm fra dataledningen og gemmer den i en lille intern kondensator mellem målingerne.

Det lyder praktisk, og på korte forbindelser virker det. Men under selve målingen trækker chippen mere strøm, end en lang eller belastet bus kan levere gennem en almindelig pull-up-modstand, og så får du 85 °C eller ingenting. Flere følere på parasitisk forsyning gør det værre.

Vores anbefaling: brug tre ledninger, når du kan. Parasitisk forsyning er til de tilfælde, hvor kablet allerede ligger, og der kun er to ledere.

Hvor nøjagtig er den i praksis?

Databladet lover ±0,5 °C fra -10 °C til +85 °C. Uden for det område vokser usikkerheden, og ved -55 °C kan den være flere grader.

Opløsningen kan indstilles fra 9 til 12 bit. Ved 12 bit er trinnet 0,0625 °C og målingen tager op til 750 ms. Ved 9 bit er trinnet 0,5 °C og målingen tager under 100 ms. Skal du læse mange følere hurtigt, er 10 eller 11 bit ofte et fornuftigt kompromis.

Husk, at nøjagtigheden sjældent er det, der begrænser en måling i praksis. Hvor føleren sidder betyder mere: en føler, der rører et koldt rør eller sidder i direkte sol, giver en forkert temperatur, uanset hvor god chippen er.

Ægte eller kopi?

DS18B20 blev udviklet af Dallas Semiconductor, siden Maxim, nu Analog Devices. Chippen er så udbredt, at der findes et stort antal kopier på markedet — og de fleste DS18B20-følere i hobbysegmentet, uanset hvor de købes, er ikke originale Maxim-chips.

Det er ikke nødvendigvis et problem. Mange kopier måler udmærket til et akvarium, et drivhus eller et varmeanlæg. Men de kan afvige mere end de lovede ±0,5 °C, de kan støje mere, og nogle fejler i parasitisk drift. Betyder den halve grad noget for dig, er det værd at kende sin chip.

Markeringen på huset

En original Maxim-chip i TO-92 er laserskåret, ikke trykt, og har fire linjer — for eksempel:

DALLAS
18B20
1932C4
+786AB
  • DALLAS 18B20 — typen. Står der 18B20P, er det en udgave kun til parasitisk forsyning.
  • 1932C4 — år 2019, uge 32. C4 er die-revisionen.
  • +786AB — plus betyder RoHS, og 786 er et batchnummer. På chips fra 2016 og frem er de to sidste tegn kun AB eller AC.

På bagsiden sidder typisk et P i fordybningen, på nogle THAI og et bogstav. Fra 2020 findes der også originaler helt uden mærke på bagsiden.

Tegn på en kopi: topmærket er trykt i stedet for laseret, bagsiden er uden mærke, eller der står et andet firmanavn — GXCAS, UMW, XINBOLE, HXY, MSKSEMI og flere. Men bemærk: flere kopifamilier bærer et falsk DALLAS-mærke. Mærket alene beviser ingenting.

De to test, du selv kan køre

Begge bruger kun almindelige kommandoer og er derfor ufarlige:

  • Serienummeret. Originaler følger mønsteret 28-xx-xx-xx-xx-00-00-xx. Passer det ikke, er det en kopi. Omvendt er mønsteret ikke bevis — nogle kopier efterligner det, og 28-xx-xx-xx-00-00-00-xx sammen med en C4-die er en kopi, fordi det mønster er ældre end C4.
  • Byte 6 i scratchpad. Før den første måling står byte 6 på 0x0C. Efter en gennemført måling gælder på en original, at byte 6 = 0x10 minus den lave nibble af byte 0 — altså at (byte 0 + byte 6) & 0x0F giver 0. Mange kopier lader byte 6 stå på 0x0C uanset hvad.

Ingen af testene er nok alene — der findes kopifamilier, som klarer den ene og falder på den anden. Kører du dem begge, fanger du langt de fleste.

Chris Petrich har lavet det grundigste offentlige arbejde på området, med testkode og en oversigt over de kendte kopifamilier. Det ligger frit på GitHub.

En advarsel derfra er værd at gentage: brug ikke udokumenterede kommandoer til at teste en føler. Nogle af dem kan ødelægge chippen permanent.

DS18B20, DS18S20 eller DS1820?

De tre forveksles konstant, og de er ikke ens:

  • DS18B20 — den aktuelle. 9 til 12 bit, indstillelig opløsning. Det er den, du vil have.
  • DS18S20 — ældre, fast 9 bit opløsning, men med en ekstra tæller der kan give højere opløsning gennem beregning. Andre scratchpad-registre.
  • DS1820 — udgået, stort set identisk med DS18S20.

DallasTemperature-biblioteket håndterer forskellen automatisk, så koden er den samme. Men bestiller du en DS18B20 og får en DS18S20, bliver opløsningsindstillinger ignoreret.

Fejlsøgning

Du serÅrsag
-127 °CFøleren bliver ikke fundet. Tjek pull-up-modstanden først, derefter pin, polaritet og forbindelser.
85 °CChippens opstartsværdi. Målingen blev ikke færdig — for svag forsyning, parasitisk drift, eller der blev læst for hurtigt. Står byte 6 i scratchpad på 0x0C, er det opstartsværdien og ikke en rigtig måling.
0 °C konstantDataledningen hænger lavt. Ofte en kortslutning mod stel eller en vendt komponent.
Springende værdierFor høj pull-up på en lang bus, stjernekobling, eller støj fra stærkstrøm.
Virker med 2, fejler med 4 følereBussens samlede kapacitet er vokset. Sænk pull-up-modstanden, og læg bussen som kæde.
Chippen bliver varmSluk straks. Den sidder med stor sandsynlighed omvendt.

Home Assistant og ESPHome

Skal føleren ind i Home Assistant, er ESPHome på en ESP32 eller ESP8266 den nemmeste vej. Konfigurationen fylder få linjer:

dallas:
  - pin: GPIO2

sensor:
  - platform: dallas
    address: 0x28FF123456000AB
    name: "Fremloeb"
    resolution: 12

ESPHome skriver adresserne på de fundne følere i loggen ved opstart, så du behøver ikke finde dem med Arduino-koden ovenfor.

På en Raspberry Pi kan føleren læses direkte gennem kernens 1-Wire-understøttelse uden mikrocontroller. Dataledningen sættes på GPIO4, og følerne dukker op som filer under /sys/bus/w1/devices/.

Dokumentation

Relaterede varer og kategorier

Du skal have en modstand på 4,7 kΩ til korte busser. Se også alle temperatursensorer, vejr-, fugt- og tryksensorer og termostater.

Spørgsmål?

Står du med en konkret installation — en lang bus, en føler der skal i en tank, eller en måling der driver — så skriv til info@let-elektronik.dk. Vi er selv elektrikere, og vi svarer selv.

Verificeret Shoporama-shop – let-elektronik.dkVerificeret Shoporama-shoplet-elektronik.dk