RCEO, RCE7, modely, soutěžní létání, větroně, elektry, hobby, modelářská elektronika, letadla, SMČR, modeláři, žebříčky soutěží

Jednoduchý výškoměr s výstupem do PC

18. 3. 2010 - Martin Faltičko
Jednoduchý výškoměr s výstupem do PC

Popsané jednoduché zapojení výškoměru posloužilo jako školní projekt do předmětu Mikroprocesorové a vestavěné systémy na FIT VUT. Základem je osmibitový mikrokontrolér HCS08 od firmy Freescale a tlakové čidlo MS5534B od švýcarské firmy Intersema. Předkládám zde schéma i zdrojové kódy programu, jen nákres desky plošných spojů nenabídnu, neboť jsem pracoval s několika vývojovými „deskami”, které se snad ani deskami nazvat nedají.


Freescale HCS08

Firma Freescale nabízí ve svém PR programu možnost zdarma si objednat několik kusů mikrokontrolérů a jiných součástek. Jak jsem již dříve zmiňoval v návodu na Programátor OSBDM, produkty této značky jsou promyšlené a kvalitní, zejména pokud se jedná o mikrokontroléry. Možnost debugovat oživený hardware přímo v zapojení a za použití pouhých čtyř vodičů navíc - to mnoho výrobců nenabízí.

 

Většina nových typů mikrokontroléru HCS08 nabízí jako zdroj hodinového kmitočtu možnost použití vnitřního oscilátoru nebo externího nízkofrekvenčního krystalu, obvykle na frekvenci 32 768Hz (tato nízká frekvence je  z důvodu omezení možného rušení). Následně je pomocí FLL obvodu signál převeden na pracovní frekvenci až 40 MHz.

 

Podle produktové řady nabízí mikrokontroléry různé periferie. Standardem bývají AD převodníky, porty I2C,SPI a asynchronní kanál SCI (u jiných výrobců značen jako UART). Některé typy obsahují modul pro hardwarové řízení multiplexované klávesnice a RTCmodul. Nejmodernější řada osmibitů JM je navíc vybavena nativním rozhraním USB 2.0.

 

Další komponenty

Již deší dobu jsem vlastnil tlakové čidlo Intersema MS5534B, které umožňuje měřit atmosférický tlak s přesností jednoho metru. Rovněž obsahuje vestavěné čidlo teploty, jehož výsledky slouží ke kompenzaci změřeného tlaku.Vše je kompletně zapouzdřeno společně s 15-bitovým AD převodníkem a komunikace probíhá přes digitální SPI rozhraní.

 

Pro připojení k PC byl zvolen prostý převodník USB<=>RS232 FT232RL, jehož zapojení je možné nalézt na stránkách výrobce www.ftdichip.com.

 

Schéma zapojení a konstrukce

Jako řídicí mikrokontrolér byl zvolen obvod MC9S08SH32 v pouzdře SOIC 28, jenž je levný a poskytuje základní možnosti, které však bohatě vystačují. Procesor nabízí 32kB paměti Flash a 1kB RAM. Při použití doporučeného krystalu je frekvence vynásobena 1024x na hodnotu asi 33MHz. S použitím předděličky je rovněž možné generovat přesný kmitočet 1Hz, který je velmi důležitý v situacích, kdy potřebujeme zobrazovat uplynulý čas.

 

Z mikrokontroléru jsou vyvedeny porty Rx a Tx asynchronního kanálu, takže je možné jej připojit do PC jednoduše buď přes RS232 rozhraní, nebo USB převodník. Pro možnost debugování v aplikaci bylo využito čtyřvývodové sběrnice k tomuto účelu určené.

 

img

Programové vybavení

