Cuprins:

Controler de rețea senzor de temperatură tolerant la defecțiuni: 8 pași
Controler de rețea senzor de temperatură tolerant la defecțiuni: 8 pași

Video: Controler de rețea senzor de temperatură tolerant la defecțiuni: 8 pași

Video: Controler de rețea senzor de temperatură tolerant la defecțiuni: 8 pași
Video: Procedura de resincronizare a termostatelor Salus RT305RF, RT310RF si RT510RF - CazaneCentrale.ro 2024, Iulie
Anonim
Controler de rețea senzor de temperatură tolerant la defecțiuni
Controler de rețea senzor de temperatură tolerant la defecțiuni

Acest instructable vă arată cum să convertiți o placă Arduino Uno într-un controler cu un singur scop pentru un set de senzori de temperatură DS18B20 capabili să izoleze automat senzorii defecți.

Controlerul poate gestiona până la 8 senzori cu Arduino Uno. (Și mult mai mult cu Arduino Mega sau cu o ușoară modificare a software-ului.)

Pasul 1: Povestea din spatele …

Acum câțiva ani am creat o rețea de senzori de temperatură DS18B20 în sera tatălui meu pentru controlerul meu de încălzire pe bază de pi. Din păcate, fiabilitatea controlerului a fost slabă, în principal din cauza întreruperilor frecvente ale senzorului. Am încercat mai multe configurări - puterea parazitului, alimentarea directă, conectarea rețelei la pi, precum și conectarea la placa personalizată bazată pe Atmega (scopul principal fiind de a acționa motoarele supapelor).

Ce e mai rău, fiabilitatea rețelei de senzori a scăzut în principal în nopțile de iarnă, în timp ce vara nu a avut aproape nicio problemă! Ce naiba se întâmplă aici?

Pentru a investiga care senzor cauzează problema, a apărut nevoia de a le activa / dezactiva unul câte unul sau de a activa orice combinație a acestora.

Pasul 2: Cum funcționează

DS18B20 (senzorul de temperatură) folosește un protocol proprietar cu 1 fir care permite mai multor senzori să partajeze legătura de date comună (acel fir). Această legătură de date obișnuită este conectată la unul dintre pinii GPIO Arduino și la + 5 V printr-un rezistor pull-up - nimic neobișnuit, multe instrumente acoperă această configurare.

Trucul este că cablurile de alimentare ale fiecărui senzor sunt conectate la propriile pini GPIO (dedicate), astfel încât să poată fi pornite și oprite separat. De exemplu, dacă un senzor are un cablu Vcc conectat la pinul 3 și GND la pinul 2, setarea pinului 3 la HIGH oferă putere senzorului (fără surpriză), în timp ce setarea pinului 2 la LOW oferă sol (o mică surpriză pentru pe mine). Setarea ambilor pini în modul de intrare va izola (aproape) complet senzorul și cablarea acestuia - indiferent de defecțiunea (de exemplu, o comandă rapidă) care se întâmplă în interiorul acestuia, nu va interfera cu celelalte.

(Este corect să spun că conectarea firului de date la altceva conectat cumva la Arduino va provoca într-adevăr interferențe, dar este aproape imposibil în configurarea mea).

Observați că DS18B20 consumă până la 1, 5 mA, în timp ce un pin Arduino poate sursa / scufunda până la 40 mA, deci este perfect sigur să alimentați senzorii direct cu pinii GPIO.

Pasul 3: Material și instrumente

Material

  • 1 placa Arduino UNO
  • 3 anteturi pin feminin: 1 × 4, 1 × 6 și 1 × 6 (sau mai mult - le-am tăiat dintr-un antet 1 × 40)
  • un lipici
  • o bucată de sârmă goală (cel puțin 10 cm)
  • o bandă izolatoare
  • consumabile de lipit (sârmă, flux …)

Instrumente

  • echipamente de lipit (fier, suporturi, …)
  • clești de tăiat mici

Pasul 4: Remediați lucrurile împreună

Remediază lucrurile împreună
Remediază lucrurile împreună

Lipiți anteturile pin feminin pe anteturile plăcilor Arduino:

  1. Antet 1 × 4 lângă antetul pinului „analogic”, lateral-lateral cu pinii A0 – A4
  2. Antet 1 × 6 lângă primul antet digital al pinului, lateral-lateral cu pinii 2–7
  3. Antet 1 × 6 lângă al doilea antet digital al pinului, lateral-lateral cu pinii 8-13

Observați că antetele mele sunt ceva mai lungi … nu are niciun contra și nici un avantaj, presupun.

Pasul 5: conectați lucrurile împreună

Sârmă lucruri împreună
Sârmă lucruri împreună
Sârmă lucruri împreună
Sârmă lucruri împreună

