Код для поиска

Как использовать LM35 для измерения температуры в Цельсиях, Фаренгейтах и Кельвинах

Как использовать LM35 для измерения температуры в Цельсиях, Фаренгейтах и Кельвинах

В этом уроке мы узнаем, как использовать температурный сенсор LM35 для измерения температуры и отображения ее в Цельсиях, Фаренгейтах и Кельвинах на последовательном мониторе. LM35 - это простой, но эффективный сенсор, который выдает напряжение, пропорциональное температуре, что позволяет легко производить измерения и преобразования. Этот проект идеален для начинающих, которые хотят интегрировать температурное измерение в свои проекты на Arduino.

LM35 имеет три вывода: левый вывод предназначен для питания, которое можно подключить к источнику напряжения от 4 В до 30 В; средний вывод выдает напряжение, пропорциональное температуре; и правый вывод предназначен для заземления. Датчик выдает 10 милливольт на каждый градус Цельсия, что мы будем использовать для вычисления температуры в нашем коде Arduino. (в видео на 02:30)

Аппаратное обеспечение объяснено

Датчик температуры LM35 является прецизионным устройством, которое выдает аналоговое напряжение, соответствующее температуре в градусах Цельсия. Датчик работает в диапазоне от -55°C до 150°C с точностью ±0.5°C. Его низкое потребление мощности в 60 микроампер делает его подходящим для устройств, работающих от батарей. Выходное сопротивление LM35 низкое, что позволяет ему эффективно нагружать цепь без значительного падения напряжения, что критично для поддержания точных измерений. Датчик часто упаковывается в корпус TO-92, что облегчает его интеграцию в различные проекты.

Технические характеристики

ПроизводительТехасские Инструменты
Номер деталиLM35
Логика/Напряжение ввода-вывода4-30 В
Выходной ток (тип.)60 мкА
Диапазон температур-55 до 150 °C
Выходное напряжение10 мВ/°C
Точность (тип.)±0.5 °C (до 25 °C)
ПакетТО-92

  • Обеспечьте надлежащее электропитание в диапазоне от 4В до 30В.
  • Будьте осторожны с измененной полярностью на подключениях питания.
  • Используйте стабильное заземление, чтобы избежать помех в показаниях.
  • Держите датчик вдали от прямых источников тепла, чтобы избежать ошибочных показаний.
  • Рассмотрите использование низкочастотного фильтра, если вы испытываете колебания на выходном напряжении.

Инструкции по подключению

LM35_basic_wiring_bb

Для подключения датчика LM35 подключите левый вывод (VCC) к источнику питания 5V Arduino. Правый вывод (GND) следует соединить с землей (GND) Arduino. Средний вывод (Выход) - это тот, где вы будете считывать данные о температуре; соедините этот вывод с аналоговым входом.A0на Arduino. Эта настройка позволит Arduino считывать выходное напряжение с LM35, которое соответствует температуре. Если вам нужно изменить подключение для различных конфигураций, убедитесь, что вы обновили ссылку на аналоговый пин в коде, чтобы она соответствовала вашей новой настройке. (в видео на 03:15)

Примеры кода и пошаговое руководство

Следующие фрагменты кода демонстрируют, как считывать температуру с LM35 и отображать её в различных единицах. Сначала мы определяем входной контакт и коэффициент преобразования LM35:

const int inPin = A0; // can change
const float LM35_FACTOR = 0.01; // do not change

В этом фрагменте,inPinпредставляет аналоговый вывод, подключенный к выходу LM35, иLM35_FACTORопределяет преобразование, необходимое для преобразования напряжения в температуру в градусах Цельсия. Затем мы настраиваем серийную связь:

void setup() {
  Serial.begin(9600);
  Serial.println("Robojax LM35 for Arduino");
  delay(500);
}

Здесь,Serial.begin(9600)инициализирует последовательную связь с битовой скоростью 9600 бит в секунду, что позволяет нам отправлять и получать данные на и с последовательного монитора. Функция цикла непрерывно считывает температуру и выводит её:

void loop() {
  printTemperature('C');
  printTemperature('F');
  printTemperature('K'); 
  delay(1000);
}

В этом цикле мы вызываемprintTemperatureфункция для каждого единицы измерения (Цельсий, Фаренгейт, Кельвин), чтобы отображать соответствующие температуры на последовательном мониторе.

Демонстрация / Что ожидать

Когда LM35 подключен правильно, вы должны увидеть показания температуры, отображаемые в Цельсиях, Фаренгейтах и Кельвинах на серийном мониторе. При подаче тепла на датчик показания будут увеличиваться соответственно. Если вы заметите случайные или непоследовательные значения, проверьте проводку на наличие слабых соединений или неправильного назначения выводов. (в видео на 05:00)

Временные метки видео

  • 00:00- Введение
  • 01:00- Обзор LM35
  • 02:30- Инструкции по проводке
  • 03:15- Объяснение кода
  • 05:00- Демонстрация

Изображения

LM35_basic_project
LM35_basic_project
LM35_basic_wiring_bb
LM35_basic_wiring_bb
LM35_pinout
LM35_pinout
323-How to use an LM35 to measure temperature in Celsius, Fahrenheit, and Kelvin
Язык: C++
/*
 * This Arduino sketch is to use LM35 to measure temperature
 * This code has two ways to get temperature
 * 1-To print the temperature either in C, F or K on the serial monitor
 * 2-To return the value in C, F and K
 * 
 * Watch Video instruction for this code:https://youtu.be/S5IBc_epa1A
 * 
 * Full explanation of this code and wiring diagram is available at
 * my Arduino Course at Udemy.com here: http://robojax.com/L/?id=62

 * Written by Ahmad Shamshiri on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
 * in Ajax, Ontario, Canada. www.robojax.com
 * 

 * Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in a structured course with all material, wiring diagrams and libraries
all in one place. Purchase My course on Udemy.com http://robojax.com/L/?id=62

If you found this tutorial helpful, please support me so I can continue creating 
content like this. 

or make a donation using PayPal http://robojax.com/L/?id=64

 *  * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.* 
 * This code has been downloaded from Robojax.com
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <https://www.gnu.org/licenses/>.


*/

const int inPin =A0;//can change
const int iteration = 1000; //can change (see video)
const float LM35_FACTOR =0.01;// do not change

// the setup routine runs once when you press reset:
void setup() {
  // initialize serial communication at 9600 bits per second:
  Serial.begin(9600);
  Serial.println("Robojax LM35 for Arduino");
  delay(500);
}

// the loop routine runs over and over again forever:
void loop() {
 //robojax.com LM35 Code for Arduino
  printTemperature('C');
  Serial.println();
  printTemperature('F');
  Serial.println();  
  printTemperature('K'); 
  Serial.println();     
  Serial.println();    
//  Serial.print(" Temperature: ");
//  printDegree();    
//  Serial.print(getTemperature('C'));
if(getTemperature('C') >87)
{
 // do something here (watch video)
}
//  Serial.println();
  delay(1000);
}



/*
 * getTemperature()
 * @brief gets the average temperature
 * @param average temperature
 * @param "type" is character
 *     C = Celsius
 *     K = Kelvin
 *     F = Fahrenheit
 * @return returns one of the values above
 * Written by Ahmad Shamshiri for robojax.com
 * on May 08, 2020 at 02:36 in Ajax, Ontario, Canada
 */
float getTemperature(char type)
{
    float value;
    float averageTemperature =0;
    int sensorValue = analogRead(inPin);
    float voltage = sensorValue * (5.0 / 1023.0); 
    float temperature = voltage / LM35_FACTOR;
    for(int i=0; i< iteration; i++)
    {
      averageTemperature += temperature;
    }

    averageTemperature /=iteration;
  if(type =='F')
   {
    value = averageTemperature *9/5 + 32;//convert to Fahrenheit 
   }else if(type =='K')
   {
    value = averageTemperature + 273.15;//convert to Kelvin
   }else{
    value = averageTemperature;// return Celsius
   }    
    return value ;
}//getTemperature()

/*
 * printTemperature()
 * @brief prints  temperature on serial monitor
 * @param character type
 * @param "type" is character
 *     C = Celsius
 *     K = Kelvin
 *     F = Fahrenheit
 * @return none
 * Written by Ahmad Shamshiri for robojax.com
 * on May 08, 2020 at 02:45 in Ajax, Ontario, Canada
 */
void printTemperature(char type)
{
    float value;
    float temp = getTemperature(type);
   Serial.print(temp);
    printDegree();    
  if(type =='F')
   {
     Serial.print("F");
    }else if(type =='K')
   {
     Serial.print("K");
   }else{
     Serial.print("C");
   }    
 
}//printTemperature()

/*
 * @brief prints degree symbol on serial monitor
 * @param none
 * @return returns nothing
 * Written by Ahmad Shamshiri on July 13, 2019
 * for Robojax Tutorial Robojax.com
 */
void printDegree()
{
    Serial.print("\\xC2"); 
    Serial.print("\\xB0");  
}

Вещи, которые могут вам понадобиться

Ресурсы и ссылки

Файлы📁

Нет доступных файлов.