Satura rādītājs:

Kļūdu tolerants temperatūras sensora tīkla kontrolieris: 8 soļi
Kļūdu tolerants temperatūras sensora tīkla kontrolieris: 8 soļi

Video: Kļūdu tolerants temperatūras sensora tīkla kontrolieris: 8 soļi

Video: Kļūdu tolerants temperatūras sensora tīkla kontrolieris: 8 soļi
Video: Everything You Need To Know About Tappets | Workshop Diaries | Edd China 2024, Jūlijs
Anonim
Kļūdu tolerants temperatūras sensora tīkla kontrolieris
Kļūdu tolerants temperatūras sensora tīkla kontrolieris

Šajā pamācībā ir parādīts, kā pārvērst Arduino Uno plati par viena mērķa kontrolieri DS18B20 temperatūras sensoru kopumam, kas spēj automātiski izolēt bojātos sensorus.

Kontrolieris var pārvaldīt līdz 8 sensoriem, izmantojot Arduino Uno. (Un vēl daudz vairāk, izmantojot Arduino Mega vai ar nelielu programmatūras modifikāciju.)

1. darbība: stāsts aiz…

Pirms pāris gadiem es tēva siltumnīcā ierīkoju temperatūras sensoru tīklu DS18B20 savam apkures regulatoram. Diemžēl kontroliera uzticamība bija slikta galvenokārt biežu sensoru pārtraukumu dēļ. Es izmēģināju vairākus iestatījumus - parazītu jaudu, tiešo strāvu, tīkla savienošanu ar pi, kā arī pieslēgšanu pie Atmega balstītas pielāgotās plates (kuras galvenais mērķis bija vadīt vārstu motorus).

Kas vēl ļaunāk, sensoru tīkla uzticamība samazinājās galvenokārt ziemas naktīs, kamēr vasarā gandrīz nebija problēmu! Kas pie velna te notiek?

Lai izpētītu, kurš sensors rada problēmu, radās nepieciešamība tos pa vienam ieslēgt/izslēgt vai iespējot jebkuru to kombināciju.

2. darbība. Kā tas darbojas

DS18B20 (temperatūras sensors) izmanto patentētu 1 vadu protokolu, kas ļauj vairākiem sensoriem koplietot kopīgu datu saiti (vienu vadu). Šī kopējā datu saite ir savienota ar vienu no Arduino GPIO tapām un ar + 5 V, izmantojot uzvilkšanas rezistoru-nekas neparasts, daudzi norādījumi aptver šo iestatījumu.

Triks ir tāds, ka katra sensora barošanas vadi ir savienoti ar savām (speciālajām) GPIO tapām, lai tos varētu atsevišķi ieslēgt un izslēgt. Piemēram, ja sensoram ir pieslēgts Vcc vads pie tapas Nr. 3 un GND - tapai #2, nospiežot tapu #3 uz HIGH, tiek nodrošināta sensora barošana (nav pārsteigums), bet, nospiežot tapu #2 uz LOW, tiek nodrošināta zeme (neliels pārsteigums es). Abu tapu iestatīšana ievades režīmā (gandrīz) pilnībā izolēs sensoru un tā vadu - neatkarīgi no tā, kāda kļūme (piemēram, saīsne) notiks tā iekšpusē, tas netraucēs citiem.

(Godīgi sakot, ka datu vada savienošana ar kaut ko citu, kas kaut kādā veidā ir savienots ar Arduino, patiešām radīs traucējumus, bet manā iestatījumā tas ir gandrīz neiespējami).

Ņemiet vērā, ka DS18B20 patērē līdz 1, 5 mA, savukārt viena Arduino tapa var avot / nogremdēt līdz 40 mA, tāpēc ir pilnīgi droši sensori barot tieši ar GPIO tapām.

3. darbība: materiāli un rīki

Materiāls

  • 1 Arduino UNO tāfele
  • 3 sieviešu tapas: 1 × 4, 1 × 6 un 1 × 6 (vai ilgāk - es tos izgriezu no vienas 1 × 40 galvenes)
  • līmi
  • plikas kabeļa stieples gabals (vismaz 10 cm)
  • izolācijas lenti
  • lodēšanas palīgmateriāli (stieple, plūsma …)

Rīki

  • lodēšanas iekārtas (dzelzs, turētāji, …)
  • mazas griešanas knaibles

4. solis. Labojiet lietas kopā

Labojiet lietas kopā
Labojiet lietas kopā

Līmējiet sieviešu tapas galvenes ar Arduino tāfeles galvenēm:

  1. 1 × 4 galvene blakus "analogās" tapas galvenei, no vienas puses uz otru ar tapām A0 – A4
  2. 1 × 6 galvene blakus pirmajai digitālās tapas galvenei, no vienas puses uz otru ar tapām 2–7
  3. 1 × 6 galvene blakus otrajai ciparu tapas galviņai, no vienas puses uz otru ar tapām 8–13

Ievērojiet, ka manas galvenes ir nedaudz garākas … man šķiet, ka tam nav mīnusu un plusu.

5. solis: vadiet lietas kopā

Vadu lietas kopā
Vadu lietas kopā
Vadu lietas kopā
Vadu lietas kopā

1 vadu autobusu līnijas vadi:

  1. Pievienojiet visus līmēto galviņu vadus "digitālajā" pusē (blakus tapām 2–13), pielodējot tiem kailu stieples gabalu
  2. Lodējiet šī stieples galu ar SCL tapas vadu (iekšēji savienots ar A5)
  3. Pievienojiet visus līmētās galvenes vadus "analogā" pusē (tapas A0 - A3), pielodējot tiem tukšas stieples gabalu
  4. Lodējiet šī stieples galu pie A4 un A5 vadiem (es izmantoju A5 un A6, jo man ir tāfele ar A6 un A7)
  5. Lodējiet 4k7 rezistoru starp šī stieples otru galu un +5 V kontakta vadu

Piezīmes:

  • Tapas A0 – A5, lai gan ir apzīmētas kā “analogas”, var tikt izmantotas arī kā GPIO digitālās tapas.
  • SCL tapa "digitālajā" pusē ir iekšēji savienota ar A5 "analogā" pusē; savienots ar galvenēm, tas veido 1 vadu kopnes līniju
  • A4 (izmanto kā analogo ieeju) mēra kopnes spriegumu diagnostikas nolūkos. Tas ir iemesls, kāpēc tas ir tieši savienots ar autobusu.
  • Es izmantoju A6, nevis A4, jo man ir tāfele, kurā ir A6 un A7; sākotnēji es gribēju izmantot A7 kā 1 vadu kopnes galveno, bet šīs divas tapas nevar konfigurēt kā digitālās GPIO.
  • Lai novērstu nepareizu sensoru savienotāju pieslēgšanu, varat izlaist / izgriezt neizmantoto kontaktu (nav pievienots nevienam vadam) no katra savienotāja un ievietot to atbilstošajā caurumā līmētās tapas galviņā.

6. darbība: sensoru pievienošana

Sensoru pieslēgšana
Sensoru pieslēgšana

Jūs tikko izveidojāt astoņu 2 × 2 ligzdu masīvu. Jūs varat pielodēt un salikt 2 × 2 Dupont savienotājus sensoru kabeļos un savienot tos ar šīm ligzdām. Programmatūra konfigurē tapas tā, lai pat tapas būtu GND tapas un nepāra tapas ir Vcc tapas. Katram sensoram Vcc tapa ir tikai GND tapa + 1. Viena no pārējām divām 2 × 2 kontaktligzdas tapām (viena no šīm divām līmētajā un lodētajā galvenē) ir paredzēta sensora datu vadam. Nav svarīgi, kuru jūs izmantojat.

7. darbība: kontroliera programmatūra

Kontroliera programmatūra
Kontroliera programmatūra

SerialThermometer skice vada kontrolieri. Jūs to varat atrast vietnē github. Atveriet un augšupielādējiet, izmantojot Arduino IDE.

Soli pa solim:

  1. Atveriet savu Arduino IDE un instalējiet DallasTemperature bibliotēku un visas tās atkarības, izmantojot Sketch | Iekļaut bibliotēku | Pārvaldīt bibliotēkas.
  2. Klonēt git krātuvi. Ja neesat pazīstams ar git, lejupielādējiet un izpakojiet šo zip jebkurā vietā datorā.
  3. Atveriet SerialThermometer skici savā Arduino IDE.
  4. Pievienojiet modificēto Arduino plati datoram, izmantojot USB kabeli (standarta veids)
  5. Augšupielādējiet skici, izmantojot savu Arduino IDE
  6. Atveriet sērijas monitoru, izmantojot rīkus | Sērijas monitors
  7. Jums vajadzētu redzēt diagnostikas izvadi, kas satur vairākus fiziskus mērījumus, kam seko temperatūras rādījumi - katra sensora ligzda vienā līnijā. Ja sensoru skaits atšķiras, ja tie tiek ieslēgti atsevišķi un kad visi ir ieslēgti kopā), diagnostikas cilpas, līdz tās tiek novērstas. Bet neuztraucieties, arī diagnostika nodrošina temperatūras mērījumus!

Skatiet attēlu ar anotāciju, lai iegūtu sīkāku informāciju par diagnostikas izvadi.

8. solis. Secinājums

Man ir spēcīga sajūta, ka manu sensoru tīkla kļūmes izraisīja mana garā elektroinstalācija - aptuveni 10 m LIYY 314 (3 × 0, 14 mm²) kabeļa katram sensoram. Mani eksperimenti parādīja, ka sakari pārtrūkst, ja starp 1 vadu kopni un zemi ir aptuveni 0,01 μF kapacitāte vai lielāka, es domāju, jo 4k7 pievilkšanas rezistors nespēj pietiekami ātri novilkt autobusu līdz + 5 V, lai tas atbilstu protokola ierobežojumiem.

Manā iestatījumā tas notiek, ja kopā ir savienoti vairāk nekā 3 sensori. Pēc tam kontrolieris veic diagnostikas cikla darbības, mērot temperatūras sensoru pa sensoru (kas ir arī foršs …)

Bet arī 5. sensors (28: ff: f2: 41: 51: 17: 04: 31) izskatās diezgan slikti (varbūt nepareiza lodēšana), tāpēc varu izpētīt tālāk!

Ieteicams: