Indholdsfortegnelse:
- Trin 1: Historien bag …
- Trin 2: Sådan fungerer det
- Trin 3: Materiale og værktøjer
- Trin 4: Fix ting sammen
- Trin 5: Kør ting sammen
- Trin 6: Tilslutning af sensorerne
- Trin 7: Controller -software
- Trin 8: Konklusion
Video: Fejltolerant temperatursensor Netværkscontroller: 8 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Denne instruktør viser dig, hvordan du konverterer et Arduino Uno-kort til en enkelt-anvendelig controller til et sæt DS18B20 temperatursensorer, der er i stand til automatisk isolering af defekte sensorer.
Controlleren kan styre op til 8 sensorer med Arduino Uno. (Og meget mere med Arduino Mega eller med en lille softwareændring.)
Trin 1: Historien bag …
For et par år siden oprettede jeg et DS18B20 temperatursensornetværk i min fars drivhus til min pi-baserede varmestyring. Desværre var controllerens pålidelighed dårlig, hovedsagelig på grund af hyppige sensorafbrydelser. Jeg prøvede flere opsætninger - parasitkraft, direkte strøm, tilslutning af netværket til pi samt tilslutning af det til Atmega -baseret brugerdefineret kort (som primært havde til formål at drive ventilmotorer).
Hvad værre var, sensornetværkspålideligheden faldt hovedsageligt i løbet af vinternætterne, mens der næsten ikke var problemer om sommeren! Hvad fanden sker der her?
For at undersøge hvilken sensor der forårsager problemet, opstod der et behov for at tænde/slukke dem en efter en eller aktivere en kombination af dem.
Trin 2: Sådan fungerer det
DS18B20 (temperatursensoren) anvender proprietær 1-leder protokol, der gør det muligt for flere sensorer at dele fælles datalink (den ene ledning). Dette fælles datalink er forbundet til en af Arduinos GPIO-ben og til + 5 V via en pull-up-modstand-intet ualmindeligt, mange instruktører dækker denne opsætning.
Tricket er, at hver sensors strømledninger er forbundet til egne (dedikerede) GPIO -ben, så de kan tændes og slukkes separat. For eksempel, hvis en sensor har Vcc -ledning tilsluttet pin #3 og GND til pin #2, giver indstilling pin #3 til HIGH strøm til sensoren (ingen overraskelse), mens indstilling af pin #2 til LOW giver jord (en lille overraskelse for mig). Indstilling af begge ben til input -tilstand vil (næsten) fuldstændigt isolere sensoren og dens ledninger - uanset hvilken fejl (f.eks. En genvej) der sker inden i den, vil den ikke forstyrre de andre.
(Retfærdigt at sige, at tilslutning af datakablet til noget andet, der på en eller anden måde er forbundet til Arduino, virkelig vil forårsage interferens, men det er næsten umuligt i mit setup).
Bemærk, at DS18B20 bruger op til 1, 5 mA, mens en Arduino -pin kan kilde / synke op til 40 mA, så det er helt sikkert at drive sensorer direkte fra GPIO -ben.
Trin 3: Materiale og værktøjer
Materiale
- 1 Arduino UNO bord
- 3 kvindelige pinhoveder: 1 × 4, 1 × 6 og 1 × 6 (eller længere - jeg skar dem fra en 1 × 40 header)
- en lim
- et stykke bar kooperatråd (mindst 10 cm)
- et isoleringstape
- loddematerialer (tråd, flux …)
Værktøjer
- loddeudstyr (jern, holdere, …)
- små skæretænger
Trin 4: Fix ting sammen
Lim de kvindelige pinhoveder til Arduino board headers:
- 1 × 4 header ved siden af "analog" pin header, side til side med ben A0 – A4
- 1 × 6 header ved siden af første digitale pin header, side til side med pins 2–7
- 1 × 6 header ved siden af den anden digitale pin header, side til side med ben 8–13
Bemærk, at mine overskrifter er lidt længere … det har ingen ulemper og ingen fordele, formoder jeg.
Trin 5: Kør ting sammen
Tilslutning af 1-leder buslinjen:
- Tilslut alle ledninger til limede overskrifter på "digital" side (ved siden af ben 2–13) ved at lodde et stykke bar ledning til dem
- Lod enden af denne ledning til SCL -pinledning (internt forbundet til A5)
- Tilslut alle ledninger til limet header på "analog" side (ben A0 – A3) ved at lodde et stykke bar ledning til dem
- Lod enden af denne ledning til A4- og A5 -ledninger (jeg brugte A5 og A6, fordi jeg har et bræt, der har A6 og A7)
- Lod en 4k7 modstand mellem den anden ende af denne ledning og +5 V pin ledning
Bemærkninger:
- Stifterne A0 – A5, selvom de er mærket "analog", kan også bruges som GPIO digitale ben.
- SCL -pin på "digital" side er internt forbundet til A5 på "analog" side; forbundet til overskrifterne, danner dette 1-leder buslinjen
- A4 (brugt som analog indgang) måler bussens spænding til diagnostiske formål. Det er grunden til, at den er direkte forbundet med bussen.
- Jeg brugte A6 i stedet for A4, fordi jeg har et bræt, der har A6 & A7; oprindeligt ville jeg bruge A7 som 1-wire busmasteren, men disse to ben kan ikke konfigureres til at være digitale GPIO'er.
- For at forhindre forkert tilslutning af sensorkonnektorerne kan du udelade / afbryde den ubrugte kontakt (ikke forbundet til nogen ledning) fra hvert hanstik og indsætte det i det tilsvarende hul i det limede stifthoved.
Trin 6: Tilslutning af sensorerne
Du har lige oprettet en matrix med otte 2 × 2 stik. Du kan lodde og samle 2 × 2 Dupont -stik til sensorkabler og slutte dem til disse stik. Softwaren konfigurerer stifterne, så lige pins er GND -pins og ulige pins er Vcc -pins. For hver sensor er Vcc pin bare GND pin + 1. En af de to andre pins i 2 × 2 stikket (en af de to i det limede og loddede header) er til datatråden på sensoren. Det er ligegyldigt, hvilken du bruger.
Trin 7: Controller -software
SerialThermometer -skitsen kører controlleren. Du kan finde det på github. Åbn og upload ved hjælp af Arduino IDE.
Trin for trin:
- Åbn din Arduino IDE, og installer DallasTemperature -biblioteket og alle dets afhængigheder via Sketch | Inkluder bibliotek | Administrer biblioteker.
- Klon git -arkiv. Hvis du ikke kender git, skal du downloade og pakke denne zip ud hvor som helst på din computer.
- Åbn SerialThermometer -skitse i din Arduino IDE.
- Tilslut dit modificerede Arduino -kort til din computer ved hjælp af USB -kabel (standard måde)
- Upload skitsen ved hjælp af din Arduino IDE
- Åbn seriel skærm via værktøjer | Seriel skærm
- Du bør se diagnostisk output, der indeholder flere fysiske målinger efterfulgt af temperaturmålinger - hver sensorstik på en enkelt linje. Hvis sensortallet er forskelligt, når det tændes separat og når alt tændes sammen), løser diagnosen, indtil det er løst. Men rolig, også diagnostisk giver temperaturmålinger!
Se kommenteret billede for flere detaljer om diagnostisk output.
Trin 8: Konklusion
Jeg har en stærk følelse af, at mine sensornetværksfejl blev forårsaget af høj kapacitans i mine lange ledninger - omkring 10 m LIYY 314 (3 × 0, 14 mm²) kabel til hver sensor. Mine eksperimenter viste, at kommunikation bryder, hvis der er kapacitans omkring eller højere end 0,01 μF mellem 1-leder bus og jord, jeg tror, fordi 4k7 pull-up modstand ikke er i stand til at trække bussen til + 5 V hurtigt nok til at overholde protokolgrænser.
I mit setup sker det, når mere end 3 sensorer er forbundet sammen. Derefter slinger controlleren i diagnosecyklussen og måler temperatursensor-for-sensor (hvad er også fedt …)
Men også 5. sensor (28: ff: f2: 41: 51: 17: 04: 31) ser ret syg ud (måske forkert lodning), så jeg kan undersøge nærmere!
Anbefalede:
Grænseflade LM35 temperatursensor med Arduino: 4 trin
Grænseflade LM35 temperatursensor med Arduino: Termometre er nyttige apparater, der bruges i lang tid til temperaturmåling. I dette projekt har vi lavet et Arduino -baseret digitalt termometer til at vise de aktuelle omgivelsestemperaturer og temperaturændringer på en LCD. Det kan nedbrydes
DIY temperatursensor ved hjælp af en diode: 3 trin
DIY temperatursensor ved hjælp af en diode: Så som en af kendsgerningerne om PN-kryds er, at deres fremadspændingsfald ændres i henhold til passerende strøm og til krydsetemperaturen også, vil vi bruge dette til at lave en simpel billig temperatursensor .Denne opsætning er almindeligt brugt
Sådan bruges DHT22 fugtigheds- og temperatursensor med Arduino: 6 trin
Sådan bruges DHT22 fugtigheds- og temperatursensor med Arduino: I denne vejledning lærer vi, hvordan du bruger DHT22 fugtigheds- og temperatursensor med Arduino og viser værdierne på OLED -displayet. Se videoen
Sådan bruges DHT12 I2C fugtigheds- og temperatursensor med Arduino: 7 trin
Sådan bruges DHT12 I2C fugtigheds- og temperatursensor med Arduino: I denne vejledning lærer vi, hvordan du bruger DHT12 I2C fugtigheds- og temperatursensor med Arduino og viser værdierne på OLED -displayet. Se videoen
Raspberry Pi SHT25 Fugtigheds- og temperatursensor Python -tutorial: 4 trin
Raspberry Pi SHT25 Fugtigheds- og temperatursensor Python -vejledning: SHT25 I2C Fugtigheds- og temperatursensor ± 1,8%relativ luftfugtighed ± 0,2 ° C I2C mini -modul. SHT25-fugtigheds- og temperatursensoren med høj nøjagtighed er blevet en industristandard med hensyn til formfaktor og intelligens, hvilket giver kalibreret, lineariseret sensorsignal