Sisukord:

Veatolerantse temperatuurianduri võrgukontroller: 8 sammu
Veatolerantse temperatuurianduri võrgukontroller: 8 sammu

Video: Veatolerantse temperatuurianduri võrgukontroller: 8 sammu

Video: Veatolerantse temperatuurianduri võrgukontroller: 8 sammu
Video: CBRC LET Lecture: Foundations of the Teaching Learning Process | Vea Damasco 2024, November
Anonim
Veakindel temperatuurianduri võrgukontroller
Veakindel temperatuurianduri võrgukontroller

See juhend juhendab teile, kuidas teisendada Arduino Uno plaat üheotstarbeliseks kontrolleriks DS18B20 temperatuuriandurite komplekti jaoks, mis on võimeline vigaseid andureid automaatselt eraldama.

Kontroller saab Arduino Uno abil hallata kuni 8 andurit. (Ja palju muud Arduino Mega või väikese tarkvara muudatusega.)

Samm: lugu taga…

Paar aastat tagasi rajasin isa kasvuhoones oma pi-põhisele kütteregulaatorile DS18B20 temperatuuriandurite võrgu. Kahjuks oli kontrolleri töökindlus puudulik peamiselt sagedaste andurite katkestuste tõttu. Proovisin mitut seadistust - parasiitvõimsus, otsene toide, võrgu ühendamine pi -ga ja ühendamine Atmega -põhise kohandatud plaadiga (mille peamine eesmärk oli juhtida ventiilimootoreid).

Mis veelgi hullem, andurivõrgu töökindlus langes peamiselt talveöödel, suvel aga peaaegu probleeme polnud! Mis kurat siin toimub?

Et uurida, milline andur probleemi põhjustab, tekkis vajadus need ükshaaval sisse/välja lülitada või lubada nende mis tahes kombinatsioon.

2. toiming: kuidas see toimib

DS18B20 (temperatuuriandur) kasutab patenteeritud 1-juhtmelist protokolli, mis võimaldab mitmel anduril jagada ühist andmesidet (seda ühte traati). See ühine andmeside on ühendatud ühe Arduino GPIO-pistikuga ja + 5 V-ga tõmbetakistuse kaudu-pole midagi haruldast, paljud juhendid hõlmavad seda seadistust.

Trikk on selles, et iga anduri toitejuhtmed on ühendatud oma (spetsiaalsete) GPIO -pistikutega, nii et neid saab eraldi sisse ja välja lülitada. Näiteks kui anduril on Vcc juhe ühendatud nööpnõelaga nr 3 ja GND pistikuga nr 2, annab nööpnõela nr 3 asend HIGH andurile toite (pole üllatav), samas kui tihvti nr 2 asend LOW tagab maapinna (väike üllatus mina). Mõlema tihvti sisendrežiimi seadmine isoleerib (peaaegu) täielikult anduri ja selle juhtmed - olenemata sellest, milline rike (nt otsetee) selle sees juhtub, ei häiri see teisi.

(Ütlen ausalt, et andmesidejuhtme ühendamine millegi muuga, mis on kuidagi ühendatud Arduinoga, põhjustab tõepoolest häireid, kuid minu seadistuses on see peaaegu võimatu).

Pange tähele, et DS18B20 tarbib kuni 1, 5 mA, samas kui üks Arduino tihvt võib toita / uputada kuni 40 mA, seega on täiesti ohutu toita andureid otse GPIO -tihvtide abil.

Samm: materjal ja tööriistad

Materjal

  • 1 Arduino UNO plaat
  • 3 emast tihvti päist: 1 × 4, 1 × 6 ja 1 × 6 (või kauem - lõikasin need ühest 1 × 40 päisest)
  • liim
  • tükk paljast traati (vähemalt 10 cm)
  • isolatsioonilint
  • jootetarbed (traat, voog jne)

Tööriistad

  • jootmisseadmed (triikraud, hoidikud jne)
  • väikesed lõiketangid

4. samm: parandage asjad koos

Parandage asjad koos
Parandage asjad koos

Liimige emase tihvti päised Arduino plaadi päiste külge:

  1. 1 × 4 päis "analoog" tihvti päise kõrval, küljelt küljele tihvtidega A0 – A4
  2. 1 × 6 päis esimese digitaalse tihvti päise kõrval, kõrvuti ja tihvtidega 2–7
  3. 1 × 6 päis teise digitaalse tihvti päise kõrval, kõrvuti ja tihvtidega 8–13

Pange tähele, et minu päised on natuke pikemad … sellel pole miinuseid ega plusse.

Samm: ühendage asjad kokku

Juhtme asjad kokku
Juhtme asjad kokku
Juhtme asjad kokku
Juhtme asjad kokku

