Cod Arduino pentru un senzor de temperatură LM75A
În acest tutorial, vom învăța cum să folosim senzorul de temperatură LM75A cu un Arduino pentru a măsura temperatura atât în grade Celsius, cât și în Fahrenheit. Senzorul LM75A comunică prin protocolul I2C, ceea ce îl face ușor de integrat cu plăcile Arduino. Până la sfârșitul acestui tutorial, veți avea o configurație funcțională care afișează citirile de temperatură în fiecare secundă.

Pentru a profita la maximum de acest tutorial, vă recomand să urmăriți videoclipul asociat, care oferă îndrumare vizuală privind configurarea și implementarea codului (în videoclip la 20:29).
Hardware Explicat
Senzorul de temperatură LM75A este un senzor digital capabil să măsoare temperatura ambientală cu precizie ridicată. Funcționează prin protocolul de comunicare I2C, permițând conectarea mai multor senzori la același bus. Senzorul dispune de o funcție de oprire la supra-temperatură, care poate ajuta la economisirea energiei atunci când nu este utilizat.
Acest senzor este disponibil de obicei fie ca cip individual, fie ca modul PCB. Modulul include pini esențiali precum VCC, GND, SDA și SCL, care sunt necesari pentru comunicarea cu Arduino. Când utilizați acest senzor, este important să asigurați conexiuni corecte și să selectați adresa I2C corectă pentru comunicare.
Detalii din Fișa Tehnică
| Producător | NXP / Texas Instruments |
|---|---|
| Număr de piesă | LM75A |
| Tensiune logică/IO | 2,7 V până la 5,5 V |
| Tensiune de alimentare | 2,7 V până la 5,5 V |
| Curent de ieșire (pe canal) | 3 mA |
| Curent de vârf (pe canal) | 10 mA |
| Ghid frecvență PWM | N/A |
| Praguri logice de intrare | 0,3 VCC (ridicat), 0,2 VCC (scăzut) |
| Cădere de tensiune / RDS(on) / saturație | 0,5 V max |
| Limite termice | -55 °C până la +125 °C |
| Pachet | SOIC-8 / TSSOP |
| Note / variante | Disponibil în diferite adrese I2C |
- Asigurați-vă că adresa I2C corectă este setată în codul dumneavoastră.
- Utilizați rezistențe de pull-up pe liniile SDA și SCL dacă este necesar.
- Alimentați senzorul cu o tensiune stabilă (2,7 V până la 5,5 V).
- Monitorizați supraîncălzirea; senzorul poate funcționa până la 125 °C.
- Manipulați senzorul cu grijă pentru a evita deteriorarea în timpul instalării.
Instrucțiuni de Cablare

Pentru a cabla senzorul de temperatură LM75A la Arduino, începeți prin conectarea pinului de masă al senzorului la pinul de masă al Arduino. Apoi, conectați pinul VCC al senzorului la pinul de 5V de pe Arduino. Pentru comunicarea I2C, conectați pinul SDA al senzorului (marcat de obicei în verde) la pinul A4 de pe Arduino, iar pinul SCL (marcat de obicei în albastru) la pinul A5. Dacă utilizați un alt model de Arduino, asigurați-vă că vă conectați la pinii I2C corecți; de exemplu, pe un Arduino Mega, SDA se conectează la pinul 20, iar SCL la pinul 21.
Dacă utilizați LM75A ca cip individual, nu ca modul, asigurați-vă că conectați pinii corespunzători corect: primul pin se conectează la A4 (SDA), al doilea pin se conectează la A5 (SCL), al patrulea pin se conectează la masă, iar al optulea pin se conectează la VCC. Lăsați ceilalți pini neconectați. Această configurare asigură că senzorul poate comunica corect cu Arduino.
Exemple de Cod și Explicații
Următorul cod inițializează senzorul LM75A și citește temperatura în fiecare secundă. Identificatorul cheie în acest cod este lm75a_sensor, care este o instanță a clasei LM75A. Această instanță este utilizată pentru a obține citirile de temperatură de la senzor.
LM75A lm75a_sensor(false, false, false);
Această linie creează o instanță a clasei LM75A, transmițând parametri care reprezintă starea pinilor A0, A1 și A2. Starea implicită poate fi setată la false dacă acești pini nu sunt utilizați.
În funcția setup(), inițializăm comunicarea serială la o rată de 9600 baud, ceea ce este crucial pentru afișarea citirilor de temperatură pe monitorul serial.
void setup(void) {
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
}
Acest fragment configurează monitorul serial, permițându-ne să vedem citirile de temperatură pe măsură ce sunt afișate în fiecare secundă.
În funcția loop(), obținem temperatura în grade Celsius și verificăm eventualele erori. Dacă temperatura este validă, o afișăm împreună cu echivalentul său în Fahrenheit.
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)");
}
Acest segment de cod demonstrează cum să gestionați citirea temperaturii și să o afișați atât în Celsius, cât și în Fahrenheit pe monitorul serial. Include gestionarea erorilor pentru citiri invalide.
Pentru codul complet, consultați secțiunea de încărcare de mai jos a articolului.
Demonstrație / Ce să Vă Așteptați
După ce ați finalizat cablarea și ați încărcat codul pe Arduino, ar trebui să vedeți citirile de temperatură afișate pe monitorul serial în fiecare secundă. Puteți testa capacitatea de răspuns a senzorului atingându-l sau folosind un pistol de aer cald, și ar trebui să observați că citirile se schimbă în consecință. Fiți atenți la polaritatea inversată atunci când conectați senzorul, deoarece aceasta poate deteriora modulul.
/*
* \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);
}
Resurse și referințe
Încă nu sunt resurse.
Fișiere📁
Fișier Fritzing
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
Alte fișiere
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB