Szukaj kodu

Kod Arduino dla czujnika temperatury LM75A

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

ProducentNXP / Texas Instruments
Numer częściLM75A
Napięcie logiczne/IO2,7 V do 5,5 V
Napięcie zasilania2,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 PWMNie dotyczy
Progi logiczne wejścia0,3 VCC (wysoki), 0,2 VCC (niski)
Spadek napięcia / RDS(on) / nasyceniemaks. 0,5 V
Limity termiczne-55 °C do +125 °C
ObudowaSOIC-8 / TSSOP
Uwagi / wariantyDostę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

Arduino_wiring_LM75A_bb

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ł.

Obrazy

LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_bb
Arduino_wiring_LM75A_bb
127-Arduino code for an LM75A temperature sensor
Język: C++
/*
 * \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

Inne pliki