Kod Arduino dla czujnika temperatury LM75A
W tym samouczku nauczymy się, jak używać czujnika temperatury LM75A z Arduino do pomiaru temperatury zarówno w stopniach Celsjusza, jak i Fahrenheita. Czujnik LM75A komunikuje się za pomocą protokołu I2C, co ułatwia jego integrację z płytkami Arduino. Po ukończeniu tego samouczka będziesz mieć działający układ, który wyświetla odczyty temperatury co sekundę.

Aby w pełni wykorzystać ten samouczek, zalecam obejrzenie powiązanego wideo, które zapewnia wizualne wskazówki dotyczące konfiguracji i implementacji kodu (na wideo w 20:29).
Objaśnienie sprzętu
Czujnik temperatury LM75A to cyfrowy czujnik zdolny do pomiaru temperatury otoczenia z wysoką precyzją. Działa on za pomocą protokołu komunikacyjnego I2C, co pozwala na podłączenie wielu czujników do tej samej magistrali. Czujnik posiada funkcję wyłączania przy przegrzaniu, która może pomóc w oszczędzaniu energii, gdy nie jest używany.
Czujnik ten jest zwykle dostępny jako pojedynczy układ scalony lub jako moduł PCB. Moduł zawiera niezbędne piny, takie jak VCC, GND, SDA i SCL, które są wymagane do komunikacji z Arduino. Podczas korzystania z tego czujnika ważne jest zapewnienie prawidłowych połączeń oraz wybranie właściwego adresu I2C do komunikacji.
Szczegóły z karty katalogowej
| Producent | NXP / Texas Instruments |
|---|---|
| Numer części | LM75A |
| Napięcie logiczne/IO | 2,7 V do 5,5 V |
| Napięcie zasilania | 2,7 V do 5,5 V |
| Prąd wyjściowy (na kanał) | 3 mA |
| Prąd szczytowy (na kanał) | 10 mA |
| Wytyczne dotyczące częstotliwości PWM | Nie dotyczy |
| Progi logiczne wejścia | 0,3 VCC (wysoki), 0,2 VCC (niski) |
| Spadek napięcia / RDS(on) / nasycenie | maks. 0,5 V |
| Limity termiczne | -55 °C do +125 °C |
| Obudowa | SOIC-8 / TSSOP |
| Uwagi / warianty | Dostępny z różnymi adresami I2C |
- Upewnij się, że w kodzie ustawiono prawidłowy adres I2C.
- W razie potrzeby użyj rezystorów podciągających na liniach SDA i SCL.
- Zasilaj czujnik stabilnym napięciem (2,7 V do 5,5 V).
- Monitoruj przegrzewanie; czujnik może pracować do 125 °C.
- Obchodź się z czujnikiem ostrożnie, aby uniknąć uszkodzeń podczas instalacji.
Instrukcje dotyczące okablowania

Aby podłączyć czujnik temperatury LM75A do Arduino, zacznij od połączenia pinu masy czujnika z pinem masy Arduino. Następnie podłącz pin VCC czujnika do pinu 5V na Arduino. Do komunikacji I2C podłącz pin SDA czujnika (zwykle oznaczony na zielono) do pinu A4 na Arduino, a pin SCL (zwykle oznaczony na niebiesko) do pinu A5. Jeśli używasz innego modelu Arduino, upewnij się, że podłączasz się do prawidłowych pinów I2C; na przykład w Arduino Mega SDA łączy się z pinem 20, a SCL z pinem 21.
Jeśli używasz LM75A jako gołego układu scalonego, a nie modułu, upewnij się, że prawidłowo podłączasz odpowiednie piny: pierwszy pin łączy się z A4 (SDA), drugi pin z A5 (SCL), czwarty pin z masą, a ósmy pin z VCC. Pozostałe piny pozostaw niepodłączone. Taka konfiguracja zapewnia prawidłową komunikację czujnika z Arduino.
Przykłady kodu i omówienie
Poniższy kod inicjalizuje czujnik LM75A i odczytuje temperaturę co sekundę. Kluczowym identyfikatorem w tym kodzie jest lm75a_sensor, który jest instancją klasy LM75A. Ta instancja jest używana do pobierania odczytów temperatury z czujnika.
LM75A lm75a_sensor(false, false, false);
Ta linia tworzy instancję klasy LM75A, przekazując parametry reprezentujące stan pinów A0, A1 i A2. Stan domyślny można ustawić na false, jeśli te piny nie są używane.
W funkcji setup() inicjalizujemy komunikację szeregową z prędkością 9600 bodów, co jest kluczowe do wyświetlania odczytów temperatury na monitorze szeregowym.
void setup(void) {
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
}
Ten fragment konfiguruje monitor szeregowy, umożliwiając nam przeglądanie odczytów temperatury drukowanych co sekundę.
W funkcji loop() pobieramy temperaturę w stopniach Celsjusza i sprawdzamy ewentualne błędy. Jeśli temperatura jest prawidłowa, drukujemy ją wraz z odpowiednikiem w stopniach Fahrenheita.
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}
Ten fragment kodu pokazuje, jak obsługiwać odczyt temperatury i drukować go zarówno w stopniach Celsjusza, jak i Fahrenheita na monitorze szeregowym. Zawiera obsługę błędów dla nieprawidłowych odczytów.
Pełny kod znajdziesz w sekcji pobierania poniżej artykułu.
Demonstracja / Czego się spodziewać
Po zakończeniu okablowania i wgraniu kodu do Arduino powinieneś zobaczyć odczyty temperatury wyświetlane na monitorze szeregowym co sekundę. Możesz przetestować reakcję czujnika, dotykając go lub używając opalarki, i powinieneś zaobserwować odpowiednie zmiany odczytów. Zachowaj ostrożność przy odwrotnej polaryzacji podczas podłączania czujnika, ponieważ może to uszkodzić moduł.
/*
* \brief Show temperature in degrees Celsius and Fahrenheit every second
*
* \author Quentin Comte-Gaz <quentin@comte-gaz.com>
* \date 8 July 2016
* \license MIT License (contact me if too restrictive)
* \copyright Copyright (c) 2016 Quentin Comte-Gaz
* \version 1.0
*
* Video instruction by Ahmad Shamshiri on July 10, 2018 at 20:29 for Robojax.com
* in Ajax, Ontario, Canada
* Watch the video instruction for this code: https://youtu.be/2gmkubeHUXw
For this sketch you need to connect:
VCC to 3.3V or 5V and GND to GND of the Arduino
SDA to A4 and SCL to A5
*/
#include <LM75A.h>
// Create I2C LM75A instance
LM75A lm75a_sensor(false, //A0 LM75A pin state
false, //A1 LM75A pin state
false); //A2 LM75A pin state
// Equivalent to "LM75A lm75a_sensor;"
void setup(void)
{
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
Serial.println("Temperatures will be displayed every second:");
}
void loop()
{
// Robojax.com LM75A Test
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}
delay(1000);
}
Zasoby i odniesienia
Brak zasobów.
Pliki📁
Plik Fritzing
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
Inne pliki
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB