DS18B20: een temperatuursensor voor vloeistoffen

DS18B20

Er zijn verschillende vochtigheids- en temperatuursensoren beschikbaar, zoals de LM35. Sommige zijn ingebouwd in modules voor specifiek gebruik met de Arduino. Maar over het algemeen moeten ze de droge temperatuur meten, dat wil zeggen de luchttemperatuur. Maar er is een concreet model dat werkt meet temperatuur in vloeistoffen en heet DS18B20. Een bijzonderheid die handig kan zijn voor sommige van je meer exotische doe-het-zelfprojecten waarbij je ook speelt met een soort vloeistof waarvoor je deze parameter moet kennen.

Eigenlijk meet de DS18B20 niet alleen de temperatuur in vloeistoffen, maar het kan ook erg handig zijn om de temperatuur in vloeistoffen te meten vochtige omgevingen en ook onder wat vloeistof. Je kunt hem dus ook gebruiken om de luchttemperatuur te meten als de omgeving behoorlijk vochtig is. En zoals ik al zei, het feit dat je het in een vloeistof kunt dompelen om de temperatuur te meten, is een van de kenmerken die het ongelooflijk praktisch maken.

Wat is de DS18B20?

Nou, ik denk dat het al vrij duidelijk is geworden, het is een elektronische sensor die de temperatuur van gasvormige of vloeibare media kan meten. Bovendien zijn er verschillende pakketten of pakketten van DS18B20, zoals de basis die u in de hoofdafbeelding ziet, of deze kan ook worden geïntegreerd in sommige PCB's, dompelsondes, enz. Voor uw project moet u het meest geschikte formaat kiezen op basis van wat u wilt.

Naast de typische TO-92 is er bijvoorbeeld ook de microSOP. Eventueel te integreren met Arduino is de TO-92 het meest geschikt, omdat het met zijn drie pinnen heel gemakkelijk in het breadboard kan worden gestoken voor aansluiting.

Pinout

DS18B20 pinnen

El DS18B20 pinout het is gemakkelijk te identificeren. Als u bijvoorbeeld het Dallas TO-92-pakket als referentie neemt, dat een van de meest populaire is, kunt u zien dat het drie pinnen heeft. Als je het van voren plaatst, dat wil zeggen, met het ronde gedeelte naar achteren en kijkend naar het platte vlak waar de inscripties verschijnen, is de pin aan je linkerkant 1 en die aan je rechterkant is 3. Daarom zou 1 voor GND zijn of aarde, 2 is voor data en 3 voor voedingsspanning.

Hier moeten we zeggen dat, waarden die u moet kennen:

  • Pin 1: je moet het aansluiten op de GND-pin van Arduino, dat wil zeggen op 0v.
  • Pin 2: deze pin is DQ of data, degene die de door de sensor gemeten temperaturen naar Arduino stuurt via een bepaald protocol dat bekend staat als 1-Wire en dat een speciale bibliotheek en functies nodig heeft voor de Arduino IDE. Dat maakt het mogelijk om slechts één Arduino-pin te gebruiken om meerdere sensoren met dit protocol te verbinden ...
  • Pin 3: Hij kan worden gevoed van 3 tot 5,5 V, dus je kunt hem aansluiten op de 5 V-uitgang van Arduino.

DS18B20 technische kenmerken en gegevensblad

Zoals altijd is het zo interessant om de technische kenmerken te kennen van de sensor om te weten hoe deze werkt, om deze niet te beschadigen, en vooral om te weten waar de meetgrenzen liggen, want als de waarden die we willen meten er niet tussen liggen, zal het ons en u niet helpen moet op zoek naar een ander alternatief.

Om dit te doen, is het het beste om een datasheet van de fabrikant, zoals die in Dallas je kunt hier zien. Daar vind je alle nodige informatie. En vergeet niet dat, hoewel alle DS18B20 vergelijkbaar kunnen zijn, u, afhankelijk van de fabrikant of het pakket, enkele wijzigingen kunt aantreffen ...

Maar ongeacht de eigenaardigheden, hier zijn er een paar fundamentele technische gegevens:

  • Temperatuurbereik: -55 tot 125ºC, daarom kan het meten in gas of vloeistof bij zeer lage en ook hoge temperaturen.
  • fouten: de DS18B20 is gevoelig voor externe ruis of storingen die foutieve meetwaarden kunnen geven. De foutmarge is plus minus 2ºC, hoewel het bij temperaturen tussen -10ºC en 85ºC, dat wil zeggen, wanneer we niet dicht bij de limieten komen, slechts een halve graad kan zijn.
  • Resolutie: U kunt werken met verschillende resoluties of minimale variaties die u kunt detecteren met de analoge Arduino-pinnen. Ondersteunt 9-bits, 10-bits, 11-bits en 12-bits (standaard). Dat wil zeggen, het kan meten van een halve tot een halve graad, van een kwart tot een kwart graad, van respectievelijk 0,125 tot 0,125 ° C of 0,0625 ° C. U kunt deze programmering wijzigen door middel van de programmeercode.
  • Voedingsspanning: 3 tot 5,5v
  • Prijs: 1 tot 3 €

Integratie met Arduino

Arduino-aansluitschema - DS18B20

Desondanks zijn er verschillende manieren om het aan te sluiten, de meest geschikte is degene die u in dit diagram ziet. Het is vrij eenvoudig, met de GND-pin in de overeenkomstige aansluiting van het Arduino-bord, de voeding hetzelfde en vervolgens de gegevens naar de Arduino-analoog die je hebt gekozen in je programmeercode in Arduino IDE. Maar het is ook goed om een ​​pull-up weerstand van 4,7 k in te stellen (als de afstand van de sensor-sondekabel groter is, moet de weerstand lager zijn, bijvoorbeeld voor 5 m van 3,3 k, voor 10 van 2,2, XNUMX k, ...) voor de datapin en houd deze dus altijd hoog.

Voor programmeren in Arduino IDE en zijn goede integratie met de DS18B20 en dat zeer specifieke protocol, wordt aanbevolen dat u de bibliotheken downloadt Dallas Temperatuur y OneWire uit de omgeving. En de basiscode, het kan zoiets zijn als dit voorbeeld dat ik laat zien:

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

// Pin donde se conecta el bus 1-Wire (DQ)
const int pinDatosDQ = 9;

// Instancia a las clases OneWire y DallasTemperature
OneWire oneWireObjeto(pinDatosDQ);
DallasTemperature sensorDS18B20(&oneWireObjeto);
 
void setup() {
    // Iniciamos la comunicación serie a 9600 baudios
    Serial.begin(9600);
    // Iniciamos el bus 1-Wire del sensor
    sensorDS18B20.begin(); 
}
 
void loop() {
    // Indicamos que tome la temperatura
    Serial.println("Midiendo temperatura");
    sensorDS18B20.requestTemperatures();
 
    // Lee y muestra la temperatura (recuerda que puedes conectar más de uno con 1-wire)
    Serial.print("La temperatura del sensor 0 es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(0));
    Serial.println(" C");
    Serial.print("La temperatura del sensor x es de: ");
    Serial.print(sensorDS18B20.getTempCByIndex(1));
    Serial.println(" ºC");
    
    delay(1000); 
}

Meer informatie - Arduino-programmeerhandleiding (gratis pdf)


Wees de eerste om te reageren

Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.