Zoznámenie s FrSky – 3. časť – Prenos dát
Po tom, čo sme v druhej časti popísali spôsob prenosu dát, dnes ukážeme skutočný prenos (zatiaľ) testovacích dát a ich zobrazenie na LCD displeji budúcej telemetrie. Ale ešte pred tým sa musíme „popasovať“ s problémom, ktorý sme nazvali: „Korekcia“.
autor: Janko O.

V predchádzajúcej časti sme pri popise prenosového protokolu ukázali, že firma FrSky používa 11-Bytové Dátové bloky, ktoré vždy začínajú aj končia dohodnutým znakom 0x7E. Ale čo robiť, keď sa takéto hexadecimálne číslo vyskytne v užívateľských dátach, alebo v hodnote napätia AD1 alebo AD2? To by mohlo spôsobiť chaos pri spracovaní prenesených dát.
.jpg)
Firma FrSky to vyriešila tak, že „hexa číslo“ 0x7E je nahradené dvojicou 0x7D 0x5E. A aby nedošlo k zámene pri prenose „užívateľského“ čísla 0x7D, tak aj toto číslo je nahradené a to dvojicou 0x7D 0x5D (čiže vlastne 0x7D je doplnené o číslo 0x5D).

(Z uvedeného vyplýva, že ak sa pri prenose objaví niektoré z týchto čísiel, tak dátové bloky nebudú mať 11 Bytov, ale viac.) Keď takéto „dvojičky“ privediete do mikrokontroléra telemetrie, tak je treba urobiť jediné: 0x7D „zahodiť“ a nasledujúcu hodnotu (buď 0x5E alebo 0x5D) „XOR-ovať“ hodnotou 0x20. Výsledkom bude, že naspäť dostanete „zakázané“ čísla 0x7E a 0x7D. Ó, aké jednoduché. No, a túto procedúru sme nazvali „Korekcia“.
Korekciu je možné realizovať buď Off-line alebo On-line.

Off-line je určená skôr pre menej výkonné (alebo pomalšie taktované procesory – mikrokontroléry), pretože najprv sú dáta prijaté a potom je realizovaná spomínaná procedúra.

Ak máte dostatočne výkonný procesor, môžete Korekciu realizovať On-line, teda v kratučkých pauzách medzi jednotlivými prijímanými znakmi. Obvod PIC16F88 taktovaný 8 MHz „zvládal“ aj On-line Korekciu, ale pri použití iného, ešte neoptimalizovaného algoritmu dochádzlo k „zamrzaniu“.
A keďže Korekciu máme vyriešenú, môžeme skúsiť skutočný prenos dát, teda nie len dáta základnej telemetrie (analógové vstupy AD1 a AD2 a silu signálu RSSI), ale aj užívateľské dáta. Na experimentovanie sa môže „hodiť“ generátor testovacích dát. Ten sme „hravo“ realizovali pomocou mikrokontroléra PIC16F84A. Pre záujemcov prikladáme schému zapojenia.

A pre zasvätených aj program na generovanie skúšobných dát.

(Keďže sa jedná o informácie, ktoré môžu byť zaujímavé len pre pomerne úzku skupinu modelárov, nemá zmysel popisovať činnosť zapojenia na schéme, detailne rozoberať zloženie "Dvoj-Bytu",
.jpg)
alebo podrobne vysvetlovať činnosť toho-ktorého programu. V prípade záujmu tak môžeme urobiť v komentári k danému článku, alebo v samostatnom článku, ak by bol záujem väčší (o čom silno pochybujeme).)

Firma FrSky vyžaduje dáta pred prenosom „prehnať “ invertorom s úpravou napäťových úrovní. Schéma zapojenia je tu:

Ale keďže mikrokontroléry PIC a programovací jazyk PIC Basic Pro Compiler umožňuje nastaviť aj inverznú „moduláciu“, invertor nebol nutný a napäťové úrovne sme prispôsobili jednoduchým odporovým deličom.
Takže bloková schéma telemetrie s využitím prenosového kanála FrSky môže vyzerať nasledovne:

No a nasledujúce obrázky už ukazujú skutočný prenos telemetrických údajov.

Buď len základnú telemetriu, teda zobrazenie napätia analógových vstupov AD1 a AD2 a Sily signálu RSSI, pričom hodnoty AD1 a AD2 sú následne prepočítané na skutočne pripojené napätia U1 a U2, vyjadrené vo Voltoch.

Alebo k tomu ešte aj užívateľské dáta, ktoré môžu zobrazovať napr. výšku letu vetroňa, otáčky motora alebo dúchadla (EDF), rýchlosť modelu, teplotu motora (batérií) atď.

Po dôkladnej analýze možností a na základe skúseností s našou súčasnou telemetriou sme dospeli k týmto rozhodnutiam:
-
užívateľské hodnoty budú prenášané ako 10-bitové, čiže v rozsahu 0 až 1023, čo je pre drvivú väčšinu modelárskych potrieb dostačujúci rozsah
-
aby to bolo dosiahnuteľné, je nutné 8-bitové Byty spájať do „dvojičiek“. Na ich jednoznačné rozlíšenie bude horný Byte začínať nulou a dolný Byte jedničkou.
-
Každá „dvojička“ v sebe bude mať Adresu - informáciu o tom, hodnotu čoho to vlastne nesie (výška, rýchlosť, teplota atď.).
Tento spôsob prenosu sa nám javil ako najjednoduchší a najvhodnejší, s ohľadom na predpoklad krátkych výpadkov signálu, kedy je výhodné jednoznačne identifikovať aj pomerne malú skupinku úspešne prenesených Bytov.
Keďže z pôvodných 16 bitov zostali 4 bity (10 bitov hodnota a 2 bity identifikácie “horný“ či „dolný“), je možné rozoznávať 16 Adries (čiže 16 prenášaných údajov), čo je viac, ako sme mohli “na vlastné oči“ vidieť, že by niekto využíval aj v telemetriách renomovaných firiem.
Ďalšie zvýšenie počtu adries je možné dosiahnuť metódou tzv. „stránkovania“, ale to už je iná kapitola.
Súvisiace články (related topics):
Vario z telemetrie FrSky – 1. časť
„Umlčovač“ telemetrie.
Senzory k telemetrii FrSky – 2: Kontrola napätia článkov batéri
Senzory k telemetrii FrSky – 1. časť - Napäťový senzor
Zoznámenie s FrSky - 2. časť - Spôsob prenosu dát
Zoznámenie s FrSky - 1.časť - Základné funkcie
Antén nikdy nie je dosť!
Rozmanité podoby telemetrie
Projekt otvorenej telemetrie firmy FrSky
Telemetry telemetrie
Komentáre: 9
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Janko, MIro
kedy mozme ocakavat prvu lastovicku pouzitelnu pre amaterov, FrSky modul mam uz na ceste ...
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Už skoro, intenzívne pracujeme na tom...
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
super, uz sa neviem dockat, FrSky je uz doma ...
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Mal by som takú otázočku trochu od témy, je displej použitý na fotkách typu "large"? Je veľmi zaujímavé, aký má malý plošák, v podstate len o malinko väčší ako samotný LCD panel, na rozdiel od všetkých ostatných - potrebujem krabicu ako krava aby som tam ten displej schoval, no bude na nej len malé okienko na samotnú zobrazovaciu plochu. Ak nie je "large", mohol by som Vás poprosiť o nejaké info, kde sa dá zohnať? Ďakujem.
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Ten displej sa mi zapáčil preto, že jeho písmená sú 10 mm veľké. Pôvodne som ho uvažoval použiť v telemetrii namiesto displeja normálneho s 5 mm písmenami. Ale medzi tým sme sa rozhodli pre PC telemetriu, takže z displeja sa stal testovací kus, ktorý je vhodný aj na fotografovanie.
Kúpil som ho v SOS. Toto je on:
odkaz
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Zdravim, muzete, prosim, upresnit jak je pripojeny vystup z telemtrie Tx modulu k mikroprocesoru? Na fotografiich vidim nejaky odpor? Jake jsou urovne na tomto vystupu?
Diky, Vasek H.
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Ahoj Vašku.
Ten odpor, ak máš na mysli ten malý zelený, má viac menej ochrannú funkciu, ačkoľvek to funguje aj bez neho (práve som to vyskúšal). Úrovne z modulu FrSky sú rádoby RS232, čiže sú bipolárne (to znamená, že idú do kladných ale aj záporných hodnôt), ale napätie nedosahuje +/- 12V, ale len asi +/- 6V.
To ale vôbec nevadí, pretože vlastnosti mikrokontrolérov PIC (a tým pádom aj PICAXE), umožňujú priame prepojenie (bez prevodníka úrovní typu MAX232 apod.) zariadenia s výstupom RS232 do vstupu PICu.
Citácia z manuálu PIC Basic Pro Compiler:
While single-chip RS-232 level converters are common and inexpensive, the excellent I/O specifications of the PICmicro MCU allow most applications to run without level converters. Rather, inverted input (N300..N9600) can be used is conjunction with a current limiting resistor.
Ja som použil odpor 3k9, ale ako som už spomenul, funguje to aj bez neho.
Avšak keďže prevodníky RS232 fungujú zároveň ako invertory, treba v programe pre PIC nastaviť inverznú moduláciu.
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Diky za odpoved. Prave temi nepetovymi urovnemi jsem si nebyl jisty - takze jsem pro jistotu pouzil MAX 232 coz je asi zbytecny luxus.
Deprecated: Function ereg_replace() is deprecated in
/home/gh118500/www_root/rcmodely/inc/func.php on line
407
Myslím, že je tam zbytočný.
Ide o to, že štandart RS232 bol vyvinutý začiatkom 60-tych rokov (1962) pre účely spojenia ďalekopisov (v rámci objektu). To znamená, že to malo byť na vzdialenosti desiatky alebo stovky metrov a tým pádom byť odolné aj prípadným poruchám, ktoré sa na tomto vedení vyskytli. Preto boli použité hladiny napätia rozdielnych polarít a pomerne veľkej hodnoty (až +/- 15V).
Ale na prepojenie dvoch zariadení od seba vzdialených 20cm je to úplne zbytočné.
2012-03-19 16:13:05
Pridaj komentár
- Pre odoslanie správy môžete aj použiť klávesovoú skratku Alt+S. (Podporujú len niektoré prehliadače)
- HTML znaky budú prevedené na entity.
- Vyjadrujte sa tu ako doma, aby sme vedeli ako to u Vás vypadá.
- Odkazy začínajúce http:// budú automaticky prevedené na odkazy , nepoužívajte však v
jednom príspevku viac ako 3 - to robia len spam roboti:-)