Cablarea liniei de autobuz cu 1 fir:

  1. Conectați toate cablurile anteturilor lipite pe partea „digitală” (adiacente pinilor 2-13) lipind o bucată de sârmă goală la ele
  2. Lipiți capătul acestui fir la cablul pin SCL (conectat intern la A5)
  3. Conectați toate cablurile antetului lipit pe partea „analogică” (pinii A0 – A3) prin lipirea unei bucăți de sârmă goală la ele
  4. Lipiți capătul acestui fir pe firele A4 și A5 (am folosit A5 și A6 pentru că am o placă care are A6 și A7)
  5. Lipiți un rezistor de 4k7 între celălalt capăt al acestui fir și +5 V pin pin

Note:

  • Pinii A0 – A5, deși sunt marcați „analog”, pot fi folosiți și ca pin digital GPIO.
  • Pinul SCL de pe partea „digitală” este conectat intern la A5 pe partea „analogică”; conectat la anteturi, acesta formează linia de autobuz cu 1 fir
  • A4 (utilizat ca intrare analogică) măsoară tensiunea magistralei în scopuri de diagnostic. Acesta este motivul pentru care este conectat direct la autobuz.
  • Am folosit A6 în loc de A4 pentru că am o placă care are A6 și A7; inițial am vrut să folosesc A7 ca magistrală de magistrală cu 1 fir, dar acești doi pini nu pot fi configurați pentru a fi GPIO digitale.
  • Pentru a preveni conectarea greșită a conectorilor senzorului, puteți omite / tăia contactul neutilizat (care nu este conectat la niciun fir) din fiecare conector tată și îl puteți introduce în orificiul corespunzător din antetul pinului lipit.

Pasul 6: Conectarea senzorilor

Conectarea senzorilor
Conectarea senzorilor

Tocmai ați creat o serie de opt prize 2 × 2. Puteți lipi și asambla conectori Dupont 2 × 2 la cablurile senzorilor și le puteți conecta la aceste prize. Software-ul configurează pinii astfel încât pinii pari să fie pinii GND și pinii impari să fie pinii Vcc. Pentru fiecare senzor, pinul Vcc este doar pinul GND + 1. Unul dintre ceilalți doi pini ai soclului 2 × 2 (unul dintre cei doi din antetul lipit și lipit) este pentru firul de date al senzorului. Nu contează pe care îl folosiți.

Pasul 7: Software-ul controlerului

Software controler
Software controler

Schița SerialThermometer rulează controlerul. O puteți găsi pe github. Deschideți și încărcați utilizând Arduino IDE.

Pas cu pas:

  1. Deschideți ID-ul Arduino și instalați biblioteca DallasTemperature și toate dependențele sale prin Sketch | Includeți biblioteca | Gestionați bibliotecile.
  2. Clonați depozitul git. Dacă nu sunteți familiarizat cu git, descărcați și despachetați acest zip oriunde pe computer.
  3. Deschideți schița SerialTermmometer în ID-ul dvs. Arduino.
  4. Conectați placa Arduino modificată la computer prin cablu USB (mod standard)
  5. Încărcați schița folosind ID-ul dvs. Arduino
  6. Deschideți Serial Monitor prin Instrumente | Monitor serial
  7. Ar trebui să vedeți ieșirea de diagnosticare care conține mai multe măsurători fizice urmate de citiri de temperatură - fiecare priză a senzorului pe o singură linie. Dacă numărul senzorilor diferă atunci când este pornit separat și când toate sunt pornite împreună), diagnosticarea buclelor până la rezolvare. Dar nu vă faceți griji, diagnosticul oferă și măsurători ale temperaturii!

Consultați imaginea adnotată pentru mai multe detalii despre ieșirea de diagnosticare.

Pasul 8: Concluzie

Am impresia că eșecurile rețelei senzorilor au fost cauzate de capacitatea ridicată a cablajului meu lung - în jur de 10 m de cablu LIYY 314 (3 × 0, 14 mm²) pentru fiecare senzor. Experimentele mele au arătat că comunicarea se întrerupe dacă există o capacitate în jur sau mai mare de 0,01 μF între magistrala cu 1 fir și masă, cred că rezistența de tracțiune 4k7 nu este capabilă să tragă autobuzul la + 5 V suficient de rapid pentru a respecta limitele protocolului.

În configurarea mea se întâmplă atunci când mai mult de 3 senzori sunt conectați împreună. Apoi, controlerul parcurge ciclul de diagnosticare, măsurând temperatura senzor cu senzor (ceea ce este și el rece …)

Dar, de asemenea, al 5-lea senzor (28: ff: f2: 41: 51: 17: 04: 31) arată destul de rău (poate lipit greșit), așa că pot investiga mai departe!

Recomandat: