Termi: 4-johtiminen vastuslämpömittari

Tässä artikkelissa keskustellaan erityyppisistä lämpötila-antureista ja siitä, miten niitä voidaan käyttää tapauskohtaisesti. Lämpötila on fyysinen parametri, joka mitataan asteina. Se on olennainen osa mittausprosessia. Tarkkoja lämpötilamittauksia vaativia alueita ovat lääketiede, biologinen tutkimus, elektroniikka, materiaalitutkimus ja sähkötuotteiden lämpösuorituskyky. Lämpöenergiamäärän mittaamiseen käytetty laite, jonka avulla voimme havaita fyysiset lämpötilan muutokset, tunnetaan lämpötila-anturina. Ne ovat digitaalisia ja analogisia.

Pääanturityypit

Yleensä on kaksi tapaa saada tietoja:

1. Ota yhteyttä... Kosketuslämpötila-anturit ovat fyysisessä kosketuksessa kohteen tai aineen kanssa. Niitä voidaan käyttää kiinteiden aineiden, nesteiden tai kaasujen lämpötilan mittaamiseen.

2. Kosketukseton... Kosketuksettomat lämpötila-anturit havaitsevat lämpötilan sieppaamalla osan kohteen tai aineen lähettämästä infrapunaenergiasta ja tunnistamalla sen voimakkuuden. Niitä voidaan käyttää lämpötilan mittaamiseen vain kiinteissä aineissa ja nesteissä. He eivät pysty mittaamaan kaasujen lämpötilaa niiden värittömyyden (läpinäkyvyyden) takia.

Anturin valintasäännöt

Lattialämmityksen lämpötila-anturi valitaan ottaen huomioon ominaisuudet, kuten teho, päällysteen tyyppi, asennusmenetelmä ja lisätoiminnoilla varustetut laitteet.

Teho

Arvon on varmasti täytettävä lämpimän lattian vaatimukset ja kuormitus. Muuten anturi ei toimi oikein. Kun lämmityselementin teho on suurempi kuin itse säätimen teho, on välttämätöntä asentaa niiden väliin lisäksi magneettinen käynnistin - laitteen rikkoutumisen estämiseksi lisääntyneen kuormituksen vuoksi.

Ominaisuusjoukko

Lämmin lattia ohjataan sähkölaitteella, jonka avulla voit säätää lämmityselementtien toimintaa. Nykyaikaisilla säätimillä on sellaiset toiminnot kuin järjestelmän käynnistys ja virran katkaisu, lämpötilaolosuhteiden säätäminen sekä lämmityselementin kytkemisen ja irrottamisen taajuuden asettaminen.

Helppokäyttöisyys

Jos luulet, ettet ymmärrä ohjelmointia, sinun ei pitäisi ostaa monimutkaista laitetta. Jopa ottaen huomioon kaikki sen toiminnot. Esimerkiksi iäkkäiden mielestä on melko ongelmallista käsitellä ohjelmoitavia laitteita. Heidän on parempi valita mekaaninen vaihtoehto.

Helppo liittää

Termostaatin mukana toimitetuissa asiakirjoissa ilmoitetaan aina, miten lattialämmitysanturi kytketään. Liittimet sijaitsevat ohjausyksikön toisella puolella. Kun sähköjohdot on kytketty järjestelmän mukaisesti, on tarpeen tarkistaa lämmitysjärjestelmän suorituskyky. Mittaa tämä mittaamalla vastus lämpötila-anturin ja lämmityssähkökaapelin liittimistä tai kytkemällä lämmin lattia ja nostamalla lämpötila-arvot nollasta SNIP: n suosittelemaan indikaattoriin eli 30 ° C: seen.

Ulkomuoto

Lämpöanturin ei pitäisi olla vain toiminnallisesti ymmärrettävä, vaan myös muotoilultaan houkutteleva. Moderneja nuppeja on useita värejä ja muotoja. Voit valita vaihtoehdon, joka on sopusoinnussa huoneen sisustuksen kanssa.

Lämpötila-antureiden tyypit

Lämpötila-antureita on monia erilaisia.Termostaattilaitteen yksinkertaisesta päälle / pois-ohjauksesta monimutkaisiin vesihuollon ohjausjärjestelmiin, joiden toiminto on lämmitys, joita käytetään kasvien kasvuprosesseissa. Kaksi anturityyppiä, kosketus- ja kosketuksettomat, jaetaan edelleen resistiivisiin, jännite- ja sähkömekaanisiin antureihin. Kolme yleisimmin käytettyä lämpötila-anturia ovat:

  • Termistorit
  • Lämpöparit
  • Termoelementti

Nämä lämpötila-anturit eroavat toisistaan ​​toimintaparametrien suhteen.

Laite

Tämä on termoelementti (levy tai sauva), joka koostuu johtimista, jotka on kytketty anturielementin liittimiin.

Lämpötilatiedoista riippuen herkkän osan vastus muuttuu, termostaatille syötetty sähköinen signaali muuttuu. Täten määritetään väliaineen lämpötilan absoluuttinen arvo.

Lämpötila-anturin kytkentäkaavio

Ulkoinen (lattialämmityksen ulkoinen lämpötila-anturi) sijaitsee yleensä viimeistelylattian alla ja mittaa sen lämpötila-indikaattoreita. Sisäinen (sisäänrakennettu), joka sijaitsee säätimen sisällä ja määrittää ilmanlämmityksen tason.

Lämpötila-antureiden suunnittelu valitaan järjestelmän ominaisuuksien mukaan:

Termistori

Termistori on herkkä vastus, joka muuttaa fyysistä vastustaan ​​lämpötilan kanssa. Termistorit on tyypillisesti valmistettu keraamisesta puolijohdemateriaalista, kuten koboltista, mangaanista tai nikkelioksidista, ja ne on päällystetty lasilla. Ne ovat pieniä, tasaisia ​​suljettuja levyjä, jotka reagoivat suhteellisen nopeasti lämpötilan muutoksiin.

Materiaalin puolijohtavien ominaisuuksien vuoksi termistoreilla on negatiivinen lämpötilakerroin (NTC), ts. vastus pienenee lämpötilan noustessa. On kuitenkin myös PTC-termistoreja, joiden vastus kasvaa lämpötilan noustessa.

Termistorin aikataulu

Termistoreiden edut

  • Suuri nopeus lämpötilamuutoksiin, tarkkuus.
  • Halpa.
  • Suurempi vastus 2000 - 10000 ohmia.
  • Paljon korkeampi herkkyys (~ 200 ohm / ° C) rajoitetulla lämpötila-alueella jopa 300 ° C.

Vastuksen lämpötilariippuvuudet

Resistenssin riippuvuus lämpötilasta ilmaistaan ​​seuraavalla yhtälöllä:

Missä A, B, C - nämä ovat vakioita (laskentaperusteiden mukaan), R - vastus ohmoina, T - lämpötila Kelvinissä. Voit helposti laskea lämpötilan muutoksen vastuksen muutoksesta tai päinvastoin.

Kuinka käyttää termistoria?

Termistoreille on luokiteltu niiden resistiivinen arvo huoneenlämmössä (25 ° C). Termistori on passiivinen resistiivinen laite, joten se vaatii tuotantoa nykyisen lähtöjännitteen valvomiseksi. Yleensä ne on kytketty sarjaan sopivien stabilointiaineiden kanssa, jotka muodostavat verkkojännitteenjakajan.

Esimerkki: Tarkastellaan termistoria, jonka vastusarvo on 2,2 K lämpötilassa 25 ° C ja 50 ohmia lämpötilassa 80 ° C. Termistori kytketään sarjaan 1 kΩ: n vastuksen kanssa 5 V: n virtalähteen kautta.

Siksi sen lähtöjännite voidaan laskea seuraavasti:

25 ° C: ssa RNTC = 2200 ohmia;

80 ° C: ssa RNTC = 50 ohmia;

On kuitenkin tärkeää huomata, että huoneenlämpötilassa standardit resistanssiarvot ovat erilaiset eri termistoreille, koska ne eivät ole lineaarisia. Termistorilla on eksponentiaalinen lämpötilan muutos ja siten beeta-vakio, jota käytetään laskemaan sen resistanssi tietylle lämpötilalle. Vastuksen lähtöjännite ja lämpötila liittyvät lineaarisesti.

LMT01-lämpötila-antureiden kaksijohtimisen virtaliitännän ominaisuudet

Kuva. 4. Nykyisen LMT01-liitännän organisointi

Kuten yllä mainittiin, mittaustuloksen lähettämiseksi LMT01 generoi bittisekvenssin virranlaskentapulssien muodossa. Tätä varten anturi vaatii vain kaksi johtoa (kuva 4). Jos haluat muuntaa virtapulssit digitaalisille mikropiireille tutuksi, joissakin tapauksissa voit käyttää yhtä vastusta (mutta ei aina - lisätietoja alla).

Käynnistyksen jälkeen LMT01 aloittaa mittaussyklin, joka kestää jopa 54 ms (kuva 5). Tänä aikana anturin ulostuloon muodostuu matalan tason 28 ... 39 μA virta. Tätä seuraa mittaustuloksen siirtosykli virtapulssien muodossa, jonka amplitudi on 112 ... 143 μA. Vastaanottavan mikrokontrollerin on laskettava nämä pulssit esimerkiksi käyttämällä sisäänrakennettua laskuria / ajastinta. Koska signaalien taajuus on noin 82 ... 94 kHz, niin pulssien enimmäismäärällä (4095) lähetys voi kestää 50 ms.

Kuva. 5. LMT01-anturin ajoituskaaviot

Laskettujen pulssien lukumäärää (PC) voidaan käyttää lämpötilan arvon määrittämiseen kaavan 1 mukaisesti:

, (1)

Siten anturi tuottaa 0 ° C: ssa noin 800 pulssia.

Valitettavasti yhden ulkoisen vastuksen käyttö ei ole aina mahdollista johtuen LMT01-anturin pienimmän jännitehäviön rajoituksesta. Mittausjakson aikana anturin yli pudotuksen on oltava vähintään 2,15 V. Tiedonsiirtojakson aikana jännitehäviö voidaan pienentää arvoon 2 V. Ei ole vaikeaa tehdä karkeita laskelmia.

Tarkastellaan laitetta, jonka syöttöjännite Vdd = 3,3 V. Jos otamme anturin yli pienimmän sallitun pudotuksen, joka on 2,15 V mittaussyklin aikana, vastuksen yli havaitaan enintään 1,15 V: n signaali. ohjaimien looginen yksikkö on 0, 7 ∙ Vdd, joka meidän tapauksessamme on 2,31 V. Tämän seurauksena yksinkertaisen vastuksen käyttö osoittautuu mahdottomaksi, koska mikro-ohjain ei yksinkertaisesti "näe" looginen yksikkö. Poistuminen tästä tilanteesta voi olla mikrokontrollerin käyttö, jossa on sisäänrakennettu vertailija tai tasomuutospiiri.

Resistiiviset lämpötila-anturit

Lämmönkestävyysanturit (RTD) on valmistettu harvoista metalleista, kuten platinasta, jonka sähköinen vastus vaihtelee lämpötilan mukaan.

Resistiivisillä lämpötila-ilmaisimilla on positiivinen lämpötilakerroin, ja toisin kuin termistoreilla, ne tarjoavat korkean lämpötilan mittaustarkkuuden. Heillä on kuitenkin heikko herkkyys. Pt100 on yleisimmin saatavilla oleva anturi, jonka vakiovastusarvo on 100 ohmia 0 ° C: ssa. Suurin haitta on korkeat kustannukset.

Tällaisten antureiden edut

  • Laaja lämpötila-alue välillä -200 - 650 ° C
  • Tarjoaa suuren pudotuksen virtalähdön
  • Lineaarisempi termopareihin ja RTD: hin verrattuna

Lisäkomponentit ja anturipiiri

Lämpötila-anturipiiri sisältää päädiodilaitteiden lisäksi useita lisäelementtejä. Ensinnäkin se on kondensaattori, joka suojaa laitetta ulkopuolisilta vaikutuksilta. Tosiasia on, että operatiivinen vahvistin on erittäin herkkä vuorottelevien sähkömagneettisten kenttien vaikutuksille. Kondensaattori poistaa tämän riippuvuuden injektoimalla negatiivista palautetta.

Lämpötila-anturipiiri

Transistorin ja zener-diodin osallistumisella muodostuu vakaa vertailujännite. Tässä käytetään vastuksia, joilla on korkeampi tarkkuusluokka ja joiden vastuskerroin lämpötilalla on pieni. Siten koko järjestelmä saa lisää vakautta. Mahdollisissa merkittävissä lämpötilan muutoksissa tarkkuusvastukset voidaan jättää pois. Niitä käytetään vain pienen ylikuumenemisen hallintaan.

Termoelementti

Lämpöparin lämpötila-antureita käytetään yleisimmin, koska ne ovat tarkkoja, toimivat laajalla lämpötila-alueella -200 ° C - 2000 ° C ja ovat suhteellisen halpoja. Termopari, jossa on johto ja pistoke alla olevassa kuvassa:

Lämpöparin käyttö

Termoelementti on valmistettu kahdesta erilaisesta metallista, jotka on hitsattu yhteen potentiaalieron aikaansaamiseksi lämpötilan suhteen. Kahden risteyksen välisestä lämpötilaerosta syntyy jännite, jota käytetään lämpötilan mittaamiseen. Kahden risteyksen välistä jännite-eroa kutsutaan Seebeck-efektiksi.