1-juhtmelise bussiliini juhtmestik:

  1. Ühendage kõik liimitud päiste juhtmed "digitaalsel" küljel (tihvtide 2–13 kõrval), jootades nende külge palja traadi.
  2. Jootke selle juhtme ots SCL -pessa (sisemiselt ühendatud A5 -ga)
  3. Ühendage kõik liimitud päise juhtmed "analoog" küljel (tihvtid A0 – A3), jootes nende külge tükk paljast traati
  4. Jootke selle juhtme ots A4 ja A5 juhtmete külge (ma kasutasin A5 ja A6, kuna mul on plaat, millel on A6 ja A7)
  5. Jootke 4k7 takisti selle juhtme teise otsa ja +5 V kontaktjuhtme vahele

Märkused:

  • Nööpnõelad A0 – A5, kuigi need on märgistatud kui „analoog“, saab kasutada ka GPIO digitaalsete tihvtidena.
  • "Digitaalsel" küljel asuv SCL -tihvt on sisemiselt ühendatud "analoog" poolel oleva A5 -ga; päistega ühendatud, moodustab see 1-juhtmelise siiniliini
  • A4 (kasutatakse analoogsisendina) mõõdab siini pinget diagnostilistel eesmärkidel. See on põhjus, miks see on otse bussiga ühendatud.
  • Kasutasin A4 asemel A6, kuna mul on plaat, millel on A6 & A7; algselt tahtsin A7-d kasutada 1-juhtmelise siinina, kuid neid kahte tihvti ei saa konfigureerida digitaalseteks GPIO-deks.
  • Anduripistikute vale ühendamise vältimiseks võite kasutamata kontakti (mis ei ole ühendatud ühegi juhtmega) igast pistikust välja jätta ja välja lõigata ning sisestada see liimitud tihvti päise vastavasse auku.

6. samm: andurite ühendamine

Andurite ühendamine
Andurite ühendamine

Lõite just kaheksa 2 × 2 pistikupesa. Saate joota ja kokku panna 2 × 2 Duponti pistikut andurikaablitele ja ühendada need nende pistikupesadega. Tarkvara konfigureerib tihvtid nii, et paarisnööbid on GND ja paaritu tihvtid on Vcc. Iga anduri puhul on Vcc tihvt lihtsalt GND tihvt + 1. Üks kahest 2 × 2 pesa kahest muust tihvtist (üks neist kahest liimitud ja joodetud päises) on anduri andmejuhtme jaoks. Pole tähtis, mida te kasutate.

Samm: kontrolleri tarkvara

Kontrolleri tarkvara
Kontrolleri tarkvara

SerialThermometer visand juhib kontrollerit. Selle leiate githubist. Avage ja laadige üles Arduino IDE abil.

Samm sammu haaval:

  1. Avage oma Arduino IDE ja installige Sketchi kaudu teek DallasTemperature ja kõik selle sõltuvused | Kaasa kogu | Raamatukogude haldamine.
  2. Klooni giti hoidla. Kui te pole gitiga tuttav, laadige see zip alla ja pakkige see kõikjal arvutis lahti.
  3. Avage SerialThermometer visand oma Arduino IDE -s.
  4. Ühendage muudetud Arduino plaat arvutiga USB -kaabli abil (standardviis)
  5. Laadige eskiis üles oma Arduino IDE abil
  6. Avage jadamonitor tööriistade kaudu | Seeriamonitor
  7. Te peaksite nägema diagnostilist väljundit, mis sisaldab mitut füüsilist mõõtmist, millele järgneb temperatuuri näit - iga anduri pesa ühel real. Kui andurite arv erineb eraldi sisselülitamisel ja kõigi sisselülitamisel), tehke diagnostikaahelaid, kuni need on lahendatud. Kuid ärge muretsege, ka diagnostika võimaldab temperatuuri mõõta!

Vaadake diagnostilise väljundi kohta lisateavet kommenteeritud pildil.

8. samm: järeldus

Mul on tugev tunne, et minu andurivõrgu tõrked põhjustas minu pika juhtmestiku suur mahtuvus - umbes 10 m LIYY 314 (3 × 0, 14 mm²) kaablit iga anduri kohta. Minu katsed näitasid, et side katkeb, kui 1-juhtmelise bussi ja maa vahel on umbes 0,01 μF mahtuvus või üle selle, arvan, et kuna 4k7 tõmbetakistus ei suuda bussi piisavalt kiiresti + 5 V-ni tõmmata, et see vastaks protokolli piirangutele.

Minu seadistuses juhtub see siis, kui rohkem kui 3 andurit on ühendatud. Seejärel lülitub kontroller diagnostikatsüklisse, mõõtes temperatuuriandurite kaupa (mis on ka lahe …)

Kuid ka viies andur (28: ff: f2: 41: 51: 17: 04: 31) näeb üsna haige välja (võib -olla vale jootmine), nii et võin edasi uurida!

Soovitan: