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 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

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
++
/*
* 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
-
AmazonPurchase LM35 from Amazonamzn.to
-
eBayPurchase LM35 from eBayebay.us
Albarkatun da kuma shafukan da za a duba
-
Takardar bayanaiLM35 Datasheetti.com
Fayiloli📁
Babu fayiloli da ake da su.