Inhoudsopgave:

Temperatuursensoren testen - welke voor mij? 15 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"
Temperatuursensoren testen - welke voor mij? 15 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Temperatuursensoren testen - welke voor mij? 15 stappen (met afbeeldingen) Antwoorden op al uw "Hoe?"

Video: Temperatuursensoren testen - welke voor mij? 15 stappen (met afbeeldingen) Antwoorden op al uw
Video: Online Stookavond met Angelique Krüger | De Heide Smid 2024, Juli-
Anonim
Temperatuursensoren testen - welke voor mij?
Temperatuursensoren testen - welke voor mij?

Een van de eerste sensoren die nieuwkomers in fysiek computergebruik willen uitproberen, is iets om temperatuur te meten. Vier van de meest populaire sensoren zijn de TMP36, die een analoge uitgang heeft en een analoog-naar-digitaal converter nodig heeft, de DS18B20, die gebruik maakt van eendraads connectiviteit, de DHT22, of de iets goedkopere DHT11, die alleen een digitale pin nodig heeft, maar ook geeft een vochtigheidsmeting, en als laatste de BME680 die I2C gebruikt (met SPI ook op sommige breakout-borden) en temperatuur, vochtigheid, gas (VOC) en atmosferische druk geeft, maar die iets meer kost.

Ik wil zien hoe nauwkeurig ze zijn en eventuele voor- of nadelen ontdekken. Ik heb al een nauwkeurige kwikthermometer, overgebleven van de kleurenfotografische druk in de dagen van de chemische verwerking, om ze mee te vergelijken. (Gooi nooit iets weg - je hebt het later nodig!)

Ik ga CircuitPython en een Adafruit Itsybitsy M4-ontwikkelbord gebruiken voor deze tests. Voor alle apparaten zijn geschikte stuurprogramma's beschikbaar.

Benodigdheden

Mijn eerste lijst:

  • Itsybitsy M4 Express-microcontroller
  • micro-USB-kabel - om te programmeren
  • TMP36
  • DS18B20
  • 4.7K Ohm weerstand
  • DHT22
  • BME680
  • Multimeter
  • Breadboard of stripboard
  • Aansluitdraad

Stap 1: Circuits

Circuits
Circuits

De oranje draden zijn 3,3 V

De zwarte draden zijn GND

Aan de onderkant van het bord bevinden zich testpunten voor het meten van spanningen. (3.3v, GND en TMP36 analoge uitgang)

De middelste stopcontacten zijn, van links naar rechts:

  • TMP36: 3.3v, analoog signaal uit, GND
  • DS18B20: GND, digitaal signaal uit, 3.3v
  • DHT22: 3.3v, signaal uit, leeg, GND
  • BME680: 3.3v, SDA, SCL, leeg, GND

De achterste connector, voor aansluiting op de IB M4E-kaart, van links naar rechts

  • 3.3v
  • TMP36 - analoog uit naar pin A2
  • GND
  • DS18B20 digitale uitgang naar pin D3 - groen
  • DHT22 digitale uitgang naar pin D2 - geel
  • SDA - wit
  • SCL - roze

De weerstand van 4,7K Ohm is een pullup van signaal naar 3,3v voor een eendraadsverbinding op de DS18B20.

Er zijn 2 uitgesneden sporen op de achterkant van het bord:

Onder het linker uiteinde van zowel de roze als de witte draden. (Onder de gele draad.)

Stap 2: Methode:

Methode
Methode

Voor elke sensor zal ik een kort script schrijven om de temperatuur (en andere items indien beschikbaar) meerdere keren af te lezen en de temperatuur te vergelijken met mijn kwik(Hg)-thermometer. Ik zal kijken hoe dicht de temperatuur zich verhoudt tot de kwikwaarde en of de waarden stabiel/consistent zijn.

Ik zal ook naar de documentatie kijken om te zien of de metingen binnen de verwachte nauwkeurigheid passen en of er iets is dat kan worden gedaan om verbeteringen aan te brengen.

