This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
et:examples:sensor:thermistor [2015/02/26 12:51] – raivo.sell | et:examples:sensor:thermistor [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~PB~~ | + | < |
====== Termistor ====== | ====== Termistor ====== | ||
Line 28: | Line 28: | ||
Piiratud ressurssidega ja suurt täpsust mittenõudvates rakendustes kasutatakse eelnevalt välja arvutatud temperatuuri ja takistuse vahelise sõltuvuse tabelit. Tabelis on üldjuhul kirjas kindla vahemikuga temperatuurinäitude vastavus anduri takistuse, pinge või analoog-digitaalmuunduri väärtusega. Tabeli puhul on kogu eksponentsiaalne arvutus eelnevalt ära tehtud ja programmis tuleb vaid mõõdetud parameetrile vastav rida üles otsida ja temperatuur välja lugeda. | Piiratud ressurssidega ja suurt täpsust mittenõudvates rakendustes kasutatakse eelnevalt välja arvutatud temperatuuri ja takistuse vahelise sõltuvuse tabelit. Tabelis on üldjuhul kirjas kindla vahemikuga temperatuurinäitude vastavus anduri takistuse, pinge või analoog-digitaalmuunduri väärtusega. Tabeli puhul on kogu eksponentsiaalne arvutus eelnevalt ära tehtud ja programmis tuleb vaid mõõdetud parameetrile vastav rida üles otsida ja temperatuur välja lugeda. | ||
- | ~~PB~~ | + | < |
===== Praktika ===== | ===== Praktika ===== | ||
Kodulabori moodul on varustatud 10 kΩ nimitakistusega NTC tüüpi termistoriga. Temperatuuril 25-50 °C on termistori B-parameeter 3900. Termistori üks viik on ühendatud toitega ja teine mikrokontrolleri analoog-digitaalmuunduri sisendisse (Kodulabor II puhul kanal 2, Kodulabor III puhul kanal 14). Sama mikrokontrolleri viigu ja maaga on ühendatud ka takisti, mis koos termistoriga moodustab pingejaguri. Kuna tegu on NTC termistoriga, | Kodulabori moodul on varustatud 10 kΩ nimitakistusega NTC tüüpi termistoriga. Temperatuuril 25-50 °C on termistori B-parameeter 3900. Termistori üks viik on ühendatud toitega ja teine mikrokontrolleri analoog-digitaalmuunduri sisendisse (Kodulabor II puhul kanal 2, Kodulabor III puhul kanal 14). Sama mikrokontrolleri viigu ja maaga on ühendatud ka takisti, mis koos termistoriga moodustab pingejaguri. Kuna tegu on NTC termistoriga, | ||
- | Temperatuuri leidmiseks on AVR-il otstarbekas kasutada temperatuuri ja analoog-digitaalmuunduri väärtuste teisendustabelit. Mõistlik on leida soovitud temperatuurivahemikust igale kraadile vastav analoog-digitaalmuunduri väärtus, sest vastupidine tabel läheb 10-bitise ADC väärtuste hulga tõttu liiga suureks. Tabeli tegemiseks on soovitatav kasutada mõnd tabelarvutuse programmi (MS Excel, LibreOffice Calc vmt). Eespool toodud NTC termistorite | + | Temperatuuri leidmiseks on AVR-il otstarbekas kasutada temperatuuri ja analoog-digitaalmuunduri väärtuste teisendustabelit. Mõistlik on leida soovitud temperatuurivahemikust igale kraadile vastav analoog-digitaalmuunduri väärtus, sest vastupidine tabel läheb 10-bitise ADC väärtuste hulga tõttu liiga suureks. Tabeli tegemiseks on soovitatav kasutada mõnd tabelarvutuse programmi (MS Excel, LibreOffice Calc vmt). Eespool toodud NTC termistoride |
<code c> | <code c> | ||
- | // Temperatuuri ADC väärtuseks teisendamise tabel. | + | // Temperatuuri ADC väärtuseks teisendamise tabel |
- | // Iga massiivi element tähistab ühte Celsiuse kraadi. | + | // Iga massiivi element tähistab ühte Celsiuse kraadi |
- | // Elemendid algavad -20 kraadist ja lõpevad 100 kraadiga. | + | // Elemendid algavad -20 kraadist ja lõpevad 100 kraadiga |
- | // Kokku on massiivis 121 elementi. | + | // Kokku on massiivis 121 elementi |
const signed short min_temp = -20; | const signed short min_temp = -20; | ||
const signed short max_temp = 100; | const signed short max_temp = 100; | ||
Line 62: | Line 62: | ||
<code c> | <code c> | ||
- | // ADC väärtuse teisendamine Celsiuse kraadideks. | + | // ADC väärtuse teisendamine Celsiuse kraadideks |
signed short thermistor_calculate_celsius(unsigned short adc_value) | signed short thermistor_calculate_celsius(unsigned short adc_value) | ||
{ | { | ||
Line 73: | Line 73: | ||
// mõõdetud tulemus, siis temperatuur on vähemalt | // mõõdetud tulemus, siis temperatuur on vähemalt | ||
// sama kõrge kui elemendile vastav temperatuur | // sama kõrge kui elemendile vastav temperatuur | ||
+ | |||
if (adc_value >= conversion_table[celsius]) | if (adc_value >= conversion_table[celsius]) | ||
{ | { | ||
Line 92: | Line 93: | ||
<code c> | <code c> | ||
- | // Kodulabori termistori näidisprogramm. | + | // Kodulabori termistori näidisprogramm |
- | // LCD ekraanil kuvatakse temperatuur kraadides. | + | // LCD ekraanil kuvatakse temperatuur kraadides |
#include < | #include < | ||
#include < | #include < | ||
Line 128: | Line 129: | ||
// Lõputu tsükkel | // Lõputu tsükkel | ||
- | while (true) | + | while (1) |
{ | { | ||
// Termistori pinge 4-kordselt ümardatud väärtuse lugemine | // Termistori pinge 4-kordselt ümardatud väärtuse lugemine |