Search Code

Darasi na 42: Yin Amfani da Sensor na Zazzabi na LM35 | Kwas ɗin Arduino Mataki-bi-Mataki

Darasi na 42: Yin Amfani da Sensor na Zazzabi na LM35 | Kwas ɗin Arduino Mataki-bi-Mataki

A cikin wannan darasi, za mu koyi yadda ake amfani da na'urar zazzabi ta LM35 tare da Arduino don auna da nuna zazzabi a Celsius, Fahrenheit, da Kelvin. Wannan na'urar tana fitar da wutar lantarki wanda ya dace da zazzabi, wanda ke ba mu damar karanta da sarrafa bayanan cikin shirin Arduino cikin sauki. A karshen wannan koyarwar, za ku iya aiwatar da ayyuka dangane da zazzabi a cikin ayyukanku.

Na'urar zazzabi ta LM35 tana da filaye uku: filin hagu na samar da wutar lantarki, filin tsakiya yana fitar da wutar lantarki daidai da zazzabi, kuma filin dama na ƙasa. Na'urar tana aiki a tsakanin wutar lantarki 4 zuwa 30 volts kuma tana ba da fitarwa na 10 millivolts a kowace digiri Celsius. Wannan daidaito yana ba da damar karanta zazzabi daidai a aikace-aikace daban-daban.

Bayanin Kayan Aiki

Babban kayan aiki a wannan aikin shine na'urar zazzabi ta LM35. An tsara shi don samar da fitar wutar lantarki wanda ya dace da zazzabi a digiri Celsius. Na'urar ta dace da zazzabi mai yawa, daga -55°C zuwa +150°C, wanda ya sa ta dace da muhalli daban-daban.

LM35_pinout

LM35 yana buƙatar ƙaramin wutar lantarki (60 microamps) kuma yana aiki a tsakanin wutar lantarki mai yawa. Ƙarfin fitarwarsa yana da ƙasa, wanda ke ba da damar haɗa shi kai tsaye da filayen shigar analog na Arduino ba tare da ƙarin da'ira ba. Wannan saukin ƙira ya sa LM35 ya zama zaɓi mai kyau don auna zazzabi.

Bayanan Datasheet

Mai ƙirƙira Texas Instruments
Lambar kayan aiki LM35
Wutar Logic/IO 4–30 V
Fitar wutar lantarki (kowane tashar) 1 mA max
Tsawon zazzabi -55 zuwa +150 °C
Fitar wutar lantarki 10 mV/°C
Daidaito ±0.5 °C a 25 °C
Kunshin TO-92

 

  • Tabbatar da samar da wutar lantarki daidai tsakanin 4V da 30V don karanta daidai.
  • Fitar wutar lantarki tana daidai da zazzabi kai tsaye (10 mV/°C).
  • Yi amfani da capacitors na decoupling kusa da filin wutar don kwanciyar hankali.
  • Kiyaye daidaiton polarity lokacin haɗawa don guje wa lalacewa.
  • Tabbatar da haɗin gwiwa mai kyau don guje wa shigar da ba ta da tushe, wanda zai iya haifar da karanta kuskure.

Umarnin Haɗa Waya

LM35_basic_wiring_bb

Don haɗa na'urar zazzabi ta LM35, haɗa filin hagu (VCC) zuwa fitar 5V akan Arduino. Filin tsakiya (Output) ya kamata a haɗa shi da filin shigar analog A0, wanda za mu yi amfani da shi don karanta zazzabi. A ƙarshe, haɗa filin dama (Ground) zuwa ɗaya daga cikin filayen ƙasa akan Arduino. Tabbatar cewa duk haɗin suna da ƙarfi don guje wa matsaloli yayin aiki.

Lokacin haɗa waya, tuna cewa ana iya kunna LM35 da wutar lantarki tsakanin 4V da 30V, amma amfani da 5V ya isa don aikace-aikacen Arduino. Idan kun ga karanta zazzabi mara tsammani, sake duba haɗin kuma tabbatar da cewa na'urar tana da wutar lantarki daidai.

Misalan Code & Bayani

A cikin code na Arduino, muna ayyana filin shigar analog don karanta fitar wutar LM35 tare da alamar inPin, wanda aka saita zuwa A0. Bugu da ƙari, muna ayyana wani abu mai tsayi LM35_FACTOR da aka saita zuwa 0.01 don wakiltar fitar na'urar a kowace digiri Celsius.

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

Wannan saitin yana ba mu damar karanta zazzabi cikin sauki. Na gaba, muna fara sadarwar serial a cikin aikin setup() don fara fitar da bayanan zazzabi zuwa serial monitor.

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

A cikin aikin loop(), muna ci gaba da karanta zazzabi kuma mu nuna shi a cikin raka'a daban-daban. Aikin printTemperature() yana ɗaukar siga na harafi don nuna tsarin zazzabi da ake so, wanda ke ba mu damar nuna zazzabi a Celsius, Fahrenheit, ko Kelvin.

void loop() {
  printTemperature('C');
  printTemperature('F');
  printTemperature('K');
  delay(1000); // Wait for 1000ms
}

Don ɗaukar mataki dangane da zazzabi, za mu iya duba idan zazzabi ya wuce wani matakin da aka ƙayyade ta amfani da aikin getTemperature(). Wannan aikin yana lissafin matsakaicin zazzabi a kan adadin samfurori da aka ƙayyade.

Don ƙarin bayani, kalli bidiyon da ke da alaƙa don cikakken bayanin code (a cikin bidiyo a 10:15).

Nuna / Abin da za ku Yi Tsammani

Lokacin da aka haɗa na'urar LM35 daidai kuma aka ɗora code na Arduino, ya kamata ku ga zazzabi da aka nuna a Celsius, Fahrenheit, da Kelvin akan serial monitor. Idan kun sanya zafi a kan na'urar, za ku lura da karanta zazzabi yana ƙaruwa daidai.

Ku sani cewa haɗin waya mara kyau na iya haifar da karanta zazzabi mara tsari, kamar ƙima mai yawa ko ƙasa. Koyaushe tabbatar da cewa an haɗa na'urar daidai don guje wa irin waɗannan matsalolin (a cikin bidiyo a 12:30).

Lokutan Bidiyo

  • 00:00 - Gabatarwa ga LM35
  • 02:30 - Umarnin Haɗa Waya
  • 05:00 - Bayanin Code
  • 10:15 - Nuna Karanta Zazzabi
  • 12:30 - Matsaloli na Yau da Kullum da Magance su

Hotuna

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
Harshe: 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");
}

Abin da zaka iya bukata

Albarkatun da kuma shafukan da za a duba

Fayiloli📁

Babu fayiloli da ake da su.