Pro vývoj bylo použito studio CodeWarrior, které je přímo určeno pro práci s mikrokontroléry Freescale. Toto prostředí umožňuje programování v jazycích Asembler a C (pro kód byl  zvolen jazyk C). Kvůli odrušení okolního šumu a potlačení rozptylu vestavěného AD převodníku byl do obslužného programu přidán jednoduchý Kalmanův filtr prvního řádu. Tento filtr slouží jako vylepšený odhad plovoucího průměru a svižně reaguje na rychle se měnící signály.

 

Popis programu

  • Hlavní program se skládá z částí inicializace jednotlivých zařízení a inicializace časovače a následně nekonečné smyčky, která si každou vteřinu vyžádá data ze snímače tlaku a výsledné údaje poté zpracuje. Před přechodem do nekonečné smyčky program čeká přibližně sekundu. Tato doba je z důvodu ustálení napětí na snímači. V programu bylo potřeba inicializovat tyto periferie:
  • Zdroj hodinového signálu je na externím krystalu. Ten pracuje na frekvenci 32,768kHz a interním závěsem se násobí hodnotou 1024.
  • Sběrnice SCI pro přenos informací do počítače (RS232) má přenosovou rychlost 19200Bd. Při každém přenosu se odesílá 32 znaků dlouhý buffer v tomto formátu:  
    [cislo_mereni] [tlak_hPa] [teplota_C] [vyska_m] [počet_mereni]
  • Sběrnice SPI pro komunikaci s tlakovým čidlem je nastavena na kmitočet 250kHz bez využití přerušení.
  • Časovač T1 funguje v režimu PWM s přerušením při přetečení a pracovním cyklem 50%. Tlakové čidlo totiž vyžaduje externí zdroj kmitočtu na 32,768kHz. Při přetečení se inkrementuje proměnná, která dále generuje takt 1Hz pro odesílání dat na sériovou linku.

 

Získání dat ze snímače tlaku

Získání aktuálního tlaku a teploty probíhá pomocí funkce ms5534_read(ushort code). Funkci se jako parametr předá řetězec identifikující operaci, kterou chceme, aby čidlo provedlo. Pomocí operátoru switch se rozhodne, o jakou operaci se jedná, a provedou se potřebné kroky. Do čidla se nahraje adresa a poté se přečtou dva bajty obsahující návratovou hodnotu z čidla.

 

Data, která získáme z barometrického čidla, je nutné kompezovat a přepočítat do jednotek, které jsou požadovány dalšími funkcemi. Teplota je převáděna na stupně Celsia a atmosférický tlak na hekto Pascaly. O tento přepočet se stará funkce ms5534_calc_tp(uint d2_arg, uint d1_arg, float* temperature, float * pressure).


Získanou hodnotu tlaku je nutné přepočítat na výšku. Náš výškoměr neudává přesnou nadmořskou výšku, ale tzv. letovou hladinu. O přepočet tlaku na letovou hladinu se stará funkce compute_altitude(float P). Pro přepočet je použit vzorec:

Vzorec

Kalmanův filtr

Data bylo rovněž nutné vyfiltrovat, k čemuž slouží jednoduchý Kalmanův filtr prvního řádu. Tento filtr pracuje na principu adaptivního odhadu plovoucího průměru, přičemž uvažuje (ne)důvěryhodnost aktuálně naměřené hodnoty oproti predikci.

/*
*Zakladni struktura pro uchovani historie Kalmanova filtru
*/

typedef struct { //Nasledujici predpovezena hodnota float predict; //Aktualni vyprumerovana hodnota float value; //Prirustek noveho mereni float diff; //Ucinnost filtrovani - hladkost //cim vetsi R, tim nizsi kmitocty jsou propusteny float R; } kalman;

/* Inicializace filtru na pocatecni hodnotu a zadanou hladkost
* @param obj - Ukazael na objekt, ktery se ma inicializovat
* @param value - Pocatecni hodnota
* @param R - Nastavena hladkost
*/

void kalman_init(kalman* obj,float value,float R) { //vaha pocatecniho stavu obj->predict=value; obj->value=value; obj->diff=0.0f; obj->R=R; }
/*
*Funkce se zavola vzdy po obdrzeni nove hodnoty z cidla
* @param obj - Ukazatel na objekt, jehoz nova hodnota ovlivnuje
* @param value - Nova hodnota z cidla
* @return - Vysledek po provedeni filtrace
*/

float kalman_update(kalman* obj, float value) { float tmp,newvalue; //Predikce noveho stavu // predikce = stavajici_hodnota + smernice(diference) obj->predict = obj->value + obj->diff; //Odecteni aktualne namerene hodnoty a zjisteni, //jak daleko je od idealni pozice tmp = value - obj->predict; //Vypocitani vahy aktualniho mereni tmp=fabs(tmp); tmp = tmp / (tmp + obj->R);
//Vypocet navratove hodnoty podle neduvery nactene hodnoty newvalue = obj->value + tmp * (value - obj->value) ; obj->diff = newvalue - obj->value; obj->value = newvalue; return newvalue; }

 

Výstupy

Následující graf zachycuje měření, kdy byl výškoměr připojen k notebooku po celou dobu cesty z Brna do kopců u Letovic. Z výstupu Hyperterminálu jsem jednoduše extrahoval data do souboru CSV a ten již nebyl problém zpracovat v Excelu. Na vodorovné ose počet sekund od počátku měření, na svislé ose výsledná letová hladina.

 

Záznam průběhu výšky, cesta autem z Brna do Letovic

img
Záznam průběhu výšky, cesta autem z Brna do Letovic

 

 

Ke stažení

Schéma výškoměru (soubor Eagle .sch)

Projekt CodeWarrior se zdrojovými kódy - Výškoměr s výstupem do PC

Velké schéma výškoměru


Vývojový modul STM32 Primer 2 & FreeRTOS

3. 2. 2011 - Martin Faltičko
Vývojový modul STM32 Primer 2 & FreeRTOS

STM32 Primer 2 je vývojový kit společnosti Raisonance, který umožňuje demonstrovat sílu a univerzálnost 32-bitového mikrokontroléru založeného na architektuře ARM. Na internetu je sice velké množství demonstračních aplikací, ale vždy chybí jednoduché tutoriály „pro blbé”, typu jak zprovoznit to či ono. Pokud se navíc stane, že v nové verzi vývojového studia (zde Ride7 taktéž od Raisonance) nejdou zkompilovat některé dřívější demonstrační projekty, pak trvá zprovozňování takového modulu poměrně dlouho.

Serva Turnigy 555MG a Hextronic MG-14

22. 3. 2010 - Martin Faltičko
Serva Turnigy 555MG a Hextronic MG-14

V současnosti je velmi moderní objednávat si modelářské zboží z hong-kongského portálu Hobbycity. Ceny jsou zde oproti evropským obchodům vyloženě nízké a kvalita nabízených značek jde snad každým měsícem kupředu. Proto jsme si nechali poslat několik kusů výše zmíněných typů. Po dvou týdnech od objednání dorazil balíček s označením Gift a nápisem Happy birthday to you, Martin! :-).

Další fotografie levného termoboxu

9. 3. 2010 - Martin Faltičko, Dr. Jaroslav Nezhyba

Za 8 minut stabilních 40°C při příkonu 20W, co víc si může elektroletec přát?

Jednoduchý regulátor teploty do termoboxu

21. 12. 2009 - Martin Faltičko
Jednoduchý regulátor teploty do termoboxu

Toto jednoduché zapojení slouží jako levný orientační regulátor teploty. Konkrétní použití může najít u soutěžních elektromodelářů, kteří požadují od svých pohonných sad co nejvyšší výkon. Termostat se pak jednoduše vloží do tepelně izolované nádoby, připojí se napájení a topná spirála (nebo cokoli co hřeje). Baterie budou za pár minut připravené na pracovní teplotu.

Programátor mikrokontrolérů Freescale - OSBDM

22. 11. 2009 - Martin Faltičko
Programátor mikrokontrolérů Freescale  - OSBDM

Firmu Freescale zná jistě každý, kdo má co do činění s elektronikou. Tato firma mimo jiné nabízí produktovou řadu mikrokontrolérů HC08 (dříve Motorola) pro univerzální použití, které nabízejí vysoký výkon a mnoho různých periferií. V rámci firemní politiky je možné získat většinu typů mikrokontrolérů jako bezplatné vzorky - pouze s manipulačním poplatkem.

Termobox na baterie LiPol

25. 7. 2009 - Martin Faltičko
Termobox na baterie LiPol

Na většině mezinárodních soutěží v elektroleteckých kategoriích se objevují různé přípravky na ohřev baterií před letem. Pokud by šlo k něčemu přirovnat, je to jako zahřívání pneumatik závodních aut tak, aby podávaly maximální výkon již při startu.

Jednoduchý elektronický spínač se stabilizátorem BEC

15. 3. 2009 - Martin Faltičko
Jednoduchý elektronický spínač se stabilizátorem BEC

Když mi nedávno známý řekl, že si do modelu pořídí dvoučlánek LiPol jako palubní zdroj pro přijímač (náhrada za dřívější čtyřčlánek NiCd) a potřebuje udělat stabilizátor napětí s bezpečným vypínačem, řekl jsem si, že nic nemůže být jednoduššího…

S-Mixer 2/4 C - elektronický mixer křidélek a klapek

23. 2. 2009 - Martin Faltičko
S-Mixer 2/4 C - elektronický mixer křidélek a klapek

Modul rozšiřující možnosti funkcí na straně přijímače. Umožňuje např. ovládání modelu se čtyřmi servy v křídle (dvě pro klapky a dvě pro křidélka) pomocí dvou kanálů vysílače. Ve verzi C umožňuje navíc proporcionální mixování těchto kanálů, což je důležité pro samokřídla nebo letadla s motýlkovitými ocasními plochami. Zařízení je vhodné zejména pro nepočítačové soupravy a soupravy s méně než šesti kanály.

Tento modul jsem zhotovil již před několika lety (článek v RC Revue 9/2006), avšak jako drobnější zajímavost (dnes už jsou ty počítačové soupravy přeci jen docela levné a dostupné) jej uveřejňuji také zde i se zdrojovými kódy.

Prodám převodník USB <=> PPM

16. 2. 2009 - Martin Faltičko
Prodám převodník USB <=> PPM

Nudíte se v zimě a říkáte si, ať už ten sníh roztaje, aby se mohlo začít létat? Chcete si natrénovat pokročilou akrobacii bez rizika, že se model rozbije? Pokud máte počítač s USB rozhraním, čtěte dále.

Spálené kondenzátory na regulátoru

28. 1. 2009 - Martin Faltičko
Spálené kondenzátory na regulátoru

I u špičkové elektroniky se toto může stát. Při jednom z tréninků se dr. Nezhybovi stala velmi nepříjemná věc. Při krátké pozemní zkoušce nového motoru S-Neu 1509/1D/6.7/S (měl za sebou sice již několik letů, ovšem bez záznamového systému Unilog) byl najednou cítit velmi silný zápach...

Stavba nabíječe Akkumatik

28. 1. 2009 - Martin Faltičko
Stavba nabíječe Akkumatik

Již dlouhou dobu jsem rozvažoval, jakou nabíječku si pořídit. Stará primitivní nabíječka na bázi integrovaného obvodu U2407B již dosluhovala a nevyhovovala mým potřebám. Chtěl jsem si postavit něco, co by mělo profesionální vzhled i vlastnosti, navíc také dva simultánní nabíjecí výstupy. Volba padla na německou stavebnici Akkumatik (lze ji objednat zde: www.akkumatik.de).