Domáci barometer obvod na mikrokontroléri. Elektrické obvody v asistentoch

Domáci barometer obvod na mikrokontroléri. Elektrické obvody v asistentoch

Obvod barometra na meranie atmosférického tlaku je zostavený pomocou tlakového snímača MPXHG6115. Samotný snímač poskytuje na svojom výstupe napätie úmerné tlaku vzduchu. Prevádzkový rozsah pokrýva atmosférický tlak (90 - 110 kPa) na hladine mora. Minimálny prevádzkový tlak vzduchu snímača je 15 kPa, čo umožňuje jeho použitie aj v horských oblastiach. K tomu však treba prepočítať odpory na jeho doske. Pre atmosférický tlak v oblasti blízko hladiny mora je rozsah výstupného napätia snímača 3,625 - 4,55 voltov. V analógovej časti obvodu (v diagrame tieňované) sa na výstupe generuje lineárne napätie v rozsahu 0 - 5 V, čo je v normálnom rozsahu mikrokontroléra ADC. Zhoda sa vykonáva pomocou dvoch operačných zosilňovačov. Ľavý (v diagrame) poskytuje optimálny zaťažovací odpor pre snímač (51 kOhm) a invertuje referenčné napätie asi 2,5 V. Referenčné napätie sa získa pomocou deliča napätia pozostávajúceho z dvoch rezistorov 11,5 k (presnosť 1%). . Pravý operačný zosilňovač poskytuje potrebné škálovanie napätia a počiatočné nastavenie na 0. Odporúčame použiť duálny OPA2374.

technické údaje

  • Rozsah merania: 700 - 800 mm Hg
  • Napájacie napätie: 5 voltov
  • Prúdový odber: 40 mA

Snímač priblíženia a analógový zosilňovač sú namontované na malej doske s plošnými spojmi. K základnej doske sa pripája pomocou 3 vodičov. Testovací obvod pozostáva z mikrokontroléra a LCD modulu s rozhraním namontovaným na jeho zadnej strane. Karta rozhrania vykonáva všetku komunikáciu s PIC iba pomocou dvoch vodičov a jej softvér implementuje zjednodušenú verziu štandardného rozhrania I2C. Program radiča PIC16F84 priraďuje svoj pinový vstup RC3 vstupu ADC. Jednoducho vypočíta tlak na základe vstupného napätia podľa vzorca, prevedie ho na BCD a zobrazí na obrazovke.

Popis hodiniek.

Bolo potrebné aktualizovať budík v spálni. Na úpravu boli použité čínske hodinky VST-716. Medzi nevýhody, ktoré sú im vlastné: blikanie indikátora; Farba indikátora v mojom modeli bola nepríjemná červená; Jas indikátora je príliš jasný pre noc a nedostatočný pre deň; a čo je najdôležitejšie, aj keď je zabezpečená prevádzka na batériu, ide len o chod hodín, aby sa nezmýlili, indikátor a budík nefungujú. No a tiež nuda.

Po otvorení som zistil, že dynamická indikácia prichádza s frekvenciou siete (preto to blikanie). Indikátor je „orezaný“, to znamená, že v nepoužitých segmentoch nie sú žiadne LED. Prepínanie pre dynamiku je mierne povedané zvláštne a je vlastné dizajnu ukazovateľa. Prišiel som na to, že okrem puzdra a tlačidiel (po prepracovaní) sa nedá nič použiť. Preto som sa rozhodol všetko radikálne prerobiť.

1. Funkcie.

1.1. Hodiny, formát zobrazenia času 24-hodinový, hodiny:minúty.

1.2. Digitálna korekcia presnosti. Denná korekcia je možná ±25 sek. Nastavená hodnota 1 hodina 0 minút 30 sekúnd sa pripočíta/odpočíta od aktuálneho času.

1.3. Alarm. V určenom čase (nastavenom v odseku 2.2.1) zaznie počas jednej minúty krátke dvojité signály. Zvuk môžete vypnúť pred plánovaním stlačením tlačidla ALARM. Keď je budík zapnutý (zapnite ho na zadnej strane v polohe Zapnuté), pri zobrazovaní času sa uvádza bodka najmenšou významnou číslicou. Ak bol indikátor vypnutý, po zhasnutí budíka sa aktivuje automatické nastavenie jasu.

1.4. Teplomer. Rozsah meranej teploty je -55,0 ÷ 125,0 o C. Ak je teplota nad +99,9 alebo pod -9,9 o C, nezobrazujú sa desatiny stupňa. Ak dôjde k chybe v činnosti snímača, na indikátore sa zobrazia pomlčky.

1.5. Barometer. Meranie atmosférického tlaku v mm Hg. čl.

1.6. Indikácia. Alternatívna, animovaná zmena zobrazenia. Čas zobrazenia sa nastavuje v nastaveniach podľa bodu 2.2.3. Stlačením tlačidla MÍNUS vykoná sa manuálny výber zobrazených informácií. Stlačením tlačidla SET prepne hodiny do režimu automatickej zmeny informácií.

1.7. Použitie stálej pamäte mikrokontroléra na uloženie nastavení pri vypnutí napájania.

1.8. Manuálne alebo automatické nastavenie jasu indikátora v závislosti od úrovne osvetlenia.

Režim jasu sa volí v hlavnom režime tlačidlom PLUS v kruhu: indikátor vypnutý - automatické nastavenie jasu - režim manuálneho nastavenia jasu.

Limity nastavenia jasu v automatickom režime a úroveň jasu v manuálnom režime sa nastavujú v nastaveniach podľa bodu 2.2.4.

1.9. Funguje z nezávislého zdroja energie (dve batérie „AAA“).

2. Nastavenie.

2.1. Keď je napájanie zapnuté, hodiny sú v hlavnom režime.

2.2. Stlačením tlačidla PONUKA Vstúpite do režimu nastavení a vyberiete skupinu parametrov na inštaláciu. V rámci skupiny sa pomocou tlačidla vyberá parameter, ktorý sa má nastaviť SET. K dispozícii na inštaláciu postupne:

2.2.1. Skupina ALAr:

Minúty, kedy sa spustí budík;

Budík.

2.2.2. Skupina CLOC:

Sekundy (reset na nulu pri stlačení tlačidiel) PLUS alebo MÍNUS);

Korekčná suma. Najdôležitejšou číslicou je symbol „ s".

2.2.3. Skupina diSP:

Zobrazenie času aktuálneho času. Najvyššími číslicami sú symboly „ tc". Rozsah nastavenia 0÷99 s. Ak je nastavený na 0, čas sa nezobrazí;

Čas zobrazenia teploty. Najvyššími číslicami sú symboly „ tt". Rozsah nastavenia 0÷99 s. Pri nastavení na 0 sa teplota nezobrazí;

Čas indikácie tlaku. Najvyššími číslicami sú symboly „ tP". Rozsah nastavenia 0÷99 s. Ak je nastavený na 0, tlak sa nezobrazí;

Výber rýchlosti animácie. Najdôležitejšou číslicou je symbol „ P Rozsah nastavenia je 0÷99. Jedna jednotka zodpovedá približne 2 ms, čím vyššia hodnota, tým pomalšia animácia.

2.2.4. Skupina LiGH:

Minimálny prah jasu pre automatický režim. Najvyššími číslicami sú symboly „ L_".

Maximálny prah jasu pre automatický režim. Najvyššími číslicami sú symboly „ ".

Úroveň jasu v manuálnom režime. Najvyššími číslicami sú symboly „ L-".

2.3. Nastavovaný parameter bliká.

2.4. Podržaním tlačidiel PLUS/MÍNUS parameter sa nastaví rýchlo.

2.5. Po ~10 sekundách od posledného stlačenia tlačidla sa hodinky prepnú do hlavného prevádzkového režimu a nové parametre sa zapíšu do energeticky nezávislej pamäte.

3. Prevádzka z autonómneho zdroja energie.

3.1 Pri výpadku hlavného napájania budú hodiny naďalej fungovať, ak sú vložené batérie.

3.2 Pri napájaní z batérií sa indikácia vypne, budík zostáva v činnosti.

3.3 Keď sa budík spustí, minútu zaznie dvojité pípnutie a indikátor bliká, aby sa zobrazil čas. Stlmte zvuk stlačením tlačidla ALARM alebo prepnite na zadnú stranu hodín do polohy Vypnuté.

3.4 Indikáciu môžete krátko zapnúť (~4 sekundy) stlačením tlačidla ALARM. V tomto režime môžete prezerať a nastavovať parametre.

3.5 Pri prevádzke na batérie sa nevykonávajú merania teploty a tlaku.

3.6 Jas indikátora je nastavený na manuálny režim.

4. Poznámky.

1. Pre minimálny a maximálny prah jasu je rozsah nastavenia 0 ÷ 99, ale program zavádza obmedzenia: minimum nemôže byť väčšie alebo rovné maximu a naopak.

2. Pri nastavovaní parametrov jasu sa informácie na indikátore zobrazujú so zvolenou hodnotou jasu, okrem prípadov, keď sú hodiny napájané batériami.

3. Je potrebné porovnať rýchlosť animácie a čas zobrazenia informácií. Ak zvolíte pomalú animáciu a krátky čas zobrazenia, môže sa stať, že informácie nestihnú byť úplne aktualizované pred ďalšou smenou.

5. Vlastnosti schémy.

1. Ak máte v úmysle použiť funkciu automatického nastavenia jasu indikátora, potom je namiesto RV1 nainštalovaný fotorezistor. A hodnota odporu R17 by sa mala zvoliť tak, aby sa získala požadovaná citlivosť systému.

2. Snímač teploty môže pracovať aj s 2-vodičovým zapojením. Ak plánujete merať teplotu v miestnosti, kde sú hodiny nainštalované, snímač by mal byť stále umiestnený mimo skrinky hodín.

3. Výškový reproduktor BUZ1 musí mať zabudovaný generátor. V závislosti od spotreby prúdu možno budete musieť nainštalovať zosilňovač (tranzistorový spínač).

4. Indikátor - 4 jednomiestny 0,8" SM610806B/8, spoločná anóda, modrý. Jas viac než dostatočný.

5. Pri flashovaní firmvéru MK by ste mali nainštalovať FUSE, aby fungoval z interného generátora hodín s frekvenciou 8 MHz. Príklad inštalácie FUSE pre program CVAVR na snímke obrazovky.

6. Snímač tlaku GY-65.

7. Projekt (toto je v podstate obvod) nezobrazuje napájacie kolíky mikroobvodov.

8. Hodiny sú napájané z externého zdroja stabilizovaného napätia +5V, prúdový odber je cca 30 mA. V mojom prípade používam nabíjačku na mobil. Záložné napájanie - dva "AAA" prvky.

Archív obsahuje sadu súborov: firmvér, projekt v Proteus na simuláciu, dva súbory Proteus, na ktorých boli postavené pečate, popis, fotografiu vzhľadu. V článku neuvádzam dosky plošných spojov, pretože som počas vývoja urobil množstvo chýb a musel som urobiť nejaké zmeny už na doske. Doska je navyše vyrobená špeciálne pre tento prípad. Ak by to niekto potreboval, napíšte, dám to do formulára. Príležitostne nafotím aj vnútornú štruktúru hodiniek.

Vytvorené na diskusiu vo fóre.

Teplota
a okolitý tlak vzduchu majú veľký vplyv na pohodu
osoba. Je dôležité poznať ich na túre, v krajine aj doma. Navrhovaný kompaktný
Zariadenie sa na to dokonale hodí. Dá sa použiť aj na
hrubý odhad výšky, napríklad pri výstupe na hory. Znížiť
tlak na 1 mmHg zodpovedá zvýšeniu výšky nad hladinou
more cca 10 m.

Limity
meranie a chyba prístroja
určená hlavne snímačmi teploty, ktoré sú v ňom použité -55…+125
°C, atmosférický tlak 225. 825 mmHg Zariadenie je napájané
napätie 9 V z galvanickej batérie typu „Krona“ alebo zo siete
adaptér Odber prúdu - 30 mA (s vypnutým podsvietením LCD). Rozmery
puzdro - 118×72 28 mm. Prevádzka zariadenia bola testovaná pri teplotách od -5 do
+25 C Chyba merania tlaku nepresiahla 4 mm Hg Diagram
Zariadenie je znázornené na obr. 1 modul zostavený na samostatnej doske
merania tlaku sú zvýraznené prerušovanou čiarou.

Požadovaný
aby snímač fungoval, hodinové impulzy s frekvenciou 32768 Hz generuje kremeň
generátor založený na prvkoch mikroobvodu DD1.V zásade by tieto impulzy mohli
vytvorte mikrokontrolér DD2 pomocou jedného z časovačov, ktoré obsahuje
To by si však vyžadovalo skomplikovanie programu.

Napätie
3,6 V na napájací snímač B1 a mikroobvod DD1 sa získa pomocou zenerovej diódy VD1
Rezistory R1 -R3 - záťaž pre vedenia spájajúce snímač s mikrokontrolérom
Rozhranie 1C a signál XCLR Je zobrazená doska s plošnými spojmi modulu merania tlaku
na obr. 2

Hoci
Snímač HP03SB obsahuje aj zabudovaný merač teploty, jej odčítanie
sú používané programom mikrokontroléra DD2 len na objasnenie výsledkov
merania tlaku. Spolu s hodnotou tlaku sa zobrazí LCD HG1
hodnoty z iného snímača teploty - DS1624 (B2) Dôvod je jednoduchý - to
presnejšie, ak je to potrebné, snímač B2 môže byť vzdialený a umiestnený tam, kde
teplota je najzaujímavejšia. Pri inštalácii v kryte zariadenia
tento snímač by mal byť umiestnený na bočnej stene a pozdĺž nej vytvoriť okno
velkosti Inak chyba 1,5 ..1,8 ‘C je nevyhnutna, ako som videl v praxi
Napájacie napätie +5 V je stabilizované mikroobvodom DA1.
odpor R8 nastaví najlepší kontrast obrazu na LCD pomocou tlačidla
SB1 zapnite podsvietenie svojej výsledkovej tabule. Zostávajúce prvky sú potrebné na prevádzku
mikrokontrolér Elements R7 R9 SY VD2 - obvod na inštaláciu mikrokontroléra do
počiatočný stav Quartz rezonátor ZQ2 s kondenzátormi C11.C12 - nastavenie frekvencie
obvod generátora hodín mikrokontroléra.

Zapnuté
ryža. 3 znázorňuje nákres hlavnej dosky plošných spojov zariadenia a na obr. 4 -
usporiadanie dielov na ňom. V zobrazenom priechodnom otvore je vyplnený (doska
na obr. 2), je potrebné vložiť a prispájkovať drôt na oboch stranách
prepojka. Pre mikrokontrolér DD1 musí byť poskytnutý panel, pretože
v procese nastavovania zariadenia bude musieť byť tento mikroobvod odstránený a znova
Inštalácia.

Zastavme
na niektorých funkciách snímača HP03SB. celkový pohľad a celkové rozmery
znázornené na obr. 5 Ak chcete určiť tlak, musíte si najprv prečítať
z pamäte inštancie tohto senzora nainštalovaného v zariadení, dvojbajtový
hodnoty koeficientov C, -C- a jednobajtové hodnoty parametrov A-D. Všetky sú individuálne
pre tento prípad.

výsledky
merania sú dve dvojbajtové čísla - D1 - tlak D2 -
teplota. Čítanie ich spamäti
senzor, program musí vypočítať pomocné hodnoty

Viac
Podrobné informácie o snímači HP03SB sú dostupné v . Treba však poznamenať
že adresy vnútornej pamäte snímača, kde sú uložené, sú uvedené nesprávne
jeho jednotlivé konštanty. Mali by ste použiť uvedené adresy
c Zariadenie môže využívať aj iné snímače radu NROZ Niektoré z nich
majú menšiu presnosť, iné sa líšia dizajnom.

Job
program začína inicializáciou mikrokontroléra a LCD portov Úspešne
inicializácia je potvrdená zobrazením nápisu „TERMOBAR“ (písm
N chýba). Potom sa inicializuje tlakový snímač, ktorý načíta stav registra
Stav modulu mikrokontroléra TW1 nie je kontrolovaný.

Pre
na čítanie koeficientov a parametrov snímača je určený špeciálny program
ReadCC, ktorý je potrebné načítať do programovej pamäte plne zostaveného mikrokontroléra
zariadenie (s pripojeným modulom merania tlaku), zapnite ho a prejdite
na niekoľko sekúnd ho vypnite. Potom musíte odstrániť mikrokontrolér a
pomocou programátora na čítanie obsahu jeho EEPROM. Obsahuje adresy
uvedené v tabuľke. 1 sa nachádzajú hodnoty jednotlivých koeficientov a parametrov
senzor Ďalej musíte otvoriť súbor operačného programu barometer-teplomer
BARO-2 asm, nájdite v ňom fragment uvedený v tabuľke. 2 a opravte hodnoty
konštanty deklarované tam v súlade s tými, ktoré boli načítané z parametra D EEPROM
sa v programe nepoužíva

Teraz
program je pripravený pracovať s inštanciou snímača nainštalovanou v zariadení
Zostáva to už len odvysielať pomocou AVR Studio a načítať výsledný HEX súbor
do mikrokontroléra Upozorňujeme, že sa počíta podobný súbor priložený k článku
pracovať so snímačom, ktorý mal autor Ak ho načítate do mikrokontroléra
zariadenie s inou inštanciou snímača tlaku bude fungovať, ale bude nepresné
čítania

IN
Pri vývoji boli použité fragmenty programov z a . Konverzné rutiny
čísla zo hexadecimálneho na binárny desiatkový formát sú prepracované z
berúc do úvahy bitovú hĺbku čísel. Rutiny dvojbajtového násobenia a delenia
čísla určené pre mikrokontroléry rodiny MCS-51 boli preložené do
assembler AVRASM Podprogram, ktorý prešiel najmenšími zmenami
LCD ovládanie, berú sa do úvahy iba vlastnosti indikátora MT-10S1 a pre vstup a výstup
signály využívajú iné porty mikrokontroléra.

Dnes by som chcel zvážiť zariadenie, ktoré je barometrom - meračom atmosférického tlaku. Použitie takéhoto zariadenia je potrebné na sledovanie aktuálneho atmosférického tlaku vyjadreného na indikátore zariadenia v dvoch meracích jednotkách - v medzinárodnom systéme jednotiek Pascal (Pa alebo Pa) a v nesystémových jednotkách merania - milimetroch ortuti. To druhé je s najväčšou pravdepodobnosťou bežnejšie v našich krajinách, pretože sa používa pri predpovediach počasia. Funkcionalita tohto prístroja sa však neobmedzuje len na meranie atmosférického tlaku, meria aj teplotu a určuje nadmorskú výšku (nadmorskú výšku).

Schéma zariadenia na mikrokontroléri AVR ATmega8 je uvedená nižšie:

Ako snímač atmosférického tlaku v okruhu sa používa BMP180 vyrobený spoločnosťou Bosch. Pravdupovediac, táto firma robí dobré a kvalitné veci, ale datasheet k tomuto senzoru nie je príliš obsiahly v porovnaní s datasheetmi iných firiem, bez skúseností s čítaním takejto dokumentácie to bude ťažké pochopiť. Inžinieri Bosch považovali za potrebné poskytnúť informácie len o najzákladnejších parametroch, ale všetko, čo potrebujeme, je tam, aj keď miestami stručne. Snímač atmosférického tlaku BMP180 môže pracovať cez rozhranie I2C aj rozhranie SPI (vyberá sa pripojením požadovaných kolíkov snímača). Tento obvod používa rozhranie I2C. Keďže snímač vyžaduje napájanie až 3,3 voltu a mikrokontrolér je napájaný z 5 voltov jednosmerného prúdu, pre správnu činnosť je potrebné použiť prispôsobenie úrovne I2C. Na tento účel bol vybraný mikroobvod vyrobený spoločnosťou NXP PCA9517. Samotný snímač odoberá energiu zo stabilizátora napätia pri 3,3 V, rovnaký výkon je dodávaný aj do pull-up odporov R6 a R7. Úrovne signálu sú konvertované čipom PCA9517 a signály zo snímača atmosférického tlaku sú prenášané do mikrokontroléra s úrovňami až 5 voltov. 5 voltov je pripojených k pull-up odporom R4 a R5. Tieto pull-up odpory sú potrebné pre fungovanie protokolu I2C - s ich pomocou sa generujú vysoké úrovne signálu a keď mikroobvod klesne toto napätie z pull-up odporov na nulový potenciál, vytvorí sa nízky logický signál. V tejto konfigurácii napätí logických úrovní 3,3 a 5 voltov môžete urobiť ako poslednú možnosť a bez prispôsobenia úrovní, pretože podľa noriem s takýmito napájacími napätiami sú potenciály nízkych úrovní rovnaké a vysoká úroveň je rovnaký pre 5 voltov aj 3 ,3 voltov, rozdiel je len v maximálnych hodnotách. Bolo však rozhodnuté neriskovať a stále uplatňovať koordináciu na úrovni – robiť všetko podľa pravidiel. Hodnoty pull-up odporu môžu byť od 4,7 kOhm do 10 kOhm. Kondenzátory C3 a C4 sú potrebné pre stabilnú prevádzku snímača atmosférického tlaku.

Dôležitou funkciou tohto snímača atmosférického tlaku je kalibrácia získaných meraní. Pamäť snímača má 11 koeficientov navrhnutých na zlepšenie presnosti merania parametrov. Nie všetko je však také jednoduché - týmito koeficientmi nemôžete jednoducho násobiť. Na získanie konečných výsledkov obsahuje údajový list celý príklad výpočtu na strane 15, dokumentácia k senzoru je uvedená nižšie. V súlade s týmito informáciami zostavujeme program pre mikrokontrolér v jazyku C.

// získajte hodnoty teploty a atmosférického tlaku s prihliadnutím na kalibračné koeficienty void BMP180_calculation (int32_t* teplota, int32_t* tlak) ( //int8_t i; int32_t ut=0; int32_t up=0; int32_t x1, x2, b5, , x3, b3, p; uint32_t b4, b7; BMP180_get_temper(); ut+=teplota_1; BMP180_get_pressure(); up=pressure_1; x1 = ((int32_t)ut - (int32_t)ac6) * (int32_t)ac5; x2 = ((int32_t)mc<< 11) / (x1 + md); b5 = x1 + x2; *temperature = (b5 + 8) >> 4; b6 = b5 - 4000; x1 = (b2 * ((b6 * b6) >> 12)) >> 11; x2 = (ac2 * b6) >> 11; x3 = x1 + x2; b3 = (((((int32_t) ac1) * 4 + x3)<>2; x1 = (ac3 * b6) >> 13; x2 = (b1 * ((b6 * b6) >> 12)) >> 16; x3 = ((x1 + x2) + 2) >> 2; b4 = (ac4 * (uint32_t) (x3 + 32768)) >> 15; b7 = ((uint32_t) (hore - b3) * (50 000 >> OSS)); //p = b7< 0x80000000 ? (b7 * 2) / b4: (b7 / b4) * 2; if (b7 < 0x80000000) { p = (b7 << 1) / b4; } else { p = (b7 / b4) << 1; } x1 = (p >> 8) * (p >> 8); x1 = (x1 * 3038) >> 16; x2 = (-7357 * p) >> 16; *tlak = p + ((x1 + x2 + 3791) >> 4); )

Každý snímač má svoje vlastné kalibračné koeficienty (zrejme sú kompletne nastavené z výroby v súlade s nejakými kontrolnými testami). Tieto koeficienty sa musia pred použitím prečítať z registra snímača.

// získanie údajov pre kalibráciu void BMP180_Calibration (void) ( ac1 = Čítať (0xAA); ac2 = Čítať (0xAC); ac3 = Čítať (0xAE); ac4 = Čítať (0xB0); ac5 = Čítať (0xB2); ac6 = Čítať (0xB4); b1 = Čítanie (0xB6); b2 = Čítanie (0xB8); mb = Čítanie (0xBA); mc = Čítanie (0xBC); md = Čítanie (0xBE); ) // čítanie registra 16 bit uint16_t Čítanie (uint8_t adresa) ( uint16_t msb=0; uint16_t lsb=0; údaje uint16_t; i2c_start_cond(); // spustenie i2c i2c_send_byte(BMP180_W); // prenos adresy zariadenia, režim nahrávania i2c_send_byte(adresa); // zastavenie prenosu pamäte () ; // zastavenie i2c i2c_start_cond(); // spustenie i2c i2c_send_byte(BMP180_R); // prenos adresy zariadenia, režim čítania msb = i2c_get_byte(0); lsb = i2c_get_byte(1); i2c_stop_cond(); // i2c dáta = (msb<< 8) + lsb; return data; }

Na získanie hodnoty nadmorskej výšky alebo nadmorskej výšky tiež použijeme vzorec uvedený v údajovom liste a získame nasledujúcu funkciu:

// funkcia na výpočet nadmorskej výšky (nadmorskej výšky) (funkcia zaberá veľa pamäte kvôli matematickým funkciám!!!) void bmp180CalcAltitude(int32_t pressure)( float temp; temp = (float) pressure/101325; temp = 1 -pow (teplota, 0,19029); //nadmorská výška = kolo(44330*teplota*10); nadmorská výška = 44330*teplota*100; //získanie nadmorskej výšky v dm )

V závislosti od potreby môže byť táto funkcia vyradená zo zdrojového kódu, pretože na výpočet musíte použiť knižnicu - metódy v nej implementované na výpočet potrebných akcií zaberajú veľa pamäte, flash aj RAM, ale ja nič lepšie som zatiaľ nevymyslel.

Tento senzor dokáže merať aj atmosférický tlak s rôznou presnosťou. Pre nastavenie presnosti je potrebné túto hodnotu preniesť do snímača cez I2C a správne nastaviť oneskorenie pred načítaním registrov s prijatými údajmi (v závislosti od presnosti snímač potrebuje na meranie viac alebo menej času). Kód programu vyzerá takto:

// prečítanie hodnoty atmosferického tlaku void BMP180_get_pressure(void)( i2c_start_cond(); // spustenie i2c i2c_send_byte(BMP180_W); // prenos adresy zariadenia, režim záznamu i2c_send_byte(0xF4); // prenos adresy pamäte i2c_send_byte(+3xend_byte OSS<<6)); // передача разрешения (oss) адреса памяти температуры i2c_stop_cond(); // остановка i2c _delay_ms(26); // время на замер (от 5 до 26 мс в зависимости от разрешения (oss)) i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_W); // передача адреса устройства, режим записи i2c_send_byte(0xF6); // передача адреса памяти i2c_stop_cond(); // остановка i2c i2c_start_cond(); // запуск i2c i2c_send_byte(BMP180_R); // передача адреса устройства, режим чтения D1=i2c_get_byte(0); // MSB D2=i2c_get_byte(0); // LSB D3=i2c_get_byte(1); // XLSB i2c_stop_cond(); // остановка i2c pressure_1 = ((D1 << 16) + (D2 << 8) + D3) >> (8-OSS); // výpočet tlaku (v Pa)

Pri zostavovaní obvodu bol použitý snímač atmosférického tlaku BMP180 na továrenskej doske plošných spojov montovanej v Číne (modul obsahuje 3,3-voltový stabilizátor napájania s kondenzátormi, pull-up odpory pre rozhranie I2C a kondenzátory v napájacom zväzku samotný snímač, mikroobvod alebo jednoducho obvod prispôsobenia úrovne nie je na tejto doske k dispozícii, takže sa musí použiť v inej verzii):

Celý obvod je napájaný jednoduchým napájacím modulom na silovom transformátore. Striedavé napätie je usmernené štyrmi diódami 1N4007 VD1 - VD4, zvlnenie je vyhladené kondenzátormi C1 a C2. Hodnota kondenzátora C2 môže byť zvýšená na 1000 - 4700 µF. Štyri usmerňovacie diódy je možné nahradiť jedným diódovým mostíkom. Aplikovaná značka transformátora BV EI 382 1189 - konvertuje 220 voltov AC na 9 voltov AC. Výkon transformátora je 4,5 W, čo je celkom dosť a s určitou rezervou. Takýto transformátor je možné nahradiť akýmkoľvek iným pre vás vhodným napájacím transformátorom. Buď je možné tento napájací modul obvodu nahradiť pulzným zdrojom napätia, môžete zostaviť obvod flyback prevodníka alebo použiť napríklad hotové napájanie z telefónu - všetko je vec vkusu a potrieb. Usmernené napätie z transformátora je stabilizované na čipe lineárneho stabilizátora L7805,môže byť nahradený domácim analógom päťvoltového lineárneho stabilizátora KR142EN5A, alebo môžete použiť iný čip stabilizátora napätia v súlade s jeho zapojením v obvode (napríklad LM317 alebo spínacie stabilizátory LM2576, LM2596, MC34063 atď. ). Ďalej je 5 voltov stabilizovaných ďalším mikroobvodom - AMS1117 vo verzii, ktorá dáva výkon 3,3 voltu. Toto napätie sa používa na napájanie snímača atmosférického tlaku BMP180 podľa dokumentácie. Hodnoty kondenzátorov v obvodoch mikroobvodov stabilizátora napätia sa môžu meniť v širokých medziach v rámci daného rádu.

No, srdcom obvodu je mikrokontrolér Atmega8. Tento mikrokontrolér je možné použiť ako v puzdre DIP-28, tak aj vo verzii SMD v puzdre TQFP-32. Rezistor R3 potrebné na zabránenie samovoľnému reštartu mikrokontroléra v prípade náhodného šumu na pine PC6. Rezistor R3 pritiahne napájací zdroj k tomuto kolíku a spoľahlivo na ňom vytvorí potenciál. Na indikáciu nameraných parametrov sa používa displej z tekutých kryštálov (LCD) SC1602. Má 2 línie postáv so šestnástimi dielikmi v každej z nich. LCD displej je pripojený k mikrokontroléru pomocou štvorbitového systému. Variabilný odpor R2 je potrebný na nastavenie kontrastu znakov na displeji. Otáčaním posúvača tohto odporu dosiahneme pre nás najjasnejšie hodnoty na obrazovke. Podsvietenie LCD displeja je organizované pomocou kolíkov „A“ a „K“ na doske displeja. Podsvietenie sa zapína cez odpor obmedzujúci prúd - R1. Čím vyššia hodnota, tým stmievačnejšie bude podsvietenie displeja. Tento odpor však netreba zanedbávať, aby nedošlo k poškodeniu podsvietenia. Výkon všetkých rezistorov s konštantným odporom je 0,25 W.

Obvod bol zostavený a odladený na vývojovej doske pre mikrokontroléry Atmega8:

Výsledkom je, že táto schéma má nasledujúce funkcie:

  • meranie a zobrazenie atmosférického tlaku v dvoch meracích jednotkách (Pascal a milimetre ortuti)
  • meranie a zobrazenie okolitej teploty
  • výpočet a zobrazenie polohy snímača vzhľadom na hladinu mora (výpočet nadmorskej výšky)
  • Údaje na displeji sa aktualizujú každé dve sekundy

V tomto zariadení sa údaj o polohe vzhľadom na hladinu mora počíta, nie meria. Výpočet sa vykonáva pomocou odporúčaného vzorca z údajového listu pre zjednodušený výpočet polohy vzhľadom na hladinu mora v závislosti od atmosférického tlaku. Ako viete, čím vyššie sme, tým nižší je atmosférický tlak. Práve táto závislosť sa používa pri výpočte. Avšak vzhľadom na to, že pre každé jednotlivé územie sa počasie môže zmeniť a s tým bude kolísať aj atmosférický tlak. Na základe týchto úvah, ale aj experimentálnych pozorovaní sa bude poloha nad hladinou mora neustále vznášať v závislosti od kolísania atmosférického tlaku (výška by sa takou rýchlosťou teoreticky meniť nemala). Táto funkcia sa považuje za doplnkovú a nie úplne spoľahlivú (hladina nad morom sa počas dňa môže vznášať plus mínus 5 percent - a to je podľa mňa veľa). Ale je to atmosférický tlak, ktorý tento senzor meria pomerne presne – zhoda s aktuálnou predpoveďou počasia od kompletnej až po nezrovnalosť nie viac ako jedno percento. Teplota v tomto snímači je tiež meraná veľmi presne.

Na záver môžem povedať, že tento senzor atmosférického tlaku plní svoje základné funkcie veľmi dobre a môže byť vhodný pre domácu meteostanicu, ktorú v blízkej dobe zrealizujeme.

Ak chcete naprogramovať mikrokontrolér Atmega8, potrebujete poznať konfiguráciu bitu poistky (snímka obrazovky urobená v AVR Studio):

Firmvér pre mikrokontrolér je priložený k článku., kompletný zdrojový kód tohto zariadenia pre prácu so snímačom BMP180 v dokumentácii k snímaču, ako aj krátke video demonštrujúce funkčnosť obvodu (pozorujeme, ako sa menia parametre, ak snímač atmosférického tlaku pridržíte prstom ).

Zoznam rádioelementov

Označenie Typ Denominácia Množstvo PoznámkaObchodMôj poznámkový blok
IC1 MK AVR 8-bit

ATmega8

1 Do poznámkového bloku
IC2 IC rozhrania I2C

PCA9517

1 Do poznámkového bloku
IC3 Senzor atmosférického tlakuBMP1801 Do poznámkového bloku
VR1 Lineárny regulátor

L7805AB

1 Do poznámkového bloku
VR2 Lineárny regulátor

AMS1117-3.3

1 Do poznámkového bloku
VD1-VD4 Usmerňovacia dióda

1N4007

4 Do poznámkového bloku
HG1 displej LCDSC16021 Na základe HD44780

David W. Bray

Uvádza sa popis konštrukcie verzie 2.0 elektronického barometra s 1-Wire rozhraním, ktorý sa od populárnej verzie 1.1a líši dvojnásobnou presnosťou merania.

Rovnako ako vo verzii 1.1a, aj tento dizajn využíva integrovaný snímač tlaku MPX4115 od Motoroly. Analógovo-digitálny prevod vykonáva čip DS2438 s 1-Wire rozhraním. Okrem týchto obvodov sa používa jeden operačný zosilňovač, dva regulátory napätia, dve diódy, LED a niekoľko odporov a kondenzátorov. Upozorňujeme, že pôvodným účelom čipu DS2438 je monitor nabitia batérie.

Pozadie vývoja verzie 2.0 nájdete v článku http://davidbray.org/onewire/barometer.html.

Vytlačená obvodová doska

Rovnako ako v predchádzajúcej verzii 1.1a, jednostrannú obvodovú dosku pre barometer verzie 2.0 navrhol Jim Jennings. Plošný spoj pre verziu 2.0 je univerzálnejší, dá sa použiť aj na zostavenie obvodu barometra pre verziu 1.1a.

Niektoré jemnosti

Tento obvod vyžaduje ďalšie dodatočné napájanie, ktoré vo verzii 1.1a chýbalo, keďže tlakový snímač MPX4115 vyžaduje prúd cca 7 mA, čo je viac, ako je možné odobrať z linky 1-Wire rozhrania.

Obvod poskytuje rozlíšenie (presnosť merania tlaku) približne 0,00417 inHg (0,1059 mm Hg alebo 0,0139 kPa) v rozsahu merania atmosférického tlaku 31,0 až 28,0 inHg (787,4 až 711,2 mm Hg alebo 105,0 až 95,0 kPa). Ešte väčšiu presnosť merania možno dosiahnuť zmenšením rozsahu nameraných hodnôt atmosférického tlaku.

Schematický diagram

Tento diagram nezobrazuje konektor. Uvádza sa kompletný diagram.

Popis schémy zapojenia

Tlakový snímač MPX4115 produkuje napätie v rozsahu od 4,25 do 3,79 V na úrovni mora a približne 2,77 V až 2,45 V vo výške 10 000 stôp (3048 m). To prekračuje pracovný rozsah vstupného napätia operačného zosilňovača LM358N pri napájaní zo zdroja 5 V. Faktom je, že výstupný signál tlakového snímača sa v skutočnosti meria vzhľadom na jeho napájaciu zbernicu, a nie vzhľadom na zem, ako by to bolo byť oveľa pohodlnejšie.

Našťastie ADC DS2438 zvládne signály až do 10 V, takže pri napájaní operačného zosilňovača na 10 V budú signály MPX4115 dobre prispôsobené vstupnému rozsahu DS2438.

Signál z výstupu tlakového snímača MPX4115 cez RC filter je privádzaný na vstup operačného zosilňovača U1B so zosilnením cca 4. Na druhý vstup zosilňovača je privádzané nastaviteľné napätie, ktoré v súčte s výstupom napätie snímača tlaku, poskytuje posun úrovne tak, aby zodpovedal vstupu ADC.

Zisk a offset sú riadené 10-otáčkovými trimrami. R3 nastavuje zosilnenie U1A a R4 riadi offset.

Upozorňujeme, že výstup tlakového snímača je pripojený k odporu R1 cez odnímateľnú prepojku. To sa deje tak, že signál MPX4115 je možné kalibrovať pomocou externého zdroja napätia.

Pokračovať v čítaní



© 2023 globusks.ru - Oprava a údržba automobilov pre začiatočníkov