કોડ શોધો

LM75A તાપમાન સેન્સર LCD1602 I2C સાથે

LM75A તાપમાન સેન્સર LCD1602 I2C સાથે

આ ટ્યુટોરિયલમાં, આપણે શીખીશું કે LM75A તાપમાન સેન્સરનો ઉપયોગ કરીને I2C સંચાર દ્વારા LCD1602 સ્ક્રીન પર તાપમાનના રીડિંગ્સ સેલ્સિયસ અને ફેરનહીટ બંનેમાં કેવી રીતે દર્શાવવા. LM75A -55°C થી +125°C સુધીનું તાપમાન માપી શકે છે, જે તેને વિવિધ એપ્લિકેશનો માટે યોગ્ય બનાવે છે. સેટઅપ પૂર્ણ થયા પછી, તમે LCD ડિસ્પ્લે પર રીઅલ-ટાઇમ તાપમાનના રીડિંગ્સ જોઈ શકશો.

LCD1602-I2C display module with 4 wires

આ પ્રોજેક્ટ માટે, આપણે I2C દ્વારા કનેક્ટેડ LM75A સેન્સર અને LCD1602 મોડ્યુલનો ઉપયોગ કરીશું, જે સરળ વાયરિંગ અને Arduino પર ઓછા પિનના ઉપયોગ માટે પરવાનગી આપે છે. ધ્યેય એક એવી સિસ્ટમ બનાવવાનો છે જે સતત તાપમાન વાંચે અને તેને LCD પર દર્શાવે. જો પ્રક્રિયાના કોઈપણ ભાગ પર સ્પષ્ટતાની જરૂર હોય, તો વિડિયો ટ્યુટોરિયલ (વિડિયોમાં 00:00 પર) ચોક્કસપણે તપાસો.

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

આ પ્રોજેક્ટના મુખ્ય ઘટકોમાં LM75A તાપમાન સેન્સર અને LCD1602 ડિસ્પ્લેનો સમાવેશ થાય છે. LM75A એક I2C તાપમાન સેન્સર છે જે ચોક્કસ તાપમાન રીડિંગ્સ પ્રદાન કરે છે. તે Arduino સાથે માત્ર બે વાયર, SDA (ડેટા લાઇન) અને SCL (ક્લોક લાઇન) પર સંચાર કરે છે, જે તેને તમારા પ્રોજેક્ટ્સમાં સંકલિત કરવાનું સરળ બનાવે છે.

LCD1602 એ 16x2 અક્ષર ડિસ્પ્લે છે જે એક સમયે 32 અક્ષરો સુધી બતાવી શકે છે. I2C ઇન્ટરફેસનો ઉપયોગ કરીને, આપણે તેને માત્ર બે વધારાના વાયર સાથે નિયંત્રિત કરી શકીએ છીએ, જે વાયરિંગ પ્રક્રિયાને ખૂબ સરળ બનાવે છે. LCD ની બેકલાઇટ સુવિધા ઓછા પ્રકાશવાળા વાતાવરણમાં વધુ સારી દૃશ્યતા પણ પ્રદાન કરી શકે છે.

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

ઉત્પાદકટેક્સાસ ઇન્સ્ટ્રુમેન્ટ્સ
ભાગ નંબરLM75A
લોજિક/IO વોલ્ટેજ2.7 V થી 5.5 V
સપ્લાય વોલ્ટેજ2.7 V થી 5.5 V
આઉટપુટ કરંટ (પ્રતિ ચેનલ)N/A
પીક કરંટ (પ્રતિ ચેનલ)N/A
PWM આવર્તન માર્ગદર્શનN/A
ઇનપુટ લોજિક થ્રેશોલ્ડ0.3 * Vcc (નીચું), 0.7 * Vcc (ઊંચું)
વોલ્ટેજ ડ્રોપ / RDS(on) / સેચ્યુરેશનN/A
થર્મલ મર્યાદાઓઓપરેટિંગ: -55°C થી +125°C
પેકેજSOT-23
નોંધો / વેરિઅન્ટ્સબહુવિધ I2C સરનામાંઓમાં ઉપલબ્ધ

  • યોગ્ય પાવર સપ્લાય (2.7 V થી 5.5 V) સુનિશ્ચિત કરો.
  • જરૂર પડે તો SDA અને SCL લાઇનો પર પુલ-અપ રેઝિસ્ટરનો ઉપયોગ કરો.
  • બહુવિધ ઉપકરણો માટે I2C સરનામું રૂપરેખાંકન તપાસો.
  • દખલ ઘટાડવા માટે વાયરિંગ ટૂંકું રાખો.
  • તાપમાન શ્રેણીનું નિરીક્ષણ કરો: -55°C થી +125°C.
  • તાપમાન રીડિંગ્સ ડીબગ કરવા માટે સીરિયલ મોનિટરનો ઉપયોગ કરો.
  • કોડમાં ભૂલ સ્થિતિઓને અસરકારક રીતે હેન્ડલ કરો.
  • ડિસ્પ્લેની પાવર આવશ્યકતાઓ સાથે સાવચેત રહો.

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

Arduino_wiring_LM75A_LCD_bb

LM75A તાપમાન સેન્સર અને LCD1602 ને વાયર કરવા માટે, પાવર સપ્લાયને કનેક્ટ કરીને શરૂ કરો. LM75A અને LCD1602 બંનેના VCC પિનને Arduino પરના 5V પિન સાથે કનેક્ટ કરો. પછી, બંને મોડ્યુલના ગ્રાઉન્ડ (GND) પિનને Arduino પરના GND પિન સાથે કનેક્ટ કરો.

આગળ, I2C સંચાર લાઇનોને કનેક્ટ કરો. LM75A નો SDA પિન Arduino પરના A4 પિન સાથે કનેક્ટ થવો જોઈએ, જ્યારે SCL પિન A5 પિન સાથે કનેક્ટ થવો જોઈએ. આ સેન્સર અને Arduino વચ્ચે I2C સંચાર માટે પરવાનગી આપે છે. કોઈપણ સંચાર ભૂલોને રોકવા માટે કનેક્શન સુરક્ષિત છે તેની ખાતરી કરો.

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

કોડમાં, આપણે પહેલા LM75A સેન્સર અને LCD1602 ડિસ્પ્લે માટે જરૂરી લાઇબ્રેરીઓ શામેલ કરીએ છીએ. નીચેનો અંશ દર્શાવે છે કે LM75A સેન્સરનું ઇન્સ્ટન્સ કેવી રીતે બનાવવું:

LM75A lm75a_sensor(false, false, false);

આ લાઇન LM75A સેન્સર ઑબ્જેક્ટને પ્રારંભ કરે છે. બુલિયન પરિમાણો LM75A ના A0, A1 અને A2 પિનને અનુરૂપ છે, જે જરૂર પડે તો વિવિધ I2C સરનામાંઓ માટે પરવાનગી આપે છે.

આગળ, આપણે સીરિયલ મોનિટર સેટ કરીએ છીએ અને LCD ડિસ્પ્લે પ્રારંભ કરીએ છીએ:

void setup(void) {
  Serial.begin(9600);
  lcd.begin();  
  lcd.backlight();
  lcd.print("Robojax LM75A");
}

અહીં, આપણે 9600 બોડ પર સીરિયલ સંચાર શરૂ કરીએ છીએ અને LCD ડિસ્પ્લે પ્રારંભ કરીએ છીએ. બેકલાઇટ ચાલુ કરવામાં આવે છે, અને સ્ક્રીન પર પ્રારંભિક સંદેશ છાપવામાં આવે છે.

મુખ્ય લૂપમાં, આપણે સતત તાપમાન વાંચીએ છીએ અને તેને દર્શાવીએ છીએ:

float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
  Serial.println("Error while getting temperature");
}

આ વિભાગ સેન્સરમાંથી તાપમાન મેળવે છે. જો રીડિંગ અમાન્ય હોય, તો સીરિયલ મોનિટર પર ભૂલ સંદેશ મોકલવામાં આવે છે. અન્યથા, તાપમાન પ્રક્રિયા કરીને LCD પર દર્શાવી શકાય છે.

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

એકવાર બધું વાયર થઈ જાય અને કોડ અપલોડ થઈ જાય, તમારે LCD1602 ડિસ્પ્લે પર તાપમાનના રીડિંગ્સ જોવા જોઈએ, જે સેલ્સિયસ અને ફેરનહીટ વચ્ચે બદલાતા રહે છે. જો LM75A સેન્સર યોગ્ય રીતે કાર્ય કરી રહ્યું છે, તો તે દર સેકન્ડે દર્શાવેલ તાપમાન સતત અપડેટ કરશે. જો કોઈ સમસ્યા હોય, જેમ કે ઉલટી ધ્રુવીયતા અથવા ખોટું વાયરિંગ, તો કનેક્શન તપાસો અને ખાતરી કરો કે યોગ્ય પિનનો ઉપયોગ થયો છે (વિડિયોમાં 00:00 પર).

છબીઓ

LCD1602-I2C display module with 4 wires
LCD1602-I2C display module with 4 wires
LM75a-1
LM75a-1
LM75a-3
LM75a-3
LM75a-12
LM75a-12
Arduino_wiring_LM75A_LCD_bb
Arduino_wiring_LM75A_LCD_bb
129-LM75A temperature sensor with LCD1602 I2C
ભાષા: 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
 * 
 * Modified by Ahmad Shamshiri on July 12, 2018 at 22:40 for Robojax.com
 * in Ajax, Ontario, Canada
 * Watch video instructions for this code: https://youtu.be/hVo_msVMlaI
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;"


// start of settings for LCD1602 with I2C
#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
// Set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd(0x27, 16, 2);
// end of settings for LCD1602 with I2C

void setup(void)
{
  Serial.begin(9600);
  Serial.println("Robojax LM75A Test");
  // initialize the LCD
  lcd.begin();  
  lcd.backlight();
  lcd.print("Robojax LM75A");
  lcd.setCursor(0,1);
  lcd.print("Demo"); 
  delay(2000); 
}

void loop()
{
   lcd.clear();// clear previous values from screen
  // 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("Temp: ");
    Serial.print(temperature_in_degrees);
    Serial.print(" C (");
    float tmpF = LM75A::degreesToFahrenheit(temperature_in_degrees);
    Serial.print(tmpF);
    Serial.println(" F)");
  lcdDisplay(
             // to print Celsius:
             0, // character 0 
             0, // line 0
             "Celsius: ", 

             // to print Celsius
             11, // character 10
             0, // line 0
             temperature_in_degrees 
             );  

  lcdDisplay(
             // to print Fahrenheit:
             0, // character 0 
             1, // line 1
             "Fahrenheit: ", 

             // to print Fahrenheit
             11, // character 9
             1, // line 0
             tmpF   
             );                 
  }

  delay(1000);
}


/*
 * lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
 * displays value and title on LCD1602
 * How to use:
 * If you want to display: "Voltage: 13.56mV" starting from the first character
 * on the second row.
 * use:
 * lcdDisplay(0, 1, "Voltage: ", 13.56)
 *   
 * tc  is the character number  (0)
 * tr is the row number in the LCD (1)
 * title is the text ("Voltage:")
 * vc is the character number for the value
 * vr is the row number for the value
 * value is the value (13.56)
 */
void lcdDisplay(int tc, int tr, String title, int vc, int vr, float value)
{
   // Robojax.com LCD1602 for LM75A Demo
   lcd.setCursor (tc,tr); //
   lcd.print(title);
   
   lcd.setCursor (vc,vr); //
   lcd.print(value);
 
}

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

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

ફાઇલો📁

Fritzing ફાઇલ

અન્ય ફાઇલો