↑ Powrót do Systemy Wbudowane

Arduino: odczyt termometru analogowego

Termometr analogowy

Termometr analogowy jest termistorem, czyli rezystorem reagującym na zmianę temperatury istotną zmianą rezystancji (wszystkie przewodniki zmieniają rezystancję wraz z temperaturą, jednak w porównaniu do termistora, zmiana ta jest nieznaczna).

Pasywny, trójnóżkowy termometr może być układem proporcjonalnym lub mostkiem z termistorem w jednej gałęzi. Termometry aktywne są bardziej skomplikowane i gwarantują znacznie większą liniowość i jej niezależność od napięcia zasilającego, a sygnałem wyjściowym jest nie zmiana rezystancji, a proporcjonalna do temperatury wartość napięcia.

Przykładem może być aktywny analogowy termometr firmy Microchip MCP9700. Termometr ten posiada następujące cechy:

  • stała, liniowa zmiana napięcia: 10mV/°C,
  • dokładność w zakresie 0°C to +70°C: ±4°C,
  • dokładność w zakresie -40°C to +150°C: -4°C/+6°C,
  • niski pobór prądu: 12µA (max),
  • napięcie zasilania: 2.3V to 5.5V,
  • działanie bez dodatkowych elementów.

Schemat połączeń

Termometr MCP9700 dostarczany jest w 3 różnych obudowach. Do projektowania najwygodniej skorzystać z układu z nóżkami w obudowie TO-92.[warning]

Układ wyprowadzeń w innych termometrach może być różny od poniższego. Np. opisany też tutaj  termometr cyfrowy Dalllas ma masę i zasilanie odwrotnie.

Źle podłączony układ bardzo szybko i mocno się nagrzewa!

[/warning]

Schemat wyprowadzeń termometru analogowego MCP9700

Schemat wyprowadzeń termometru analogowego MCP9700 (©2009 Microchip)

Wartość napięcia z wyjścia termometru można odczytać za pomocą wejścia analogowego Arduino.

Podłączenie termometru analogowego MCP9700 do Arduino

Podłączenie termometru analogowego MCP9700 do Arduino

Wyznaczanie wartości temperatury

 

Kod programu

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#define TempPin 0
#define Voltage 5

float temp;
void setup() {
Serial.begin(9600);
};
void loop () {
temp = analogRead(TempPin)*Voltage/1024.0;
temp = temp - 0.5;
temp = temp / 0.01;
Serial.println(temp);
delay(500);
};

[important]Treść tego artykułu wraz z ilustracjami udostępniam na licencji Public Domain.[/important]