INHOUDSOPGAWE:

Fout-verdraagsame temperatuur sensor netwerk beheerder: 8 stappe
Fout-verdraagsame temperatuur sensor netwerk beheerder: 8 stappe

Video: Fout-verdraagsame temperatuur sensor netwerk beheerder: 8 stappe

Video: Fout-verdraagsame temperatuur sensor netwerk beheerder: 8 stappe
Video: Dyno Tuning Secrets Exposed | Street Tuning vs Dyno Tuning | Kevin Baxter - Pro Twin Performance 2024, Julie
Anonim
Fout-verdraagsame temperatuur sensor netwerk beheerder
Fout-verdraagsame temperatuur sensor netwerk beheerder

Hierdie instruksies wys hoe u 'n Arduino Uno-bord kan omskep in 'n eenmalige bestuurder vir 'n stel DS18B20-temperatuursensors wat outomatiese isolasie van foutiewe sensors kan omskakel.

Die beheerder kan tot 8 sensors met Arduino Uno bestuur. (En nog baie meer met Arduino Mega of met 'n geringe sagteware -aanpassing.)

Stap 1: Verhaal agter …

'N Paar jaar gelede het ek 'n DS18B20 temperatuursensornetwerk in die kweekhuis van my vader opgerig vir my pi-gebaseerde verwarmingsbeheerder. Ongelukkig was die betroubaarheid van die beheerder swak, veral as gevolg van gereelde sensoronderbrekings. Ek het verskeie opstellings probeer - parasietkrag, direkte krag, die verbinding van die netwerk met pi, sowel as om dit aan te sluit op 'n Atmega -gebaseerde pasgemaakte bord (met die hoof doel om klepmotors aan te dryf).

Wat nog erger is, die betroubaarheid van die sensornetwerk het veral gedurende die winteraande gedaal, terwyl daar in die somer byna geen probleme was nie! Wat de hel gaan hier aan?

Om te ondersoek watter sensor die probleem veroorsaak, was daar 'n behoefte om hulle een vir een aan/uit te skakel of 'n kombinasie daarvan moontlik te maak.

Stap 2: Hoe dit werk

DS18B20 (die temperatuursensor) gebruik 'n eie 1-draad-protokol wat verskeie sensors in staat stel om 'n gemeenskaplike dataskakel (die een draad) te deel. Hierdie algemene dataskakel is gekoppel aan een van Arduino se GPIO-penne en aan + 5 V via 'n optrekweerstand-niks ongewoon nie, baie instruksies dek hierdie opstelling.

Die truuk is dat elke sensor se kragkabels aan hul eie (toegewyde) GPIO -penne gekoppel is, sodat hulle afsonderlik aan en afgeskakel kan word. Byvoorbeeld, as 'n sensor 'n Vcc -kabel aan pin #3 en GND aan pin #2 gekoppel het, bied pin #3 tot HIGH krag aan die sensor (geen verrassing nie), terwyl pin #2 op LOW gestel word, bied grond ('n klein verrassing vir ek). Deur albei penne in die invoermodus te stel, is die sensor en die bedrading daarvan (byna) heeltemal geïsoleer - ongeag watter fout (bv. 'N kortpad) daarin voorkom, dit sal nie die ander inmeng nie.

(Redelik om te sê dat die koppeling van die datadraad met iets anders wat op een of ander manier met Arduino gekoppel is, inderdaad interferensie sal veroorsaak, maar dit is byna onmoontlik in my opset).

Let op dat DS18B20 tot 1, 5 mA verbruik, terwyl een Arduino -pen tot 40 mA kan versamel / sink, dus dit is heeltemal veilig om sensors direk deur GPIO -penne aan te dryf.

Stap 3: Materiaal en gereedskap

Materiaal

  • 1 Arduino UNO -bord
  • 3 vroulike penkoppe: 1 × 4, 1 × 6 en 1 × 6 (of langer - ek sny dit uit een 1 × 40 kop)
  • 'n gom
  • 'n stuk kaal koorddraad (minstens 10 cm)
  • 'n isolasieband
  • soldeerbare verbruiksgoedere (draad, vloed …)

Gereedskap

  • soldeertoerusting (yster, houers, …)
  • klein snytang

Stap 4: Los dinge saam op

Maak dinge saam reg
Maak dinge saam reg

Plak die vroulike penkoppe aan die Arduino -bordopskrifte:

  1. 1 × 4 kopstuk langs 'analoog' penkop, langs mekaar met penne A0 – A4
  2. 1 × 6 kop langs die eerste digitale penkop, langs mekaar met penne 2–7
  3. 1 × 6-kopstuk langs die tweede digitale penopskrif, langs mekaar met penne 8–13

Let op dat my opskrifte 'n bietjie langer is … dit het geen nadele en geen voordele nie.

Stap 5: Verbind dinge saam

Dra dinge saam
Dra dinge saam
Dra dinge saam
Dra dinge saam

Bedrading van die 1-draad buslyn:

  1. Verbind alle leidings van vasgeplakte koppe aan die "digitale" kant (langs penne 2–13) deur 'n stuk kaal draad daaraan te soldeer
  2. Soldeer die einde van hierdie draad aan SCL -penkabel (intern verbind met A5)
  3. Verbind alle leidings van die vasgemaakte kop aan die "analoog" kant (penne A0 – A3) deur 'n stuk kaal draad daaraan te soldeer
  4. Soldeer die einde van hierdie draad aan A4- en A5 -leidings (ek het A5 en A6 gebruik, want ek het 'n bord met A6 en A7)
  5. Soldeer 'n 4k7 -weerstand tussen die ander kant van hierdie draad en 'n +5 V -penkabel

Notas:

  • Spelde A0 – A5, hoewel dit as "analoog" gemerk is, kan ook as digitale GPIO -penne gebruik word.
  • SCL -pen aan die "digitale" kant is intern gekoppel aan A5 aan die "analoog" kant; gekoppel aan die opskrifte, vorm dit die 1-draads buslyn
  • A4 (gebruik as analoog ingang) meet die spanning van die bus vir diagnostiese doeleindes. Dit is die rede waarom dit direk aan die bus gekoppel is.
  • Ek het A6 in plaas van A4 gebruik, want ek het 'n bord met A6 en A7; oorspronklik wou ek A7 gebruik as die busbusmeester met 1 draad, maar hierdie twee penne kan nie gekonfigureer word as digitale GPIO's nie.
  • Om 'n verkeerde verbinding van die sensorverbindings te voorkom, kan u die ongebruikte kontak (wat nie aan enige draad gekoppel is nie) uit elke manlike aansluiting weglaat / uitsny en dit in die ooreenstemmende gat in die vasgemaakte penkop plaas.

Stap 6: Koppel die sensors

Koppel die sensors
Koppel die sensors

U het pas 'n skikking van agt 2 × 2 voetstukke geskep. U kan 2 × 2 Dupont -verbindings aan sensorkabels soldeer en monteer en aan hierdie voetstukke koppel. Die sagteware stel die penne so in dat selfs penne GND -penne is en vreemde penne Vcc -penne. Vir elke sensor is die Vcc -pen slegs GND -pen + 1. Een van die ander twee penne van die 2 × 2 -aansluiting (een van die twee in die vasgeplakte en gesoldeerde kop) is vir die datadraad van die sensor. Dit maak nie saak wat jy gebruik nie.

Stap 7: Kontroleursagteware

Controller sagteware
Controller sagteware

Die SerialThermometer -skets loop die beheerder. U kan dit op github vind. Maak oop en laai op met Arduino IDE.

Stap vir stap:

  1. Maak u Arduino IDE oop en installeer DallasTemperature -biblioteek en al die afhanklikheid daarvan via Sketch | Sluit biblioteek in | Bestuur biblioteke.
  2. Gone -bewaarplek vir kloon. As u nie kennis dra van git nie, laai die zip -pos af en pak dit oral op u rekenaar uit.
  3. Maak SerialThermometer -skets oop in u Arduino IDE.
  4. Koppel u aangepaste Arduino -bord met u rekenaar via 'n USB -kabel (standaard)
  5. Laai die skets op met u Arduino IDE
  6. Maak Serial Monitor oop via Tools | Seriële monitor
  7. U moet 'n diagnostiese uitset sien wat verskillende fisiese metings bevat, gevolg deur temperatuurmetings - elke sensor -aansluiting op 'n enkele lyn. As die sensortelling verskil wanneer dit afsonderlik aangeskakel word en as alles saam aangeskakel word), moet die diagnostiese lus totdat dit opgelos is. Maar moenie bekommerd wees nie; ook diagnostiese bied temperatuurmetings!

Sien die geannoteerde prentjie vir meer inligting oor diagnostiese uitsette.

Stap 8: Gevolgtrekking

Ek het 'n sterk gevoel dat my sensornetwerkfoute veroorsaak is deur die hoë kapasiteit van my lang bedrading - ongeveer 10 m LIYY 314 (3 × 0, 14 mm²) kabel vir elke sensor. My eksperimente het getoon dat kommunikasie breek as daar kapasitansie rondom of hoër as 0,01 μF tussen 1-draadsbus en grond is, ek dink omdat 4k7 optrekweerstand nie in staat is om die bus vinnig genoeg na + 5 V te trek om aan die protokolgrense te voldoen nie.

In my opset gebeur dit as meer as 3 sensors aan mekaar gekoppel is. Dan skakel die kontroleerder in die diagnostiese siklus en meet temperatuur-sensor-vir-sensor (wat ook gaaf is …)

Maar ook die 5de sensor (28: ff: f2: 41: 51: 17: 04: 31) lyk nogal siek (miskien verkeerd soldeer), sodat ek verder kan ondersoek instel!

Aanbeveel: