Turinys:

Gedimams atsparus temperatūros jutiklio tinklo valdiklis: 8 žingsniai
Gedimams atsparus temperatūros jutiklio tinklo valdiklis: 8 žingsniai

Video: Gedimams atsparus temperatūros jutiklio tinklo valdiklis: 8 žingsniai

Video: Gedimams atsparus temperatūros jutiklio tinklo valdiklis: 8 žingsniai
Video: Моновпрыск на неубиваемом моторе. Что нужно знать об эксплуатации мотора VW 1.8 Mono (AAM)? 2024, Lapkritis
Anonim
Gedimams atsparus temperatūros jutiklio tinklo valdiklis
Gedimams atsparus temperatūros jutiklio tinklo valdiklis

Ši instrukcija parodo, kaip „Arduino Uno“plokštę paversti vienos paskirties valdikliu, skirtu DS18B20 temperatūros jutikliams, galintiems automatiškai izoliuoti sugedusius jutiklius.

Valdiklis gali valdyti iki 8 jutiklių su „Arduino Uno“. (Ir daug daugiau naudojant „Arduino Mega“arba šiek tiek pakeitus programinę įrangą.)

1 žingsnis: istorija už…

Prieš porą metų tėvo šiltnamyje sukūriau temperatūros jutiklių tinklą DS18B20, skirtą mano pi šildymo valdikliui. Deja, valdiklio patikimumas buvo prastas daugiausia dėl dažnų jutiklių gedimų. Išbandžiau daugybę sąrankų - parazitų maitinimas, tiesioginė galia, tinklo prijungimas prie pi, taip pat prijungimas prie „Atmega“pagrįstos pasirinktinės plokštės (kurios pagrindinis tikslas buvo valdyti vožtuvų variklius).

Dar blogiau, jutiklių tinklo patikimumas sumažėjo daugiausia žiemos naktimis, o vasarą beveik nebuvo jokių problemų! Kas, po velnių, čia vyksta?

Norint ištirti, kuris jutiklis sukelia problemą, atsirado poreikis juos įjungti/išjungti po vieną arba įjungti bet kurį jų derinį.

2 žingsnis: kaip tai veikia

DS18B20 (temperatūros jutiklis) naudoja patentuotą 1 laidų protokolą, leidžiantį keliems jutikliams dalytis bendra duomenų nuoroda (vienu laidu). Šis bendras duomenų ryšys yra prijungtas prie vieno iš „Arduino“GPIO kaiščių ir prie + 5 V per ištraukiamąjį rezistorių-nieko neįprasto, daugelis nurodymų apima šią sąranką.

Faktas yra tas, kad kiekvieno jutiklio maitinimo laidai yra prijungti prie nuosavų (specialių) GPIO kaiščių, kad juos būtų galima įjungti ir išjungti atskirai. Pavyzdžiui, jei jutiklis turi Vcc laidą, prijungtą prie kaiščio Nr. 3, o GND - į kaištį #2, nustačius kaištį Nr. 3 į AUKŠTAS, jutiklis gauna maitinimą (nenuostabu), o nustačius kaištį Nr. aš). Abiejų kaiščių nustatymas įvesties režimu (beveik) visiškai izoliuos jutiklį ir jo laidus - nesvarbu, koks gedimas (pvz., Nuoroda) įvyks jo viduje, jis netrukdys kitiems.

(Sąžiningai galiu pasakyti, kad duomenų laido prijungimas prie kažko kito, kažkaip prijungto prie „Arduino“, tikrai sukels trikdžių, tačiau mano sąrankoje tai beveik neįmanoma).

Atkreipkite dėmesį, kad DS18B20 sunaudoja iki 1, 5 mA, o vienas „Arduino“kaištis gali tiekti / nuskęsti iki 40 mA, todėl visiškai saugu maitinti jutiklius tiesiogiai iš GPIO kaiščių.

3 žingsnis: medžiaga ir įrankiai

Medžiaga

  • 1 „Arduino UNO“lenta
  • 3 moterų kaiščių antraštės: 1 × 4, 1 × 6 ir 1 × 6 (arba ilgiau - jas iškirpiau iš vienos 1 × 40 antraštės)
  • klijai
  • plikos vielos gabalas (mažiausiai 10 cm)
  • izoliacinė juosta
  • litavimo medžiagos (viela, srautas …)

Įrankiai

  • litavimo įranga (lygintuvas, laikikliai ir kt.)
  • mažos pjovimo replės

4 žingsnis: sutvarkykite dalykus kartu

Sutvarkykite dalykus kartu
Sutvarkykite dalykus kartu

Klijuokite moterų kaiščių antraštes prie „Arduino“plokštės antraščių:

  1. 1 × 4 antraštė šalia „analoginės“kaiščio antraštės, iš vienos pusės į kitą su smeigtukais A0 – A4
  2. 1 × 6 antraštė šalia pirmosios skaitmeninės kaiščio antraštės, iš vienos pusės į kitą su 2–7 kaiščiais
  3. 1 × 6 antraštė šalia antrosios skaitmeninio kaiščio antraštės, iš vienos pusės į kitą su 8–13 kaiščiais

Atkreipkite dėmesį, kad mano antraštės yra šiek tiek ilgesnės … manau, kad jis neturi trūkumų ir jokių privalumų.

5 žingsnis: Sujunkite dalykus kartu

Sujunkite dalykus kartu
Sujunkite dalykus kartu
Sujunkite dalykus kartu
Sujunkite dalykus kartu

1 laidų magistralės linijos prijungimas:

  1. Prijunkite visas klijuotų antgalių laidus „skaitmeninėje“pusėje (greta 2–13 kaiščių), lituodami prie jų plikos vielos gabalėlį
  2. Lituokite šio laido galą prie SCL kaiščio laido (viduje prijungtas prie A5)
  3. Prijunkite visus klijuotos antraštės laidus „analoginėje“pusėje (kaiščiai A0 – A3), lituodami prie jų plikos vielos gabalėlį
  4. Lituokite šio laido galą prie A4 ir A5 laidų (naudojau A5 ir A6, nes turiu plokštę su A6 ir A7)
  5. Lituokite 4k7 rezistorių tarp kito šio laido galo ir +5 V kaiščio laido

Pastabos:

  • Smeigtukai A0 – A5, nors ir pažymėti kaip „analoginiai“, gali būti naudojami ir kaip GPIO skaitmeniniai kaiščiai.
  • SCL kaištis „skaitmeninėje“pusėje yra iš vidaus prijungtas prie A5 „analoginėje“pusėje; prijungtas prie antraščių, tai sudaro 1 laidų magistralės liniją
  • A4 (naudojamas kaip analoginis įėjimas) matuoja magistralės įtampą diagnostikos tikslais. Štai kodėl jis yra tiesiogiai prijungtas prie autobuso.
  • Aš naudojau A6, o ne A4, nes turiu plokštę, kurioje yra A6 ir A7; iš pradžių norėjau naudoti A7 kaip 1 laidų magistralės magistralę, tačiau šių dviejų kaiščių negalima sukonfigūruoti kaip skaitmeninių GPIO.
  • Kad išvengtumėte neteisingo jutiklių jungčių prijungimo, galite praleisti / iškirpti nenaudojamą kontaktą (neprijungtą prie jokio laido) iš kiekvienos kištukinės jungties ir įkišti jį į atitinkamą skylę klijuoto kaiščio antraštėje.

6 veiksmas: jutiklių prijungimas

Jutiklių prijungimas
Jutiklių prijungimas

Jūs ką tik sukūrėte aštuonių 2 × 2 lizdų masyvą. Galite lituoti ir surinkti 2 × 2 „Dupont“jungtis prie jutiklių kabelių ir prijungti prie šių lizdų. Programinė įranga sukonfigūruoja kaiščius taip, kad lygūs kaiščiai būtų GND kaiščiai, o nelyginiai - Vcc kaiščiai. Kiekvieno jutiklio Vcc kaištis yra tik GND kaištis + 1. Vienas iš kitų dviejų 2 × 2 lizdo kaiščių (vienas iš tų dviejų klijuotoje ir lituotoje antraštėje) skirtas jutiklio duomenų vielai. Nesvarbu, kurį naudojate.

7 žingsnis: valdiklio programinė įranga

Valdiklio programinė įranga
Valdiklio programinė įranga

„SerialThermometer“eskizas valdo valdiklį. Jį galite rasti „github“. Atidarykite ir įkelkite naudodami „Arduino IDE“.

Žingsnis po žingsnio:

  1. Atidarykite „Arduino IDE“ir įdiekite „DallasTemperature“biblioteką bei visas jos priklausomybes naudodami „Sketch“| Įtraukti biblioteką | Tvarkyti bibliotekas.
  2. Clone git saugykla. Jei nesate susipažinę su „git“, atsisiųskite ir išpakuokite šį ZIP failą bet kurioje savo kompiuterio vietoje.
  3. Atidarykite „SerialThermometer“eskizą savo „Arduino IDE“.
  4. Prijunkite modifikuotą „Arduino“plokštę prie kompiuterio USB kabeliu (standartiniu būdu)
  5. Įkelkite eskizą naudodami „Arduino IDE“
  6. Atidarykite serijinį monitorių naudodami Įrankiai | Serijinis monitorius
  7. Turėtumėte matyti diagnostikos išvestį, kurioje yra keli fiziniai matavimai, po to temperatūros rodmenys - kiekvienas jutiklio lizdas vienoje linijoje. Jei jutiklių skaičius skiriasi, kai įjungiamas atskirai ir kai visi įjungiami kartu), diagnostikos ciklai tol, kol išsispręs. Bet nesijaudinkite, diagnostika taip pat leidžia matuoti temperatūrą!

Daugiau informacijos apie diagnostikos išvestį rasite paveikslėlyje su anotacija.

8 žingsnis: Išvada

Manau, kad mano jutiklių tinklo gedimus lėmė didelė mano ilgo laido talpa - maždaug 10 m kiekvieno jutiklio LIYY 314 (3 × 0, 14 mm²) kabelio. Mano eksperimentai parodė, kad ryšys nutrūksta, jei tarp 1 laidų magistralės ir žemės yra maždaug 0,01 μF arba didesnė talpa, manau, nes 4k7 ištraukiamasis rezistorius negali pakankamai greitai ištraukti magistralės iki + 5 V, kad atitiktų protokolo ribas.

Mano sąrankoje tai atsitinka, kai kartu yra sujungti daugiau nei 3 jutikliai. Tada valdiklis įjungia diagnostikos ciklą, matuodamas temperatūros jutiklį po jutiklį (kas taip pat yra vėsu …)

Bet ir penktasis jutiklis (28: ff: f2: 41: 51: 17: 04: 31) atrodo gana blogai (galbūt netinkamas litavimas), todėl galiu toliau tirti!

Rekomenduojamas: