Měření teploty NTC pomocí STM32F

V předchozím příspěvku byly představeny NTC termistory a základní matematiku, na které jsou postaveny. V tomto příspěvku bude představen způsob, jakým je možné změřit odpor termistoru a převést ho na teplotu. Většina technik v článku popisovaných je dostatečně obecných, aby je bylo možné využít s libovolným procesorem. Konkrétní implementace bude předvedena na platformě STM32F103.

Parametry NTC termistoru, se kterým bude celý test prováděn jsou:

  • beta = 3470
  • R0 = 10 000 / 25°C

Předtím, než se programátor pustí do vlastního programování je vždy dobré, když si rozmyslí, co a jak vlastně bude dělat. Dnešní úkol je vcelku snadný, změřit napětí na odporovém děliči, přepočítat na odpor a následně na teplotu. Tuto teplotu následně vytisknout, případně něco jiného.

V předchozím zápisku byl představen vzorec, pomocí kterého je možné tento přepočet provést. Jak si ale ověřit, že je tento vzorec správný ? Vhodné je využít nějakého již existujícího nástroje – například calc, případně octave. Níže je uveden krátký skript pro octave.

Ze skriptu je šikovné zmínit především proměnnou rtemp, je to myšlený odpor, pro který chceme zjistit teplotu. Pro vybraný NTC termistor platí, že při teplotě 25 °C bude mít odpor přesně 10 000 ohmů. Vzorec je správný a nyní stačí napsat vlastní program pro daný mikroprocesor.

V následujícím odstavci bude popsána inicializace AD převodníku.

  1. Nastavit hodiny pro AD periferii
  2. Nastavit přístup k AD periferii – číst pouze jeden kanál, pouze na vyzvání a to právě jednou
  3. Zapnutí jednoho kanálu na AD periferii
  4. Vlastní nahrání konfigurace do AD periferie
  5. Spuštění AD periferie a kalibrace

Pro více informací k jednotlivým řádkům zdrojového kódu lze vyčíst z dokumentace knihovny pro STM. Inicializace ADC je pouze prvním krokem, tím druhým je vyčtení napětí, jeho převod a přepočet na teplotu.

V této části kódu se nejprve spustí převod na AD periferii a následně čeká, než se vyčtení dokončí. Následně je vhodné vyčistit flag, který poukazuje, že AD převod byl dokončen. Doba převodu je specifikována v inicializační části parametrem ADC_SampleTime_41Cycles5. Následující část kódu je už pak pouhý přepočet AD hodnoty na napětí.

Závěrem lze zmínit i to, že by samozřejmě bylo možné použít již existující knihovny, například z Arduino projektu. Tento přístup by nám ale zastínil celou řadu možných potíží, které jsou s touto problematikou spojeny.

Mohlo by se vám líbit...

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *