Je vochtigheidssensor verifiëren en kalibreren voor nauwkeurige metingen
Hoe nauwkeurig is je vochtigheidssensor? Ontdek het met dit project.
Vochtigheidssensoren zijn alomtegenwoordig, relatief goedkoop en komen in veel verschillende varianten. Te vaak checken we de datasheet, gebruiken ze met een interface, en (zolang de waarden "redelijk lijken") accepteren we de resultaten.
In dit project tonen we aan hoe je een stap verder kunt gaan en de nauwkeurigheid van een vochtigheidssensor kunt verifiëren. We illustreren ook een algemene methode voor sensor-kalibratie en passen de methode toe om de resultaten te kalibreren en de nauwkeurigheid van de vochtigheidsmetingen te verbeteren.
Testopstelling gebruikt in het project (van links naar rechts, Quark D2000 microcontrollerbord, sensorinterface, HIH5030-sensor in een micro-omgeving).
Projectfundamenten
Om de nauwkeurigheid van een sensor te controleren, worden verkregen waarden vergeleken met een referentistandaard. Om de nauwkeurigheid van een vochtigheidssensor te checken, gebruiken we de "verzadigde zout"-methode om de standaarden te produceren. Eenvoudig gezegd produceren bepaalde zouten (ionische verbindingen zoals keukenzout of kaliumchloride), wanneer opgelost in een waterige oplossing, een atmosfeer van een bekende vochtigheid (zie referentie-PDF).
Deze chemische eigenschappen worden gebruikt om micro-omgevingen van bekende relatieve vochtigheid (RH) percentages te creëren (d.w.z. referentistandaarden), en de sensoren worden binnen de afgedichte pot uitgelezen. Specifiek maken we een oplossing in een afgedichte pot om de atmosfeer te behouden en plaatsen daarna de aangesloten sensor in de pot. Vervolgens wordt de sensor herhaaldelijk uitgelezen en de waarden vastgelegd.
Door de procedure te herhalen met verschillende zouten, elk producerend een andere relatieve vochtigheid, kunnen we een profiel ontwikkelen voor de geteste sensor. Omdat we weten wat de relatieve vochtigheid is voor elke micro-omgeving, kunnen we de afwijkingen van onze sensorwaarden van die bekende waarden beoordelen, en dus de nauwkeurigheid van de sensor evalueren.
Als de afwijkingen aanzienlijk zijn, maar niet onoverkomelijk, kunnen we wiskundige kalibratieprocedures in software toepassen om de nauwkeurigheid van de metingen te verhogen.
Een woord over veiligheid
Voordat je verdergaat, is het essentieel dat je de chemicaliën in dit project verantwoord afhandelt.
- Lees de veiligheidsdatasheet (SDS, of soms MSDS) voor elk van de gebruikte chemicaliën (links voor de SDS voor elk gebruikte zout zijn hieronder gegeven, en je kunt ook literatuuronderzoek doen naar elk zout en hun veilige afhandelingsprocedures).
- Adem de chemicaliën niet in en eet ze niet.
- Laat de chemicaliën niet je huid of ogen aanraken (gebruik handschoenen en beschermingsbril).
- Bereid de oplossingen niet op in hetzelfde gebied waar voedsel bereid wordt.
- Bewaar de chemicaliën correct.
- Gooi de oplossingen en alle instrumenten die gebruikt zijn om de oplossingen te bereiden, correct weg zodat ongelukkelijke blootstelling niet plaatsvindt.
- Voordat je begint, weet wat te doen als er een ongelukkelijke blootstelling plaatsvindt (zie de veiligheidsdatasheet).
Gebruikte zouten
In het algemeen, hoe meer RH-atmosferen je kunt produceren voor referentistandaarden, hoe beter de karakterisering van de te testen sensor zal zijn. Er is echter altijd een limiet aan middelen in praktische zin. In dit project werden vier referentistandaarden gebruikt en de zouten die gekozen werden om de referentistandaarden te produceren, werden gekozen om een bereik van mogelijke RH-waarden te dekken, maar ook met aandacht voor veiligheid, beschikbaarheid en kosten.
De onderstaande zouten werden gekozen. In het geval van natriumchloride (keukenzout), werd zuiver koersalz goedkoop verkregen bij een lokale supermarkt. Als je die route kiest, vermijd keukenzout met additieven zoals jodium of anti-klonteringsmiddelen.
| Zout | % RH (bij 25°C) | Bron | Veiligheidsdatasheet |
|---|---|---|---|
| Lithiumchloride | 11,30 | Home Science Tools | SDS voor LiCl |
| Magnesiumchloride | 32,78 | Home Science Tools | SDS voor MgCl |
| Natriumchloride | 75,29 | Diverse (zie tekst) | SDS voor NaCl |
| Kaliumchloride | 84,34 | Home Science Tools | SDS voor KCl |
Een micro-omgeving creëren
We hebben standaarden voor bijna alles en er is er zelfs een voor het creëren van een stabiele RH uit een waterige oplossing (zie ASTM E104 – 02(2012)). Hoewel mijn werkbank, en waarschijnlijk de jouwe, geen officiële testlaboratorium is, is het de moeite waard om de specificaties in de standaard zo nauwkeurig mogelijk te volgen.
Let ook op dat de resultaten in dit project, hoewel met zorg verzameld, niet geïnterpreteerd moeten worden als reflecterend of aangevend van een algehele kwaliteitsverklaring over de nauwkeurigheid van enig merk sensor. Alleen een klein aantal sensoren werd getest en die gebruikt hadden verschillende leeftijden en gebruiksgeschiedenissen.
Voor elk zout werd een modderig mengsel gecreërd door gedistilleerd water toe te voegen tot een consistentie vergelijkbaar met zeer nat zand. Vier of vijf eetlepels chemisch en een eetlepel gedistilleerd water kan geprobeerd worden, maar je moet misschien een beetje experimenteren.
Het mengsel werd gemaakt in een klein potje met een dichte afsluiting. Glas of zelfs plastic zou goed moeten werken, zolang het de atmosfeer binnen kan houden. Een klein gatje kan in het deksel gemaakt worden om verbindingsdraden naar de sensorinterface en dan naar de microcontroller door te voeren. De aangesloten sensor wordt dan op ongeveer 1,25–2,5 cm boven het mengsel gepositioneerd. Let op dat de sensor nooit direct contact maakt met de oplossing of het zal waarschijnlijk beschadigd raken. Om de verbinding op zijn plaats te houden en het gat in het deksel te verzegelen, kan een gemakkelijk verwijderbare contactkit worden gebruikt.
Het is belangrijk dat je voldoende tijd voor evenwicht laat voordat je de finale meting neemt. Ik testte dit empirisch, met metingen elke minuut tot zes uur in geselecteerde testcases. In mijn ervaring was dit langer dan nodig en ik besloot 90–120 minuten evenwichtstijd voor elke sensor en zout. Vervolgens werd een gemiddelde van de laatste vijf metingen gebruikt voor de finale waarde. In alle gevallen toonden de vijf waarden zeer weinig, zo überhaupt, verschil.
Daarnaast werden alle metingen genomen bij ongeveer 25° C (± 1°) omgevingstemperatuur, en de RH-waarde die voor elke standaard werd gebruikt, was die vermeld voor 25° C (zie deze PDF voor de waarden).
HIH5030-sensor op een carrierbord binnen een micro-omgeving met natriumchloride.
Hardware
Microcontroller
In dit project koppelen we de sensoren met een Quark D2000 microcontroller. De D2000 is een 3V-bord met I2C- en analog-naar-digitaal-interfaces.
Houd er rekening mee dat elke andere microcontroller met de juiste interfaces gebruikt kan worden.
Sensorinterfaces
Sensoren getest in het project; A) HIH8121, B) HIH5030, C) DHT-22 (AM2302), D) HIH6030 (op een carrierbord).
Vier verschillende typen vochtigheidssensoren werden getest: DHT-22 (twee gebruikt), HIH5030, HIH6030 en HIH8121. De onderstaande schema's illustreren de eenvoudige interfaces die voor elk type sensor gebruikt worden, en raadpleging van de gelinkte datasheets zal achtergrondinformatie geven voor de circuits.
- De DHT-22 is een temperatuur- en vochtigheidssensor met een eigen seriële uitgang
- De HIH5030 is een vochtigheidssensor met analoge (spannings)uitgang. De interface voor deze sensor gebruikt een op-amp in een unity-gain-configuratie voor impedantie-aanpassing.
- De HIH6030 en HIH8121 zijn temperatuur- en vochtigheidssensoren die het I2C-protocol gebruiken
DHT-22 naar D2000 interface.
DHT-22 BOM: U1, DHT-22 sensor; R1, 4,7kΩ weerstand; C1, 0,1 µF condensator.
HIH5030 naar D2000 interface.
HIH5030 BOM: U1, HIH3050 sensor; U2, MCP601P op-amp; C1, 1,0 µF condensator; C2, 0,1 µF condensator.
HIH6030 naar D2000 interface.
HIH6030 BOM: U1, HIH6030 sensor; R1 en R2, 2,2 kΩ weerstand; C1, 0,22 µF condensator; C2, 0,1 µF condensator.
HIH8121 naar D2000 interface.
HIH8121 BOM: U1, HIH8121 sensor; R1 en R2, 2,2 kΩ weerstand; C1, 0,22 µF condensator.
Sensorsoftware
Alle programma's voor het verzamelen van sensordata zijn geschreven in de C-taal en kunnen gedownload worden door te klikken op de "Humidity Sensor Project Code"-knop. Elk is gecommentarieerd en straightforward. Voor elke sensor leest het programma de sensor elke minuut en stuurt de waarde naar een seriële monitor. Als zodanig, zouden ze gemakkelijk aan te passen moeten zijn voor je specifieke applicatie.
Screenshots van output van DHT22.c (links) en HIH5030.c (rechts).
Sensor-evaluatieprocedure
De onderstaande tabel bevat de data van de evaluatie van de sensoren in elk van de vier micro-omgevingen.
| DHT #1 | DHT #2 | HIH5030 | HIH6030 | HIH8121 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Referentie RH | OBS | ERR | OBS | ERR | OBS | ERR | OBS | ERR | OBS | ERR |
| 11,30 (LiCl) | 12,56 | 1,26 | 16,29 | 4,99 | 13,02 | 1,72 | 20,79 | 9,49 | 12,31 | 1,01 |
| 32,78 (MgCl) | 32,36 | -0,42 | 33,79 | 1,01 | 33,46 | 0,68 | 40,77 | 7,99 | 32,43 | -0,35 |
| 75,29 (NaCl) | 73,04 | -2,25 | 74,50 | -0,79 | 77,74 | 2,45 | 83,83 | 8,54 | 76,63 | 1,34 |
| 84,34 (KCl) | 82,30 | -2,04 | 82,15 | -2,19 | 85,84 | 1,50 | 93,43 | 9,09 | 85,01 | 0,67 |
| RMSE | 1,657 | 2,799 | 1,708 | 8,796 | 0,920 | |||||
Eenmaal je de data hebt verzameld van de sensorprestaties in stabiele omgevingen van bekende relatieve vochtigheid, kun je de nauwkeurigheid van een sensor numeriek evalueren.
Let op dat in de tabel we de fout voor elke sensor bij elke RH-standaard berekenden. We kunnen die waarden echter niet zomaar gemiddeld nemen om de sensor te evalueren, omdat sommige waarden positief en andere negatief zijn. Als we gewoon een gemiddelde nemen, zou de resulterende waarde de gemiddelde fout minimaliseren omdat de positieve en negatieve waarden elkaar opheffen.
In plaats daarvan berekenen we een root mean square error (RMSE) om de nauwkeurigheid van de sensor te karakteriseren. De formule voor RMSE is hieronder:
waarbij O de waargenomen sensorwaarde is en I de ideale sensorwaarde (d.w.z. de referentistandaard). Om RMSE te berekenen, kwadrateren we elke fout (de afwijking van de referentistandaard), berekenen we het rekenkundig gemiddelde van die waarden, en nemen ten slotte de vierkantswortel van het gemiddelde.
Eenmaal je de nauwkeurigheid van de sensor gekarakteriseerd hebt, kun je de RMSE gebruiken om te beslissen of het nodig is om de sensor te kalibreren. In sommige gevallen is de RMSE klein en volledig acceptabel voor je toepassing en kun je redelijkerwijs besluiten dat geen kalibratie vereist is.
Bijvoorbeeld, de resultaten voor de HIH8121 zijn indrukwekkend. De RMSE is minder dan 1% en alle meetpunten hebben een fout minder dan 2%.
Aan de andere kant, in sommige gevallen kun je vinden dat de sensorrespons zo slecht en onregelmatig is dat je simpelweg besluit dat een andere sensor vereist is voor je toepassing.
De beslissing om te kalibreren moet altijd rekening houden met de mate van nauwkeurigheid die nodig is voor de taak. Niettemin kunnen we de nauwkeurigheid van de sensorwaarden verbeteren door kalibratie, voor alle sensoren in de tabel.
Sensor-kalibratieprocedure
Om een sensor te kalibreren, moeten we eerst wiskundig de functie bepalen die de ideale waarden relatieert aan de waargenomen waarden. Een lineaire regressieprocedure kan gebruikt worden om die functie te bepalen.
Het woord "lineair" in de naam van de regressieprocedure betekent niet een lineaire functie. In plaats daarvan verwijst de term naar een lineaire combinatie van variabelen. De resulterende functie kan lineair of curvilineair zijn. Alle drie de polynomiale functies hieronder vertegenwoordigen lineaire regressie (let op: we negeren een 0-graden geval wat niet nuttig is in deze context).
- y = ax + b (eerste graad, lineair)
- y = ax2 + bx + c (tweede graad, kwadratisch)
- y = ax3 + bx2 + cx + d (derde graad, kubisch)
In het huidige project berekenen we sensorwaarden met vier referentistandaarden (d.w.z. n = 4). Dus een derdegraads polynoom is het hoogst mogelijke polynoom dat we kunnen berekenen. Het is altijd het geval dat het hoogst mogelijke polynoom n – 1 is, en in dit geval betekent dat 3 (4 – 1).
Least-squares-procedures worden gewoonlijk gebruikt voor lineaire regressie. In deze procedure wordt een lijn gefit zodanig dat de som van de afstanden van elk datumpunt tot de lijn zo klein mogelijk is. Er zijn veel programma's beschikbaar die least-squares-procedures gebruiken voor lineaire regressie. Je kunt zelfs Excel gebruiken (klik hier voor meer informatie).
Het moet ook worden opgemerkt dat we niet hoeven te gebruiken lineaire regressie. We kunnen niet-lineaire regressie gebruiken. Voorbeelden van niet-lineaire regressie resulteren in een macht-functie of een Fourier-functie. Lineaire regressie is echter goed geschikt voor de data van ons project en, verder, software-correctie (kalibratie) is gemakkelijk geïmplementeerd. In feite, in dit project geloof ik niet dat je veel zou winnen door niet-lineaire regressie te gebruiken.
Het polynoom kiezen
In theorie willen we het polynoom gebruiken dat het best past bij de data. Dat is, het polynoom dat de kleinste determinatiecoëfficiënt produceert, aangeduid als r2 (of R2, uitgesproken als "R-kwadraat"). Hoe dichter r2 bij 1 ligt, hoe beter de fit. Met least-squares-estimatie is het altijd het geval dat hoe hoger de graad van het gebruikte polynoom, hoe beter de fit.
Je hoeft echter niet automatisch het hoogst mogelijke polynoom te gebruiken. Aangezien kalibratie in software plaatsvindt, kunnen er gevallen zijn waarin het gebruik van een lagere-graads polynoom een snelheids- en/of geheugenvoordeel vertegenwoordigt, vooral als de nauwkeurigheid die gewonnen wordt door een hoger-graads polynoom te gebruiken, heel klein is.
Hieronder demonstreren we de kalibratieprocedures voor de HIH6030-sensor met polynomen van verschillende graad, en in doing so illustreren we de algemene procedure die van toepassing is op elke graad van polynoom die je kiest te gebruiken.
Met de data uit de vorige tabel voeren we eerst de least-squares-regressieprocedure uit om de coëfficiënten voor elk polynoom te bepalen. Die waarden komen uit het regressie-softwarepakket dat gebruikt wordt. De resultaten zijn hieronder, inclusief de r2-waarden.
- Lineair: y = ax + b; a = 1,0022287, b = -8,9105659, r2 = 0,9996498
- Kwadratisch: y = ax2 + bx + c; a = -0,0012638, b = 1,1484601, c = -12,0009745, r2 = 0,9999944
- Kubisch: y = ax3 + bx2 + cx + d; a = 0,0000076, b = -2,4906103, c = 1,2061971, d = -12,7681425, r2 = 0,9999999
De waargenomen waarden kunnen nu gewijzigd worden met de berekende functies. Dat wil zeggen, de sensorwaarden kunnen gekalibreerd worden zoals geïllustreerd in de onderstaande tabel (let op dat OBS, Gecorrigeerd en ERR-waarden afgerond zijn op twee decimalen).
| RAW | 1ste Graad | 2de Graad | 3de Graad | |||||
|---|---|---|---|---|---|---|---|---|
| Ref RH | OBS | ERR | Gecorrigeerd | ERR | Gecorrigeerd | ERR | Gecorrigeerd | ERR |
| 11,30 | 20,79 | 9,49 | 11,93 | 0,63 | 11,36 | 0,06 | 11,30 | 0,00 |
| 32,78 | 40,77 | 7,99 | 31,95 | -0,83 | 32,83 | 0,05 | 32,78 | 0,00 |
| 75,29 | 83,83 | 8,54 | 75,11 | -0,18 | 75,85 | 0,55 | 75,29 | 0,00 |
| 84,34 | 93,43 | 9,09 | 84,73 | 0,39 | 84,83 | 0,49 | 84,34 | 0,00 |
| RMSE | 8,795736 | 0,562146 | 0,371478 | 0,00212 |
Het is te zien dat alle drie de polynomen een significante afname in de RMSE produceren, vergeleken met de waargenomen metingen, en dat is waarom je kalibreert. De onderstaande grafiek illustreert de verbetering met het 1ste-graads polynoom. Let op hoe de gekalibreerde (gecorrigeerde) datapunten nu liggen bij de ideale diagonaal.
Lees Meer Informatie….
Hoe een vochtigheidssensor te controleren en kalibreren
Huidig project / post kan ook gevonden worden via:
- how t chec for humidity calibratiod
Productieproces
- Uitgesteld Onderhoud: Definitie, Kosten En Strategieën Om Backlogs Te Beheersen
- Raspberry Pi & HDC2010: Complete I2C Temperatuur & Vochtigheid Sensor Setup Gids
- Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
- Een Raspberry Pi-weerstation bouwen dat dagelijkse weergegevens e-mailt
- Een Multi-sensor Temperatuur- & Lichtmonitoringssysteem Bouwen met Raspberry Pi & DS18B20
- Raspberry Pi-sensor- en actuatorbeheersing onder de knie: versnellingsmeter, servo en datastreaming
- Een geautomatiseerd aeroponisch systeem bouwen met Raspberry Pi en vochtigheidssensor
- Nauwkeurige Temperatuur- & Vochtigheidsmonitoring met SHT15 op Windows 10 IoT Core
- Stap-voor-Stap Gids voor Het Inspecteren en Diagnosticeren van DC-Motorproblemen
- Luchtvochtigheidssensoren: Hoe Ze Werken en Belangrijke Toepassingen
- DHT11 Sensor: Hoe Het Werkt en Belangrijke Toepassingen