Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
et:examples:sensor:thermistor [2015/02/26 12:51] raivo.sellet:examples:sensor:thermistor [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 1: Line 1:
-~~PB~~+<pagebreak>
 ====== 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~~+<pagebreak>
 ===== 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, mille takistus väheneb temperatuuri kasvades, siis samaaegselt tõuseb ka pingejaguri väljundpinge. 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, mille takistus väheneb temperatuuri kasvades, siis samaaegselt tõuseb ka pingejaguri väljundpinge.
  
-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 jaoks kohandatud Steinhart-Harti valemiga saab leida temperatuurile vastava termistori takistuse. Takistusest saab arvutada pingejaguri väljundpinge ning sellest omakorda ADC väärtuse. Leitud väärtused saab järgneval viisil programmi sisse kirjutada:+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 jaoks kohandatud Steinhart-Harti valemiga saab leida temperatuurile vastava termistori takistuse. Takistusest saab arvutada pingejaguri väljundpinge ning sellest omakorda ADC väärtuse. Leitud väärtused saab järgneval viisil programmi sisse kirjutada:
  
 <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 <stdio.h> #include <stdio.h>
 #include <homelab/adc.h> #include <homelab/adc.h>
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
et/examples/sensor/thermistor.1424955093.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0