English version

Jednoduchy bezdrátovy teploměr

    úvod:
Za?ízení slou?í k bezdrátovému digitálnímu mě?ení teploty v rozmezí -40 ... +70 °C s rozli?ením na 0,1°C. Umí i zaznamenávat nejvy??í a nejni??í namě?enou hodnotu (maximum a minimum). K zobrazení slou?í LED displej. Vytvo?il jsem 1-kanálovou a pak také 2-kanálovou verzi.
    Metoda p?enosu:
Signál je p?ená?en z ?idla do zobrazovací jednotky pomocí komunika?ních modul? na pásmu 433 MHz na frekvenci 433,92 MHz. Na tomto pásmu je mo?no vysílat datové p?enosy s malym objemem dat a s vykonem a? 10mW. ?lo by v?ak bez dal?ích úprav pou?ít i jiné pásmo, nap?. 868 MHz, kde je povoleno a? 25mW. K p?enosu lze pou?ít hotové komunika?ní moduly - typy, které mají 3 vyvody: napájecí napětí, zem a vstup (vysíla?) ?i vystup (p?ijíma?). Jejich pou?ití je velmi jednoduché. Logické impulzy na vstupu vysíla?e se prostě objeví na vystupu p?ijíma?e, tedy alespoň pokud je v dosahu a není ru?en jinym za?ízením. Data jsou p?ená?ena modulací délkou pulzu. V jednom snímku je p?ená?eno 24 bit? dat - hodnota namě?ené teploty (11 bit?), ID senzoru (1 bit), paritní bit a kontrolní inverze údaje teploty. Logická 1 je p?edstavována pulzem délky 512us, 0 pulzem 128us, mezera mezi bity má v?dy 256us, mezera mezi snímky 1024us. Rozdíl mezi krátkym a dlouhym pulzem a mezi krátkou a dlouhou mezerou je v?dy ?ty?násobny, tak?e p?enosovy systém je odolny v??i velkym odchylkám taktovacích frekvencí vysíla?e a p?ijíma?e a není nutné pou?ívat krystaly. Pr?měrná p?enosová rychlost je cca 1800 b/s.
    Vysíla?:
Vysíla? (bezdrátové ?idlo teploty) je ?ízen Atmel AVR mikroprocesorem IO1 - ATTiny13A (ATTiny13, ATTiny13V), bě?ícím na frekvenci 1,2 MHz z interního RC oscilátoru. Data jsou p?ená?eny pomocí radiového signálu. Jako sníma? teploty slou?í integrovany obvod IO2 typu MCP9700A. Ten poskytuje na vystupu napětí lineárně závislé na teplotě, s koeficientem 10mV/°C + 500mV. Díky p?i?tění konstanty 500mV umo?ňuje mě?ení zápornych teplot bez záporného vystupního napětí. Vlastní spot?eba MCP9700A je jen 5uA, co? je pro bateriově napájené za?ízení vyhodné. Rozli?ení AD p?evodníku obvodu IO1 je p?evzorkováním zvy?eno z 1024 na 1216 krok? a tím je dosa?eno rozli?ení mě?ení na 0,1°C. P?i ka?dém obnovení je provedeno 38 AD konverzí, ty jsou se?teny a vyděleny 32. Tím je získán 11-bitovy vysledek. Pro p?evzorkování by posta?ilo méně vzork?, ale jejich vět?í mno?ství vede k lep?í stabilitě a eliminuje náhodné chyby. K vysledku je p?idáno 1-bitové ID vysíla?e, které umo?ňuje rozli?it 2 vysíla?e. Ze vzniklych 12 bit? je pro kontrolu vytvo?en 13. paritní bit. Navíc je pro je?tě spolehlivěj?í ově?ení p?enosu odesílán 11-bitovy inverzní údaj teploty (vyměněny 0 a 1). Cely snímek tedy má 24 bit?. Vysílá se od MSB nejprve invertovaná teplota, pak paritní bit, pak kanál a nakonec neinvertovaná teplota. Snímek je odeslán v?dy 3x za sebou a to ka?dych 20s pomocí vysílacího komunika?ního modulu. ?idlo se kalibruje pomocí trimru P1. Pro snadněj?í kalibraci lze zvy?it obnovovací frekvenci z 1/20Hz na 1,5Hz propojením vyvodu PB0 se zemí. Poté nastavte P1 tak, aby p?ijíma? ukazoval správnou hodnotu. Propojením PB1 se zemí lze aktivovat vysílání zku?ebního signálu - vysíla? vysílá postupně v?echny hodnoty od -40 a? do +70 °C. Pro bě?ny provoz jsou vstupy PB0 a PB1 nezapojené. Vstup PB3 volí kanál. Lze volit kanál 0 (vstup spojen se zemí - zápornym pólem baterie) a nebo kanál 1 (spojen s kladnym pólem baterie). Stejny kanál musí byt zvolen i na p?ijíma?i (jednokanálová verze). Pro pou?ití s dvoukanálovym p?ijíma?em nastavte ka?dy vysíla? jinak. Kondenzátor C2 umístěte co nejblí?e IO1. Kondenzátor C3 umístěte co nejblí?e modulu vysíla?e Modul-1. Vysíla? se napájí napětím 3V nebo 4,5V nap?. ze dvou ?i t?í tu?kovych (AA) nebo mikrotu?kovych (AAA) baterií, podle toho, jaké napájecí napětí vy?aduje vysílací modul, p?ípadně podle po?adovaného dosahu. St?ední odběr je jen cca 25 - 30uA (FS1000A XD-FST, t?i ?lánky 1,5V) a doba provozu s bateriemi 1000mAh (kdy? není po?ítáno samovybíjení) je tedy cca 4 roky.
    P?ijíma?:
P?ijíma? dálkového ovládání je ?ízen IO3, ATmega8A (ATmega8, ATmega8L), taktovanym frekvencí 8 MHz z vnit?ního RC oscilátoru. K zobrazení teplot slou?í ?ty?místny LED displej. Displej je ?ízen multiplexně. Katody displeje jsou p?ipojeny na port B, anody na vyvody PD0, PD1, PD3, PD4 portu D. Frekvence multiplexu je cca 100Hz. Odpory R2...R9 ur?ují proud displeje a tím jeho jas. Lze pou?ít ?ty?místny displej nap?. CA56-12SRWA nebo dva dvoumístné nap?. LD-D056UR-C, LD-D036UR-C, LD-D036UPG-C, LD-D028UR-C ?i LD-D028UG-C. ?lo by pou?ít i t?ímístny displej a obdélníkovou LED místo segmentu g levé cifry (symbol minus), proto?e se zde vlastně nic jiného nezobrazuje. Pravou cifru lze vynechat, sta?í-li mě?ení na celé stupně (a pak i odpor od PB7 k segmentu h, proto?e te?ka není pot?eba). K p?íjmu slou?í Modul-2 (p?ijímací RF modul). Vystup je vyhodnocen mikroprocesorem IO3. Ten vyhodnocuje a zpracovává p?ijaty signál a pokud p?ijme kód ve správném tvaru - délka 24 bit?, souhlasí kanál (ID vysíla?e), paritní bit i inverzní hodnota - vyhodnotí p?íjem jako bezchybny a aktualizuje údaj na displeji. P?ijíma? také sleduje a zaznamenává maximální a minimální namě?ené hodnoty. Ty lze zobrazit stiskem tla?ítka MIN nebo MAX. Stiskem obou tla?ítek sou?asně je maximum a minimum resetováno. Vyvod PC3 slou?í jako indikátor p?íjmu signálu. Pokud byl v posledních 60s p?ijat signál, je ve stavu log.1 a svítí LED2. Jinak se p?eklopí do log.0 a svítí LED1. Teploměr se napájí ze zdroje 5V. Odběr proudu je cca 20 - 40mA (vět?ina z toho je spot?eba LED displeje). Kondenzátor C5 umístěte co nejblí?e IO3 a kondenzátor C6 co nejblí?e p?ijímacího modulu Modul-2.
    Dvoukanálovy p?ijíma?:
Později jsem vytvo?il je?tě 2-kanálovou verzi p?ijíma?e (viz schéma na obr. 3). Ten umo?ňuje sou?asně p?ijímat signály z dvou r?znych vysíla?? (jeden vysíla? nastaven na kanál 0 a jeden na kanál 1). Zobrazuje na dvou ?ty?místnych displejích, sestavenych nap?. ze ?ty? dvoumístnych LD-D036UPG-C. Ka?dy kanál má vlastní indikátor signálu. Zobrazení a resetování minima a maxima je pro oba kanály spole?né. Jinak je v?e podobné jako u jednokanálového p?ijíma?e.
    Dosah:
P?ijíma? softwarově opravuje r?zné chyby p?enosu a ru?ení, zejména zákmity, pulzy a mezery nesprávné délky apod. Dosah závisí tedy hlavně na vysílacím a p?ijímacím modulu a také na p?eká?kách a okolních zdrojích ru?ení. Na první testy jsem pou?il komunika?ní moduly FS1000A XD-FST (vysíla?) a XY-MK-5V (p?ijíma?), zde jsou jejich reverzně in?enyrovaná schémata, a pak jsem zkusil také moduly BX-TM05-433 (vysíla?) a BX-RM12-433 (p?ijíma?). Obě dvojice vyu?ívají modulaci ASK. S první dvojicí v?ak byl dosah jen asi 2 - 8m ve volném prostoru. P?ijíma? (XY-MK-5V) se ukázal jako reak?ní ?i superreak?ní typ, je to primitivní zapojení se dvěma tranzistory a OZ, má malou citlivost i selektivitu. P?íli? to nezachránilo ani pou?ití s poměrně vykonnym vysíla?em FS1000A XD-FST. P?ijíma? je na 5V a i malymi odchylkami napětí se v?e je?tě zhor?uje. P?ijíma? u? na pohled budí pochyby tím, ?e místo krystalu na něm najdete ladící cívku (!). U vysíla?e FS1000A XD-FST je uváděn max. vykon 10mW, rozmezí napájecího napětí je 3 - 12V . Vysíla? je ?ízen SAW rezonátorem 433,92 MHz a měl by byt tedy relativně p?esny (tolerance rezonátoru dle datasheetu je +/- 75kHz). Obsahuje jen 2 tranzistory, ?ádné integrované obvody. Pak jsem zkou?el dvojici BX-TM05-433 a BX-RM12-433 a bylo to úplně jiné kafe. Dosah skrz podla?í a dvě ?i t?i zdi na 15m není problém. P?ijíma? je superheterodyn (superhet) s kvalitním obvodem SYN470R, ?ízenym krystalem (6,7458MHz), napájení 3 - 5,5V. Vysíla? s 6-no?i?kovym SMD integrovanym obvodem zna?enym F113 je také ?ízen krystalem (13,56MHz) a pracuje z?ejmě jako PLL. P?esnost frekvence krystalu je nejspí? o něco lep?í, ne? SAW rezonátoru. Napájen je 1,8 - 3,6V. Je?tě lep?í dosah jsem získal zkombinováním vysíla?e z první dvojice (FS1000A XD-FST) a p?ijíma?e z druhé. FS1000A XD-FST umo?ňuje lep?í dosah ne? BX-TM05-433 (obojí testováno p?i 3V), a navíc m??e pracovat s vy??ím napájecím napětím, tak?e dosah lze je?tě dále zvy?ovat.
Cely program ke sta?ení:
zdrojovy kód vysíla?e v assembleru (ASM)
zdrojovy kód 1-kanálového p?ijíma?e v assembleru (ASM)
zdrojovy kód 2-kanálového p?ijíma?e v assembleru (ASM)
p?elo?eny program vysíla?e v HEX souboru (358 Bajt?)
p?elo?eny program 1-kanálového p?ijíma?e v HEX souboru (784 Bajt?)
p?elo?eny program 2-kanálového p?ijíma?e v HEX souboru (1132 Bajt?)
Zapisování programu do AVR se podrobněji věnuji zde.

P?ípadnym zájemc?m mohu naprogramované mikroprocesory poslat. Více info zde.


Obr. 1 - Schéma jednoduchého bezdrátového teploměru - vysíla? s ATtiny13(A/V).


Obr. 2 - Schéma jednoduchého bezdrátového teploměru - jednokanálovy p?ijíma? s ATmega8(A/L).


Obr. 3 - Schéma dvoukanálového p?ijíma?e s ATmega8(A/L).


Nastavení konfigura?ních bit? vysíla?e.


Nastavení konfigura?ních bit? p?ijíma?e (stejné pro obě verze).


Testování vysíla?e (?idla teploty) v kontaktním poli


Testování p?ijíma?e v kontaktním poli (s displejem LD-D028UG-C)


Moduly FS1000A XD-FST (vysíla?, vlevo) a XY-MK-5V (p?ijíma?, vpravo).


Moduly BX-TM05-433 TX-5 (2ks naho?e, vysíla?) a BX-RM12-433 (dole, p?ijíma?).


Krabi?ka na 4 tu?kové (AA) baterie ur?ená k zabudování vysíla?e (?idla).


Propojování desti?ky s ATtiny13A s desti?kou vysíla?e.


P?ipojování modulu FS1000A XD-FST po o?íznutí zbyte?ně velké desky :).


Vysíla? zabudovany v prostoru pro jednu AA baterii, obvod se napájí ze 3 AA baterií.


Hotovy vysíla? s anténou lambda/4 (17,3cm).


Dvoukanálovy p?ijíma? na desce.


Video - testování



P?idáno: 13. 3. 2014
zpět na úvodní stránku
手机捕鱼游戏