Bruk en liten fuktighets- og temperatursensor til å effektivt samle inn kritisk miljømessig data
Bidrag fra DigiKeys nordamerikanske redaktører
2021-04-07
Gitt effekten som temperatur og fuktighet har på den strukturelle integriteten til bygninger og elektroniske systemer, er evnen til å anskaffe nøyaktige og pålitelige målinger av disse parametrene svært viktig for utformingen av et bredt spekter av konstruksjoner for forbrukere, industri og medisinsk bruk. Virkningene av fuktighet og temperatur på helsen er av særlig interesse, og undersøkelser viser at variasjoner i disse parametrene har virkninger som varierer fra ubehag til infeksjon via aerosoliserte virus.
Dette behovet om å føle temperatur og fuktighet på tvers av en rekke bruksområder er blitt slik at konstruktører må implementere en kostnadseffektiv løsning med lite format som er enkel å implementere, slik at etterspørselen kan møtes. For å oppnå lang batterilevetid på fjerntliggende steder eller steder som er vanskelig tilgjengelig, kan det hende løsningene også må forbruke svært lite strøm, samtidig som de opprettholder den nødvendige nøyaktigheten og stabiliteten.
Denne artikkelen omhandler virkningen av omgivelsestemperatur og -fuktighet på infrastruktur, elektroniske systemer og menneskers helse. Den introduserer og viser deretter hvordan man bruker en miniatyrsensor for fuktighet og temperatur fra TE Connectivity Measurement Specialties som konstruktører enklere kan bruke til å oppfylle kravene til kritisk måling på tvers av en rekke bruksområder.
Viktigheten av nøyaktige fuktighets- og temperaturmålinger
Evnen til å nøyaktig overvåke og justere fuktighets- og temperaturnivåer spiller en viktig rolle i en rekke områder, deriblant anlegg for oppvarming, ventilasjon og klima (HVAC), utstyr for kontinuerlig positivt luftveistrykk (CPAP – continuous positive airway pressure) for søvnapné og til og med grunnleggende velvære for mennesker.
Det kjente begrepet relativ fuktighet (RH – relative humidity) uttrykker vanninnholdet i luft i prosent av den maksimale mengden vann som luft ved en gitt temperatur kan holde. I likhet med temperatur, kan fuktighetsnivåer som er for høye eller for lave være ubehagelige for mennesker og til og med skadelige for strukturer, samt mekanisk og elektronisk utstyr.
Høye fuktighetsnivåer i bygninger kan føre til korrosjon og muggvekst samt nedbryting av betong og andre materialer. I elektronisk utstyr kan høye fuktighetsnivåer føre til kortslutninger på grunn av kondens, spesielt når utstyret bringes inn i et fuktig miljø fra et kjøligere sted.
Lave fuktighetsnivåer kan forårsake krymping av materialer, skade på papirprodukter og oppbygging av statisk elektrisitet. Med økt oppbygging kan den resulterende elektrostatiske utladningen forårsake skade på elektroniske enheter og antenne branner i miljøer med høye nivåer av luftbårne flyktige organiske forbindelser (VOC – volatile organic compound). RH-sensorer spiller derfor en viktig rolle når det gjelder å gi et trygt og sunt miljø i bygninger. Lignende bekymringer oppstår i økende grad når det gjelder å fremme menneskers helse og velvære.
Mennesker legger vanligvis merke til ubehagelige temperaturer fremfor fuktighetsnivåer, men overdrevent lave eller høye fuktighetsnivåer har en tendens til å påvirke helsen. Høy eller lav fuktighet kan forverre symptomene for astmatikere og allergikere, og resultere i redusert søvnkvalitet selv for ellers friske individer. Ved svært lave fuktighetsnivåer tørker menneskevev ut, noe som kan forårsake irritasjon i øyne eller neseganger. CPAP-produsenter er vanligvis avhengige av fuktighetssensorer for å sikre at utstyret leverer riktig mengde fuktig luft til brukerne.
Behovet for måling og styring av fuktighetsnivåer spiller en bredere rolle for folkehelsen. Forskere har funnet ut at fuktighetsnivåer ikke trenger å nå ekstremer nivåer av tørrhet eller fuktighet for å spille en rolle i menneskets fysiologi. Vanligvis bidrar fuktighet i nesegangen til å fjerne aerosoliserte virus (virus suspendert i mikroskopiske dråper). Når nesegangene er tørre, kan aerosoliserte sykdomsframkallende stoffer trenge dypere inn i luftveiene og lettere forårsake infeksjon [1]. På grunn av disse og andre fysiologiske faktorer, er infeksjonsevnen til aerosolisert influensavirus betydelig høyere ved fuktighetsnivåer under 40 % RH (figur 1) [2]. Nyere studier tyder på at RH mellom 40 og 60 % også spiller en rolle for å redusere COVID-19-infeksjon, og til og med bryte ned SARS-CoV-2-viruset som forårsaker COVID-19 [3].
Figur 1: Forskning som viser en sammenheng mellom lave RH-nivåer og økt infeksjonsevne for aerosoliserte virus, fortsetter å drive den stadig økende etterspørselen etter mer nøyaktige måleløsninger. (Bildekilde: TE Connectivity Measurement Specialties)
Selv om nøyaktige målinger av fuktighet og temperatur er avgjørende i mange forskjellige bruksområder, har de tilsvarende konstruksjonskravene begrenset utviklernes evne til å enkelt konstruere effektive løsninger. I tillegg til behovet for høy nøyaktighet med svært lavt langsiktig avvik, krever mange konstruksjoner sensorer som tilbyr rask måling og lav effekt i et minimalt format, noe som gjør det enklere å plassere sensorer på det ideelle målepunktet, enten det er snakk om en HVAC-fuktighetsregulator, CPAP-fuktighetsstyring eller et nøyaktig miljøovervåkingssystem. TE Connectivity sin fuktighets- og temperatursensor HTU31D oppfyller kravene til en voksende liste med bruksområder som er avhengige av nøyaktige data.
En løsning for krav til kritiske målinger
Med en liten monteringsflate og høy nøyaktighet, er HTU31D optimalisert for bruksområder som spenner fra forbrukerprodukter til medisinske og profesjonelle overvåkingssystemer. Den leveres i en 6-pinners pakke som måler 2,5 x 2,5 x 0,9 mm, er fullkalibrert og ikke krever noen ekstra feltkalibrering. Takket være den lille monteringsflaten kan utviklere plassere sensoren på steder som er for små for eldre sensorløsninger, og koble til en ekstern HTU31D via dets serielle I²C-grensesnitt til vertskontrolleren ved hjelp av lettilgjengelige I²C-buffere eller nivåforskyvere.
HTU31D måler RH fra 0 til 100 % med en typisk nøyaktighet på ±2 %, ±0,7 % RH-hysterese og typisk langsiktig avvik på mindre enn 0,25 % RH/år. Enhetens temperaturmåleområde er –40 til 125 °C med en typisk nøyaktighet på ±0,2 °C og typisk langsiktig avvik på 0,04 °C/år. For å bidra til å opprettholde påliteligheten, integrerer sensoren et varmeelement for å eliminere kondens ved høye fuktighetsnivåer, samt intern diagnostikk som detekterer målefeil, varmeelementfeil og interne minnefeil.
I den grunnleggende modusen for fuktighets- og temperaturmåling har sensoren en oppløsning på 0,020 % RH og 0,040 °C, med konverteringstider på henholdsvis 1 ms og 1,6 ms. For mer krevende krav tilbyr enheten driftsmoduser som gir utviklere muligheten til å øke oppløsningen på bekostning av økt konverteringstid. Ved maksimal oppløsningsmodus for hver sensor, kan HTU31D gi 0,007 % RH med en konverteringstid på 7,8 ms og 0,012 °C med en konverteringstid på 12,1 ms.
For visse bruksområder, for eksempel batteridrevne produkter, er enhetens lave strømforbruk en like viktig egenskap. Når enheten opererer i sin grunnleggende oppløsningsmodus og utfører én RH- og temperaturmåling per sekund, krever den vanligvis bare 1,04 mikroampere (μA). I ikke-aktive perioder kan enheten plasseres i dvalemodus, der den vanligvis bruker 0,13 μA. Selvfølgelig resulterer kortvarig bruk av det interne varmeapparatet til å fjerne kondens eller teste temperatursensordrift i en like kort, men betydelig økning i strømmen.
Enkle grensesnitt for maskinvare og programvare
Den digitale fuktighets- og temperatursensoren HTU31D gir enkle grensesnitt for integrasjon av maskinvare og programvare i konstruksjonene til utviklere. Sammen med forsyningsspenningen på 3 til 5,5 V (VDD) og jordingspinner (GND), omfatter enhetens maskinvaregrensesnitt pinner for serielle data (SDA)- og serielle klokke (SCL)-linjer i I²C-standarden. De gjenværende to pinnene inkluderer en nullstillingspinne (RST) og en adressepinne (IC_ADD). Når IC_ADD er knyttet til GND eller VDD, responderer enheten til henholdsvis I²C-adressen 0x40 eller 0x41, slik at to HTU31D-enheter kan dele den samme I²C-bussen uten konflikt.
En vertsprosessor sender kommandoer og leser resultater ved å bruke grunnleggende serielle I²C-transaksjoner. Kommandoer bruker en sekvens på to byte som omfatter I²C-adressen, etterfulgt av en kommandobyte med individuelle biter konfigurert til å angi støttede funksjoner, deriblant kombinert temperatur- og fuktighetsmåling, måling av kun fuktighet, nullstilling, varmeapparat på eller av, enhetens serienummer og diagnostikk.
For å for eksempel utføre en kombinert temperatur- og RH-måling (T og RH), ville verten sende adressebyten og en byte som inneholder biten med konverteringskommandoen og bitene som angir ønsket oppløsning for temperatur- og RH-målinger. Enheten støtter en enkel metode for spørring, så etter overføring av kommandosekvensen på to byte, ville vertsprosessoren vente på den oppløsningsavhengige varigheten angitt i databladet før en sekvens på to byte med adressebyte (0x40 eller 0x41) ble utstedt, etterfulgt av T og RH-lesekommandobyten (0x0) (figur 2, øverste rad). HTU31D ville respondere ved å sende øvre og nedre byte med råverdier for hver forespurte temperatur- og fuktighetsmåling (figur 2, nedre to rader). Råverdiene konverteres til tilsvarende fysiske temperatur- og fuktighetsverdier ved hjelp av et par ligninger som er angitt i HTU31D-databladet.
Figur 2: Den digitale fuktighets- og temperatursensoren HTU31D tilbyr et enkelt grensesnitt for å raskt innhente temperatur- og RH-målinger. (Bildekilde: TE Connectivity Measurement Specialties)
Som vist på figur 2 følger HTU31D hver 16-biters datasekvens med en byte som inneholder dataenes sykliske redundanskontrollverdi (CRC – cyclic redundancy check) generert av enheten. Denne CRC-8-kontrollsummen muliggjør deteksjon av individuelle bits-feil eller dobbeltbits-feil hvor som helst i dataoverføringen, eller klynger av bits-feil i et 8-biters vindu. Ved å sammenligne denne overførte CRC-verdien med CRC-verdien den beregner fra de mottatte dataene, kan vertsprosessoren raskt identifisere en mislykket overføring og iverksette hensiktsmessige tiltak, for eksempel å gjenta målingskommandoen, slå på det integrerte HTU31D-varmeelementet i en kort stund, utstede en nullstilling eller varsle brukeren om en mulig feil i målesystemet.
En annen funksjon i overføringssekvensen gjør det mulig for verten å stoppe responssekvensen før den er normal fullført når det oppstår et overstyrende behov. I en normal transaksjon forventer HTU31D en bekreftelse (ack – acknowledge) etter den første databyten med en endelig ikke-bekreftelse (nack – not acknowledge) og stoppsekvens helt på slutten av datasekvensen (se figur 2 igjen). Utviklere kan bruke denne funksjonen til å stanse videre overføring når CRC-data eller fuktighetsdata ikke er påkrevd, eller når det er pressende behov for en ny kommando, for eksempel nullstilling av enheten eller aktivering av varmeapparatet. Her, i stedet for å sende den forventede bekreftelsen (ack) etterfulgt av en data- eller CRC-byte, kan verten utstede den endelige ikke-bekreftelse (nack)/stopp-sekvensen for å umiddelbart terminere dataoverføringen fra sensoren.
TE sin HTU31D tilbyr et ukomplisert elektrisk og funksjonelt grensesnitt, men det å ta i bruk enhver svært sensitiv sensor krever nøye fysisk konstruksjon for å unngå utilsiktede målefenomener som oppstår fra elektrisk eller termisk interaksjon med andre integrerte enheter. På samme måte kan feil under implementeringen av kommandosekvensprotokollen eller verdikonverteringslikningene forsinke evaluering og prototyping av en sensorfunksjon for fuktighet og temperatur i et produkt som er under stadig utvikling. Et tilleggskort og tilhørende programvare fra MikroElektronika gjør det mulig for utviklere å omgå potensielle implementeringsproblemer og begynne konstruksjon og utvikling umiddelbart.
Rask prototyping og akselerert utvikling
MikroElektronika MIKROE-4306 HTU31D-baserte Temp & Hum 14 Click-tilleggskort leverer en fullstendig implementering av sensorens elektriske grensesnitt (figur 3, venstre), montert på et kort som måler 28,6 x 25,4 mm (figur 3, høyre).
Figur 3: I tillegg til å fungere som et referansekonstruksjonsskjema (venstre) for tilpasset utvikling, tilbyr MikroElektronika Temp & Hum 14 Click-kortet (høyre) en plattform for umiddelbar evaluering og rask prototyping av måleløsninger basert på HTU31D-sensoren. (Bildekilde: MikroElektronika)
I likhet med andre mikroBUS Click-tilleggskort fra MikroElektronika og andre leverandører, er MikroElektronika Temp & Hum 14 Click-kortet konstruert for å kobles til et vertsprosessorkort, for eksempel et MikroElektronika Fusion-utviklingskort, og kan brukes sammen med MikroElektronika sitt programvareutviklingsrammeverk for mikroSDK med åpen kildekode.
MikroElektronika supplerer mikroSDK-miljøet med programvarepakker som gir drivere og kortstøtte for spesifikke Click-kort og utviklingskort. For Temp & Hum 14 Click-kortet leverer MikroElektronika bindinger av Temp-Hum 14 Click-programvarepakken for sine Fusion-kortfamilier og andre MikroElektronika-kortfamilier.
Programvarepakken Temp-Hum 14 Click støtter utvikling med et HTU31D-spesifikt funksjonsbibliotek som er tilgjengelig via et programmeringsgrensesnitt (API – application programming interface). Et medfølgende prøveprogram demonstrerer drift av HTU31D-sensoren ved å bruke et enkelt sett med API-funksjoner, deriblant:
- temphum14_set_conversion, som utfører konverteringssekvensen nevnt tidligere
- temphum14_get_temp_and_hum, som utfører sensorens T og RH-datasekvens
- temphum14_get_diagnostic, som leser feilstatus fra det integrerte diagnostikkregisteret til HTU31D
Eksempelprogramkoden viser systeminitialisering, programinitialisering og utførelse av en programoppgave. Liste 1 viser en kodesnutt fra programvarepakken som er utviklet for å kjøre på MikroElektronika Fusion for KINETIS v8 MIKROE-3515-utviklingskortet, som er basert på NXP sin MK64FN1M0VDC12 Arm® Cortex®-M4 Kinetis K60-mikrokontroller.
Kopi
#include "Click_TempHum14_types.h"
#include "Click_TempHum14_config.h"
#include "Click_TempHum14_other_peripherals.h"
temphum14_diagn_t status_data;
uint32_t ser_numb;
float temperature;
float humidity;
char log_text[ 50 ];
[code deleted]
void system_init ( )
{
mikrobus_gpioInit( _MIKROBUS1, _MIKROBUS_RST_PIN, _GPIO_OUTPUT );
mikrobus_i2cInit( _MIKROBUS1, &TEMPHUM14_I2C_CFG[0] );
mikrobus_logInit( _LOG_USBUART, 9600 );
Delay_ms( 100 );
mikrobus_logWrite( "-----------------------------", _LOG_LINE );
mikrobus_logWrite( " Temp-Hum 14 click ", _LOG_LINE );
mikrobus_logWrite( "-----------------------------", _LOG_LINE );
Delay_ms( 100 );
}
void application_init ( )
{
temphum14_i2c_driver_init( (temphum14_obj_t)&_MIKROBUS1_GPIO,
(temphum14_obj_t)&_MIKROBUS1_I2C,
TEMPHUM14_I2C_SLAVE_ADDR_GND );
Delay_ms( 100 );
mikrobus_logWrite( " Hardware Reset ", _LOG_LINE );
temphum14_hw_reset( );
Delay_ms( 100 );
ser_numb = temphum14_get_serial_number( );
LongWordToStr( ser_numb, log_text );
Ltrim( log_text );
mikrobus_logWrite( "-----------------------------", _LOG_LINE );
mikrobus_logWrite( " Serial Number : ", _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_LINE );
mikrobus_logWrite( "-----------------------------", _LOG_LINE );
mikrobus_logWrite( " Software Reset ", _LOG_LINE );
temphum14_soft_reset( );
Delay_ms( 100 );
temphum14_get_diagnostic( &status_data );
Delay_ms( 10 );
display_diagnostic( );
Delay_ms( 100 );
}
void application_task ( )
{
temphum14_set_conversion( TEMPHUM14_CONVERSION_HUM_OSR_0_020,
TEMPHUM14_CONVERSION_TEMP_0_040 );
Delay_ms( 10 );
temphum14_get_temp_and_hum( &temperature, &humidity );
Delay_ms( 10 );
FloatToStr( temperature, log_text );
mikrobus_logWrite( " Temperature : ", _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_TEXT );
mikrobus_logWrite( " C", _LOG_LINE );
FloatToStr( humidity, log_text );
mikrobus_logWrite( " Humidity : ", _LOG_TEXT );
mikrobus_logWrite( log_text, _LOG_TEXT );
mikrobus_logWrite( " %", _LOG_LINE );
mikrobus_logWrite( "-----------------------------", _LOG_LINE );
Delay_ms( 3000 );
}
void main ( )
{
system_init( );
application_init( );
for ( ; ; )
{
application_task( );
}
}
Liste 1: Denne kodesnutten fra MikroElektronika-prøveprogrammet demonstrerer de grunnleggende konstruksjonsmønstrene for initialisering og utførelse av en enkel oppgave for å oppnå temperatur- og RH-målinger fra HTU31D-sensoren. (Kildekode: MikroElektronika)
Eksempelprogrammet som er inkludert i programvarepakken, viser de grunnleggende konstruksjonsmønstrene for å implementere et program ved å bruke TE HTU31D-sensoren. Slik det er illustrert i liste 1, starter hovedrutinen med å kalle en funksjon for systeminitialisering (system_init()) for å konfigurere grunnleggende drivere, deriblant HTU31D-sensoren, og kalle en funksjon (application_init()) for å initialisere programressurser. I dette tilfellet initialiserer application_init () systemets I²C-driver med en forekomst av et sensorobjekt før en sensornullstilling og et funksjonskall (temphum14_get_diagnostic()) utføres for å innhente sensorens diagnostikk og vise diagnostisk informasjon (display_diagnostic()).
Etter den korte initialiseringsfasen går prøveprogrammet inn i en endeløs sløyfe som kaller en programoppgave hvert tredje sekund. I eksempelkoden som er vist i liste 1, ber programoppgaven om en konvertering ved 0,020 % RH-oppløsning og 0,040 °C, som er HTU31D sin grunnleggende driftsmodus nevnt tidligere. I denne grunnlinjemodusen trenger HTU31D bare 1 ms for å måle RH og 1,6 ms for å måle temperatur. Prøveprogrammet angir ventetiden ved hjelp av en forsinkelse på 10 ms (delay_ms(10)) før API-funksjonen temphum14_get_temp_and_hum () kalles for å hente temperatur- og fuktighetsverdiene. Fordi biblioteket utfører transformasjonen som er nødvendig for å konvertere råverdier fra HTU31D til fysiske temperatur- og fuktighetsmåleverdier, kan de resulterende måleverdiene brukes direkte – som i dette tilfellet kun innebærer å loggføre resultatene.
Ved hjelp av denne maskinvareplattformen og det tilhørende programvaremiljøet kan utviklere raskt evaluere og utføre prototyping av HTU31D-sensorprogrammer for å oppnå nøyaktige RH- og temperaturmålinger med en rekke ulike oppløsninger. For tilpasset maskinvareutvikling fungerer MikroElektronika Temp & Hum 14 Click-kortet som en komplett referansekonstruksjon som inkluderer fullstendige skjemaer og fysisk utforming. For tilpasset programvareutvikling gir Temp-Hum 14 Click-programvarepakken en grunnleggende mal for bygging av mer omfattende programmer.
Konklusjon
Fuktighet og temperatur spiller en svært viktig rolle for integriteten til strukturer og utstyr, samt menneskers helse og velvære. Passende håndtering av fuktighet og temperatur avhenger imidlertid av en kombinasjon av målenøyaktighet og gjennomgripende målinger som har vært vanskelig å oppnå på grunn av begrensninger i konvensjonelle sensorløsninger.
En fuktighets- og temperatursensor fra TE Connectivity Measurement Specialties tilbyr den unike kombinasjonen av nøyaktighet, stabilitet, størrelse og brukervennlighet som er nødvendig for å oppfylle nye målekrav i konstruksjoner for forbrukere, industri og medisinsk bruk.
Referanser
Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.




