કોડ શોધો

પાઠ 42: LM35 તાપમાન સેન્સરનો ઉપયોગ | આર્ડુઇનો સ્ટેપ બાય સ્ટેપ કોર્સ

પાઠ 42: LM35 તાપમાન સેન્સરનો ઉપયોગ | આર્ડુઇનો સ્ટેપ બાય સ્ટેપ કોર્સ

આ પાઠમાં, આપણે શીખીશું કે LM35 તાપમાન સેન્સરનો ઉપયોગ Arduino સાથે કેવી રીતે કરવો અને તાપમાનને સેલ્સિયસ, ફેરનહીટ અને કેલ્વિનમાં કેવી રીતે માપવું અને દર્શાવવું. આ સેન્સર તાપમાનના પ્રમાણમાં વોલ્ટેજ આઉટપુટ આપે છે, જેનાથી આપણે આપણા Arduino પ્રોગ્રામમાં ડેટા સરળતાથી વાંચી અને પ્રોસેસ કરી શકીએ છીએ. આ ટ્યુટોરિયલના અંત સુધીમાં, તમે તમારા પ્રોજેક્ટ્સમાં તાપમાન આધારિત ક્રિયાઓ લાગુ કરી શકશો.

LM35 તાપમાન સેન્સરમાં ત્રણ પિન હોય છે: ડાબી પિન પાવર સપ્લાય માટે છે, મધ્યમ પિન તાપમાનને અનુરૂપ વોલ્ટેજ આઉટપુટ કરે છે, અને જમણી પિન ગ્રાઉન્ડ માટે છે. સેન્સર 4 થી 30 વોલ્ટની વોલ્ટેજ રેન્જમાં કાર્ય કરે છે અને દરેક ડિગ્રી સેલ્સિયસ માટે 10 મિલીવોલ્ટનું આઉટપુટ આપે છે. આ ચોકસાઈ વિવિધ એપ્લિકેશન્સમાં સચોટ તાપમાન રીડિંગ્સ માટે પરવાનગી આપે છે.

હાર્ડવેર સમજાવ્યું

આ પ્રોજેક્ટમાં મુખ્ય ઘટક LM35 તાપમાન સેન્સર છે. તે એનાલોગ વોલ્ટેજ આઉટપુટ પ્રદાન કરવા માટે ડિઝાઇન કરવામાં આવ્યું છે જે ડિગ્રી સેલ્સિયસમાં તાપમાન સાથે રેખીય રીતે પ્રમાણસર છે. સેન્સર -55°C થી +150°C સુધીના વિશાળ તાપમાન રેન્જ માટે યોગ્ય છે, જે તેને વિવિધ વાતાવરણ માટે બહુમુખી બનાવે છે.

LM35_પિનઆઉટ

LM35 ને ન્યૂનતમ પાવર (60 માઇક્રોએમ્પ્સ) ની જરૂર પડે છે અને તે વિશાળ વોલ્ટેજ રેન્જમાં કાર્ય કરે છે. તેનું આઉટપુટ અવરોધ ઓછું છે, જે તેને વધારાના સર્કિટ વિના સીધા Arduino ના એનાલોગ ઇનપુટ પિન સાથે જોડાવા દે છે. ડિઝાઇનમાં આ સરળતા LM35 ને તાપમાન માપન કાર્યો માટે ઉત્તમ પસંદગી બનાવે છે.

ડેટાશીટ વિગતો

ઉત્પાદક ટેક્સાસ ઇન્સ્ટ્રુમેન્ટ્સ
ભાગ નંબર LM35
લોજિક/IO વોલ્ટેજ 4–30 V
આઉટપુટ કરંટ (પ્રતિ ચેનલ) 1 mA મહત્તમ
તાપમાન રેન્જ -55 થી +150 °C
આઉટપુટ વોલ્ટેજ 10 mV/°C
ચોકસાઈ ±0.5 °C 25 °C પર
પેકેજ TO-92

 

  • સચોટ રીડિંગ્સ માટે 4V અને 30V વચ્ચે યોગ્ય પાવર સપ્લાયની ખાતરી કરો.
  • આઉટપુટ વોલ્ટેજ તાપમાન સાથે સીધા પ્રમાણસર છે (10 mV/°C).
  • સ્થિરતા માટે પાવર પિન નજીક ડિકપ્લિંગ કેપેસિટરનો ઉપયોગ કરો.
  • નુકસાન ટાળવા માટે કનેક્ટ કરતી વખતે યોગ્ય ધ્રુવીયતા જાળવો.
  • ફ્લોટિંગ ઇનપુટ્સ ટાળવા માટે સારા કનેક્શનની ખાતરી કરો, જે ખોટા રીડિંગ્સનું કારણ બની શકે છે.

વાયરિંગ સૂચનાઓ

LM35_basic_wiring_bb

LM35 તાપમાન સેન્સરને વાયર કરવા માટે, ડાબી પિન (VCC) ને Arduino પરના 5V આઉટપુટ સાથે જોડો. મધ્યમ પિન (આઉટપુટ) ને એનાલોગ ઇનપુટ પિન A0 સાથે જોડવી જોઈએ, જેનો ઉપયોગ આપણે તાપમાન વાંચવા માટે કરીશું. છેલ્લે, જમણી પિન (ગ્રાઉન્ડ) ને Arduino પરના ગ્રાઉન્ડ પિનમાંથી એક સાથે જોડો. ખાતરી કરો કે ઓપરેશન દરમિયાન કોઈપણ સમસ્યા ટાળવા માટે બધા કનેક્શન સુરક્ષિત છે.

વાયરિંગ કરતી વખતે, યાદ રાખો કે LM35 ને 4V અને 30V વચ્ચેના સપ્લાય વોલ્ટેજ સાથે પાવર કરી શકાય છે, પરંતુ Arduino એપ્લિકેશન્સ માટે 5V પૂરતું છે. જો તમને અણધાર્યા તાપમાન રીડિંગ્સ દેખાય, તો કનેક્શન્સ ફરીથી તપાસો અને ખાતરી કરો કે સેન્સર યોગ્ય રીતે પાવર થયેલ છે.

કોડ ઉદાહરણો અને વોકથ્રુ

Arduino કોડમાં, આપણે LM35 આઉટપુટ વોલ્ટેજ વાંચવા માટે એનાલોગ ઇનપુટ પિનને ઓળખકર્તા inPin સાથે વ્યાખ્યાયિત કરીએ છીએ, જે A0 પર સેટ છે. વધુમાં, આપણે સેન્સરના આઉટપુટને દરેક ડિગ્રી સેલ્સિયસ દીઠ દર્શાવવા માટે LM35_FACTOR નામનો સ્થિરાંક 0.01 પર સેટ કરીએ છીએ.

const int inPin = A0; // બદલી શકાય છે
const float LM35_FACTOR = 0.01; // બદલશો નહીં

આ સેટઅપ આપણને સરળ રીતે તાપમાન વાંચવાની મંજૂરી આપે છે. આગળ, આપણે સીરિયલ મોનિટર પર તાપમાન ડેટા આઉટપુટ કરવાનું શરૂ કરવા માટે setup() ફંક્શનમાં સીરિયલ કમ્યુનિકેશન શરૂ કરીએ છીએ.

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

loop() ફંક્શનની અંદર, આપણે સતત તાપમાન વાંચીએ છીએ અને તેને વિવિધ એકમોમાં છાપીએ છીએ. printTemperature() ફંક્શન ઇચ્છિત તાપમાન ફોર્મેટ સ્પષ્ટ કરવા માટે એક અક્ષર પરિમાણ લે છે, જે આપણને તાપમાન સેલ્સિયસ, ફેરનહીટ અથવા કેલ્વિનમાં દર્શાવવાની મંજૂરી આપે છે.

void loop() {
  printTemperature('C');
  printTemperature('F');
  printTemperature('K');
  delay(1000); // 1000ms રાહ જુઓ
}

તાપમાનના આધારે ક્રિયા કરવા માટે, આપણે getTemperature() ફંક્શનનો ઉપયોગ કરીને તાપમાન ચોક્કસ થ્રેશોલ્ડ કરતાં વધી જાય છે કે કેમ તે તપાસી શકીએ છીએ. આ ફંક્શન ચોક્કસ સંખ્યાના નમૂનાઓ પર સરેરાશ તાપમાનની ગણતરી કરે છે.

વધુ વિગતો માટે, સંપૂર્ણ કોડ વોકથ્રુ માટે સંબંધિત વિડિઓ જુઓ (વિડિઓમાં 10:15 પર).

પ્રદર્શન / શું અપેક્ષા રાખવી

જ્યારે LM35 સેન્સર યોગ્ય રીતે કનેક્ટ થયેલ હોય અને Arduino કોડ અપલોડ થયેલ હોય, ત્યારે તમારે સીરિયલ મોનિટર પર તાપમાન સેલ્સિયસ, ફેરનહીટ અને કેલ્વિનમાં દર્શાવેલું જોવું જોઈએ. જો તમે સેન્સર પર ગરમી લગાવો છો, તો તમે જોશો કે તાપમાન રીડિંગ્સ તે મુજબ વધે છે.

ધ્યાન રાખો કે ખોટી વાયરિંગ અસ્થિર તાપમાન રીડિંગ્સ તરફ દોરી શકે છે, જેમ કે અત્યંત ઊંચા અથવા નીચા મૂલ્યો. આવી સમસ્યાઓ ટાળવા માટે હંમેશા ખાતરી કરો કે સેન્સર યોગ્ય રીતે કનેક્ટ થયેલ છે (વિડિઓમાં 12:30 પર).

વિડિઓ સમયસ્ટેમ્પ્સ

  • 00:00 - LM35 નો પરિચય
  • 02:30 - વાયરિંગ સૂચનાઓ
  • 05:00 - કોડ સમજૂતી
  • 10:15 - તાપમાન રીડિંગ્સનું પ્રદર્શન
  • 12:30 - સામાન્ય સમસ્યાઓ અને ઉકેલ

છબીઓ

LM35_basic_project
LM35_basic_project
LM35_basic_wiring_bb
LM35_basic_wiring_bb
LM35_pinout
LM35_pinout
503-Lesson 42: Using an LM35 Temperature Sensor with Arduino
ભાષા: C++
++
/*
 * Robojax Arduino Step-by-Step Course
 * Part 4: Temperature Sensors
 * Lesson 42: Introduction to LM35
 * 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
 *


  Please watch video instruction here https://youtu.be/DRIC4wDu878
 This code is available at http://robojax.com/course1/?vid=lecture37
 
with over 100 lectures free on YouTube. Watch it here http://robojax.com/L/?id=338
Get the code for the course: http://robojax.com/L/?id=339

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


 *  * 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:
// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
  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);//Wait for 1000ms (change it if you want)
}

/*
 * 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)
{
	// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
    float value,voltage,temperature;//define variables
    int sensorValue;
    float averageTemperature =0;

    for(int i=0; i< iteration; i++)
    {
      sensorValue = analogRead(inPin);//read analog value
      voltage = sensorValue * (5.0 / 1023.0); //convert it to voltage
      temperature = voltage / LM35_FACTOR; //convert voltage to temperature
      averageTemperature += temperature;//add
    }

    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 charact 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)
{
	// Robojax.com Code YouTube Watch it here http://robojax.com/L/?id=338
    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");
}

તમને જોઈતી વસ્તુઓ

સંસાધનો અને સંદર્ભો

ફાઇલો📁

કોઈ ફાઇલો ઉપલબ્ધ નથી.