Jste zde

Digitální výškoměr

Článek popisuje návod na stavbu jednoduchého digitálního výškoměru s vestavěným teploměrem a barometrem.

Úvod
Výškoměr pracuje na základě principu změny atmosférického tlaku v závislosti na výšce. Výškoměr je určen pro různé výlety, pěší či na kole apod. Navíc výškoměr měří okolní teplotu a aktuální tlak. Dokáže také uložit profil celého výletu v délce maximálně 10 hodin. Po návratu z výletu se dají data přehrát do počítače PC a dále zpracovávat. Rozlišení výškoměru je 1m takže dokáže rozeznat, když jej zvednete ze stolu. Takové rozlišení je lepší než rozlišení systému GPS a navíc nepotřebuje žádné antény. Mezi principiální nevýhody patří závislost na změně tlaku během měření, ale praktické zkušenosti ukázaly, že to není na závadu. 

Parametry digitálního výškoměru
Srdcem výškoměru je mikroprocesor 89C51, který měří a zpracovává data z tlakového a teplotního čidla. Blokové schéma je na obrázku níže.
 


Základní parametry :

  • Rozlišení: 1-2 metry 
  • Použitelný rozsah: 0 – 2000m 
  • Rozsah barometru: 700 – 1100hPa 
  • Rozsah teploměru: -30 – 30? C 
  • Přesnost teploměru: 1? C 
  • Paměť: 10 hodin 
  • Napájení: 2.4 – 3.0V, AAA akumulátory 
  • Spotřeba proudu na 5V: 26mA, 15mA, 9mA, viz dále 
  • Účinnost měniče: 70 – 80% 
Popis zapojení
Výškoměr využívá přírodní princip poklesu atmosférického tlaku s rostoucí výškou. Základní rovnice, která popisuje tuto závislost je:
D= -ln(p/p1).R.T/g     (1)
Výškoměr musí měřit 3 základní proměnné: 
  • T - průměrná teplota v Kelvinech 
  • p1 - atmosférický tlak na “nulové” výšce 
  • p - atmosférický tlak v dané výšce 
Konstanty: 
  • R - univerzální plynová konstanta 286 
  • g -  tíhové zrychlení 9.81 
Popsaný výškoměr měří T, p, p1 a potom vypočítává: 
  • aktuální atmosférický tlak 
  • aktuální výška, vypočítaná podle (1) 
  • okolní teplota (tato hodnota by mohla být nahrazena konstantou 0.8 stupně pokles na 100m, ale dle mého názoru je teplota užitečnou veličinou, kterou stojí za to měřit. Navíc použitý AD převodník má 8 vstupů, které pro tento účel můžeme využít. Podobný princip je využíván i v letadlech s Pittotovu trubicí pro měření rychlosti, ale to nebyl účel této konstrukce) 

Měření tlaku
Základním prvkem výškoměru je absolutní tlakový senzor MPX4115 (EMGO). Poskytuje kalibrované výstupní napětí v závislosti na okolním atmosférickém tlaku [1]. Výstupní napětí je popsáno vztahem:
Vout = Vs (0.009*P – 0.095)   (2) 
kde je Vs napájecí napětí a P je tlak v kPa.

Základním parametrem určujícím výsledné rozlišení výškoměru je citlivost tlakového čidla. Podle katalogových údajů je to 4.9mV/hPa. S využitím rovnice (1) a základní matematiky můžeme určit, že pokles tlaku o 1hPa odpovídá změně výšky o 8m. Podobně změna o 1m výšky vyvolá změnu výstupního napětí čidla o 0.6mV.
Tyto hodnoty využijeme k určení potřebného rozlišení AD převodníku. Základní referenční napětí je 5V, děleno 0.6mV (pro 1m rozlišení) dává 8333 úrovní. To odpovídá 13ti bitovému převodníku (2^13=8192).
Dnes je na trhu mnoho levných 12ti bitových převodníků. Já jsem si vybral typ AD7888 od firmy Analog devices. Pokud bychom použili 16ti bitový převodník, mohli bychom dosáhnout teoretického rozlišení až 14cm. Je nutné si však uvědomit, že takové zapojení klade zcela jiné nároky na přesnost a stabilitu referenčního napětí, stínění, blokování apod. Navíc jsou ceny 16ti bitových převodníků vyšší.
Jiným řešením pro zvýšení rozlišení výškoměru je zesílení signálu z čidla. Limitujícím faktorem je dostupné napájecí napětí. Popsaný výškoměr používá napájení 5V a proto jsem mohl využít maximálního zesílení 2.2 krát. 

Měřený rozsah tlaku
Při návrhu je nutné uvažovat celkový rozsah tlaku, který bude výškoměr zpracovávat. Pokud uvažujeme o běžném atmosférickém tlaku v rozmezí 750 – 1100hPa, musíme započítat i jeho pokles do výšky 2000 metrů. Celkový rozsah potom bude od 600hPa, což je hodnota ve 2000m při nízkém tlaku 750hPa na úrovni moře, až do 1100hPa. S využitím vztahu (2) musíme zpracovávat napětí od 2.2 – 4.1V.
 

Zapojení
Celkové zapojení výškoměru je zde Signál z tlakového čidla je zesílen operačním zesilovačem MC33502 IC6b od firmy ON Semiconductor. Je typu rail-to-rail s vysokou vstupní impedancí. Výstupní napětí může nabývat hodnot max 50mV pod napájecí napětí. Zesílení je dáno R7/R6 = 2.2. Výstup je stejnosměrně posunut o napětí z děliče R3, R2 přivedeným na neinvertující pin IC6b. Výstupní napětí je negováno a proto byla modifikována základní rovnice (1).

Rozlišení AD převodníku je zvýšeno opakovaným měřením a průměrováním. Současná verze programu používá 256 cyklů. Dolní propust R14, C5 [2] filtruje šum z čidla a zlepšuje stabilitu údaje na displeji.

Výstup je zapojen na první vstup AD převodníku IC2. AD převodník používá referenční napětí 4.6V, které bylo zvoleno s ohledem na celkové napájecí napětí výškoměru. Referenční napětí je tvořeno 2.5V programovatelnou referencí TL431 (D2) a zesilovače IC6a. Toto referenční napětí je využíváno i pro napájení tlakového senzoru, i když je o 0.2V nižší než je uvedeno v katalogovém listu. Původně byl senzor napájen přímo z 5V, ale stabilita nebyla dobrá. Je nutné si uvědomit, že změna napájení o 5mV způsobí chybu výšky 10 m.
Druhý vstup AD převodníku je využíván pro měření teploty. Použil jsem čidlo KTY81 (R13), které je v děliči s R12. Odpor čidla R13 je 2000 ohmů při pokojové teplotě. Dělič je napájen z napěťové reference 4.6V a jeho výstup je přímo úměrný okolní teplotě. Závislost odporu na okolní teplotě byla aproximována polynomem 2. řádu., který je počítán mikroprocesorem IC1 [3].
Třetí vstup převodníku je využíván pro kontrolu napájecího napětí. Pokud dojde k poklesu napájecího napětí z důvodu vybitých baterií, výškoměr začne zobrazovat upozornění na displeji. 

Obslužný program
AD převodník posílá data do mikroprocesoru po 4bitové sběrnici. Mikroprocesor 89C51 IC1 potom vypočítává všechny potřebné údaje. Vypočítat základní rovnici (1) na kalkulačce není problém, ale naprogramovat logaritmus ve strojovém kódu do mikroprocesoru už je docela oříšek. Naštěstí dnes existuje řada překladačů z jazyka C do strojového kódu. Proto jsem se rozhodl napsat celý řídicí program v jazyce C. Základní komunikační rutiny pro displej, převodník a paměť jsou psány v assembleru. Zjednodušený vývojový diagram programu je zde.

Současná verze programu zabírá téměř celou paměť programu. Pokud bychom jej chtěli rozšiřovat, byly by výhodné použít procesor v pouzdře DIL40, například typ 89C52, který disponuje 8kB paměti.
Změřené a vypočítané hodnoty se zobrazují na alfanumerickém displeji 1x16 IC8, který je ovládán po 4bitové datové sběrnici a 2bitové řídicí sběrnici. Datová sběrnice je sdílena se sběrnicí AD převodníku. Displej patří rozměrově mezi největší součástky a dal by se nahradit menším typem, např. 2x8. Bohužel tyto displeje jsou mnohem dražší než oblíbené typy 1x16. 

Co výškoměr vlastně měří
Výškoměr měří tyto hodnoty: 

  • aktuální atmosférický tlak 
  • okolní teplotu 
  • výšku 
  • zbývající kapacitu paměti 
  • délku trvání výletu v minutách 


Hodnoty jsou měřeny a zobrazovány každé 2 sekundy a mohou být přepínány tlačítkem MODE. Tlačítkem SET je možné kdykoliv nastavit nulovou výšku. Výškoměr se potom přepne do režimu zobrazování výšky, viz. zde.

Výškoměr dokáže ukládat údaje o výšce do paměti a potom je přenést do počítače PC. Data jsou uložena v paměti IC9, která je typu EEPROM a s mikroprocesorem komunikuje pro sběrnici I2C. Výška je ukládána každých 16 sekund, což s velikostí paměti 2kB dává prostor pro 9 hodin záznamu. Tato doba může být i zkrácena, pokud potřebujeme lepší rozlišení.

Ukládání do paměti se aktivuje tlačítkem MEM. Další stisknutí MEM pozastaví ukládání dat. Pokud jsou data ukládána do paměti, na poslední pozici displeje se zobrazuje znak apostrof „’“. Spolu s ukládáním se aktivuje i ukazatel volného místa v paměti a měření délky záznamu v minutách. Pokud je paměť dat plná, mikroprocesor automaticky ukončí ukládání aby nedošlo k přepsání hodnot.

Tyto hodnoty mohou být jednoduše přenesena do počítače PC přes interfejs s T2. Ten invertuje signál z mikroprocesoru a převádí jej na úrovně 5V/0V. Valná většina současných RS232 portů je schopna přijímat úrovně TTL místo +12V/-12V. Díky tomu můžeme ušetřit klasický RS232 převodník (například MAX232).

Přenos do počítače se aktivuje stiskem tlačítka MEM během zapnutí výškoměru. Po ukončení přenosu se výškoměr přepne do běžného režimu. Formát dat a jejich zpracování bude popsáno později. Dvě zobrazované hodnoty potřebují kalibraci. Tou první je teplota, kde musíme dokalibrovat reálnou hodnotu R12. Druhým parametrem je atmosférický tlak, protože čidlo IC7 má rozptyl z výroby. Výškoměr obsahuje i speciální kalibrační menu, které se aktivuje stiskem tlačítka MEM během zapnutí výškoměru. 

Kalibrační konstanty jsou ve formátu integer. Hodnotu můžeme změnit stisknutím MODE (+1) a SET (-1). Po nastavení správné hodnoty se stisknutím MEM dostaneme do kalibrace tlaku. Další stisknutí MEM potom data uloží data do paměti EEPROM a výškoměr se přepne do normálního režimu. 

Tyto kalibrační hodnoty jsou načteny po každém startu a jsou používána pro výpočty. Výhoda vlastní kalibrace je zřejmá, není potřebný žádný speciální programátor a každý si může výškoměr „doladit“ doma. 

Při první kalibraci je vhodné nejprve nastavit tyto hodnoty na nuly, poté si zjistit rozdíl mezi zobrazenou a správnou hodnotou a napsat v dalším kroku jej uložit do paměti. Předejde se tak případným chybným údajům načtených z nové paměti EEPROM. 

Napájení výškoměru
Celý výškoměr může být napájen v rozsahu 2.4-3.0V. IC3 (MC33463) je DC/DC konvertor s proměnným kmitočtem [4]. Používá akumulační cívku TL1 a filtrační kondenzátor C6. Je zapojen jako „up converter“, takže nedokáže stabilizovat napětí nad 5V.(schéma)

Pro napájení používám 2 akumulátory NiMH velikosti AAA (mikro). Dá se použít i jiný rozměr, záleží to jen na velikosti krabičky. I akumulátory AAA dnes již mají kapacitu kolem 550mAh.

Kvalita cívky TL1 určuje výslednou účinnost konvertoru. S běžnou SMCC tlumivkou se účinnost pohybuje kolem 75%. Pokud použijeme cívku s menším sériovým odporem, účinnost se zvýší až na 80%. Původní verze výškoměru používala měnič s interním spínačem a účinností kolem 60%.

Vzhledem k tomu, že je celý přístroj napájen z baterií, je velmi důležitá i jeho celková spotřeba. Naměřil jsem tyto hodnoty: 

OBVOD                  SPOTŘEBA
AD převodník             0.5mA
LCD displej              1mA
Op.zesilovač a čidlo     8mA
Mikroprocesor            10mA

Je zřejmé, že operační zesilovač spolu s tlakovým čidlem spotřebují velkou část energie. Naštěstí nemusí být pod napětím celou dobu, stačí pouze během měření tlaku. Proto jsem použil jednoduché řízení spotřeby. Základem je tranzistor T1, který jednou za 2 sekundy spíná napětí 5V. Během této doby mikroprocesor měří hodnotu tlaku. Poté se procesor přepíná do režimu IDLE.

T1 je typu P MOS od firmy ON Semincoductor s velmi nízkým odporem v sepnutém stavu. Dá se snadno ovládat napětím 5V nebo 0V z mikroprocesoru.
 

Obrázek ukazuje spotřebu výškoměru při napětí 5V. Jsou z něj patrné 3 základní fáze činnosti přístroje. Během fáze 1 je sepnut T1, tlakové čidlo pod napětím a mikroprocesor měří tlak a teplotu. Spotřeba se pohybuje okolo 26mA. Během fáze 2 je tlakové čidlo odpojeno a mikroprocesor provádí výpočty. Fáze trvá zhruba 130ms a spotřeba je 15mA. Během fáze 3 je mikroprocesor v režimu IDLE se sníženou spotřebou a probouzí se každých 50ms, kdy kontroluje stav tlačítek. Tyto krátké špičky nejsou v obrázku vidět. Spotřeba v poslední fázi je cca 9mA. Cyklus se opakuje každé 2 sekundy (na obrázku je to každých cca 700ms). 

Zpracování dat
Výškoměr posílá data po sériové lince ve standardním formátu 8N1 (8 bitů, žádná parita, 1 stopbit) rychlostí 9600Bd. Data mohou být přijata libovolným terminálovým programem. Já využívám Hyperterminal, příslušenství Windows NT. Výškoměr posílá jednotlivé hodnoty oddělené znakem CR (ASCII kód 13). S nastaveným terminálem pro automatické přidávání LF (ASCII kód 10) dostaneme hodnoty na jednotlivých řádcích. Po ukončení přenosu uložíme tento textový soubor na disk.

Pro efektivní využití paměti výškoměr ukládá pouze rozdíl mezi dvěma měřeními. Hodnota je 7mi bitová, 8. bit je znaménko. Přístroj tedy dokáže rozlišit maximální změnu výšky v rozsahu od –127 do +127 metrů. Je-li hodnota záporná, je znaménkový bit = 1 a hodnota je tak >127.

Pro vlastní zpracování dat používám program Microsoft Excel. V přípravě je makro, které hodnoty překreslí do grafu. V současné době je nutné to udělat ručně. V tab.1. je příklad části přijatých dat. 

Tab.1. Příklad dat z výškoměru

Hodnota z výškoměru +/- rozdíl Absolutní výška
255 -1 368
1 1 369
0 0 369
0 0 369
2 2 371
253 -3 368
0 0 368

Poslední dva sloupce obsahují jednoduché vzorce: 
„+/- rozdíl“ =IF(A1>127,(ANO)A1-256,(NE)A1), kde A1 je buňka s hodnotou z výškoměru 
“Absolutní výška” =C0+B1, kde C0 je předchozí absolutní výška a B1 vypočítaný rozdíl 
Poslední sloupec je potom využit k vykreslení grafu. Na obrázku je příklad jednoho z mých prvních výletů.
 

Osazení a oživení
Plošný spoj je oboustranný s rozlitou mědí po obou stranách (výkres plošného spoje 93x56mm TOP a BOTTOM). Můžeme osadit (osazovací výkres plošného spoje TOP a BOTTOM) všechny součástky najednou, mikroprocesor je vhodné dát do objímky. Pokud ale nepočítáme s upgrade programu, můžeme i procesor zapájet přímo.

Připojíme zdroj 2.4V a zkontrolujeme odběr proudu. Ten by neměl přesáhnout 70mA. Pokud je vše v pořádku, měla by se na displeji objevit aktuální teplota a výškoměr by měl začít normálně pracovat.

Fotografie zařízení s procesorem pro další vývoj software na obrázcích (celkový vzhled, pohled zhora a pohled zezdola)

Použité součástky

Závěr
Tento výškoměr vznikl pro zábavu a nekladl si za cíl konkurovat profesionálním přístrojům. Ty jsou mnohem menší, ale stojí několik tisíc Kč. Stavbu tohoto zařízení zvládne i začínající elektronik, neskýtá žádné záludnosti a není potřeba žádné složité nastavování.

Parametry výškoměru jsou dobře reprodukovatelné, na všech postavených kusech bylo dosaženo rozlišení 1 metr. Možnost ukládání dat do paměti se dá využít při každém výletu. Na celkovém profilu je potom zřetelná každá zastávka v restauraci či stupeň únavy při cestě do kopce.

Program může být nadále rozšiřován a upravován. V další verzi programu bude zaimplementován i infračervený port, takže data do PC bude možné přenášet bezdrátově. Podobně bude přidáno zpracování dat z magnetického čidla, snímajícího ujetou vzdálenost na kole.

Nevýhodou celého zařízení může být pro někoho cena. Tlakové čidlo stojí kolem 1000Kč, AD převodník je k mání za cca 450Kč, displej za 280Kč a měnič za 90Kč. 

Software do procesoru je za určitých podmínek zdarma na této stránce.

Obrázky, grafy, fotografie

Literatura

[1] MPX4115 katalogový list na http://search.motorola.com/semiconductors/index.html 
[2] AN1646 Noise Considerations for Integrated Pressure Sensors, aplikační zpráva firmy Motorola 
[3] KTY81-1 katalogový list na http://www.semiconductors.com/pip/KTY81 
[4] MC33463 katalogový list na http://www.onsemi.com 


Obsah:

Hodnocení článku: