LM75A তাপমাত্রা সেন্সরের জন্য Arduino কোড
এই টিউটোরিয়ালে, আমরা শিখব কীভাবে LM75A তাপমাত্রা সেন্সর একটি Arduino-এর সাথে ব্যবহার করে সেলসিয়াস এবং ফারেনহাইট উভয়েই তাপমাত্রা পরিমাপ করা যায়। LM75A সেন্সরটি I2C প্রোটোকলের মাধ্যমে যোগাযোগ করে, যা Arduino বোর্ডের সাথে সংহত করা সহজ করে তোলে। এই টিউটোরিয়ালের শেষে, আপনার কাছে একটি কার্যকরী সেটআপ থাকবে যা প্রতি সেকেন্ডে তাপমাত্রা রিডিং প্রদর্শন করে।

এই টিউটোরিয়ালটি সর্বাধিক কাজে লাগাতে, আমি সংশ্লিষ্ট ভিডিওটি দেখার পরামর্শ দিচ্ছি, যা সেটআপ এবং কোড বাস্তবায়নের উপর ভিজ্যুয়াল নির্দেশনা প্রদান করে (ভিডিওতে 20:29-এ)।
হার্ডওয়্যার ব্যাখ্যা
LM75A তাপমাত্রা সেন্সরটি একটি ডিজিটাল সেন্সর যা উচ্চ নির্ভুলতার সাথে পরিবেষ্টিত তাপমাত্রা পরিমাপ করতে সক্ষম। এটি I2C যোগাযোগ প্রোটোকলের উপর কাজ করে, যা একই বাসে একাধিক সেন্সর সংযুক্ত করার অনুমতি দেয়। সেন্সরটিতে একটি অতিরিক্ত-তাপমাত্রা শাটডাউন ফাংশন রয়েছে, যা ব্যবহার না করার সময় শক্তি সাশ্রয় করতে সাহায্য করতে পারে।
এই সেন্সরটি সাধারণত একটি স্বতন্ত্র চিপ বা একটি PCB মডিউল হিসাবে পাওয়া যায়। মডিউলটিতে VCC, GND, SDA, এবং SCL এর মতো প্রয়োজনীয় পিন অন্তর্ভুক্ত থাকে, যা Arduino-এর সাথে যোগাযোগের জন্য প্রয়োজন। এই সেন্সরটি ব্যবহার করার সময়, সঠিক সংযোগ নিশ্চিত করা এবং যোগাযোগের জন্য সঠিক I2C ঠিকানা নির্বাচন করা গুরুত্বপূর্ণ।
ডেটাশিট বিবরণ
| প্রস্তুতকারক | NXP / Texas Instruments |
|---|---|
| পার্ট নম্বর | LM75A |
| লজিক/IO ভোল্টেজ | 2.7 V থেকে 5.5 V |
| সাপ্লাই ভোল্টেজ | 2.7 V থেকে 5.5 V |
| আউটপুট কারেন্ট (প্রতি চ্যানেল) | 3 mA |
| পিক কারেন্ট (প্রতি চ্যানেল) | 10 mA |
| PWM ফ্রিকোয়েন্সি নির্দেশিকা | N/A |
| ইনপুট লজিক থ্রেশহোল্ড | 0.3 VCC (উচ্চ), 0.2 VCC (নিম্ন) |
| ভোল্টেজ ড্রপ / RDS(on) / স্যাচুরেশন | 0.5 V সর্বোচ্চ |
| থার্মাল সীমা | -55 °C থেকে +125 °C |
| প্যাকেজ | SOIC-8 / TSSOP |
| নোট / ভেরিয়েন্ট | বিভিন্ন I2C ঠিকানায় উপলব্ধ |
- আপনার কোডে সঠিক I2C ঠিকানা সেট করা নিশ্চিত করুন।
- প্রয়োজনে SDA এবং SCL লাইনে পুল-আপ রেজিস্টর ব্যবহার করুন।
- সেন্সরটিকে একটি স্থিতিশীল ভোল্টেজ দিয়ে পাওয়ার করুন (2.7 V থেকে 5.5 V)।
- অতিরিক্ত গরমের জন্য পর্যবেক্ষণ করুন; সেন্সরটি 125 °C পর্যন্ত কাজ করতে পারে।
- ইনস্টলেশনের সময় ক্ষতি এড়াতে সেন্সরটি আলতোভাবে পরিচালনা করুন।
ওয়্যারিং নির্দেশাবলী

LM75A তাপমাত্রা সেন্সরটি আপনার Arduino-তে ওয়্যার করতে, সেন্সরের গ্রাউন্ড পিনটি আপনার Arduino-এর গ্রাউন্ড পিনের সাথে সংযুক্ত করে শুরু করুন। এরপর, সেন্সরের VCC পিনটি Arduino-এর 5V পিনের সাথে সংযুক্ত করুন। I2C যোগাযোগের জন্য, সেন্সরের SDA পিনটি (সাধারণত সবুজ রঙে চিহ্নিত) Arduino-এর A4 পিনের সাথে এবং SCL পিনটি (সাধারণত নীল রঙে চিহ্নিত) A5 পিনের সাথে সংযুক্ত করুন। আপনি যদি একটি ভিন্ন Arduino মডেল ব্যবহার করেন, তবে নিশ্চিত করুন যে আপনি সঠিক I2C পিনের সাথে সংযুক্ত করছেন; উদাহরণস্বরূপ, একটি Arduino Mega-তে, SDA পিন 20-এর সাথে এবং SCL পিন 21-এর সাথে সংযুক্ত হয়।
আপনি যদি LM75A একটি মডিউলের পরিবর্তে একটি খালি চিপ হিসাবে ব্যবহার করেন, তবে সংশ্লিষ্ট পিনগুলি সঠিকভাবে সংযুক্ত করতে নিশ্চিত হন: ১ম পিনটি A4 (SDA)-এর সাথে, ২য় পিনটি A5 (SCL)-এর সাথে, ৪র্থ পিনটি গ্রাউন্ডের সাথে এবং ৮ম পিনটি VCC-এর সাথে সংযুক্ত হয়। অন্যান্য পিনগুলি সংযুক্ত না রেখে দিন। এই সেটআপটি নিশ্চিত করে যে সেন্সরটি Arduino-এর সাথে সঠিকভাবে যোগাযোগ করতে পারে।
কোড উদাহরণ ও ওয়াকথ্রু
নিম্নলিখিত কোডটি LM75A সেন্সরটি আরম্ভ করে এবং প্রতি সেকেন্ডে তাপমাত্রা পড়ে। এই কোডের মূল শনাক্তকারী হল lm75a_sensor, যা LM75A ক্লাসের একটি ইনস্ট্যান্স। এই ইনস্ট্যান্সটি সেন্সর থেকে তাপমাত্রা রিডিং পুনরুদ্ধার করতে ব্যবহৃত হয়।
LM75A lm75a_sensor(false, false, false);
এই লাইনটি LM75A ক্লাসের একটি ইনস্ট্যান্স তৈরি করে, যা A0, A1, এবং A2 পিনের অবস্থা প্রতিনিধিত্বকারী প্যারামিটার পাস করে। এই পিনগুলি ব্যবহার না হলে ডিফল্ট অবস্থা false সেট করা যেতে পারে।
setup() ফাংশনে, আমরা 9600 বড রেটে সিরিয়াল যোগাযোগ আরম্ভ করি, যা সিরিয়াল মনিটরে তাপমাত্রা রিডিং প্রদর্শনের জন্য অত্যন্ত গুরুত্বপূর্ণ।
void setup(void) {
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
}
এই স্নিপেটটি সিরিয়াল মনিটর সেট আপ করে, যা আমাদের প্রতি সেকেন্ডে মুদ্রিত তাপমাত্রা রিডিং দেখতে দেয়।
loop() ফাংশনে, আমরা সেলসিয়াস ডিগ্রিতে তাপমাত্রা পুনরুদ্ধার করি এবং কোনো ত্রুটি আছে কিনা তা পরীক্ষা করি। তাপমাত্রা বৈধ হলে, আমরা এটির ফারেনহাইট সমতুল্যের সাথে এটি মুদ্রণ করি।
float temperature_in_degrees = lm75a_sensor.getTemperatureInDegrees();
if (temperature_in_degrees == INVALID_LM75A_TEMPERATURE) {
Serial.println("Error while getting temperature");
} else {
Serial.print("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}
কোডের এই অংশটি তাপমাত্রা রিডিং পরিচালনা এবং সিরিয়াল মনিটরে সেলসিয়াস এবং ফারেনহাইট উভয়েই মুদ্রণ করার পদ্ধতি প্রদর্শন করে। এটি অবৈধ রিডিংয়ের জন্য ত্রুটি পরিচালনা অন্তর্ভুক্ত করে।
সম্পূর্ণ কোডের জন্য, নিবন্ধের নীচের লোডিং বিভাগটি দেখুন।
প্রদর্শন / কী আশা করবেন
একবার আপনি ওয়্যারিং সম্পন্ন করে এবং কোডটি আপনার Arduino-তে আপলোড করলে, আপনার প্রতি সেকেন্ডে সিরিয়াল মনিটরে তাপমাত্রা রিডিং প্রদর্শিত দেখতে হবে। আপনি সেন্সরটি স্পর্শ করে বা একটি হিট গান ব্যবহার করে এর প্রতিক্রিয়াশীলতা পরীক্ষা করতে পারেন, এবং আপনার রিডিংগুলি সেই অনুযায়ী পরিবর্তিত হতে দেখা উচিত। সেন্সরটি সংযোগ করার সময় বিপরীত পোলারিটি সম্পর্কে সতর্ক থাকুন, কারণ এটি মডিউলটির ক্ষতি করতে পারে।
/*
* \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
*
* Video instruction by Ahmad Shamshiri on July 10, 2018 at 20:29 for Robojax.com
* in Ajax, Ontario, Canada
* Watch the video instruction for this code: https://youtu.be/2gmkubeHUXw
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;"
void setup(void)
{
Serial.begin(9600);
Serial.println("Robojax LM75A Test");
Serial.println("Temperatures will be displayed every second:");
}
void loop()
{
// 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("Temperature: ");
Serial.print(temperature_in_degrees);
Serial.print(" degrees (");
Serial.print(LM75A::degreesToFahrenheit(temperature_in_degrees));
Serial.println(" Fahrenheit)");
}
delay(1000);
}
সম্পদ ও রেফারেন্সসমূহ
এখনো কোনো সম্পদ নেই।
ফাইলসমূহ📁
ফ্রিটজিং ফাইল
-
LM75 Temperature Sensor
Temperature Sensor - LM75.fzpz0.01 MB
অন্যান্য ফাইলগুলি
-
LM75A datasheet from Philips
robojax-LM75A_temperature_senssor_datasheet_philips.pdf0.13 MB