Stap 3: TMP36 - Eerste proefversie

TMP36 - Eerste proefversie
TMP36 - Eerste proefversie
TMP36 - Eerste proefversie
TMP36 - Eerste proefversie

Het linkerbeen is 3,3 V, het rechterbeen is GND en het middelste been is een analoge spanning die de temperatuur weergeeft met behulp van de volgende formule. TempC = (millivolt - 500) / 10

Dus 750 millivolt geeft een temperatuur van 25 C

Er lijken hier een paar problemen te zijn. De temperatuur van de 'normale' kwikthermometer is veel lager dan die van de TMP36 en de metingen zijn niet erg consistent - er is wat 'jitter' of ruis.

De TMP36-sensor zendt een spanning uit die evenredig is met de temperatuur. Dit moet door de A/D-converter worden uitgelezen voordat de temperatuur wordt berekend. Laten we de spanning rechtstreeks van het middelste been van de sensor aflezen met een multimeter en deze vergelijken met het resultaat van de A/D. De aflezing van het middelste been met mijn multimeter is 722 millivolt, veel lager en een zeer stabiele aflezing.

Er zijn twee dingen die we kunnen proberen. Vervang de TMP36 door een potentiometer en pas de spanning in de berekening aan aan de werkelijke spanning van de microcontroller. We zullen dan kijken of de berekende spanning dichterbij is en of de ruis/jitter wordt verminderd.

Laten we de werkelijke spanning meten die wordt gebruikt door de microcontroller en de A/D. Dit werd verondersteld 3,3v te zijn, maar is eigenlijk slechts 3,275v.

Stap 4: Resultaten potentiometervervanging

Resultaten potentiometervervanging
Resultaten potentiometervervanging

Dit is veel beter. De metingen zijn binnen een paar millivolt met veel minder ruis. Dit suggereert dat het geluid van de TMP36 komt en niet van de A/D. De aflezing op de meter is altijd stabiel - geen jitter. (De meter kan de schokkerige output 'verzachten'.)

Een manier om de situatie te verbeteren kan zijn om een gemiddelde meting te doen. Neem snel tien metingen en gebruik het gemiddelde. Ik zal ook de standaarddeviatie berekenen terwijl ik het programma verander, om een indicatie te geven van de spreiding van de resultaten. Ik zal ook het aantal metingen binnen 1 standaarddeviatie van het gemiddelde tellen - hoe hoger hoe beter.

Stap 5: Gemiddelde metingen en een resultaat

Gemiddelde metingen en een resultaat
Gemiddelde metingen en een resultaat

Er is nog steeds veel ruis en de meetwaarde van de TMP36 is nog steeds hoger dan die van de kwikthermometer. Om ruis te verminderen heb ik een 100NF condensator tussen signaal en GND opgenomen

Ik zocht toen naar andere oplossingen op internet en vond deze: https://www.doctormonk.com/2015/02/accurate-and-re… Dr. Monk stelt voor om een 47 k Ohm weerstand tussen signaal en GND op te nemen.

www.desert-home.com/2015/03/battery-operate… Terwijl deze man voorstelt om 15 metingen in volgorde te sorteren en het gemiddelde te nemen van het centrum 5.

Ik heb het script en het circuit aangepast om deze suggesties op te nemen en een lezing van de kwikthermometer toegevoegd.

Eindelijk! Nu hebben we stabiele metingen binnen het nauwkeurigheidsbereik van de apparaatbeschrijving.

Dit was nogal wat moeite om de sensor werkend te krijgen die alleen de nauwkeurigheid van een fabrikant heeft van:

Nauwkeurigheid - Hoogste (laagste): ±3°C (±4°C) Ze kosten slechts ongeveer $ 1,50 (£ 2)

Stap 6: DS18B20 - Eerste test

DS18B20 - Eerste test
DS18B20 - Eerste test

Wees erg voorzichtig. Dit pakket lijkt erg op de TMP36 maar de poten zijn andersom met 3.3v aan de rechterkant en GND aan de linkerkant. Het signaal uit is in het midden. Om dit apparaat te laten werken hebben we een weerstand van 4,7 k Ohm nodig tussen signaal en 3,3v. Dit apparaat gebruikt het eendraadsprotocol en we moeten een aantal stuurprogramma's downloaden naar de lib-map van de Itsybitsy M4 Express.

Dit kost ongeveer $ 4 / £ 4Technische specificaties:

  • Bruikbaar temperatuurbereik: -55 tot 125 °C (-67 °F tot +257 °F)
  • 9 tot 12 bit selecteerbare resolutie
  • Gebruikt 1-draads interface - vereist slechts één digitale pin voor communicatie
  • Unieke 64-bits ID in de chip gebrand
  • Meerdere sensoren kunnen één pin delen
  • ±0,5°C Nauwkeurigheid van -10°C tot +85°C
  • Alarmsysteem met temperatuurlimiet
  • De querytijd is minder dan 750 ms
  • Bruikbaar met een vermogen van 3,0 V tot 5,5 V

Het grootste probleem met deze sensor is dat hij de Dallas 1-Wire-interface gebruikt en niet alle microcontrollers een geschikte driver hebben. We hebben geluk, er is een driver voor de Itsybitsy M4 Express.

Stap 7: DS18B20 werkt goed

DS18B20 Werkt goed
DS18B20 Werkt goed

Dit laat een mooi resultaat zien.

Een constante reeks metingen zonder extra werk en rekenkosten. De metingen vallen binnen het verwachte nauwkeurigheidsbereik van ±0,5 °C in vergelijking met mijn kwikthermometer.

Er is ook een waterdichte versie van ongeveer $ 10 die ik in het verleden met evenveel succes heb gebruikt.

Stap 8: DHT22 en DHT11

DHT22 en DHT11
DHT22 en DHT11

De DHT22 gebruikt een thermistor om de temperatuur te verkrijgen en kost ongeveer $ 10 / £ 10 en is de nauwkeurigere en duurdere broer van de kleinere DHT11. Het maakt ook gebruik van een eendraadsinterface, maar is NIET compatibel met het Dallas-protocol dat wordt gebruikt met de DS18B20. Het detecteert zowel vochtigheid als temperatuur. Deze apparaten hebben soms een pull-up weerstand nodig tussen 3,3 v en de signaalpin. Dit pakket heeft er al een geïnstalleerd.

  • Goedkoop
  • 3 tot 5V voeding en I/O
  • Maximaal 2,5 mA stroomverbruik tijdens conversie (tijdens het opvragen van gegevens)
  • Goed voor 0-100% vochtigheidsmetingen met een nauwkeurigheid van 2-5%
  • Goed voor temperatuurmetingen van -40 tot 80°C ±0,5°C nauwkeurigheid
  • Niet meer dan 0,5 Hz bemonsteringsfrequentie (eenmaal per 2 seconden)
  • Lichaamsafmetingen 27 mm x 59 mm x 13,5 mm (1,05" x 2,32" x 0,53")
  • 4 pinnen, 0,1 "afstand
  • Gewicht (alleen de DHT22): 2,4 g

Vergeleken met de DHT11 is deze sensor nauwkeuriger, nauwkeuriger en werkt hij in een groter temperatuur-/vochtigheidsbereik, maar hij is groter en duurder.

Stap 9: DHT22-resultaten

DHT22-resultaten
DHT22-resultaten

Dit zijn uitstekende resultaten met zeer weinig inspanning. De metingen zijn redelijk stabiel en binnen de verwachte tolerantie. De vochtigheidsmeting is een bonus.

U kunt slechts elke seconde metingen uitvoeren.

Stap 10: DTH11-test

DTH11-test
DTH11-test

Mijn kwikthermometer gaf 21,9 graden C aan. Dit is een behoorlijk oude DHT11 die ik uit een oud project heb gehaald en de vochtigheidswaarde is heel anders dan de DHT22-metingen van een paar minuten geleden. Het kost ongeveer $ 5 / £ 5.

De beschrijving omvat:

  • Goed voor 20-80% vochtigheidsmetingen met 5% nauwkeurigheid
  • Goed voor 0-50°C temperatuurmetingen ±2°C nauwkeurigheid - minder dan de DTH22

De temperatuur lijkt nog steeds in het nauwkeurigheidsbereik te zijn, maar ik vertrouw de vochtigheidsmeting van dit oude apparaat niet.

Stap 11: BME680

BME680
BME680

Deze sensor bevat temperatuur-, vochtigheids-, barometrische druk- en VOC-gasdetectiemogelijkheden in een enkel pakket, maar is de duurste van de hier geteste sensoren. Het kost ongeveer £ 18,50 / $ 22. Er is een soortgelijk product zonder de gassensor die iets goedkoper is.

Dit is een gouden standaardsensor van de vijf. De temperatuursensor is nauwkeurig en met geschikte drivers zeer eenvoudig te gebruiken. Deze versie gebruikt I2C maar het Adafruit breakout board kan ook SPI gebruiken.

Net als de BME280 & BMP280 kan deze precisiesensor van Bosch de vochtigheid meten met een nauwkeurigheid van ±3%, de luchtdruk met een absolute nauwkeurigheid van ±1 hPa en de temperatuur met een nauwkeurigheid van ±1,0°C. Omdat de druk verandert met de hoogte, en de drukmetingen zo goed zijn, kun je hem ook als hoogtemeter gebruiken met een nauwkeurigheid van ±1 meter of beter!

De documentatie zegt dat het wat 'inbrandtijd' nodig heeft voor de gassensor.

Stap 12: Welke moet ik gebruiken?

Welke moet ik gebruiken?
Welke moet ik gebruiken?
  • De TMP36 is erg goedkoop, klein en populair, maar vrij moeilijk te gebruiken en kan onnauwkeurig zijn.
  • De DS18B20 is klein, nauwkeurig, goedkoop, zeer eenvoudig in gebruik en heeft een waterdichte uitvoering.
  • De DTH22 geeft ook vochtigheid aan, is redelijk geprijsd en is gemakkelijk te gebruiken, maar kan te traag zijn.
  • De BME680 doet veel meer dan de andere, maar is duur.

Als ik alleen temperatuur wil, zou ik de DS18B20 gebruiken met een nauwkeurigheid van ±0,5°C, maar mijn favoriet is de BME680 omdat hij zoveel meer doet en in een groot aantal verschillende projecten kan worden gebruikt.

Een laatste gedachte. Zorg ervoor dat u uw temperatuursensor uit de buurt van de microprocessor houdt. Sommige Raspberry Pi HAT's laten warmte van het moederbord toe om de sensor op te warmen, wat een verkeerde aflezing geeft.

Stap 13: Verdere gedachten en experimenten

Verdere gedachten en experimenten
Verdere gedachten en experimenten

Bedankt gulliverrr, ChristianC231 en pgagen voor jullie opmerkingen over wat ik tot nu toe heb gedaan. Het spijt me voor de vertraging, maar ik ben een paar weken op vakantie geweest in Ierland, zonder toegang tot mijn elektronicakit.

Hier is een eerste poging om de sensoren samen te laten werken.

Ik heb een script geschreven om de sensoren op hun beurt uit te lezen en de temperatuurwaarden om de 20 seconden of zo af te drukken.

Ik heb de kit een uur in de koelkast gezet om alles af te koelen. Ik stopte het op de pc en liet Mu de resultaten afdrukken. De uitvoer werd vervolgens gekopieerd, omgezet in een.csv-bestand (door komma's gescheiden variabelen) en grafieken putten uit de resultaten in Excel.

Het duurde ongeveer drie minuten om de kit uit de koelkast te halen voordat de resultaten werden geregistreerd, dus er was in deze periode enige temperatuurstijging opgetreden. Ik vermoed dat de vier sensoren verschillende thermische capaciteiten hebben en dus met verschillende snelheden zouden opwarmen. De snelheid van opwarming zou naar verwachting afnemen naarmate de sensoren de kamertemperatuur naderen. Ik heb dit gemeten als 24,4°C met mijn kwikthermometer.

De grote temperatuurverschillen aan het begin van de curves kunnen te wijten zijn aan de verschillende thermische capaciteiten van de sensoren. Ik ben blij om te zien dat de lijnen naar het einde toe convergeren als ze de kamertemperatuur naderen. Ik ben bang dat de TMP36 altijd veel hoger is dan de andere sensoren.

Ik heb de gegevensbladen opgezocht om de beschreven nauwkeurigheid van deze apparaten opnieuw te controleren

TMP36

  • ±2°C nauwkeurigheid over temperatuur (typ)
  • ±0,5°C lineariteit (typ)

DS18B20

±0,5°C Nauwkeurigheid van -10°C tot +85°C

DHT22

temperatuur ±0,5°C

BME680

temperatuur met een nauwkeurigheid van ± 1,0°C

Stap 14: Volledige grafiek

Volledige grafiek
Volledige grafiek

Je kunt nu zien dat de sensoren uiteindelijk zijn afgevlakt en het eens zijn over de temperatuur min of meer binnen de beschreven nauwkeurigheid. Als 1,7 graden van de TMP36-waarden wordt gehaald (±2°C wordt verwacht) is er een goede overeenstemming tussen alle sensoren.

De eerste keer dat ik dit experiment uitvoerde, veroorzaakte de DHT22-sensor een probleem:

main.py-uitvoer:

14.9, 13.5, 10.3, 13.7

15.7, 14.6, 10.5, 14.0

16.6, 15.6, 12.0, 14.4

18.2, 16.7, 13.0, 15.0

18.8, 17.6, 14.0, 15.6

19.8, 18.4, 14.8, 16.2

21.1, 18.7, 15.5, 16.9

21.7, 19.6, 16.0, 17.5

22.4, 20.2, 16.5, 18.1

23.0, 20.7, 17.1, 18.7

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

Hertraceren (meest recente oproep als laatste)

Bestand "main.py", regel 64, in

Bestand "main.py", regel 59, in get_dht22

NameError: lokale variabele waarnaar wordt verwezen vóór toewijzing

Dus ik heb het script aangepast om met dit probleem om te gaan en de opname opnieuw gestart:

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

25.9, 22.6, -999.0, 22.6

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

25.9, 22.8, -999.0, 22.7

25.9, 22.9, 22.1, 22.8

25.9, 22.9, 22.2, 22.9

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

27.1, 23.0, -999.0, 23.0

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

27.2, 23.0, -999.0, 23.1

25.9, 23.3, 22.6, 23.2

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

28.4, 23.2, -999.0, 23.3

DHT-leesfout: ('DHT-sensor niet gevonden, controleer bedrading',)

26.8, 23.1, -999.0, 23.3

26.5, 23.2, 23.0, 23.4

26.4, 23.3, 23.0, 23.5

26.4, 23.4, 23.1, 23.5

26.2, 23.3, 23.1, 23.6

Ik had geen probleem met de tweede run. De Adafruit-documentatie waarschuwt wel dat de DHT-sensoren soms metingen missen.

Stap 15: Conclusies

conclusies
conclusies

Deze curve laat duidelijk zien dat de hogere thermische capaciteit van sommige sensoren hun reactietijd verlengt.

Alle sensoren registreren stijgende en dalende temperaturen.

Ze zijn niet erg snel op een nieuwe temperatuur.

Ze zijn niet erg nauwkeurig. (Zijn ze goed genoeg voor een weerstation?)

Mogelijk moet u uw sensor kalibreren met een vertrouwde thermometer.

Aanbevolen: