Časti: Presná vlhkosť a teplotný snímač (SHT1X / 7x)
Sensirion SHTXX je digitálne prepojovacia vlhkosť a teplotný snímač. Presné merania vlhkosti normálne vyžadujú starostlivý analógový dizajn, ale SHTXX presunie všetky tieto komplikované veci do jedného čipu. K dispozícii sú priechodné (SHT7X) a povrchové hory (SHT1X) verzie, používali sme povrchovú montáž SHT11 s presnosťou +/- 3%. Ukážeme vám, ako používať SHTXX nižšie.
SENSIONSIRION SHT1X / SHT7X Presná vlhkosť a snímač teploty (vyhľadávanie Octopart, počnúc 25 dolárov).
Toto nie je nízkonákladový senzor. Ocopart uvádza niekoľko miest, aby si to. Niekoľko menších zásob hobby elektroniky ho nesú; Hobby Engineering má za $ 29 (# H01509-01C). Našli sme kompatibilné stopy PCB v SHT10_11_15.LBR a SHT11.LBR na stránke sťahovania knižnice CADSOFT. PIN pripojenia pre rôzne typy balenia sú v liste: SHT1X (PDF), SHT7X (PDF).
SHTXX má dvojvodičové sériové rozhranie, ktoré vyžaduje výsuvné rezistory (R1,2), hodnoty medzi 2K a 10K musia fungovať. Sencirion odporúča oddeľovací kondenzátor (C1) len vtedy, ak je senzor napájaný cez dĺžku drôtu, ale myslíme si, že je vždy dobrý nápad zahrnúť jeden.
Ukážujeme SHTXX pomocou autobusovej pirátskej univerzálnej sériovej rozhrania v režime RAW2Wire s výstupmi HI-Z. SHTXX je napájaný z prívodu 3.3Voltu zbernice Pirate. Autobusové pirátske pult-up Resistors držia autobusy vysoko, eliminujú potrebu externých odporov R1 a R2.
Rozhranie
SHTXX komunikuje cez dva vodiče s použitím základného sériového protokolu. Protokol nie je kompatibilný s I2C, ale na autobuse s perifériami I2C môže existovať jeden SHTXX.
Príkaz
Kód
Merať teplotu
00000011
Merať relatívnu vlhkosť
00000101
Register stavu čítania
00000111
Register stavu zápisu
00000110
Mäkký reset
00011110
Päť príkazov riadi SHTXX, tieto sú uvedené v tabuľke. Prvé 3 bity sú adresou (vždy 000 000), zvyšné 5 bitov sú špeciálnym kódom príkazu.
Resetovať
Spustite transakciu vymazaním akýchkoľvek čiastkových príkazov alebo údajov z predchádzajúceho používania. Minimálne deväť hodín Ticks, zatiaľ čo údaje sú vysoké, vyčistí rozhraniu SHTXX. Autobusová pirátska syntax pre to je – ^: 9; Údaje vysoko (-), 9 hodín Ticks (^: 9).
Príkazy na SHT11 začínajú so špeciálnym štartovým podmienkam. Podobný stav štartu I2C je to jediný čas, keď sa dátový signál zmení s vysokým signálom hodín. Tento nelegálny stav spôsobí, že čip sa pripraví na nový príkaz. Start Start SHTXX je iný ako I2C, čo umožňuje, aby oba typy zariadení existujú na tej istej zbernici.
Pirátový kód zbernice na generovanie stavu ŠTARTU STARTY SHTXX je – / _ / – \ t Údaje začínajú vysoké (-), hodiny hore (/), údaje sú nízke (_), hodiny nízke (), hodiny vysoké (/), údaje sú vysoké (-), a posledné hodiny nízke prechod () končí sekvencie.
Mäkký reset je dobrý nápad, pretože vloží čip do predvoleného stavu. Pred prvým konverziou teploty alebo vlhkosti posielame Soft Reset.
RAW2Wire> – ^: 9 – / _ / – príkaz
4xx Výstup dát RAW2Wire, 1 <-ALCEAR Rozhranie
4xx RAW2Wire 0x09 Ticks
4xx RAW2Wire dátový výstup, 1 <-start stave
4xx RAW2Wire hodiny, 1
4xx Výstup dát RAW2Wire, 0
4xx RAW2Wire hodiny, 0
4xx RAW2Wire hodiny, 1
4xx Výstup údajov RAW2Wire, 1
4xx RAW2Wire hodiny, 0
420 RAW2Wire Write: 0x1e <-soft Reset Code
4xx surový2wire čítanie bit: 0 <-acknowledge bit, ok
RAW2Wire>
Po prvé, vymažeme rozhranie (- ^: 9), potom pošlite stav štartu (- / _ \ / – \ t Nasleduje príkaz reset (0B00011110 = 0x1e). SHTXX potvrdzuje (ACKS) príkazy vytiahnutím dátového riadku nízke pre jeden bit po vysielaní príkazu. Čítame jeden bit (!) Ak chcete získať štatút potvrdenia; 0 je úspech, 1 signalizuje chybu.
Teplota
Teraz môžeme čítať teplotu. To sa deje v dvoch krokoch, s oneskorením pre konverziu teploty.
RAW2Wire> – ^: 9 – / _ / – 0B00000011!
4xx Výstup dát RAW2Wire, 1 <-ALCEAR Rozhranie
4xx RAW2Wire 0x09 Ticks
4xx RAW2Wire dátový výstup, 1 <-start stave
...
4xx RAW2Wire hodiny, 0
420 RAW2Wire Write: 0x03 <-start konverzia teploty
4xx surový2wire čítanie bit: 0 <-ack bit, ok
RAW2Wire>
Po prvé, pošleme štart stavu a príkaz konverzie teploty (00000011 = 0x03). SHTXX odpovedá na úspešný príkaz vytiahnutím dátovej linky na jeden bit (ACK). Po bitke ACK je dátový riadok vysoko až do koncového konania.
RAW2Wire>.
4xx RAW2Wire Data Input, State: 0 <-Data Nízka, keď sa uskutoční
RAW2Wire>
Keď je dátový riadok nízky, konverzia teploty je dokončená. ‘.’ Je príkalom Pirate Autobus čítať dátový stav bez hodín. Teraz môžeme dostať výsledok.
RAW2Wire> R_ ^ R_ ^ R_ ^
430 RAW2Wire číta: 0x17 <-Data Byte 1
4xx Výstup dát RAW2Wire, 0 <-Data Low
4xx RAW2Wire 0x01 Hodiny Ticks <-send ACK bit
430 RAW2Wire číta: 0xcc <-data Byte 2
4xx Výstup dát RAW2Wire, 0
4xx RAW2Wire 0x01 Hodiny Ticks
430 RAW2Wire Read: 0x0c <-crc
4xx Výstup dát RAW2Wire, 0
4xx RAW2Wire 0x01 Hodiny Ticks
RAW2Wire>
Každé bajtové čítanie (r) rUpozorňujeme, že i2c štýl potvrdenie s údajmi nízke. Robíme to s sekvenciou _ ^; Nízke údaje (_), jedno hodiny Tick (^).
Prvé dva bajty sú odčítaní teploty (0x17cc), po ktorom nasleduje CRC (0x0C). Surová hodnota (0x17cc = 6092) sa prevedie na stupne Celzia pomocou rovnice a koeficientov na strane 9 katastrof. Nastavenia teploty sú štandardne 14bits:
T = -39,7 + 0,01 * x
21,22C = -39,7 + (0,01 * 6092)
Vlhkosť
Konverzie vlhkosti sa spúšťajú s kódom 00000101 (0x05 hex).
RAW2Wire> – ^: 9 – / _ / – \ _B00000101! <-Command
4xx Výstup dát RAW2Wire, 1 <-ALCEAR Rozhranie
4xx RAW2Wire 0x09 Ticks
4xx RAW2Wire dátový výstup, 1 <-start stave
...
4xx RAW2Wire hodiny, 0
420 RAW2Wire Write: 0x05 <-start konverzia vlhkosti
4xx surový2wire čítanie bit: 0 <-ack bit, ok
Ako predtým, deviaty potvrdzovací bit je nízky, ak SHTXX spracoval príkaz.
RAW2Wire>.
4xx RAW2Wire Data Input, State: 0 <-Data Nízka, keď sa uskutoční
Dátový riadok je vysoko a potom sa vráti nízke, keď sa konverzia vlhkosti vykonáva.
RAW2Wire> R_ ^ R_ ^ R_ ^
430 RAW2Wire číta: 0x05 <-Data Byte 1
4xx Výstup dát RAW2Wire, 0 <-Data Low
4xx RAW2Wire 0x01 Hodiny Ticks <-ack bit
430 RAW2Wire číta: 0x80 <-Data Byte 2
4xx Výstup dát RAW2Wire, 0
4xx RAW2Wire 0x01 Hodiny Ticks
430 RAW2Wire Čítať: 0x46 <-crc
4xx Výstup dát RAW2Wire, 0
4xx RAW2Wire 0x01 Hodiny Ticks
RAW2Wire>
Kompletná konverzia vytvára tri bajtové odozvy. Prvé dva bajty sú čítanie surovej vlhkosti (0x0580 = 1408), konečný bajt je CRC (0x46), ktorý môže byť použitý na overenie integrity údajov.
Odčítanie vlhkosti majú štandardne 12bits rozlíšenia, previesť na vlhkosť pomocou tejto rovnice:
RH = -2,0468 + 0,0367 (x) + (-0,0000015955 * (x ^ 2))
46,46% RH = 2,0468 + 0,0367 (1408) + (-0,0000015955 * (1408 ^ 2))
Záver
Toto nie je nízkonákladový senzor, ale nevyžaduje starostlivý analógový dizajn ako séria Honeywell HiH. Pracovali ste s senzorom vlhkosti?
Ako tento príspevok? Pozrite sa na články časti, ktoré ste mohli vynechať.