Yksi helpoimmista ja edullisimmista tavoista lisätä lämpötila-anturi Arduino-projektiisi on käyttää DS18B20 1-Wire lämpötila-anturia. Nämä anturit ovat melko tarkkoja eivätkä tarvitse ulkoisia komponentteja toimiakseen. Joten, vain muutamalla liitännällä ja hieman Arduino-koodia voit aistia lämpötilan hetkessä!

DS18B20 1-Wire Lämpötila-anturi

DS18B20 on 1-Wire-liitäntäinen lämpötila-anturi, jonka valmistaa Dallas Semiconductor Corp. Ainutlaatuinen 1-Wire®-liitäntä vaatii vain yhden digitaalisen nastan kaksisuuntaiseen kommunikointiin mikrokontrollerin kanssa.

Asensorissa on yleensä kaksi muotoa. Toinen, joka tulee TO-92-pakkauksessa, näyttää aivan tavalliselta transistorilta. Toinen on vedenpitävässä anturityylissä, joka voi olla hyödyllisempi, kun haluat mitata jotain kaukana, veden alla tai maan alla.

Lämpötila-anturin DS18B20 tyypit

Lämpötila-anturi DS18B20:n lämpötila-anturi on melko tarkka, eikä se tarvitse ulkoisia komponentteja toimiakseen. Se voi mitata lämpötiloja -55 °C:sta +125 °C:een ±0,5 °C:n tarkkuudella.

Lämpötila-anturin resoluutio on käyttäjän konfiguroitavissa 9, 10, 11 tai 12 bittiin. Oletusresoluutio käynnistyksen yhteydessä on kuitenkin 12-bittinen (eli 0,0625°C tarkkuus).

Asensorin virransyöttö voidaan toteuttaa 3V-5,5V virtalähteellä, ja se kuluttaa vain 1mA aktiivisten lämpötilamuunnosten aikana.

Tässä ovat täydelliset tekniset tiedot:

Virransyöttö 3V-5,5V.5V
Virrankulutus 1mA
Lämpötila-alue -55 – 125°C
Tarkkuus ±0.5°C
Tarkkuus 9-12 bittiä (valittavissa)
Muunnosaika < 750ms

Multiple DS18B20 On Single Bus

Yksi DS18B20:n suurimmista eduista on se, että useat DS18B20:t voivat olla rinnakkain samassa 1…Johdin-väylässä. Koska jokaisella DS18B20:lla on tehtaalla poltettu yksilöllinen 64-bittinen sarjakoodi, ne on helpompi erottaa toisistaan.

Tämä ominaisuus voi olla valtava etu, kun halutaan ohjata monia DS18B20:ta, jotka on hajautettu laajalle alueelle.

Jos haluat tietää, miten lämpötilaa luetaan useista DS18B20-lämpötila-antureista, tutustu tähän opetusohjelmaan.

Useiden DS18B20-digitaalilämpötila-antureiden liittäminen Arduinon kanssa

Yksi DS18B20:n suurimmista eduista on se, että useat DS18B20-anturit voivat olla rinnakkain samassa 1-johdinväylässä.

VDD-nasta syöttää virtaa anturille, joka voi olla välillä 3,3-5V.

Lämpötila-anturin DS18B20 kytkeminen Arduinoon

Teoriaa riittää, mennään käytäntöön! Kytketään DS18B20 Arduinoon.

Kytkennät ovat melko yksinkertaiset. Aloita kytkemällä VDD Arduinon 5V out -tappiin ja GND maahan.

Kytke seuraavaksi jäljelle jäävä digitaalinen signaalitappi DQ Arduinon digitaaliseen tappiin 2. Sinun on myös lisättävä 4,7k:n pull-up-vastus signaalin ja virtatapin väliin, jotta tiedonsiirto pysyy vakaana. (Arduinon sisäiset pull-upit eivät toimi)

Ole varovainen, jotta saat DS18B20:n oikein päin. Jos laitat sen väärin päin, se kuumenee ja rikkoutuu.

Ds18B20-lämpötila-anturin kytkeminen Arduinoon

Jos käytät DS18B20:n vedenpitävää versiota, kytke punainen raita 5V:hen, musta kytkeytyy maadoitukseen ja keltainen raita on dataa, joka menee digitaaliselle nastalle 2 arduinossa. Sinun on silti kytkettävä 4,7K:n pullup-vastus datasta 5V:hen.

Vedenpitävän DS18B20-lämpötila-anturin kytkeminen Arduinoon

Asennuskirjaston asentaminen DS18B20:tä varten

Dallasin 1-Wire-protokolla on jokseenkin monimutkainen, ja se vaatii kasan koodia tiedonsiirron jäsentämiseksi. Tämän tarpeettoman monimutkaisuuden piilottamiseksi asennamme DallasTemperature.h-kirjaston, jotta voimme antaa yksinkertaisia komentoja lämpötilalukemien saamiseksi anturilta.

Kirjaston asentamiseksi navigoi Sketch > Include Library > Manage Libraries…Odota, että Library Manager lataa kirjastojen hakemiston ja päivittää asennettujen kirjastojen luettelon.

Suodattaa hakuasi kirjoittamalla komentoon ’ds18b20’. Siellä pitäisi olla pari merkintää. Etsi Miles Burtonin kirjoittama DallasTemperature. Klikkaa tuota merkintää ja valitse sitten Install.

Tämä Dallas Temperature -kirjasto on laitteistokohtainen kirjasto, joka käsittelee alemman tason toimintoja. Se on yhdistettävä One Wire Library -kirjaston kanssa, jotta se voi kommunikoida minkä tahansa yksijohdinlaitteen, ei vain DS18B20:n, kanssa. Asenna myös tämä kirjasto.

Arduino-koodi

Seuraava sketsi antaa sinulle täydellisen ymmärryksen siitä, miten lämpötilalukemia luetaan DS18B20-lämpötila-anturista, ja se voi toimia pohjana käytännöllisemmille kokeiluille ja projekteille.

#include <OneWire.h>#include <DallasTemperature.h>// Data wire is plugged into digital pin 2 on the Arduino#define ONE_WIRE_BUS 2// Setup a oneWire instance to communicate with any OneWire deviceOneWire oneWire(ONE_WIRE_BUS);// Pass oneWire reference to DallasTemperature libraryDallasTemperature sensors(&oneWire);void setup(void){ sensors.begin();// Start up the library Serial.begin(9600);}void loop(void){ // Send the command to get temperatures sensors.requestTemperatures(); //print the temperature in Celsius Serial.print("Temperature: "); Serial.print(sensors.getTempCByIndex(0)); Serial.print((char)176);//shows degrees character Serial.print("C | "); //print the temperature in Fahrenheit Serial.print((sensors.getTempCByIndex(0) * 9.0) / 5.0 + 32.0); Serial.print((char)176);//shows degrees character Serial.println("F"); delay(500);}

Tältä näyttää ulostulotuloste sarjamonitorissa.

Koodin selitys:

Sketsi alkaa sisällyttämällä OneWire.h- ja DallasTemperature.h-kirjastot ja julistamalla Arduinon nastan, johon anturin signaalinastat kytketään.

#include <OneWire.h>#include <DallasTemperature.h>#define ONE_WIRE_BUS 2

Seuraavaksi luodaan OneWire-olio välittämällä anturin signaalinastat sen konstruktorille. Tämän one-wire-objektin avulla voimme kommunikoida minkä tahansa one-wire-laitteen kanssa, ei vain DS18B20:n. Voidaksemme kommunikoida DS18B20-anturin kanssa meidän on luotava DallasTemperature-kirjaston objekti ja välitettävä parametrina viittaus one-wire-objektiin.

OneWire oneWire(ONE_WIRE_BUS);DallasTemperature sensors(&oneWire);

Kun DallasTemperature-objekti on luotu, voimme antaa alla olevia yksinkertaisia komentoja vuorovaikutuksessa anturin kanssa.

  • begin() -funktio etsii väylään kytketyt anturit ja asettaa bittiresoluution (12 bittiä) kullekin.
  • requestTemperatures() -funktio lähettää kaikille väylän antureille käskyn suorittaa lämpötilamuunnos.
  • getTempCByIndex(deviceIndex) -funktio lukee ja palauttaa lämpötilalukeman anturista. deviceIndex on vain anturin sijainti väylässä. Jos käytät väylässä vain yhtä DS18B20-anturia, aseta sen arvoksi 0.

Muut hyödylliset funktiot DallasTemperature.h-kirjastossa

On muutamia hyödyllisiä funktioita, joita voit käyttää DallasTemperature-objektin kanssa. Muutama niistä on lueteltu alla:

  • setResolution() Funktio asettaa DS18B20:n sisäisen Analog-To-Digital-muuntimen resoluution 9, 10, 11 tai 12 bittiin, mikä vastaa vastaavasti 0,5°C:n, 0,25°C:n, 0,125°C:n ja 0,0625°C:n askelia.
  • bool getWaitForConversion() Funktio palauttaa waitForConversion-lippukkeen arvon. Se voi olla hyödyllinen, kun halutaan tarkistaa, onko lämpötilamuunnos valmis.
  • setHighAlarmTemp() & setLowAlarmTemp() funktio asettaa laitteen sisäiset korkean & matalan lämpötilan hälytykset celsiusasteina. Kelvollinen alue on -55 – 125 °C.
  • bool hasAlarm() Funktio palauttaa arvon true, jos laitteessa on hälytystilanne, kun lämpötila ylittää korkean & matalan hälytyslämpötilan asetuksen.

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg