Innholdsfortegnelse:
- Trinn 1: Historien bak …
- Trinn 2: Slik fungerer det
- Trinn 3: Materiale og verktøy
- Trinn 4: Løs ting sammen
- Trinn 5: Koble ting sammen
- Trinn 6: Koble til sensorene
- Trinn 7: Kontrollerprogramvare
- Trinn 8: Konklusjon
Video: Feiltolerant temperatursensor Nettverkskontroller: 8 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Denne instruksjonsfilen viser deg hvordan du konverterer et Arduino Uno-kort til en enkelt-kontroller for et sett med DS18B20 temperatursensorer som kan automatisere isolering av defekte sensorer.
Kontrolleren kan administrere opptil 8 sensorer med Arduino Uno. (Og mye mer med Arduino Mega eller med en liten programvareendring.)
Trinn 1: Historien bak …
For et par år siden opprettet jeg et DS18B20 temperatursensornettverk i farens drivhus for min pi-baserte varmekontroller. Dessverre var påliteligheten til kontrolleren dårlig, hovedsakelig på grunn av hyppige sensorbrudd. Jeg prøvde flere oppsett - parasittkraft, direkte strøm, koble nettverket til pi, i tillegg til å koble det til Atmega -basert tilpasset bord (som primært var å drive ventilmotorer).
Hva verre, påliteligheten til sensornettverket falt hovedsakelig om vinternettene, mens det var nesten ingen problemer om sommeren! Hva er det som skjer her?
For å undersøke hvilken sensor som forårsaker problemet, viste det seg et behov for å slå dem på/av en etter en eller aktivere en kombinasjon av dem.
Trinn 2: Slik fungerer det
DS18B20 (temperatursensoren) bruker proprietære 1-leder protokoll som lar flere sensorer dele felles datalink (den ene ledningen). Denne vanlige datakoblingen er koblet til en av Arduinos GPIO-pinner og til + 5 V via en opptrekningsmotstand-ingenting uvanlig, mange instrukser dekker dette oppsettet.
Trikset er at hver sensors strømledninger er koblet til egne (dedikerte) GPIO -pinner, slik at de kan slås på og av separat. For eksempel, hvis en sensor har Vcc -ledning koblet til pin #3 og GND til pin #2, gir innstilling pin #3 til HIGH strøm til sensoren (ingen overraskelse) mens innstilling av pin #2 til LOW gir bakken (en liten overraskelse for meg). Hvis du setter begge pinnene til inndatamodus, vil (nesten) isolere sensoren og ledningene helt - uansett hvilken feil (f.eks. En snarvei) skjer i den, vil den ikke forstyrre de andre.
(Rett å si at å koble datakabelen til noe annet som er koblet til Arduino på en eller annen måte vil faktisk forårsake forstyrrelser, men det er nesten umulig i mitt oppsett).
Legg merke til at DS18B20 bruker opptil 1, 5 mA mens en Arduino -pinne kan kilde / synke opptil 40 mA, så det er helt trygt å drive sensorer med GPIO -pinner direkte.
Trinn 3: Materiale og verktøy
Materiale
- 1 Arduino UNO -brett
- 3 kvinnelige pinhoder: 1 × 4, 1 × 6 og 1 × 6 (eller lengre - jeg klipper dem fra en 1 × 40 topp)
- et lim
- et stykke blank coopertråd (minst 10 cm)
- et isolasjonstape
- lodding av forbruksvarer (wire, flux …)
Verktøy
- loddeutstyr (jern, holdere, …)
- liten skjæretang
Trinn 4: Løs ting sammen
Lim de kvinnelige pinnehodene til Arduino -brettoverskrifter:
- 1 × 4 topptekst ved siden av "analog" pinneoverskrift, side til side med pinner A0 – A4
- 1 × 6 topptekst ved siden av den første digitale pinneoverskriften, side til side med pinner 2–7
- 1 × 6 topptekst ved siden av den andre digitale pinneoverskriften, side til side med pinner 8–13
Legg merke til at overskriftene mine er litt lengre … det har ingen ulemper og ingen fordeler antar jeg.
Trinn 5: Koble ting sammen
Kabling av 1-tråds busslinje:
- Koble alle ledninger til limte overskrifter på "digital" side (ved siden av pinner 2–13) ved å lodde et stykke ledning til dem
- Lodd enden av denne ledningen til SCL -pinledningen (internt koblet til A5)
- Koble alle ledninger til limt topptekst på "analog" side (pinner A0 – A3) ved å lodde et stykke ledning til dem
- Lodd enden av denne ledningen til A4- og A5 -ledninger (jeg brukte A5 og A6 fordi jeg har et brett som har A6 og A7)
- Lodd en 4k7 -motstand mellom den andre enden av denne ledningen og en +5 V -pinledning
Merknader:
- Pinnene A0 – A5, selv om de er merket som "analoge", kan de også brukes som digitale GPIO -pinner.
- SCL -pinne på "digital" side er internt koblet til A5 på "analog" side; koblet til topptekstene, danner dette 1-tråds busslinje
- A4 (brukt som analog inngang) måler bussenes spenning for diagnostiske formål. Det er grunnen til at den er koblet direkte til bussen.
- Jeg brukte A6 i stedet for A4 fordi jeg har et brett som har A6 & A7; opprinnelig ønsket jeg å bruke A7 som 1-leder bussmester, men disse to pinnene kan ikke konfigureres til å være digitale GPIO.
- For å forhindre feil tilkobling av sensorkontaktene kan du utelate / kutte ut den ubrukte kontakten (ikke koblet til noen ledning) fra hver hannkontakt og sette den inn i det tilsvarende hullet i den limte pinnehodet.
Trinn 6: Koble til sensorene
Du har nettopp opprettet en rekke med åtte 2 × 2 stikkontakter. Du kan lodde og montere 2 × 2 Dupont -kontakter til sensorkabler og koble dem til disse kontaktene. Programvaren konfigurerer pinnene slik at jevne pinner er GND -pinner og merkelige pinner er Vcc -pinner. For hver sensor er Vcc -pinnen bare GND -pin + 1. En av de to andre pinnene i 2 × 2 -kontakten (en av de to i den limte og loddede overskriften) er for datatråden til sensoren. Det spiller ingen rolle hvilken du bruker.
Trinn 7: Kontrollerprogramvare
SerialThermometer -skissen kjører kontrolleren. Du finner den på github. Åpne og last opp med Arduino IDE.
Steg for steg:
- Åpne Arduino IDE og installer DallasTemperature -biblioteket og alle dets avhengigheter via Sketch | Inkluder bibliotek | Administrer biblioteker.
- Klon git -depot. Hvis du ikke er kjent med git, kan du laste ned og pakke ut denne zip -en hvor som helst på datamaskinen.
- Åpne SerialThermometer skisse i Arduino IDE.
- Koble det modifiserte Arduino -kortet til datamaskinen din med USB -kabel (standard måte)
- Last opp skissen med din Arduino IDE
- Åpne Serial Monitor via Tools | Seriell skjerm
- Du bør se diagnostisk utgang som inneholder flere fysiske målinger etterfulgt av temperaturavlesninger - hver sensorkontakt på en linje. Hvis sensortallet er forskjellig når det slås på separat og når alt slås på samtidig), løser diagnosen til det er løst. Men ikke bekymre deg, også diagnostikk gir temperaturmålinger!
Se kommentert bilde for mer detaljert informasjon om diagnostisk utgang.
Trinn 8: Konklusjon
Jeg har en sterk følelse av at sensorens nettverksfeil skyldes høy kapasitans for mine lange ledninger - rundt 10 m LIYY 314 (3 × 0, 14 mm²) kabel for hver sensor. Eksperimentene mine viste at kommunikasjon bryter hvis det er kapasitans rundt eller høyere enn 0,01 μF mellom 1-leder buss og jord, jeg tror fordi 4k7 pull-up motstand ikke er i stand til å trekke bussen til + 5 V raskt nok til å overholde protokollgrenser.
I mitt oppsett skjer det når mer enn 3 sensorer er koblet sammen. Deretter sløyfes kontrolleren i diagnosesyklusen, og måler temperatursensor-for-sensor (det som er kult også …)
Men også 5. sensor (28: ff: f2: 41: 51: 17: 04: 31) ser ganske syk ut (kanskje feil lodding), så jeg kan undersøke nærmere!
Anbefalt:
Grensesnitt LM35 temperatursensor med Arduino: 4 trinn
Grensesnitt LM35 temperatursensor med Arduino: Termometre er nyttige apparater som brukes i lang tid for temperaturmåling. I dette prosjektet har vi laget et Arduino -basert digitalt termometer for å vise gjeldende omgivelsestemperatur og temperaturendringer på en LCD. Det kan være forringet
DIY temperatursensor ved bruk av en diode: 3 trinn
DIY temperatursensor ved bruk av en diode: Så som en av fakta om PN-veikryss er at spenningsfallet fremover endres i henhold til passerende strøm og til kryssetemperaturen, skal vi bruke dette til å lage en enkel billig temperatursensor .Dette oppsettet brukes ofte
Hvordan bruke DHT22 fuktighets- og temperatursensor med Arduino: 6 trinn
Hvordan bruke DHT22 fuktighets- og temperatursensor med Arduino: I denne opplæringen lærer vi hvordan du bruker DHT22 fuktighets- og temperatursensor med Arduino og viser verdiene på OLED -skjermen. Se videoen
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: 7 trinn
Hvordan bruke DHT12 I2C fuktighets- og temperatursensor med Arduino: I denne opplæringen lærer vi hvordan du bruker DHT12 I2C fuktighets- og temperatursensor med Arduino og viser verdiene på OLED -skjermen. Se videoen
Raspberry Pi SHT25 Fuktighets- og temperatursensor Python -opplæring: 4 trinn
Raspberry Pi SHT25 Fuktighets- og temperatursensor Pythonopplæring: SHT25 I2C Fuktighets- og temperatursensor ± 1,8%RH ± 0,2 ° C I2C minimodul. SHT25-fuktighets- og temperatursensoren med høy nøyaktighet har blitt en industristandard når det gjelder formfaktor og intelligens, og gir kalibrert, linearisert sensorsignal