Jos molemmat yhdisteet ovat samassa lämpötilassa, erojen mahdollisuus eri yhdisteissä on nolla, ts. V1 = V2. Jos risteykset ovat eri lämpötiloissa, lähtöjännite suhteessa kahden risteyksen väliseen lämpötilaeroon on yhtä suuri kuin niiden V1 - V2 ero.

Lämpötila-antureiden tyypit

Elektroninen-mekaaninen

Yksinkertaisin ja edullisin säätötyyppi. Sen pääosa on erityinen metallilevy, joka reagoi lämpötilan nousuun tai laskuun. Järjestelmä kytketään päälle ja pois päältä muuttamalla levyn kaarevuutta lämmityksen ja jäähdytyksen aikana. Tarkan lämpötila-arvon asettaminen tällaiselle säätimelle ei toimi.

Sähköinen

Laitteessa on erityinen elementti, joka tuottaa erityisen signaalin. Teho riippuu suoraan ympäristön lämpötilan arvoista. Tällaisissa laitteissa voit asettaa tarkat lämpötilalukemat murto-osaan asti. Järjestelmää ohjataan painikkeilla ja pienellä näytöllä.

Ohjelmoitava

Kallein lämpöelementeistä. Siinä voit asettaa tiettyjä arvoja, joihin päästyään säädin kytkee koko järjestelmän päälle tai pois päältä. Laitteen ansiosta huoneeseen luodaan mikroilmasto, joka sopii tietylle henkilölle. Termostaatti voidaan konfiguroida siten, että järjestelmä kytketään päälle tiettynä ajankohtana. Toisin sanoen lattiat lämmitetään ennen omistajan saapumista kotiin, ja samalla sähköä ei kuluteta, kun omistaja ei ole.

Monissa malleissa on kirkkaat ja tyylikkäät mallit sekä LCD-näytöt, jotka näyttävät tietoja ja helpottavat hienosäätöä.

Työskentely valmiiden kirjastojen kanssa

Joten, kun haluat työskennellä verkon DS18B20-lämpötila-antureiden kanssa, löydät valtavan määrän kirjastoja, mutta pääsääntöisesti käytetään kahta suosituinta. Se on kirjasto ja kirjasto. Lisäksi toinen kirjasto on helpompi lisäosa ensimmäiseen verrattuna, eikä sitä voi käyttää ilman sitä. Toisin sanoen, ennen DallasTemperature.h-kirjaston liittämistä, sinun on liitettävä myös OneWire.h. Tiettyjen kirjastojen asentaminen Arduino IDE -ohjelmaan on mahdollista.

Kirjasto OneWire.h

Harkitaan ensin työskentelyä OneWire.h-kirjaston kanssa. Alla on luettelo sen toiminnoista ja lyhyt kuvaus.

  • OneWire-lämpötila-anturi (uint8_t pinNumber)

Tämä toiminto on OneWire-luokan konstruktori ja luo temperatureSensor-objektin, ts. avaa tiedonsiirtokanavan, jossa on anturi tai anturiryhmä pinNumber-nastassa. Esimerkeissämme (kuvat 3-5) tämä on Arduino Nanon ”D2” -tappi. Siihen yhdistimme DQ DS18B20 -dataväylän.

Esimerkki:

OneWire-lämpötila-anturi
(
D2
);
// Anturi tai anturiryhmä on kytketty tapiin D2

  • uint8_t etsi (addrArray)

Toiminto etsii seuraavaa laitetta 1-johdinväylästä ja kun se löytyy, syöttää osoitearvon addrArray-matriisiin palaten tosi. Koska kunkin anturin yksilöllinen osoite on 64-bittinen, addrArrayn on oltava kooltaan 8 tavua. Jos haku epäonnistuu, funktio palauttaa arvon false. On huomattava, että kun useampia lämpötila-antureita on kytketty yhteen väylään, jokainen kutsu hakutoiminnolle osoitetaan seuraavalle anturille, sitten seuraavalle jne., Kunnes kaikki väylän laitteet on lueteltu. Tämän toiminnon erikoisuus on muistaa jo käsitellyt osoitteet. Jonon palauttamiseksi sinun on kutsuttava reset_search () -toimintoa, josta keskustellaan jäljempänä.

Esimerkki:

tavu addrArray
[
8
];
// Taulukko 64-bittisen osoitteen tallentamiseksi // Jos laitetta ei ole lainkaan väylässä tai kaikki laitteet on lueteltu // näytä vastaavat tiedot porttimonitorissa
jos(!
lämpösensori
.
Hae
(
addrArray
))
Sarja
.
println
(
"Ei enää osoitteita."
);
// Muussa tapauksessa, jos seuraava laite vastasi läsnäolopyyntöön, // näytä sen 64-bittinen osoite porttimonitorissa
muu{varten(
i
=
0
;
i
<
8
;
i
++)
Sarja
.
Tulosta
(
addrArray
[
i
],
HEX
);
}

  • mitätönreset_search ()

Kuten edellä mainittiin, tämä toiminto palauttaa 1-johdinväylän laitteiden kyselyjonon alkuun. Sitä tulisi käyttää aina hakutoiminnon yhteydessä, kun jälkimmäinen palauttaa arvon false. Esimerkiksi tapauksessamme, jossa väylässä on 5 anturia, soittamalla hakutoimintoon viisi kertaa, voimme saada 5 osoitetta. Kuudennen kerran hakutoiminto palauttaa meille väärän arvon ja tekee sen jokaisen seuraavan kyselyn kanssa, kunnes jono on huuhdeltu. Sinun tulisi kiinnittää tähän huomiota käsittämättömien tilanteiden välttämiseksi.

Esimerkki:

tavu addrArray
[
8
];
// Taulukko 64-bittisen osoitteen tallentamiseksi // Jos laitetta ei ole lainkaan väylällä tai kaikki laitteet on lueteltu // Nollaa kyselyjono toistamaan hakusykli
jos(!
lämpösensori
.
Hae
(
addrArray
))
lämpösensori
.
reset_search
();

  • uint8_tnollaus ()

1-johtiminen nollaus -toiminto aloittaa viestintäprosessin. Sitä kutsutaan aina, kun haluamme olla yhteydessä lämpötila-anturiin. Palautusarvot voivat olla tosi tai epätosi. Saamme todellisen arvon, jos ainakin yksi väylän anturi reagoi nollaukseen läsnäolopulssilla. Muuten saamme väärän;

Esimerkki:
jos(!
lämpösensori
.
nollaa
())
Sarja
.
println
(
"Ei antureita väylässä"
);muu
Sarja
.
println
(
"Tunnistin havaittu"
);

  • mitätönvalitse (addrArray)

Toiminnon avulla voit valita tietyn laitteen, jolla haluamme työskennellä tällä hetkellä. Valinta tehdään määrittämällä erikseen addrArray-ryhmään syötetty 64-bittinen osoite. Osoite voidaan asettaa nimenomaisesti kirjoittamalla se taulukkoon tai käyttämällä hakutoiminnon aiemmin lukemaa osoitetta. On huomattava, että palautustoiminto on kutsuttava ennen kuin valitset toiminnon. Seuraavan nollauksen yhteydessä yhteys valittuun anturiin katkeaa seuraavaan valittavaan puheluun saakka.
Esimerkki:
tavu addrArray
[
8
];
// Taulukko 64-bittisen osoitteen tallentamiseksi // Jos laitetta ei ole lainkaan väylässä tai kaikki laitteet luetellaan // tuotetaan vastaavat tiedot porttimonitoriin
jos(!
lämpösensori
.
Hae
(
addrArray
))
Sarja
.
println
(
"Ei enää osoitteita."
);
// Muussa tapauksessa, jos seuraava laite vastasi läsnäolopyyntöön, // valitse se seuraavaa työtä varten
muu{
lämpösensori
.
nollaus ()
;
// Älä unohda antaa lämpötilan tunnistimen palautuskomentoa
.
valitse (addrArray)
;
// Määritä taulukko luetulla osoitteella
}

  • mitätönohita ()

Toiminto on merkityksellinen vain työskenneltäessä väylän yhden anturin kanssa ja ohittaa yksinkertaisesti laitteen valinnan. Toisin sanoen et voi käyttää hakutoimintoa, joten voit käyttää sitä nopeasti ainoalla anturillasi.

Esimerkki:
lämpösensori.
nollaa
();
// Palauta lämpötila-anturin rengas
.
ohita
();
// Valitse ainoa anturi jatkaaksesi työskentelyä sen kanssa

  • mitätönkirjoittaa (uint8_ttavu, uint8_t powerType = 0)

Toiminto lähettää datatavun valitulle väylän laitteelle. PowerType-argumentti määrittää antureiden virtalähteen tyypin (0 - anturit saavat virran suoraan ulkoisesta lähteestä; 1 - käytetään loislähtöistä liitäntää). Toinen parametri voidaan jättää pois, jos käytetään ulkoista virtaa, koska se on oletusarvoisesti 0.

Esimerkki:

lämpösensori
.
nollaa
();
// Palauta lämpötila-anturin rengas
.
ohita
();
// Valitse yksi anturi myöhempää työskentelyä varten // Lähetä komento lämpötilan muuntamiseksi // käyttämällä yhteyttä loisvirransyöttöön lämpötilan tunnistimen tietoväylästä
.
kirjoittaa
(
0x44
,
1
);

  • uint8_tlukea ()

Tämä toiminto lukee yhden tavun tietoja, jotka orjalaite (anturi) lähettää 1-johdinväylälle.

Esimerkki:

// Lue 9 tavua tietoja 1-johdinväylästä ja laita tulos taulukon tavutaulukkoon
[
9
];varten(
uint8_t i
=
0
;
i
<
9
;
i
++){
taulukko
[
i
]=
lämpösensori
.
lukea
();}

  • staattinen uint8_t crc8 (const uint8_t * addr, uint8_t len);

Toiminto on suunniteltu laskemaan tarkistus summa. Suunniteltu tarkistamaan oikea yhteys lämpötila-anturin kanssa. Tässä addr on osoitin tietojoukolle, ja len on tavujen lukumäärä.

Esimerkki:

tavu addrArray
[
8
];
// Taulukko 64-bittisen osoitteen tallentamiseksi // Jos laitetta ei ole lainkaan väylässä tai kaikki laitteet luetellaan // tuotetaan vastaavat tiedot porttimonitoriin
jos(!
lämpösensori
.
Hae
(
addrArray
))
Sarja
.
println
(
"Ei enää osoitteita."
);
// Muussa tapauksessa, jos seuraava laite vastasi läsnäolopyyntöön, // tarkista sen osoitteen tarkistus summa
muu{
// Jos tarkistus summa ei täsmää, näytä virheilmoitus
jos(
OneWire
::
crc8
(
addrArray
,
7
)!=
addrArray
[
7
]){
Sarja
.
println
(
"CRC ei kelpaa!"
);}}
Tutkimme OneWire.h-kirjaston kutakin toimintoa erikseen ja materiaalin kiinnittämiseksi annan alla luonnoksen lämpötilan lukemiseen DS18B20-lämpötila-antureiden ryhmästä, joka liitetään nastaan ​​D2 loisvirtapiirin avulla. Luonnos sisältää yksityiskohtaiset kommentit kaikista tarvittavista kohdista.

#include // Yhdistämme kirjaston työskentelyyn DS18B20OneWire ds -lämpöantureiden kanssa
(
2
);
// Anturi tai anturiryhmä on kytketty Arduinon D2-napaan // PRESET FUNCTION void setup
(
mitätön
){
Sarja
.
alkaa
(
9600
);
// Työn alustaminen Serial-portilla} // MAIN CYCLE void loop
(
mitätön
){
tavu i
;
// Apumuuttuja tavun nykyisille silmukoille
=
0
;
// Muuttuja määrittää anturin valmiuden viestintatavutyyppeihin
;
// Muuttuja lämpötila-anturin tyypin määrittämiseksi tavutietoväylällä
[
12
];
// Taulukko anturitavun osoitteesta vastaanotettujen tietojen tallentamiseksi
[
8
];
// Matriisi kelluvan celsiusanturin 64-bittisen osoitteen tallentamiseen
,
fahrenheit
;
// Muuttujat lämpötilan laskemiseksi // Jos väylässä olevia laitteita ei löydy tai kaikki väylän laitteet luetellaan // näytä vastaavat tiedot porttimonitorissa, nollaa jono // ja suorita haku uudelleen odottaessasi 250 ms
jos(!
ds
.
Hae
(
osoite
)){
Sarja
.
println
(
"Ei enää osoitteita."
);
Sarja
.
println
();
ds
.
reset_search
();
viive
(
250
);palata;}
// Jos seuraava laite väylältä löytyy, näytä sen yksilöllinen osoite // porttimonitorissa heksadesimaalimuodossa Sarja
.
Tulosta
(
"ROM ="
);varten(
i
=
0
;
i
<
8
;
i
++){
Sarja
.
kirjoittaa
(
‘ ‘
);
Sarja
.
Tulosta
(
osoite
[
i
],
HEX
);}
// Tarkista löydetyn laitteen osoitteen tarkistus summa // ja jos se ei täsmää, näytä vastaavat tiedot
jos(
OneWire
::
crc8
(
osoite
,
7
)!=
osoite
[
7
]){
Sarja
.
println
(
"CRC ei kelpaa!"
);palata;}
Sarja
.
println
();
// Tarkista osoitteen nollatavu, joka sisältää tietoja // tietyntyyppisestä lämpötila-anturista. Nollan // tavun arvosta riippuen lähetämme sirusarjan porttimonitorille. Jos nollatavu sisältää tuntemattoman // -arvon, näytä viesti lämpötila-anturin tuntemattomasta perheestä.
vaihtaa(
osoite
[
0
]){tapauksessa
0x10
:
Sarja
.
println
(
"Siru = DS18S20"
);
tyypit
=
1
;tauko;tapauksessa
0x28
:
Sarja
.
println
(
"Siru = DS18B20"
);
tyypit
=
0
;tauko;tapauksessa
0x22
:
Sarja
.
println
(
"Siru = DS1822"
);
tyypit
=
0
;tauko;oletuksena:
Sarja
.
println
(
"Laite ei ole DS18x20-perheen laite."
);palata;}
ds
.
nollaa
();
// Nollaa väylä aloittaaksesi tiedonsiirron ds
.
valitse
(
osoite
);
// Valitse anturi, jolla on nykyinen osoite, työskentelemään sen kanssa // Lähetä komento lämpötilan muuntamiseksi (dokumentaation 0x44 mukaan) // Älä unohda toista parametria "1", koska lähetämme tietoja / / linja loisvoimalla. ds
.
kirjoittaa
(
0x44
,
1
);
// Anturi aloittaa muuntamisen, mikä dokumentaation mukaan kestää enint. 750 ms // Ollaksemme turvallisella puolella järjestämme tauon ё sekunnin viiveellä
(
1000
);
// Nollaa väylä uudelleen lukemaan tietoja anturista // tallenna reset () -toiminnon vastaus nykyiseen muuttujaan jatkaaksesi työskentelyä sen kanssa
=
ds
.
nollaa
();
ds
.
valitse
(
osoite
);
// Valitse anturi uudelleen osoitteensa mukaan, koska pulssi oli nollaus // 0xBE-komento sallii teknisen dokumentaation mukaan lukea lämpötila-anturin (Scratchpad) sisäisen muistin //, joka koostuu 9 tavusta. ds
.
kirjoittaa
(
0xBE
);
// Lue ja lähetä porttimonitorille 9 tavua sarjatermisen anturin sisäisestä muistista
.
Tulosta
(
"Data ="
);
Sarja
.
Tulosta
(
esittää
,
HEX
);
Sarja
.
Tulosta
(
» «
);varten(
i
=
0
;
i
<
9
;
i
++){
tiedot
[
i
]=
ds
.
lukea
();
Sarja
.
Tulosta
(
tiedot
[
i
],
HEX
);
Sarja
.
Tulosta
(
» «
);}
// Tarkista ja lähetä porttiin tarkkaile vastaanotettujen tietojen sarjasarjaa
.
Tulosta
(
"CRC ="
);
Sarja
.
Tulosta
(
OneWire
::
crc8
(
tiedot
,
8
),
HEX
);
Sarja
.
println
();
// Aloita vastaanotettujen tietojen muuntaminen todelliseksi lämpötilaksi, // joka on tallennettu 0 ja 1 tavuun luettuun muistiin. Tätä varten yhdistämme nämä kaksi // tavua yhdeksi 16-bittiseksi luvuksi int16_t raw
=(
tiedot
[
1
]<<
8
)|
tiedot
[
0
];
// Ennen jatkomuunnosta sinun on määritettävä perhe, johon // tämä anturi kuuluu (aiemmin tallensimme tuloksen muuttujaan type_s). // Perheestä riippuen lämpötila lasketaan eri tavalla, // koska DS18B20 ja DS1822 palauttavat 12-bittisen arvon, kun taas DS18S20 palauttaa 9-bittisen arvon
jos(
tyypit
){
// Jos anturi kuuluu DS18S20-raakaperheeseen
=
raaka
<<
3
;
// oletustarkkuus on 9 bittiä
jos(
tiedot
[
7
]==
0x10
){
raaka
=(
raaka
&
0xFFF0
)+
12

tiedot
[
6
];}}muu{
// Määritä, millä mittaustarkkuudella tämä anturi on määritetty tavu cfg
=(
tiedot
[
4
]&
0x60
);
// Pienemmillä tarkkuuksilla voit nollata vähiten merkitsevät bitit, // koska niitä ei ole määritelty aikaisin
jos(
vrt
==
0x00
)
raaka
=
raaka
&~
7
;
// 9 bittiä (muuntaminen kestää 93,75 ms)
muujos(
vrt
==
0x20
)
raaka
=
raaka
&~
3
;
// 10 bittiä (muuntaminen kestää 187,5 ms)
muujos(
vrt
==
0x40
)
raaka
=
raaka
&~
1
;
// 11 bittiä (muunnos kestää 375 ms) // Oletustarkkuus on 12 bittiä (muuntaminen kestää 750 ms)
}
// Laske ja lähtölämpötila-arvot celsius-porttimonitorille
=(
kellua
)
raaka
/
16.0
;
fahrenheit
=
celsius
*
1.8
+
32.0
;
Sarja
.
Tulosta
(
"Lämpötila ="
);
Sarja
.
Tulosta
(
celsius
);
Sarja
.
Tulosta
(
"Celsius"
);
Sarja
.
Tulosta
(
fahrenheit
);
Sarja
.
println
(
"Fahrenheit"
);}
Jos kaikki on tehty oikein, meidän pitäisi porttimonitori-ikkunassa nähdä jotain seuraavanlaista (kuva 6):

Kuva 6 - tulos työskentelystä OneWire.h-kirjaston kanssa

DallasTemperature.h-kirjasto

Tämä kirjasto perustuu edelliseen ja yksinkertaistaa ohjelmointiprosessia hieman ymmärrettävempien toimintojen ansiosta. Asennuksen jälkeen pääset käyttämään 14 esimerkkiä hyvin dokumentoidusta koodista kaikissa tilanteissa. Tämän artikkelin puitteissa tarkastellaan esimerkkiä toiminnasta yhdellä anturilla.

Ohjelman tulos on esitetty kuvassa 7

Kuva №7 - tulos lämpötilan lukemisesta DallasTemperature.h-kirjastolla

// Yhdistämme tarvittavat kirjastot # include #include // Yhdistämme tietoväylän Arduinon tapaan # 2 # define ONE_WIRE_BUS 2 // Luo luokan ilmentymä väylällemme ja linkki siihen OneWire oneWire
(
ONE_WIRE_BUS
);
Dallas-lämpötila-anturit
(&
oneWire
);
// PRESET FUNCTION mitätöinti
(
mitätön
){
Sarja
.
alkaa
(
9600
);
// Alusta sarjaporttianturit
.
alkaa
();
// Alusta väylä
}
// PÄÄSYKLI
(
mitätön
){
Sarja
.
Tulosta
(
"Lämpötilan lukeminen ..."
);
// Lähetä komento lukemaan antureita
.
requestLämpötilat
();
Sarja
.
println
(
"Lukea"
);
Sarja
.
Tulosta
(
"Anturin lämpötila 1:"
);
// Näytä lämpötila-arvo Sarja
.
Tulosta
(
anturit
.
getTempCByIndex
(
0
));}

Lämpötila-anturi KY-001 1-johdinliitännällä

Tätä anturia käytetään tarkkaan lämpötilan mittaukseen. Tiedonsiirto anturin kanssa tapahtuu 1-johdinliitännän [1-2] kautta, jonka avulla voit liittää useita samanlaisia ​​laitteita Arduino-korttiin yhdellä mikro-ohjaintapilla [3-4]. Moduuli perustuu ds18b20-mikropiiriin [5].

Moduulin koko 24 x 15 x 10 mm, paino 1,3 g. Liitäntään käytetään kolmitapaisia ​​liittimiä. Keskuskontakti - virtalähde + 5 V, kosketin "-" - yhteinen, kosketin "S" - informatiivinen.

Taulussa on punainen LED, joka syttyy, kun tietoja vaihdetaan.

Virrankulutus 0,6 mA tiedonvaihdon aikana ja 20 μA valmiustilassa.

Tämän tyyppisten anturien liittäminen Arduinoon on hyvin kuvattu monissa lähteissä [6-8]. Tässä tapauksessa Arduinon tärkeimmät edut ilmenevät jälleen - monipuolisuus ja valtavan määrän viitetietojen läsnäolo. Anturin kanssa työskentelemiseen tarvitaan OneWire-kirjasto [9]. Kun olet ladannut ohjelman [8]: sta (ohjelman ensimmäisessä versiossa on virhe - koodin otsikossa ei ole #include-kirjastoyhteyttä), voit tarkkailla seuraavia tietoja sarjaporttimonitorissa.

Kirjoittaja testasi myös koodin [7], kaikki toimi heti, sarjaporttimonitorista voit lukea tietoja liitetyn anturin tyypistä ja todellisesta lämpötilasta.

Yleensä erittäin hyödyllinen anturi, joka antaa mahdollisuuden tutustua 1-johdinliitäntään käytännössä. Anturi antaa oikeat lämpötilatiedot välittömästi, käyttäjän ei tarvitse kalibroida.

Luokitus
( 1 arvio, keskiarvo 4 / 5 )

Lämmittimet

Uunit