25.3.2007 Když jsem někdy před třemi lety sháněl vhodný digitální I2C senzor pro měření teploty CPU na základní desce, narazil jsem mimo jiné i na obvod DS18B20 firmy Maxim/Dallas. Pro můj účel se sice zrovna nehodil kvůli jiné sběrnici než jsem potřeboval, ale zaujal mě svou přesností a jednoduchostí připojení. Napadlo mě ho použít na venkovní teploměr a tak jsem si objednal pár samplů. Napsal jsem jednoduchý obslužný SW pro PC, ke kterému jsem obvod připojil přes LPT, abych si ověřil jak funguje. Asi o rok později, když jsem nabyl nějaké zkušenosti s MCU Atmel AVR, jsem napsal knihovnu pro DS18B20 pro ATmega32. Pořád to byl ale jen kus bastlu na stole bez konkrétní podoby.
Koncem minulého roku jsem projekt opět oprášil a stanovil si nějakou specifikaci. Chtěl jsem postavit trochu inteligentnější teploměr, než jaký lze koupit za pár šlupek u čongů. Kromě zobrazení okamžité a průměrné teploty jsem chtěl navíc zobrazovat i přírůstek (časovou "derivaci"), abych viděl jestli se otepluje či ochlazuje a jak rychle. Dále jsem chtěl zaznamenat denní minimum a maximum včetně času. No a když už jsem tak přemýšlel o tom logování, tak proč rovnou nelogovat teplotu kontinuálně do nějaké paměti. Měl jsem už rozchozenou obsluhu Compact Flash a FAT FS ale to mi zas přišlo jako kanón na vrabce a zbytečně by to zařízení prodražovalo. Nakonec jsem zvolil levnou I2C EEPROM, do které se vejde asi 32000 záznamů (2 Byte velkých), tedy při zápisu každou 1/4 hodinu to vydrží skoro rok.
Nyní se vrátím k podrobnějšímu popisu senzoru DS18B20. Jedná se o inteligentní digitální teploměr se sériovým rozhraním Dallas 1-wire. Sběrnice 1-wire se skládá ze dvou drátů: obousměrná asynchronní data sdružená s napájením a zem. Slave zařízení jsou napájená přes pull-up odpor z +Ucc ale obvykle mají ještě extra napájecí pin. Při komunikaci pak open-drain výstup stahuje sběrnici na zem, během této doby se zařízení napájí z interní kapacity nebo externě. Počet slave zařízení je omezen víceméně celkovou elektrickou kapacitou sběrnice. Ty lze připojovat buď lineárně podél jednoho páru drátů nebo hvězdicově, kdy má každé slave zařízení svůj pár drátů, který se rozvětvuje na výstupu řadiče (masteru). Maximální délka je limitovaná zpožděním signálu na 750 m. Více o problematice topologie 1-wire zde. Vybrané katalogové údaje:
napájení: 3,0 - 5,5 V rozsah měřených teplot: -55 - +125°C maximální odchylka teploty: +/-0,5°C v rozsahu -10°C - +85°C formát dat teploty: 9 - 12 bitů, doplňkový kód max. doba konverze: 750 ms (pro 12 bitů) interní ROM (ID): 8 Bytů interní RAM (scratchpad): 9 Bytů interní EEPROM (konfigurace): 3 Byty
V klidu je sběrnice díky pull-upu na vysoké úrovni. Komunikaci se slave zařízením(i) zahajuje master vysláním reset pulsu (nízká úroveň) délky min. 480 µs. Po 15 - 60 µs odpoví slave zařízení presence pulsem (nízká úroveň) délky 60 - 240 µs. Pro jednoduchost dále uvažuju jen jedno slave zařízení. Jako další je třeba odeslat 1-Bytový kód příkazu. Master zahájí zápisový timeslot pulsem nízké úrovně délky 1 - 15 us, pak nastaví požadovanou úroveň datového bitu a čeká do konce timeslotu 60 - 120 µs. Takto se odvysílá celý Byte od LSB po MSB. DS18B20 se ovládá pomocí 1-Bytových příkazů, po nichž se mohou zapisovat nebo číst data.
Po zapnutí zařízení patrně budeme chtít ověřit přítomnost daného slave zařízení. K tomuto účelu vyšleme příkaz READ_ROM_CMD (33h) na který zařízení odpoví vysláním 8 Bytů obsahu ROM, jenž obsahuje 1 Byte device ID (28h pro DS18B20), 6 Bytů unikátní výrobní číslo (kterým lze identifikovat jednotlivá zařízení na sběrnici) a 1 Byte kontrolní CRC. Pokud je zařízení přítomno, můžeme vyslat příkaz SKIP_ROM_CMD (0xCC) následovaný CONVERT_TMP_CMD (44h), který provede jeden odměr teploty a uloží hodnotu do vnitřního zápisníku RAM (scratchpad) do registrů 0 a 1. Prefix SKIP_ROM_CMD říká, že následující příkaz platí pro všechny (v mém případě jediné) zařízení na sběrnici, takže není třeba řešit adresování. Všech 9 Bytů zápisníku pak přečteme po vyslání příkazu SKIP_ROM_CMD (0xCC) + READ_SCRPAD_CMD (BEh). I data zápisníku jsou chráněna kontrolním CRC (registr 8), pokud nesedí měli bychom přečtené údaje zahodit a opakovat čtení. Příkazem WRITE_SCRPAD_CMD (4Eh) můžeme do zápisníku zapsat data, zejména konfigurační registr (Byte 4), kterým lze nastavit přesnost a tím i dobu konverze a dále konfiguraci uložit natrvalo do EEPROM příkazem COPY_SCRPAD_CMD (48h, ukládá registry 2, 3, 4).
Jako základ HW teploměru jsem zvolil MCU Atmel ATMega8 v pouzdru TQFP32. Odhadoval jsem, že se do 8 kB Flash s kódem v pohodě vejdu, ale jak se to postupně rozrůstalo, tak jsem to tam pomocí různých fíglů nacpal jen tak tak. Větší MCU jsem tam nedával, protože má zbytečně více pinů. K MCU jsou připojeny následující periferie a rozhraní: alfanumerický podsvětlený LCD displej 2*16 znaků Solomon LM1230SYL se standardním řadičem HD44780 přes 4-bitové paralelní rozhraní pro zobrazování dat, sériová I2C paměť EEPROM Atmel 24LC512 s kapacitou 64 kB pro ukládání naměřených dat, rozhraní 1-wire pro připojení jednoho čidla DS18B20, sériové rozhraní s 5V úrovní (nechť si každý připojí svůj oblíbený převodník, já používám pro svoje bastly univerzální redukci s MAX232 a FTDI232) pro přenos dat do PC, sériové rozhraní SPI pro in-system programování MCU z PC přes paralelní port, 5 tlačítek pro snadné ovládání a 3V záložní lithiová baterie CR2032. Zde je šémátko:
K zapojení asi netřeba dál moc dodávat, snad jen upozorním na externí pull-up odpory u I2C sběrnice, neboť interní pull-upy v MCU jsou na to moc velké (i když mi to s nima taky fungovalo :). Krystal jsem zvolil tak, aby šel hezky vydělit na standardní bitovou rychlost UARTu. Odpory R3, R4 slouží pro snímání přítomnosti hlavního napájení. Napětí záložní baterie je měřeno vstupem ADC6 (jen při normálním provozu z hlavního napájení). Celé zařízení je myšleno pro běžné síťové napájení, záložní baterie je zde pouze pro překlenutí kratších výpadků, když si třeba při experimentech vyrazím jističe. Podsvětlení LCD mám tak zapnuto natrvalo. Z baterie se zálohují jen nezbytné části: MCU, čidlo a EEPROM. Síťový zdroj tvoří malé zalité tráfko 220 V/2*8 V se stablíkem 7805.
Software jsem napsal v jazyce C pro překladač avr-gcc. Skládá se z následujících modulů: knihovna obsluhy 1-wire a DS18B20, knihovna low-level obsluhy I2C, knihovna funkcí I2C EEPROM, knihovna funkcí pro znakový LCD, knihovna low-level obsluhy UARTu a nadstavba pro přenos dat protokolem XModem, knihovna funkcí pro softwarové RTC a hlavní program. Pro HW jednoduchost jsem implementoval pouze SW RTC, které běží v přerušení časovače T1. To má nevýhodu, že ztratí čas nejen při výpadku napájení ale i při resetu/uploadu nového SW. Nicméně po vyladění do toho nehodlám dál moc vrtat, takže to nebude na závadu. RTC mj. řeší i přestupné roky. Z prvních dnů provozu můžu chybu času odhadovat asi na +1 s za den. Po inicializaci všech periferií a zapnutí přerušení program přejde do hlavní smyčky, kdy reaguje na stisky tlačítek. Ovládání funguje jako stavový automat (modře jsou vyznačeny stisky tlačítek, které způsobí daný přechod):
Každou druhou vteřinu se změří teplota. Ta se ukládá do cirkulačního bufferu pro 30 hodnot. Zobrazuje se buď okamžitá teplota 1 měření nebo minutový průměr ze všech 30-ti hodnot. každou minutu se tato průměrná teplota uloží do dalšího bufferu ze kterého se počítá přírůstek v °C za půl hodiny. Tyto časové konstanty jsem zvolil odhadem podle běžné rychlosti změny venkovní teploty. Každých 15 minut se ukládá průměrná teplota do EEPROM (tj. 96 záznamů za den). O půlnoci se navíc uloží i datum jako synchronizační značka (1 záznam navíc). Ve smyčce se kontroluje stav tlačítek a hlavního napájení. V případě výpadku napájení se do EEPROM uloží značka výpadku a aktuální čas (2 záznamy, pro případ že by následně došlo ke ztrátě RTC), odpojí se LCD od portů MCU a vypne UART. Měření a ukládání dat ale probíhá dále, ve zbylém čase přechází MCU do stavu nižší spotřeby IDLE (probouzí se přerušením od T1-RTC, spotřeba asi 1,5 mA). Po obnovení napájení ze do EEPROM zapíše značka obnovení, datum a čas (3 záznamy) a reinicializujou se odpojené periferie. Pokud došlo ke ztrátě RTC, je na uživateli, aby ho znovu nastavil. Po nastavení RTC se ukládá do EEPROM značka nastavení RTC, datum a čas (3 záznamy).
Organizace dat v EERPOM je následující. Pokud při zapnutí paměť neobsahuje na začátku 2 Bytovou signaturu 'M', 'R', budou všechny Byte vymazány hodnotou FFh a zapsána signatura. Pokud signatura už existuje, hledá se první volný záznam (2 Bytové slovo) s hodnotou FFFFh na který se nastaví ukazatel od nějž se bude dále zapisovat. Pokud se nenajde žádný volný záznam, nastaví se flag plné paměti a na LCD se vypíše varování (další data se neukládají). Záznamy mohou být buď typu teplota (0xxxh - nejvyšší nibble vždy nulový), datum (xxxxh - předpokládá se datum pozdější než 1.1.2007) nebo speciální značka: FF00h - výpadek napájení, FF40h - obnovení napájení, FF80h - nastavení RTC. Datum a čas se ukládá do pakované bitové struktury po vzoru DOSu. Čas: H:M:S - 5:6:5, kde číslo vteřin je třeba při čtení vynásobit dvěma, protože na něj máme jen 32 hodnot. Datum: Y-M-D - 7:4:5, kde rok je uložen jako offset od roku 1980. Hodnota speciálních značek je zvolena samozřejmě tak, aby se nemohla vyskytovat v běžných záznamech. Speciální značka určuje, jak se mají interpretovat následující 1 nebo 2 záznamy. Během provozu je možno kdykoliv zobrazit počet zaplněných Bytů a případně paměť smazat.
Pro přenos dat do PC jsem implementoval jednoduchý protokol XModem, který se dříve používal běžně pro přenos souborů po sériové lince, na BBS a pod. Data se XModemem přenáší po 128 Bytových paketech, které jsou zabezpečeny 16-bitovým CRC. Každý paket je příjemcem potvrzen nebo nepotvrzen a pak se přenos opakuje. Pokud se komunikace rozsype na delší dobu, kdy vyprší timeout, přejde se do výchozího stavu. Protokol XModem podporují různé terminálové programy jako Term95, interní terminál DOS Navigátora nebo Hyperterminál ve Windows. Pokud by přecejen nebyl žádný takový terminál k dispozici, můžu data poslat naráz binárně (při odesílání se stiskne napřed tlačítko Left a pak Menu). Odesílá se kompletní obsah EEPROM, abych mohl případně dohledat chyby. Pro převod binárního image EEPROM do čitelného formátu CSV jsem napsal program Temperature LogFile convertor 1.3, Win32 verze. CSV lze dále zpracovávat v tabulkovém procesoru, zobrazovat v grafické podobě atd.
Jak už jsem zmiňoval, s rozšiřováním funkcí software jsem začal mít problém vměstnat kód (ve zdrojácích ~120 kB) do Flash a tak bylo třeba provést určitá úsporná opatření. Nejjednodušší je zapnout při překladu optimalizaci na velikost parametrem -Os. Tím jsem ušetřil asi 800 Bytů. Dále jsem nahradil příliš složitou funkci sprintf() vlastními funkcemi na formátovaný výpis dekadických a hexa čísel - úspora asi 1 kB. Poslední finta tkví v parametrech -fdata-sections, -ffunction-sections, díky čemuž se každá funkce umístí do vlastní kódové sekce a pokud není v programu nikde volaná, linker ji vyhodí - úspora asi 300 Bytů. Tímto se výsledný binár podařilo zmenšit na 8182 Bytů, zde je verze 1.1 (srcy zatím uvolňovat nebudu). Nastavení pojistek je: low fuse = FFh (11111111b), high fuse = D1h (11010001b). Pro upload do MCU používám SPI kablík na paralelní port (typ -bsd) a program avrdude, který je součástí balíku WinAVR.
Jednoduchý plošňák jsem nakreslil klasicky lihovkou, i když dnes už bych použil fotocestu. No zas tak jednoduchý nebyl, takže jsem musel řadu spojů dodrátovat. Deska fungovala na první zapnutí. Spolu se zdrojem jsem ji zamontoval do plastové univerzální krabičky 11*4,5*9 cm (stačila by i menší hloubka) z GMu.
Po doladění software jsem krabičku zaklapnul a jako poslední atrakci provedl test na odolnost proti EMI. Ve vzdálenosti 30 cm od jiskřícího tesláku (na stole mám jen omezené místo) se vyskytl problém s tím, že se samy od sebe náhodně registrovaly stisky tlačítek (nicméně k resetu nedošlo). Krabičku jsem rozebral a boky a vršek polepil zevnitř alobalem, který sem připojil na "zem". Stejně tak kovový rámeček LCD. U tlačítka menu, kde by mohlo hrozit náhodné smazání paměti, jsem přidal externí pull-up 5k1. Po těchto opatřeních už je zařízení v klidu, i když kousek vedle srší 40cm výboj :).
Samotné čidlo mám umístěné na severní fasádě baráku v plastové trubce asi 20 cm od stěny. Trubka má v sobě vyvrtané otvory, aby k čidlu mohl čerstvý vzduch. Lepší by bylo sice umístění dál od stěny, třeba na blízký strom, ale nemám tu možnost. Teploměr už běží asi týden a za tu dobu nalogoval 1550 Bytů dat. Zde je ukázka průběhu teplot ze dne 27.3.2007:
3.1.2008 Začátkem nového roku nadešel čas ke stažení nalogovaných dat za uplynulý rok 2007. Během provozu nedošlo k žádným výpadkům a celkem jsem tak získal 25263 záznamů (včetně stavových zpráv). Binár EEPROMky jsem převedl do CSVéčka a dále zpracoval v Excelu základní měsíční statistiky. Z tabulky můžeme vyčíst, že nejtepleji: +35,88°C bylo 16.7. v 17:15, nejchladněji: -6,06°C bylo 21.12. v 10:00, nejvyšší průměrná teplota: +20,62°C byla v červenu a nejmenší: +0,91°C v prosinci (avšak během této zimy nás největší mrazy teprve čekají). Největší výkyvy teplot byly v květnu a červenci a nejmenší pak v září a listopadu. Jen dodávám, že naměřené hodnoty jsou relevantní k místu měření (Praha-sever). Také je třeba počítat s určitou systematickou chybou, když v zimě dochází k vyzařování tepla skrz stěnu baráku a tím ovlivňování senzoru i když jsem se ho snažil umístit trochu dál od zdi. Někdy zkusím provést kontrolní měření na volném prostranství. Tak jsem v zimě provedl kontrolní měření venku za barákem a teploměr ukazoval asi o stupeň více, zřejmě je u země teplejší vzduch.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max duben 13,98 0,63 23,94 5,19 21.4., 05:30 27.4., 17:00 květen 16,78 2,25 32,06 5,69 2.5., 05:30 25.5., 17:45 červen 20,62 9,81 32,31 5,07 28.6., 03:30 20.6., 15:30 červenec 20,49 9,31 35,88 5,62 11.7., 04:45 16.7., 17:15 srpen 19,51 10,50 31,63 4,27 30.8., 05:00 15.8., 16:45 září 13,07 4,19 24,81 3,46 20.9., 06:45 17.9., 15:15 říjen 9,04 -0,44 21,56 3,99 14.10., 05:45 2.10., 15:15 listopad 2,81 -4,38 14,13 3,37 29.11., 07:00 3.11., 13:15 prosinec 0,91 -6,06 12,56 4,32 21.12.,10:00 7.12., 14:45
10.1.2009 Tak tu mámě opět po roce teplotní statistiku, tentokrát už za celý rok 2008. Nejtepleji: +33,56°C bylo 22.6. v 17:30, nejchladněji: -8,81°C bylo 29.12. v 7:15, nejvyšší průměrná teplota: +19,86°C byla v červenci a nejmenší: +1,68°C v prosinci. Největší výkyvy teplot byly v květnu a září a nejmenší pak v lednu a prosinci. A celková průměrná teplota za rok 2008 byla 10,44°C.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden 2,90 -4,49 12,00 3,61 5.1., 08:15 19.1., 12:30 únor 4,19 -7,94 17,63 4,38 17.2., 06:00 24.2., 16:00 březen 4,69 -4,13 15,88 3,84 6.3., 06:15 30.3., 16:15 duben 9,11 -0,13 22,19 4,25 8.4., 05:45 28.4., 13:45 květen 15,24 5,25 31,75 5,12 20.5., 05:30 31.5., 16:15 červen 19,63 7,56 33,56 4,77 14.6., 04:45 22.6., 17:30 červenec 19,86 10,50 32,31 4,84 21.7., 05:30 11.7., 13:30 srpen 19,60 10,00 32,38 4,51 31.8., 06:00 7.8., 18:45 září 13,61 2,81 29,19 5,64 19.9., 06:30 3.9., 16:15 říjen 9,24 -1,56 20,13 4,05 24.10., 07:30 21.10., 16:15 listopad 5,34 -3,06 16,38 4,01 23.11., 23:45 5.11., 15:15 prosinec 1,68 -8,81 9,50 3,63 29.12., 07:15 1.12., 14:30
18.1.2010 Zpracoval jsem další celoroční teplotní statistiku za rok 2009. Nejtepleji: +36,38°C bylo 23.7. v 15:15, nejchladněji: -15,25°C bylo 20.12. v 8:00, nejvyšší průměrná teplota: +20,58°C byla v srpnu a nejnižší -2,71°C v lednu. Největší výkyvy teplot byly v květnu a říjnu a nejmenší pak v únoru, březnu a listopadu. Celková průměrná teplota za rok 2009 poklesla na 10,02°C. Jak je vidět, byla oproti loňsku chladnější zima a období nejteplejších dnů se posunulo více k podzimu.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden -2,71 -12,00 5,81 4,09 12.1., 05:45 18.1., 12:45 únor 0,47 -6,88 8,69 2,69 19.2., 07:00 28.2., 12:30 březen 4,86 -4,38 15,94 2,84 25.3., 04:00 28.3., 13:45 duben 13,53 1,13 23,31 4,65 1.4., 05:15 7.4., 16:00 květen 15,16 3,06 30,69 5,18 5.5., 05:30 26.5., 16:00 červen 16,29 5,44 29,38 4,49 6.6., 05:00 15.6., 13:15 červenec 20,11 10,88 36,38 4,72 10.7., 04:45 23.7., 15:15 srpen 20,58 9,63 31,75 4,39 30.8., 06:15 17.8., 14:00 září 16,32 6,63 28,69 4,14 26.9., 07:00 1.9., 18:00 říjen 8,53 -2,56 25,00 5,12 31.10., 04:15 7.10., 15:45 listopad 6,76 0,63 14,13 2,87 1.11., 06:15 17.11., 21:30 prosinec -0,09 -15,25 8,75 5,04 20.12., 08:00 25.12., 12:45
28.6.2011 Zpracoval jsem další celoroční teplotní statistiku za rok 2010. Nejtepleji: +35,38°C bylo 16.7. v 16:15, nejchladněji: -16,13°C bylo 4.12. v 8:30, nejvyšší průměrná teplota: +22,58°C byla v červenci a nejnižší -4,31°C v prosinci. Největší výkyvy teplot byly v březnu a nejmenší v lednu. Celková průměrná teplota za rok 2010 poklesla na 8,79°C. Jak je vidět, podzim a zima byla oproti loňsku opět chladnější, období nejteplejších dnů se posunulo zpět doprostřed léta.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden -3,61 -15,69 4,81 3,32 27.1., 07:45 1.1., 00:00 únor -0,19 -9,19 11,31 4,28 9.2., 06:15 25.2., 14:15 březen 4,58 -10,06 20,56 6,46 7.3., 06:45 25.3., 15:15 duben 9,94 0,13 26,19 4,91 23.4., 06:00 30.4., 16:00 květen 12,75 5,63 23,75 3,94 15.5., 04:15 28.5., 14:45 červen 18,45 8,94 31,44 5,52 1.6., 05:15 11.6., 13:15 červenec 22,58 11,69 35,38 5,68 25.7., 05:15 16.7., 16:15 srpen 18,69 8,81 30,50 4,67 29.8., 05:30 12.8., 14:00 září 12,71 4,81 21,88 3,60 7.9., 06:30 11.9., 13:45 říjen 7,48 -1,00 18,13 3,81 27.10., 07:45 7.10., 14:15 listopad 5,13 -7,19 17,75 5,54 28.11., 07:45 14.11., 14:30 prosinec -4,31 -16,13 4,50 4,04 4.12., 08:30 11.12., 12:00
8.1.2012 Zpracoval jsem další celoroční teplotní statistiku za rok 2011. Nejtepleji: +31,75°C bylo 9.7. v 14:45, nejchladněji: -13,31°C bylo 23.2. v 6:30, nejvyšší průměrná teplota: +19,70°C byla v srpnu a nejnižší -0,52°C v únoru. Největší výkyvy teplot byly v květnu a nejmenší v prosinci. Celková průměrná teplota za rok 2011 výrazně stoupla na 10,36°C. Tento rok bylo teplejší jaro a podzim, naopak v létě bylo méně hodně teplých dnů. Začátek zimy je nadprůměrně teplý a do dnešního dne v Praze nenapadl sníh (resp. párkrát propadával, ale neměl šanci se udržet). Pro porovnání přidávám další graf teplot z prosince 2011 a 2010.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden 0,20 -9,31 11,19 4,29 30.1., 04:45 18.1., 15:30 únor -0,52 -13,31 12,50 5,33 23.2., 06:30 6.2., 14:15 březen 5,57 -6,63 17,81 5,06 7.3., 07:15 30.3., 15:30 duben 12,45 2,75 24,94 4,75 17.4., 06:30 23.4., 16:00 květen 15,73 -0,63 30,50 6,24 4.5., 04:45 31.5., 16:30 červen 19,18 9,25 30,88 4,73 25.6., 03:45 22.6., 13:45 červenec 18,46 9,00 31,75 4,79 1.7., 04:45 9.7., 14:45 srpen 19,70 7,56 31,63 4,84 31.8., 03:45 22.8., 16:00 září 16,33 6,50 28,63 4,31 24.9., 06:45 11.9., 15:45 říjen 9,16 -1,56 23,38 5,16 23.10., 00:45 3.10., 16:00 listopad 3,69 -3,44 15,69 4,10 16.11., 06:15 6.11., 14:15 prosinec 3,65 -2,56 11,81 2,47 20.12., 07:15 4.12., 13:30
5.3.2013 Zpracoval jsem další celoroční teplotní statistiku za rok 2012. Nejtepleji: +36,63°C bylo 20.8. v 17:00, nejchladněji: -17,50°C bylo 12.2. v 07:45, nejvyšší průměrná teplota: +20,47°C byla v srpnu a prakticky stejně též v červenci a nejnižší -3,34°C v únoru. Největší výkyvy teplot byly v únoru a nejmenší v listopadu. Celková průměrná teplota za rok 2012 o chlup klesla na 10,16°C. Tento rok bylo teplejší léto a studenější zima.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden 1,69 -9,94 10,56 3,79 31.1., 05:30 2.1., 17:00 únor -3,34 -17,50 12,44 7,93 12.2., 07:45 29.2., 14:15 březen 7,10 -6,25 20,50 4,64 7.3., 06:30 17.3., 15:45 duben 9,96 -2,94 31,38 6,55 9.4., 04:30 29.4., 14:30 květen 16,80 3,13 31,06 6,00 18.5., 05:15 11.5., 15:45 červen 19,02 4,69 33,50 5,95 6.6., 04:00 30.6., 16:45 červenec 20,45 9,06 34,06 4,98 23.7., 04:30 28.7., 14:00 srpen 20,47 8,88 36,63 5,10 14.8., 05:45 20.8., 17:00 září 14,83 5,44 28,25 4,45 21.9., 06:30 11.9., 15:00 říjen 8,45 -2,38 22,81 4,62 30.10., 00:00 6.10., 15:00 listopad 5,59 -1,88 13,56 2,64 14.11., 07:45 3.11., 15:45 prosinec 0,26 -9,69 9,88 3,75 8.12., 07:45 24.12., 4:00
23.3.2014 Zpracoval jsem další celoroční teplotní statistiku za rok 2013. Nejtepleji: +36,13°C bylo 28.7. v 17:00, nejchladněji: -15,31°C bylo 26.1. v 04:30, nejvyšší průměrná teplota: +21,86°C byla jednoznačně v červeneci a nejnižší -0,44°C v lednu. Největší výkyvy teplot byly v dubnu a červnu a nejmenší v únoru. Celková průměrná teplota za rok 2013 klesla o 0,66°C na 9,50°C. Tento rok bylo studenější jaro a také letních teplot jsme si užili méně.
měsíc tavg[°C] tmin[°C] tmax[°C] sm.odch(t) ref.min ref.max leden -0,44 -15,31 11,69 5,16 26.1., 04:30 30.1., 15:30 únor -0,06 -6,44 7,19 2,59 22.2., 03:30 25.2., 13:00 březen 0,36 -10,06 11,31 4,04 24.3., 03:00 10.3., 15:30 duben 9,93 -3,94 26,19 6,77 8.4., 06:15 26.4., 15:45 květen 13,53 4,00 26,19 4,60 24.5., 04:00 8.5., 16:15 červen 17,81 7,13 33,94 6,25 3.6., 09:15 20.6., 16:30 červenec 21,86 11,69 36,13 4,90 16.7., 05:15 28.7., 17:00 srpen 19,33 9,50 34,81 5,25 15.8., 05:45 3.8., 17:45 září 13,62 1,81 26,44 4,26 28.9., 07:00 8.9., 15:30 říjen 10,07 0,44 23,06 4,08 3.10., 07:00 28.10., 15:30 listopad 4,96 -5,13 15,81 3,93 27.11., 07:30 7.11., 15:00 prosinec 2,41 -5,44 11,19 3,09 31.12., 07:45 26.12., 14:00