Bezdrátový modul pro pásma 433MHz a 868MHz
Radek Václavík
Ve světě elektronických součástek existuje řada malých firem, které produkují velmi zajímavé integrované obvody. Nedosahují takových objemů jako velcí tahouni polovodičového průmyslu (STM, Analog Devices, Texas Instuments apod., ale některé jejich součástky rozhodně stojí za vyzkoušení. Jednou z nich je norská firma Nordic. Z jejich portfolia mne zaujala řada mikroprocesorů x51 s integrovaným vysokofrekvenčním datovým transceiverem pro pásma 430MHz, 850MHz či 2.4GHz. Díky obchodní politice firmy jsou tyto součástky dostupné i v kusovém množství za cenu například 6ti piv v normální restauraci. Tyto základní údaje byly pro mne hlavními argumenty pro vyzkoušení těchto obvodů v praxi, konkrétně obvodu nRF9E5. Pro znalé programování mikroprocesorů řady x51 se tak otvírá velká možnost jak zpestřit své aplikace a vyvinout řadu nových na bázi bezdrátového přenosu.
Pro ty, kdo touto vědomostí neoplývají, jsem nachystal univerzální minimodul
a několik zajímavých aplikací. Cílem tohoto článku je dokázat, že stojí
za to být neustále v kontaktu s novými součástkami. Řada z nich je velmi
zajímavá pro domácí aplikace a stále se s nimi dá "bastlit". Člověk
se nesmí dát odradit občasnou nedostupností kusového množství součástek,
pokud neexistuje ochotná firma v ČR, najde se v EU či zcela spolehlivě za mořem
v USA. Pro dále popsaný obvod jsem bez problémů sehnal 10 kousků pro mé
pokusy za rozumnou cenu od MES Praha s.r.o., viz http://www.mespraha.cz,
tel. 241 933 765. Tato firma zastupuje i další zajímavé výrobce součástek
(Zarlink, ARM, Xilinx, Ericsson, LT, PI0, takže doporučuji mrknout na jejich
stránky.
Někteří z Vás mohou navrhnout, že na trhu je dostupných několik modulů,
jenže drtivá většina z nich pracuje na stejném principu rezonátoru ze SAW
a je již prostě doba to trochu změnit. Jednoduchá zapojení s LC oscilátorem
popsaná dříve na stránkách tohoto časopisu mají své mouchy. Digitální
technika nám je pomůže částečně eliminovat.
Jaké jsou tedy základní vlastnosti tohoto obvodu? Blokové schéma je na
obr.1. Výrobce ve specifikaci udává tyto základní informace:
· kompletní jednočipový GMSK transceiver v malém 32 vývodovém pouzdře
· "ShockBurst" režim pro snížení spotřeby
· napájecí napětí 1.9V až 3.6V
· pracuje na různých kanálech - kompatibilita s normami ETCI i FCC
· přepnutí kanálu za méně než 650us
· velmi nízká cena
· nevyžaduje externí SAW filtr
· nastavitelný výstupní výkon do 10dBm
· detekce nosné
· "Data Ready" signál při příjmu či vysílání
· signál "Address Match" při příjmu
· automatické opakování přenosu dat
· automaticky generuje CRC a hlavičku paketu
· nízká spotřeba proudu při vysílání i příjmu
Jako základní aplikace pak výrobce doporučuje:
· bezdrátová komunikace
· alarmy a bezpečnostní systémy
· domácí automatizace
· dálková ovládání
· vzdálený dohled
· automobilové aplikace
· telemetrie
· průmyslové senzory
· hračky
Základní elektrické parametry obvodu jsou tyto (pro podrobnější informace doporučuji studium datasheetu):
Napájecí napětí: 1.9V až 3.6V
Proudová spotřeba v power down režimu: 2.5uA
Pracovní kmitočet transceiveru: 430 - 928MHz
Kmitočtový zdvih: +-50kHz
Rychlost přenosu dat GFSK, Manchester kódování: 100kbps
Maximální výstupní výkon vysílače: 10dBm
Citlivost přijímače pro 0.1%BER: -100dBm
Obr.1. Blokové schéma obvodu nRF9E5
Obr.2a. Výkres pouzdra QFN32.
Obr.2b. Reálná velikost.
Mikroprocesor
Základem je mikroprocesor s instrukčním souborem kompatibilním se standardem 8051. Jeho časování je poněkud odlišné, instrukce potřebuje 4 až 20 strojových cyklů v porovnání s 12ti až 48mi pro "klasické" provedení. Řadič přerušení je rozšířen o 5 dalších zdrojů ADC (analogově digitální převodník), SPI (sběrnice), 2 pro řízení transceiveru a 1 pro probouzení ze "spícího" režimu. Mikroprocesor obsahuje i 3 časovače kompatibilní s 8052 typem a UART s generováním přenosových rychlostí pomocí časovače 1 nebo 2.
Konfigurace paměti a bootování programu
Uživatelský program je po resetu nahrán do interní SRAM paměti z externí
EEPROM paměti přes sběrnici SPI takzvaným "bootloaderem". Ten je
uložen v malé paměti ROM (512 bajtů). Defaultní bootloader očekává
externí paměť typu 25320 s SPI rozhraním. SPI používá piny MISO, SCK,
MOSI a EECSN. Po ukončení nahrání programu mohou být tyto piny použity
jako obyčejné vstupně výstupní piny nebo jako sběrnice SPI.
RAM paměť může být použita i pro ukládání dat vlastní aplikace a její
velikost je 4kB (tedy jako například u 89C4051). Tento způsob uložení
programu je hlavním rozdílem proti dnes rozšířenému standardu , kdy je
program uložen v paměti FLASH mikroprocesoru. Vyžaduje sice jednu externí
součástku navíc, ale zase nejsou potřeba speciální programátory podporující
jen omezený počet mikroprocesorů.
Speciální registry
Základní registry obvodu Nordic jsou kompatibilní s registry mikroprocesoru 8052. Rozšířené funkce jsou řízeny pomocí několika speciálních registrů a jejich kompletní popis naleznete v datasheetu. Pro programátory v jazyce C existuje soubor s definicí všech registrů pro tento obvod distribuovaných například firmou Keil.
PWM
Obvod obsahuje jednoduchý modul PWM (pulzně šířková modulace), který je dostupný na pinu P0.7. Rozlišení PWM je programovatelné 6, 7 nebo 8 bitů. Frekvence PWM je odvozena z krystalu mikroprocesoru přes 6ti bitový předdělič. Činitel plnění je pak 0-100% a řídí se jedním 8mi bitovým registrem. Modul PWM neumožňuje různé režimy známé z jiných mikroprocesorů, ale bohatě stačí pro řadu aplikací. Výhodou je jeho jednoduchost.
SPI
Sběrnice SPI je typu "master" a je multiplexovaná mezi výstupními piny, AD převodníkem a transceiverem. Negeneruje žádný "chip select - CS" signál a je po resetu využita pro komunikaci s externí pamětí programu. CS signál je možné programově vytvořit na libovolném pinu a umožnit tak například jednodušší layout plošného spoje.
Power management
Obvod může být naprogramován do několika stavů s různou proudovou spotřebou, viz. Tab.1., tyto hodnoty jsou důležité při návrhu napájení finálního zařízení. Jednotlivé subsystémy jako ADC či transceiver mohou být programově vypnuty či zapnuty. Mikroprocesor se zastaví, ale hodnoty paměti a registrů zůstávají beze změny. Proudová spotřeba je typicky 2uA a režim je možné ukončit přerušením z watchdogu, RTC časovače či portu P0.
Tab.1. Typická spotřeba obvodu
Režim |
Typická
spotřeba |
Lehký (Light) power down |
0.4mA |
Střední (Moderate) power down |
125uA |
Standby režim |
25uA |
Hluboký (Deep) power down |
2.5uA |
MCU
@ 0.5MHz 3V |
0.125mA |
MCU
@ 1MHz 3V |
0.25mA |
MCU
@ 2MHz 3V |
0.5mA |
MCU
@ 4MHz 3V |
1mA |
MCU
@ 8MHz 3V |
2mA |
MCU
@ 12MHz 3V |
3mA |
MCU
@ 16MHz 3V |
4mA |
MCU
@ 20MHz 3V |
5mA |
Příjem 433MHz |
12.2mA |
Příjem 868/915MHz |
12.8mA |
Redukovaný RX režim |
10.5mA |
Vysílání @10dBm |
30mA |
Vysílání @6dBm |
20mA |
Vysílání @-2dBm |
14mA |
Vysílání @-10dBm |
11mA |
Wakeup a Watchdog obvody
Obvod nRF9E5 obsahuje i interní pomaluběžný oscilátor CKLF, který běží neustále. Pokud je aktivní krystalový oscilátor, je signál CKLF 4kHz odvozen z něj. V případě, že není krystalový oscilátor povolen, je signál CKLF odvozen z interního RC oscilátoru, který běží dokud je napájecí napětí větší nez 1.8V. Obvody watchdogu, wakeup časovače a portu P0 jsou řízeny právě z tohoto signálu z důvodu jejich nutné aktivity v režimu snížené spotřeby.
RTC Wakeup časovač je tvořen 24 bitovým čítačem a Watchdog pak čítačem
16ti bitovým. Rozlišení obou systémů je programovatelné od 300us do cca
80ms. Defaultní nastavení je 1ms. Wakeup časovač je plně ovládatelný řídícím
software. Watchdog je po resetu zakázán a pokud je povolen, nedá se zakázat
jinak než dalším resetem. Přetečení wakeup časovače může také vyvolat
programovatelný puls dostupný na portu P0.
Ukončení stavu se sníženou spotřebou může být mimo přetečení Wakeup
časovače vyvoláno také jedním nebo více piny na portu P0. Citlivost na
hranu (sestupnou, vzestupnou či obě) a filtr proti překmitům se dá nastavit
pro každý pin zvlášť.
Tyto funkce jsou velmi zajímavé pro napájení zařízení z baterie, kdy
obvod setrvává ve stavu nízkého příkonu (odběr cca 2uA) a po dané době
se probudí a začne komunikovat. Filtrace na vstupech pak spolehlivě
odfiltruje krátké zákmity.
Krystalový oscilátor
Všechny interní obvody včetně AD převodníku a transceiveru používají signál z krystalového oscilátoru. Obvod pracuje s krystaly o kmitočtu 4, 8, 12, 16 a 20 MHz. Pro dosažení optimálních parametrů je vhodné krystal specifikovat pro Cl=12 až max 16pF. Činnost oscilátoru může být řízena programem. Pozor, je nutné používat pouze tyto uvedené hodnoty krystalů, nic jiného. Je to cena za jednoduchost vnitřních obvodů pro generování referenčních kmitočtů pro transceiver.
AD převodník
Obvod nRF9E5 obsahuje i 10ti bitový převodník s maximální rychlostí 80
vzorků za sekundu. Referenční napětí může být použito externí na pinu
AREF či interní reference 1.22V. Převodník má 5 vstupů, vstupy 0 - 3 jsou
dostupné na pouzdře obvodu jako AIN0-AIN3. Volbou vstupu číslo 4 dokáže
obvod měřit vlastní napájecí napětí, které se interně připojí na
vstup AD převodníku přes vestavěný odporový dělič. To je velmi zajímavá
vlastnost, která uspoří několik externích součástek a zároveň nezabírá
užitečný vstup převodníku.
Rychlost převodníku je řízena programem stejně tak jako rozlišení, které
může být nastaveno na 6, 8 či 12 bitů. Převodník může být také použit
v diferenciálním módu, kdy je AIN0 brán jako záporný vstup a další 3
vstupy jsou pak brány jako neinvertující. 10ti bitové rozlišení je dnes
standardem pro tento typ mikroprocesorů a opět bohatě dostačuje pro řadu měření.
Výsledek měření je dostupný ve dvou bajtech a dá se zvolit zarovnání výsledku
doprava či doleva.
Při testech jsem narazil na jedno zajímavé omezení a tím je maximální
hodnota externího referenčního napětí pro AD převodník. Nesmí překročit
hodnotu 1.5V, takže se nedá spojit s napájecím napětím, jak je to běžné.
Vstupně výstupní porty
Obvod nRF9E5 má dva porty P0 a P1 podobně jako klasický 8051, ale jejich
ovládání je odlišné. Porty jsou obousměrné a směr každého pinu se přepíná
pomocí registru _DIR. Na portu P0 je dostupných 8 pinů, na P1 pak další 4
piny sběrnice SPI. Každému pinu může být také přiřazena alternativní
funkce a k tomu slouží registr _ALT. Je to odlišná filozofie než u původní
8051, ale velmi často se objevuje u jiných procesorů (Freescale, Atmel AVR
apod.).
Alternativní funkce, které je možné portu P0 a P1 přiřadit jsou:
T2 (vstup časovače 2) - pin SCK
GTIMER - P0.0
RXD (UART výstup) - P0.1
TXD (UART vstup) - P0.2
INT0 (přerušení 0) - P0.3
INT1 (přerušení 1) - P0.4
T0 (vstup časovače 0) - P0.5
T1 (vstup časovače 1) - P0.6
PWM - P0.7
Výstupy mohou být použity i pro přímé buzení LED diod (větší dodaný
proud), ale na daném pinu musí být tato funkce zapnuta pomocí registru _DRV.
Port P1 je primárně určen jako SPI port a slouží také pro komunikaci s
EEPROM po zapnutí napájení. Poté je možné port tento port využít podobně
jako port P0.
Anténa
Piny ANT1 a ANT2 tvoří symetrický vysokofrekvenční výstup pro připojení antény. Oba piny také slouží pro napájení interního výstupního zesilovače, které se připojí buď přes tlumivky nebo do správného bodu dipólové antény. Optimální impedance antény je 300+j100 pro 430MHz a 225+j210 pro 900MHz. Připojení antény s nízkou impedancí, například 50O se dá realizovat přes jednoduchý balun. Na webovské stránce výrobce obvodu najde čtenář řadu příkladů pro realizaci různých antén na plošném spoji.
Transceiver
Právě tato část obvodu zásadně odlišuje nRF9E05 od ostatních
mikroprocesorů. Obvod vysokofrekvenčního transieveru je funkčně shodný s
obvodem nRF905. S mikroprocesorem komunikuje po interní paralelní nebo sériové,
SPI sběrnici. Signály "Data Ready", "Carrier Detect" a
"Address Match" signály jsou mohou být použity jako zdroje přerušení
pro mikroprocesor nebo vyvedeny na port P0.
Obvod je určen pro práci v ISM pásmech 433/868/915MHz. Transceiver se skládá
z integrovaného frekvenčního syntezátoru, výkonového zesilovače, modulátoru
a přijímače. Výstupní výkon, kmitočet a další vysokofrekvenční
parametry se dají snadno modifikovat přes SPI sběrnici. Proudová spotřeba
je cca 11mA při vysílání (výstupní výkon -10dBm) a cca 12.5mA při příjmu.
Transceiver se dá programově vypnout a snížit tak celkovou spotřebu zařízení.
Výstupní výkon se dá řídit ve čtyřech stupních -10dBm (11mA),
-2dBm(14mA), 6dBm(20mA) a 10dBm(30mA).
"ShockBurst (TM)" režim
Princip ShockBurst režimu je vysvětlen na obr.3. V podstatě jde o efektivní využití maximální dostupné komunikační rychlosti obvodu nRF9E5. Data s nižší přenosovou rychlostí jsou přenášena po sběrnici SPI do obvodu transceiveru, který je po naplnění vyrovnávací paměti pošle vzduchem rychlostí 100kbps. Díky tomu se redukuje spotřeba proudu během vysílání. Další důležitou vlastností transceiveru je automatické generování hlavičky a CRC (kontrolní součet) pro každý rámec. To snižuje požadavky na vlastní mikroprocesor i na vývoj software. Uživatel si jen "vyzvedne" data z registrů.
Obr.3. Princip režimu ShockBurst (TM).
Obr.4. Srovnání proudové spotřeby klasického systému a režimu ShockBurst
(TM).
Typický algoritmus pro vysílání dat v nRF9E5:
· Mikroprocesor shromáždí data a adresu pro přijímací stranu a tyto
hodnoty pošle do transceiveru po interní SPI sběrnici.
· Mikroprocesor nastaví signály TRX_CE a TX_EN do logické 1, což aktivuje
nRF9E5 ShockBurst(TM) vysílání.
· nRF9E5 ShockBurst (TM)
- transceiver se aktivuje
- zkompletuje se celý datový rámec (přidá se hlavička a CRC)
- datový rámec je vysílán rychlostí 100kbps (GFSK, Manchester)
- signál DataReady je nastaven do log. 1. až je vysílání ukončeno
· Pokud je nastaven bit AUTO_RETRAN, nRF9E5 automaticky opakuje vysílání
dokud je TRX_CE v log. 1.
· Pokud je TRX_CE nastaven do log.0., nRF9E5 dokončí vysílání paketu a přejde
do režimu snížené spotřeby
Pro testovací účely je potřeba mít k dispozici kontinuální nosnou. Toho lze dosáhnout nastavením TRX_CE do log. 1. a vypnutím AUTO_RETRAN. Po ukončení vysílání vlastních dat bude obvod vysílat pouze nemodulovanou nosnou.
Typický algoritmus pro příjem dat v nRF9E5:
· Přijímací ShockBurst(TM) režim se aktivuje nastavením TRX_CE do log.1. a
TX_EN do log. 0.
· Za 650us začne nRF9E5 monitorovat okolní komunikaci
· Pokud nRF9E5 detekuje nosnou na daném kanále, nastaví CarrierDetect indikátor
do log.1.
· Když nRF9E5 přijme platnou adresu, nastaví indikátor AddressMatch do
log.1.
· Když nRF9E5 přijme platná data, tranceiver odstraní z dat hlavičku a CRC
a nastaví indiátor DataRady do log.1.
· mikroprocesor nastaví TRX_CE do log.0. pro snížení proudové spotřeby
· mikroprocesor vyčte data z transceiveru po sběrnici SPI
· po vyčtení všech dat se nastaví indikátory DataReady a AddressMatch opět
do log.0.
· čip je připraven k další operaci.
Pro někoho mohou být tyto informace na první pohled nesrozumitelné. Přeloženo
do pochopitelnější "bastlířské" řeči to znamená, že tento
obvod potřebuje k přenesení požadované informace (digitální či analogové
převedené do digitální) mnohem kratší čas než klasické analogové systémy.
Další velmi výraznou vlastností obvodu je fakt, že se programátor nemusí
starat o přípravu dat před vlastním přenosem vzduchem. Pokud si například
koupíme analogový modul se SAW rezonátorem, musíme programově ošetřit
odstranění stejnosměrné složky ze signálu, přípravu a výpočty kontrolního
součtu, musíte si rezervovat čas mikroprocesoru, kdy se bude kontrolovat příjem
signálu, kontrolovat případnou adresu právě vysílajícího modulu apod. Převedeno
do času práce středně zkušeného programátora to znamená alespoň 50
hodin. To vše dokáže nRF9E5 ušetřit.
Typické odeslání a příjem pak "laicky" vypadá asi takto:
Mám data > zapnu transceiver > předám mu data > vypnu transceiver
>>> Zapnu transceiver > čekám, dělám něco jiného > přijde
příznak přijatých dat > vyzvednu zkontrolovaná data > vypnu
transceiver.
Zásadní je i to, že uvnitř nRF9E5 máme k dispozici nejen vysílač, ale i přijímač
a anténní přepínač. Což se objevuje u jednoduchých analogových systémů
velmi zřídka a za cenu přesahující 800Kč.
Velmi důležitým faktem, který by neměl ujít Vaší pozornosti při čtení
datasheetu je minimální napájecí napětí obvodu - 1.9V. To znamená, že
aplikace dokáže být napájena i ze dvou tužkových baterií či akumulátorů.
V jednom s režimů sníženého příkonu má obvod odběr řádu uA a dokáže
tak z baterií pracovat několik let. Tím se blížíme k parametrům různých
profesionálních zařízení a přitom je můžeme využít pro svou domácí
aplikaci. Pozor, aby i další součásti aplikace byly určeny na stejné napájecí
napětí.
Výhodou krátké vysílací doby systému je i fakt, že bude méně docházet
ke kolizím paketů ve vzduchu při současném použití více vysílacích
modulů. Vznik kolizního stavu se dá navíc minimalizovat využitím detekce
nosné, kdy obvodu zakážeme vysílat, pokud na daném kanále již "slyší"
nějakou komunikaci.
Zapomeňte na zvyšování výstupního výkonu vysílače. Sice existuje aplikační
poznámka na toto téma, nicméně využívá poměrně speciálních součástek.
Hlavním požadavkem je rychlost přepínání příjem/vysílání.
Tolik z citace datasheetu, který má přes 100 stran a rozhodně doporučuji jeho přečtení.
Největší překážkou pro rozšíření tohoto obvodu do radioamatérské
praxe je použité pouzdro. Obvod je nabízen pouze v pouzdře QFN32 5x5, což v
praxi vypadá jako čtvereček plastu o rozměrech 5x5mm s celkem 32mi "vývody".
Ty jsou pouze ze spodní části obvodu ve formě malých kontaktních plošek a
proto se tomuto provedení říká bezvývodové (leadless). Dá se předpokládat,
že nové integrované obvody budou tuto technologii používat více a více,
protože se jedná o velmi levné pouzdro. Hlavním důvodem je minimální množství
mědi a pouzdřící hmoty. Ve svém zaměstnání jsem měl možnost tato
pouzdra používat pro nové obvody ON Semiconductor a mohu říci, že pouzdro
QFN je cca 3x levnější než známé 5ti vývodové pouzdro TO220. Pouzdro QFN
se nedá jednoduše zapájet na nějakou "bastldesku", základem úspěchu
je profesionální plošný spoj. Abych umožnil široké konstruktérské přístup
i k tomuto integrovanému obvodu, navrhnul jsem a realizoval modul s obvodem
Nordic nRF9E5, které se dá použít v řadě aplikací.
Vývojové prostředky
Vzhledem k tomu, že se jedná o mikroprocesor kompatibilní s řadou x51,
lze použít standardní vývojové prostředky pro napsání aplikace. Pokud
chce uživatel využít speciální funkce obvodu nRF9E5, musí samozřejmě
nastudovat dané registry. Já jsem při své práci stále věrný volně šířitelné
verzi programu FSI (www.fsinc.com) nebo jeho následovníku z www.raisonance.com.
Vzhledem k tomu, že velikost programu nRF9E5 je omezena na 4kB, lze používat
volně šířitelné verze zmíněných programů. Ty umožňují programování
jak v assembleru tak i v jazyce C. Existuje i definiční soubor
"reg9e5.h" s popisem všech speciálních registrů.
Pokud tedy již používáte například mikroprocesory 89C2051, nemusíte měnit
své pracovní prostředí a přitom dostáváte do rukou vynikající součástku
s VF transceiverem.
Menší zamyšlení je potřeba při volbě programátoru SPI EEPROM paměti
typu 25320. Tento typ paměti není až tak běžný, většinou se používají
paměti se sběrnicí I2C. Nicméně existuje univerzální programátor
PonyProg, viz. http://www.lancos.com/prog.html. Ten s různými interfejsy dokáže
programovat stovky různých obvodů, včetně naší 25320. Interfejs pro tuto
paměť je navíc velmi primitivní a tvoří jej 5 rezistorů, 2 diody a
pozooor, jeden tranzistor. Celý se dá vměstnat do krytky konektoru cannon9 a
postavit za 30 minut.
Schéma programátoru je na obr. 5. Rezistory 4k7 a 3V zenerovy diody omezují
napěťové úrovně na RS232. Tranzistor ovládá ChipSelect (CS) signál paměti.
O zbytek se postará řídící program PonyProg. Jediná nevýhoda tohoto řešení
je nutnost odpojení programátoru od modulu po naprogramování paměti. Je
nutné, aby nebyla ovlivněna komunikace nRF9E5 obvodu a EEPROM paměti.
Obr.5. Schéma programátoru paměti 25320 pro PonyProg.
Paměť EEPROM obsahuje mimo vlastních dat i speciální hlavičku pro
nastavení některých parametrů obvodu. Výstupní soubor HEX z překladače
je nutné o tyto informace doplnit, což je také poměrně specifický požadavek.
Tab.2. Význam prvních bajtů v paměti EEPROM
|
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
0: |
Verze (nyní 00) |
Rezervováno (00) |
RYCHLOST |
XO_FREQ |
||||
1: |
Offset pro start programu N |
|||||||
2: |
Počet 256ti bajtových bloků v programu |
|||||||
... |
Volitelná uživatelská data, nepoužito
bootloaderem |
|||||||
... |
... |
|||||||
N |
První bajt uživatelského programu, bude umístěn
na adresu 0x0000 v procesoru. |
|||||||
N+1 |
Druhý bajt uživatelského programu, bude umístěn
na adresu 0x0001 v procesoru. |
|||||||
... |
... |
Maximální RYCHLOST (bit 3) použité paměti EEPROM:
0 = 1MHz
1 = 0.5MHz
XO_FREQ - kmitočet krystalového oscilátoru
000 = 4MHz
001 = 8MHz
010 = 12MHz
011 = 16MHz
100 = 20MHz
Firma Nordic pro tento účel publikovala program s názvem EEPREP, který
najde zájemce na jejich webovských stránkách. Program se spouští v tomto
formátu:
eeprep [volby] <vstupní soubor> <výstupní soubor>
<vstupní soubor> je soubor ve formátu Intelhex z kompilátoru
<výstupní soubor> je soubor ve formátu vhodném k naprogramování do
EEPROM
[volby] jsou:
-c n = volba krystalu v MHz
-i = ignoruj kontrolní součty
-p n = nastav maximální velikost programu (standardně 4096 bajtů)
-s = použita pomalejší EEPROM (fclk = 500kHz)
Pro náš modul pracující s krystalem 8MHz pak bude příkaz
na úpravu HEX soubory vypadat takto:
Eeprep.exe -c 8 vstup.hex vystup.hex
Celý vývojový postup je přehledně zobrazen na obr.6.
Obr.6. Postup práce s nRF9E5 a Ponyprog.
Samozřejmě se dá koupit i originální vývojový kit pro obvod nRF9E5, ale jeho cena je kolem 300Euro. S malým omezením ale bohatě vystačí i varianta programátoru za 5Kč a univerzální modul popsaný dále. Jak jsem již zmínil, největším omezením práce s nRF9E5 je jeho pouzdro QFN32. Rozhodně se nedá zapájet do univerzální desky či ručně malovaného plošného spoje. Vzhledem k tomu, že se mi obvod velmi líbil, realizoval jsem malý plošný spoj, na který se dá obvod připájet. Celý tento modul se dá poté využít v řadě aplikací, které jsou již na obyčejných plošných spojích.
Pájíme pouzdro QFN
Návrh plošného spoje v počítači není problém, například knihovny
populárního programu Eagle toto pouzdro obsahují. Problém nastává ve výrobě.
Pro ruční osazení je dobré mít nepájivou masku i mezi vývody, což při
rozteči 0.5mm dává šířku masky cca 0.17mm. Tím spadne plošný spoj do 6.
konstrukční třídy a výrazně naroste i jeho cena. Inu, každá sranda něco
stojí a stává se, že plošný spoj stojí více než vlastní kus křemíku.
Samozřejmostí musí být i žárové cínování HAL.
Pro vlastní zapájení se doporučuji vybavit kvalitní mikropájkou (používám
ERSA RDS80), kvalitním tenkým hrotem například 0.4mm, kvalitní pájkou
(alias "cínem") tloušťky 0.5mm (použil jsem Stannol Kristal 400),
nějakým kvalitním tavidlem (želé Multifix 450-01) a odsávací páska (například
Stannol šířky 2.2mm). Určitě se hodí i velká lupa a pinzeta. Pomůže i
kalíšek nějaké Valašské medicíny. Ne místo tavidla, ale na kuráž a
klidnou ruku. Nejsem dealerem firmy Stannol, ale s jejich produkty jsem velmi
spokojen. Navíc se dají koupit přímo v Rožnově p.R. u firmy PBT.
Po důkladné kontrole plošného spoje ohmmetrem na něj naneseme malé množství
tavidla jehož hlavním účelem bude pouzdro chvíli fixovat. Pouzdro QFN je
nutné před osazením také pocínovat. Stačí vzít na hrot malé množství
cínu a opatrně každou plošku hrotem "přejet". Snažíme se, aby všechny
plošky vypadaly stejně, pro lepší efekt použijeme i tavidlo. Poté umístíme
opatrně pouzdro na plošný spoj tak, aby všechny vývody "seděly"
přesně k ploškám na spoji. Nyní pouzdro přitlačíme pinzetou a hrotem pájky
připájíme jeden vývod. Doporučuji začít pinem číslo 16, což je zemní
přívod. Stačí přitisknout hrot pájky k pouzdru v místě daného vývodu a
zároveň tlačit na pouzdro pinzetou. Poté podobně připájíme i druhý
krajní vývod na stejné straně pouzdra a pin 32. Po kontrole polohy pouzdra naneseme
na danou stranu větší množství tavidla a zapájíme i vývody 9 až 16. Vždy
na hrot nabereme malé množství cínu, které se pak přenese na plošný spoj
a hranu pouzdra QFN. Druhou odzkoušenou metodou je na hrotu pájky vytvořit
kuličku cínu a tou přejet vždy jednu stranu pouzdra. Nesmíme pracovat
"nasucho" čímž nemyslím švestkové C2H5OH ale tavidlo.
Pokud se Vám dva vývody slijí dohromady, nezoufejte. Odsávací páska je
geniální vynález. Po zapájení celé jedné strany chvíli vyčkejte na
vychladnutí pouzdra a poté páskou případně odstraňte přebytečný cín.
Nyní je vhodná chvíle na elektrickou kontrolu pájení. K tomu je potřeba
tester diod dostupný na téměř každém multimetru. Princip metody spočívá
v testování interní ESD diody, která chrání obvod proti elektrostatické
elektřině. Kladný pól připojíme na zemní pin, postupně se dotýkáme
jednotlivých pinů v místě pinheadu či SMD součástky a kontrolujeme napětí
interní diody. Je-li vše v pořádku, bude displej multimetru ukazovat
400-700mV. Současně kontrolujeme i sousední vývody, zda nemají zkrat. V případě
nepřipájené plošky bude multimetr ukazovat maximální hodnotu (např. 2V),
zkrat pak bude prezentován napětím blízkým 0V. Některé piny jako VCC,
AREF apod budou ukazovat mírně odlišné hodnoty napětí, protože jsou uvnitř
řešeny konstrukčně jinak.
Je-li vše v pořádku, zapájíme stejným způsobem i další 3 strany
pouzdra. Pozor s používáním zmíněné medicíny, od určitého množství
začne působit proti klidu ruky a bystrému oku.
Princip tohoto ručního osazení spočívá ve vytvoření pájeného spoje
jednak zespodu obvodu a také z boku, kde jsou po vyseknutí ze zalévací formy
dostupné hrany plíšků tvořících vývody. Tento způsob je samozřejmě
vhodný pouze pro osazení několika kusů a určitě se nedá doporučit k sériové
vývodě.
Modul s nRF9E5
Schéma vlastního modulu je na obr.7. a představuje katalogové zapojení
obvodu. Krystal Q1, R1, C1 a C2 tvoří obvod oscilátoru. C3-C7 tvoří
blokovací kondenzátory, R2 je přesný referenční odpor použitý pro
nastavení interních obvodů nRF9E5. L1 až L3 spolu s kondenzátory C9, 10,
12, 13, 14 a 15 tvoří transformační obvod pro připojení 50 ohmové antény.
Deska může pracovat na obou pásmech 430MHz i 860MHz, ale musí se změnit
hodnoty indukčností a kondenzátorů a samozřejmě i řídící program.
Pozornému čtenáři určitě neušel fakt, že zapojení, byť má přívlastek
vysokofrekvenční, neobsahuje žádné nastavovací prvky jako laditelné cívky
či varikapy. Ano. Pro tento účel bohatě stačí oscilátor přímo na čipu.
Je pravdou, že spektrální obraz nosné frekvence nebude moc připomínat
krystalový oscilátor, nicméně pro komunikaci na pár set metrů to určitě
nevadí.
R7, C4 a C5 slouží k připojení externí reference pro analogově digitální
převodník. IC1 je paměť 25AA320 (Microchip, fungující od 1.8V), odpory
R3-R6 slouží jako ochrana nRF9E5 při programování paměti. Originální vývojový
kit pro tento obvod má rozhraní mezi pamětí, mikroprocesorem a externím
programátorem řešeno lépe a programátor může být k aplikaci připojen
neustále. Finta spočívá v připojení oddělovacích hradel do signálů SPI
a jejich ovládání. Nicméně stávající řešení s programovacím
interface za 5Kč považuji za dostačující.
Obr.7. Schéma modulu s nRF9E5.
Port P0 a vstupy AD převodníku jsou vyvedeny na externí piny a tvoří interfejs pro připojení do cílové aplikace. Paměť EEPROM se programuje pomocí SPI signálů vyvedených na konektor. Ten nemusíte osazovat, pokud se chystáte modul naprogramovat jen několikrát a budete používat již odzkoušený binární soubor. V tomto případě stačí potřebné vodiče z interface připájet přímo na plošný spoj.
Schéma je realizováno na oboustranné desce plošných spojů o rozměrech
25x30mm. O jejich parametrech jsem se částečně zmiňoval již dříve, ale
navíc se jedná o vysokofrekvenční zapojení a tomu odpovídá i rozmístění
via průchodů a zemnící plocha. Všechny pasivní součástky jsou rozměru
0805. Výrobce doporučuje použít součástky 0603, ale s těmi se již obtížně
manipuluje při ručním osazování.
Velmi důležitým faktem je maximální napájecí napětí obvodu 3.6V, které
nesmí být překročeno. Jako levný použitelný stabilizátor se nabízí
78L02 s výstupním napětím 2.6V (ne 2V!!!). Veškeré externí signály, které
budou na modul přivedeny, MUSÍ být napěťově omezeny na napájecí napětí
obvodu. To se dá snadno zajistit pomocí zenerových diod či schottky diod
proti napájecímu napětí ve spojení se sériovým omezovacím odporem.
Obvod nRF9E5 pracuje od napájecího napětí 1.9V. Aby bylo možné využít i
tak nízké napětí, je nutné, aby od tohoto napětí pracovala také paměť
EEPROM. Řada výrobců nabízí podobné typy, ale ty pracují až od 2.8V. Což
nemusí být problém pro napájení ze 2 tužkových baterií, nicméně 2 NiMH
akumulátory již neposkytnou dostatečné napětí.
Záměrně v této části článku nepopisuji vlastní osazení modulu, protože
hlavní bylo řečeno v části popisující pájení pouzdra QFN. Rozhodně
nedoporučuji stavbu modulu vlastními silami začátečníkům, kteří nemají
zkušenosti s pájením SMD součástek či nechtějí investovat do kvalitních
pájecích materiálů.
Obr.8. Výkres plošného spoje, strana součástek.
Obr.9. Výkres plošného spoje, strana spojů.
Obr.10. Osazovací výkres, strana součástek.
Obr.11. Osazovací výkres, strana spojů.
Seznam součástek pro modul
Všechny pasívní součástky jsou rozměru 0805
C1,2 22p
C3 10n
C4 100n
C5 1n
C6,12 3n3
C7,8 33p
C9 nepoužit
C10,13 18p (pro 860MHz 3.9p)
C11 33u/6V
C14 180p (pro 860MHz 33p)
C15 6p8 (pro 860MHz 33p)
R1 1M
R2 22k
R3,4,5,6,7 10k
IC1 25AA320 SO8
IC2 NRF9E5
L1,3 39nH (pro 860MHz 12nH)
L2 12nH
Q1 8MHz
Obr.12. Fotgrafie osazeného modulu.
Obr.13. Fotgrafie pouzdra QFN v porovnání s DIL40.
Obr.14. Fotgrafie použitých materiálů a nářadí.
Závěr
S daným modulem nebudete mít přístup na internet na vzdálenost 5km, ale budete si schopni postavit mnoho malých a chytrých čidel, která si pak můžete umístit ven, do pokoje, na půdu, do skleníku, do vinného sklípku, do pivního sklípku, na záchod, do mísy, do bazénu, do ledničky, do garáže, do květináče a tato čidla Vám mohou hlásit aktuální teplotu, vlhkost, výšku hladiny, tlak, napětí atd.
V dalším pokračování pak čtenářům nabídnu několik konkrétních aplikací modulu. Tím, prvním bude bezdrátový zabezpečovací systém.
Pro zájemce o tento modul bychom rádi připravili osazené a oživené desky. Taková výroba vyžaduje poměrně velkou finanční investici a zatím nemáme vůbec představu o možném zájmu. Proto pokud byste si modul rádi objednali, pošlete nám prosím email. Jakmile se sejde dostatečný počet zájemců, budeme Vás informovat. Předběžná cena modulu je 950Kč včetně DPH. Děkujeme za pochopení.