This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| en:examples:sensor:thermistor [2015/11/10 08:21] – heikopikner | en:examples:sensor:thermistor [2020/07/20 09:00] (current) – external edit 127.0.0.1 | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Thermistor ====== | ====== Thermistor ====== | ||
| - | //Necessary knowledge: | + | //Necessary knowledge: |
| + | [HW] [[en: | ||
| + | [ELC] [[en: | ||
| + | [AVR] [[en: | ||
| + | [LIB] [[en: | ||
| ===== Theory ===== | ===== Theory ===== | ||
| Line 29: | Line 33: | ||
| ===== Practice ===== | ===== Practice ===== | ||
| - | The Sensor module of the HomeLab is equipped with a NTC type thermistor which has 10 kΩ nominal resistance. At temperatures 25-50 °C the parameter B of the thermistor is 3900. One pin of the thermistor is connected to supply and the other one is connected to the analogue-digital converter (Homelab | + | The Sensor module of the HomeLab is equipped with a NTC type thermistor which has 10 kΩ nominal resistance. At temperatures 25-50 °C the parameter B of the thermistor is 3900. One pin of the thermistor is connected to supply and the other one is connected to the analogue-digital converter (HomeLab |
| While using the AVR it is practical to use a conversion table of values of temperature and analogue-digital converter to find the correct temperature. It is wise to find corresponding value of analogue-digital converter for each temperature degree of desired range of temperature because reverse table will be too large due to the amount of 10 bit ADC values. It is recommended to use any kind of spreadsheet program (MS Excel, LibreOffice Calc, etc.) to make the table. // | While using the AVR it is practical to use a conversion table of values of temperature and analogue-digital converter to find the correct temperature. It is wise to find corresponding value of analogue-digital converter for each temperature degree of desired range of temperature because reverse table will be too large due to the amount of 10 bit ADC values. It is recommended to use any kind of spreadsheet program (MS Excel, LibreOffice Calc, etc.) to make the table. // | ||
| Line 35: | Line 39: | ||
| <code c> | <code c> | ||
| - | // Table for converting temperature values to ADC values. | + | // Table for converting temperature values to ADC values |
| - | // Every element of the array marks one Celsius degree. | + | // Every element of the array marks one Celsius degree |
| - | // Elements begin from -20 degree and end at 100 degree. | + | // Elements begin from -20 degree and end at 100 degree |
| - | // There are 121 elements in the array. | + | // There are 121 elements in the array |
| 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 71: | Line 75: | ||
| // If the value in the table is the same or higher than measured | // If the value in the table is the same or higher than measured | ||
| // value, then the temperature is at least as high as the | // value, then the temperature is at least as high as the | ||
| - | // temperature corresponding to the element. | + | // temperature corresponding to the element |
| if (adc_value >= conversion_table[celsius])) | if (adc_value >= conversion_table[celsius])) | ||
| { | { | ||
| // Since the table begins with 0 but values of the elements | // Since the table begins with 0 but values of the elements | ||
| - | // from -20, the value must be shifted. | + | // from -20, the value must be shifted |
| return celsius + min_temp; | return celsius + min_temp; | ||
| } | } | ||
| } | } | ||
| - | // If the value was not found the minimal temperature is returned. | + | // If the value was not found the minimal temperature is returned |
| return min_temp; | return min_temp; | ||
| } | } | ||
| Line 90: | Line 94: | ||
| <code c> | <code c> | ||
| - | // Example program of the thermistor of Sensors module. | + | // Example program of the thermistor of Sensors module |
| - | // The temperature is displayed on the LCD. | + | // The temperature is displayed on the LCD |
| #include < | #include < | ||
| #include < | #include < | ||
| Line 135: | Line 139: | ||
| temperature = thermistor_calculate_celsius(value); | temperature = thermistor_calculate_celsius(value); | ||
| - | // Converting the temperature in to text. | + | // Converting the temperature in to text |
| - | // To display the degree sign, the octal variable is 56. | + | // To display the degree sign, the octal variable is 56 |
| sprintf(text, | sprintf(text, | ||
| - | // Displaying the text in the beginning of the third row of the LCD. | + | // Displaying the text in the beginning of the third row of the LCD |
| lcd_gfx_goto_char_xy(5, | lcd_gfx_goto_char_xy(5, | ||
| lcd_gfx_write_string(text); | lcd_gfx_write_string(text); | ||
| Line 145: | Line 149: | ||
| hw_delay_ms(1000); | hw_delay_ms(1000); | ||
| } | } | ||
| + | return 0; | ||
| } | } | ||
| </ | </ | ||