Пребарување код

Ардуино код за LM75A температурен сензор

Ардуино код за LM75A температурен сензор

Во ова упатство, ќе научиме како да го користиме сензорот за температура LM75A со Arduino за мерење на температура во Целзиусови и Фаренхајтови степени. Сензорот LM75A комуницира преку I2C протоколот, што го прави лесен за интегрирање со Arduino плочите. До крајот на ова упатство, ќе имате функционална поставка што прикажува отчитувања на температурата секоја секунда.

За да го искористите најдобро ова упатство, препорачувам да го погледнете придружното видео, кое обезбедува визуелно водство за поставувањето и имплементацијата на кодот (во видеото на 20:29).

Објаснување на хардверот

Сензорот за температура LM75A е дигитален сензор способен да ја мери амбиенталната температура со висока прецизност. Работи преку I2C комуникацискиот протокол, овозможувајќи повеќе сензори да бидат поврзани на истата магистрала. Сензорот има функција за исклучување при прекумерна температура, што може да помогне во заштеда на енергија кога не се користи.

Овој сензор обично е достапен или како самостоен чип или како PCB модул. Модулот вклучува основни пинови како VCC, GND, SDA и SCL, кои се потребни за комуникација со Arduino. Кога го користите овој сензор, важно е да обезбедите правилни врски и да ја изберете точната I2C адреса за комуникација.

Детали од техничката документација

ПроизводителNXP / Texas Instruments
Број на делLM75A
Логички/IO напон2.7 V до 5.5 V
Напон на напојување2.7 V до 5.5 V
Излезна струја (по канал)3 mA
Врвна струја (по канал)10 mA
Водство за PWM фреквенцијаN/A
Праг на влезна логика0.3 VCC (високо), 0.2 VCC (ниско)
Пад на напон / RDS(on) / заситување0.5 V макс.
Термички граници-55 °C до +125 °C
ПакетSOIC-8 / TSSOP
Белешки / варијантиДостапни во различни I2C адреси

  • Осигурете се дека точната I2C адреса е поставена во вашиот код.
  • Користете pull-up отпорници на SDA и SCL линиите ако е потребно.
  • Напојувајте го сензорот со стабилен напон (2.7 V до 5.5 V).
  • Следете за прегревање; сензорот може да работи до 125 °C.
  • Ракувајте со сензорот нежно за да избегнете оштетување при инсталација.

Инструкции за жици

Arduino_wiring_LM75A_bb

За да го поврзете сензорот за температура LM75A со вашиот Arduino, започнете со поврзување на пин за заземјување на сензорот со пин за заземјување на вашиот Arduino. Следно, поврзете го VCC пинот на сензорот со 5V пинот на Arduino. За I2C комуникација, поврзете го SDA пинот на сензорот (обично означен со зелена боја) со A4 пинот на Arduino, и SCL пинот (обично означен со сина боја) со A5 пинот. Ако користите различен модел на Arduino, осигурете се дека се поврзувате со точните I2C пинови; на пример, на Arduino Mega, SDA се поврзува со пин 20 и SCL со пин 21.

Ако го користите LM75A како гол чип наместо модул, осигурете се дека правилно ги поврзувате соодветните пинови: првиот пин се поврзува со A4 (SDA), вториот пин со A5 (SCL), четвртиот пин со заземјување, и осмиот пин со VCC. Оставете ги другите пинови неповрзани. Оваа поставка осигурува дека сензорот може правилно да комуницира со Arduino.

Примери на код и објаснување

Следниот код го иницијализира сензорот LM75A и ја чита температурата секоја секунда. Клучниот идентификатор во овој код е lm75a_sensor, кој е инстанца на класата LM75A. Оваа инстанца се користи за добивање отчитувања на температурата од сензорот.

LM75A lm75a_sensor(false, false, false);

Оваа линија создава инстанца на класата LM75A, пренесувајќи параметри што ја претставуваат состојбата на A0, A1 и A2 пиновите. Стандардната состојба може да се постави на false ако овие пинови не се користат.

Во функцијата setup(), ја иницијализираме сериската комуникација со брзина од 9600 бауди, што е клучно за прикажување на отчитувањата на температурата на серискиот монитор.

void setup(void) {
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
}

Овој фрагмент го поставува серискиот монитор, овозможувајќи ни да ги гледаме отчитувањата на температурата како што се печатат секоја секунда.

Во функцијата loop(), ја добиваме температурата во Целзиусови степени и проверуваме за грешки. Ако температурата е валидна, ја печатиме заедно со нејзиниот еквивалент во Фаренхајтови степени.

float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
  Serial.println("Грешка при добивање на температурата");
} else {
  Serial.print("Температура: ");
  Serial.print(temperature_in_degrees);
  Serial.print(" степени (");
  Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
  Serial.println(" Фаренхајтови)");
}

Овој сегмент од кодот демонстрира како да се обработи отчитувањето на температурата и да се испечати и во Целзиусови и во Фаренхајтови степени на серискиот монитор. Вклучува обработка на грешки за невалидни отчитувања.

За целосниот код, проверете го делот за преземање подолу во статијата.

Демонстрација / Што да очекувате

Откако ќе ги завршите жиците и ќе го поставите кодот на вашиот Arduino, треба да ги видите отчитувањата на температурата прикажани на серискиот монитор секоја секунда. Можете да ја тестирате реактивноста на сензорот со допирање или користење на топлински пиштол, и треба да забележите дека отчитувањата се менуваат соодветно. Бидете внимателни со обратна поларизација при поврзување на сензорот, бидејќи тоа може да го оштети модулот.

Слики

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
Јазик: 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);
}

Ресурси и референци

Сè уште нема ресурси.

Датотеки📁

Fritzing датотека

Други датотеки