Kazalo:

Omrežni krmilnik temperaturnega senzorja, odpornega na napake: 8 korakov
Omrežni krmilnik temperaturnega senzorja, odpornega na napake: 8 korakov

Video: Omrežni krmilnik temperaturnega senzorja, odpornega na napake: 8 korakov

Video: Omrežni krmilnik temperaturnega senzorja, odpornega na napake: 8 korakov
Video: Загрузка оперативной памяти на 100% решение проблемы 2024, November
Anonim
Omrežni krmilnik temperaturnega senzorja, odporen na napake
Omrežni krmilnik temperaturnega senzorja, odporen na napake

Ta navodila vam pokažejo, kako pretvoriti ploščo Arduino Uno v enonamenski krmilnik za niz temperaturnih senzorjev DS18B20, ki lahko avtomatizirajo izolacijo okvarjenih senzorjev.

Krmilnik lahko upravlja z do 8 senzorji z Arduino Uno. (In še veliko več z Arduino Mega ali z rahlo spremembo programske opreme.)

1. korak: Zgodba za …

Pred nekaj leti sem v očetovem rastlinjaku vzpostavil omrežje temperaturnih senzorjev DS18B20 za svoj regulator ogrevanja na osnovi pi. Na žalost je bila zanesljivost krmilnika slaba predvsem zaradi pogostih izpadov senzorjev. Preizkusil sem več nastavitev - napajanje parazitov, neposredno napajanje, povezovanje omrežja s pi in njegovo povezavo s ploščo po meri na osnovi Atmega (ki je bil primarni namen pogon motorjev ventilov).

Še huje, zanesljivost senzorskega omrežja je padla predvsem v zimskih nočeh, poleti pa skoraj ni bilo težav! Kaj za vraga se dogaja tukaj?

Če želite raziskati, kateri senzor povzroča težavo, se je pojavila potreba, da jih vklopite/izklopite enega za drugim ali omogočite katero koli njihovo kombinacijo.

2. korak: Kako deluje

DS18B20 (temperaturni senzor) uporablja lastniški 1-žični protokol, ki omogoča več senzorjem, da delijo skupno podatkovno povezavo (to eno žico). Ta skupna podatkovna povezava je povezana z enim od Arduinovih zatičev GPIO in na + 5 V prek vlečnega upora-nič nenavadnega, veliko navodil pokriva to nastavitev.

Trik je v tem, da so napajalni vodi vsakega senzorja povezani z lastnimi (namenskimi) zatiči GPIO, tako da jih je mogoče vklopiti in izklopiti ločeno. Na primer, če ima senzor Vcc kabel priključen na pin #3 in GND na pin #2, nastavitev pin #3 na HIGH zagotavlja napajanje senzorja (ni presenetljivo), medtem ko nastavitev pin #2 na LOW zagotavlja ozemljitev (malo presenečenje za jaz). Nastavitev obeh nožic na vhodni način bo (skoraj) popolnoma izolirala senzor in njegovo ožičenje - ne glede na to, kakšna okvara (na primer bližnjica) se zgodi v njem, ne bo motila drugih.

(Pošteno je reči, da bo povezava podatkovne žice z nečim drugim, ki je nekako povezan z Arduinom, res povzročila motnje, vendar je v mojih nastavitvah skoraj nemogoče).

Upoštevajte, da DS18B20 porabi do 1, 5 mA, medtem ko lahko en Arduino pin zažene / potone do 40 mA, zato je popolnoma varno, da senzorje napajate neposredno z zatiči GPIO.

Korak: Material in orodja

Material

  • 1 Arduino UNO plošča
  • 3 ženski zatiči: 1 × 4, 1 × 6 in 1 × 6 (ali dlje - izrežem jih iz ene glave 1 × 40)
  • lepilo
  • kos gole bakrene žice (najmanj 10 cm)
  • izolacijski trak
  • spajkanje potrošnega materiala (žica, fluks …)

Orodja

  • spajkalna oprema (likalnik, držala, …)
  • majhne rezalne klešče

4. korak: Skupaj popravite stvari

Popravite stvari skupaj
Popravite stvari skupaj

Glave ženskih zatičev prilepite na glave plošče Arduino:

  1. 1 × 4 glava poleg "analognega" zatiča, ena na drugo s čepi A0 – A4
  2. 1 × 6 glava poleg prve glave digitalnega zatiča, bočno ob strani z nožicami 2–7
  3. 1 × 6 glava poleg drugega digitalnega zatiča, ena na drugo z nožicami 8–13

Upoštevajte, da so moje glave nekoliko daljše … mislim, da nima slabosti in prednosti.

5. korak: Povežite stvari skupaj

Povežite stvari skupaj
Povežite stvari skupaj
Povežite stvari skupaj
Povežite stvari skupaj

Ožičenje enožične vodilne linije:

  1. Povežite vse kable zlepljenih glav na "digitalni" strani (v bližini zatičev 2–13) tako, da na njih spajkate kos gole žice
  2. Konec te žice spajkajte na pin SCL (notranje povezan z A5)
  3. Priključite vse vodnike zlepljene glave na "analogno" stran (zatiči A0 -A3) tako, da na njih spajkate kos gole žice
  4. Konec te žice spajkajte na kable A4 in A5 (uporabil sem A5 in A6, ker imam ploščo z A6 in A7)
  5. Med drugi konec te žice in kabel +5 V spajkajte upor 4k7

Opombe:

  • Zatiči A0 -A5, čeprav so označeni kot "analogni", se lahko uporabljajo tudi kot digitalni zatiči GPIO.
  • SCL pin na "digitalni" strani je notranje povezan z A5 na "analogni" strani; priključen na glave, tvori 1-žilno vodilo
  • A4 (uporablja se kot analogni vhod) meri napetost vodila za diagnostične namene. To je razlog, zakaj je neposredno povezan z avtobusom.
  • Namesto A4 sem uporabil A6, ker imam ploščo z A6 & A7; prvotno sem hotel uporabiti A7 kot enožičnega vodila vodila, vendar teh dveh nožic ni mogoče konfigurirati kot digitalna GPIO.
  • Da preprečite napačno povezavo priključkov senzorja, lahko iz vsakega moškega priključka izpustite / izrežete neuporabljen kontakt (ni povezan z nobeno žico) in ga vstavite v ustrezno luknjo v zlepljenem zatiču.

6. korak: Priključitev senzorjev

Priključitev senzorjev
Priključitev senzorjev

Pravkar ste ustvarili niz osmih vtičnic 2 × 2. Spojke 2 × 2 Dupont lahko spajkate in sestavite na senzorske kable in jih priključite v te vtičnice. Programska oprema konfigurira zatiče tako, da so parni zatiči zatiči GND, neparni pa zatiči Vcc. Za vsak senzor je Vcc pin samo pin GND + 1. Eden od drugih dveh nožic vtičnice 2 × 2 (eden od teh dveh v zlepljeni in spajkani glavi) je za podatkovno žico senzorja. Ni važno, katero uporabljate.

7. korak: Programska oprema krmilnika

Programska oprema krmilnika
Programska oprema krmilnika

Skica serijskega termometra vodi krmilnik. Najdete ga na githubu. Odprite in naložite z uporabo Arduino IDE.

Korak za korakom:

  1. Odprite svoj Arduino IDE in namestite knjižnico DallasTemperature in vse njene odvisnosti prek programa Sketch | Vključi knjižnico | Upravljajte knjižnice.
  2. Kloniraj skladišče git. Če gita ne poznate, ga prenesite in razpakirajte kjer koli v računalniku.
  3. Odprite skico SerialThermometer v svojem Arduino IDE.
  4. S kablom USB (standarden način) povežite spremenjeno ploščo Arduino z računalnikom
  5. Naložite skico z uporabo Arduino IDE
  6. Odprite serijski monitor z orodji | Serijski monitor
  7. Videti bi morali diagnostični izhod, ki vsebuje več fizikalnih meritev, ki jim sledijo odčitki temperature - vsaka vtičnica senzorja na eni liniji. Če se število senzorjev razlikuje, če je vklopljen ločeno in ko so vsi skupaj vklopljeni), se diagnostične zanke, dokler se ne odpravijo. Ampak brez skrbi, tudi diagnostika omogoča merjenje temperature!

Za več podrobnosti o diagnostičnih rezultatih glejte označeno sliko.

8. korak: Zaključek

Imam močan občutek, da so napake v omrežju senzorjev nastale zaradi velike kapacitivnosti moje dolge napeljave - približno 10 m kabla LIYY 314 (3 × 0, 14 mm²) za vsak senzor. Moji poskusi so pokazali, da se komunikacija prekine, če je kapacitivnost okoli ali višja od 0,01 μF med 1-žičnim vodilom in maso, mislim, da vlečni upor 4k7 ne more potegniti vodila na + 5 V dovolj hitro, da je v skladu z omejitvami protokola.

V mojih nastavitvah se to zgodi, ko so več kot 3 senzorji povezani skupaj. Nato se krmilnik vklopi v diagnostični cikel in meri senzor za senzorjem temperature (kaj je tudi kul …)

Toda tudi 5. senzor (28: ff: f2: 41: 51: 17: 04: 31) je videti precej bolan (morda napačno spajkanje), zato lahko še raziščem!

Priporočena: