কোড অনুসন্ধান

ESP32 টিউটোরিয়াল ৫৫/৫৫ - কীভাবে ১২V, ২৪V বা ১০০V DC ভোল্টেজ মাপবেন | SunFounder-এর ESP32 IoT লার্নিং কিট

ESP32 টিউটোরিয়াল ৫৫/৫৫ - কীভাবে ১২V, ২৪V বা ১০০V DC ভোল্টেজ মাপবেন | SunFounder-এর ESP32 IoT লার্নিং কিট

এই টিউটোরিয়ালে, আমরা শিখব কীভাবে ESP32 ব্যবহার করে বিভিন্ন DC ভোল্টেজ পরিমাপ করা যায়, যার মধ্যে 12V, 24V, এবং এমনকি 100V পর্যন্ত অন্তর্ভুক্ত। দুটি রোধ দিয়ে তৈরি একটি ভোল্টেজ ডিভাইডার সার্কিট ব্যবহার করে, আমরা ESP32 মাইক্রোকন্ট্রোলারের কোনো ক্ষতি না করেই নিরাপদে উচ্চতর ভোল্টেজ পরিমাপ করতে পারি। এই প্রকল্পটি দেখাবে কীভাবে এই ভোল্টেজগুলো পড়তে হয় এবং সিরিয়াল মনিটরে প্রদর্শন করতে হয়, যা আপনার পাওয়ার সোর্স সম্পর্কে মূল্যবান তথ্য প্রদান করবে।

ESP32-55-any-voltage-main

একটি বিস্তারিত ব্যাখ্যার জন্য ভিডিওটি দেখুন (ভিডিওতে 00:00 সময়ে)। আমরা এটি অর্জনের জন্য একটি সাধারণ ভোল্টেজ ডিভাইডার কনফিগারেশন ব্যবহার করব, যা নিশ্চিত করবে যে আমরা ESP32-এর সর্বোচ্চ ইনপুট মাত্রা অতিক্রম করে এমন ভোল্টেজ নিরাপদে পরিমাপ করতে পারি। এই টিউটোরিয়ালটি তাদের জন্য উপযুক্ত যারা ESP32 এবং এর ক্ষমতা সম্পর্কে তাদের জ্ঞান প্রসারিত করতে চান।

ভোল্টেজ গণনার সূত্র

ESP32-55_any-voltrage-formula

হার্ডওয়্যার ব্যাখ্যা

এই প্রকল্পের মূল উপাদানগুলির মধ্যে রয়েছে ESP32 মাইক্রোকন্ট্রোলার, একটি ভোল্টেজ ডিভাইডার গঠনকারী দুটি রোধ, এবং যে পাওয়ার সোর্স আপনি পরিমাপ করতে চান। ESP32 বিল্ট-ইন Wi-Fi এবং ব্লুটুথ ক্ষমতা সহ সজ্জিত, যা এটিকে IoT প্রকল্পগুলির জন্য একটি বহুমুখী পছন্দ করে তোলে। দুটি রোধ দিয়ে তৈরি ভোল্টেজ ডিভাইডার, আমাদের ভোল্টেজকে একটি নিরাপদ মাত্রায় কমাতে দেয় যা ESP32 প্রক্রিয়া করতে পারে।

এই সেটআপে, একটি রোধ, R1, 10kΩ এ স্থির থাকে, যখন দ্বিতীয় রোধ, R2, আপনি যে সর্বোচ্চ ভোল্টেজ পরিমাপ করতে চান তার উপর নির্ভর করে পরিবর্তিত হতে পারে। R1 জুড়ে থাকা ভোল্টেজটি আমরা ESP32-এর অ্যানালগ ইনপুট পিন ব্যবহার করে পড়ব, যা আমাদের পাওয়ার সোর্স থেকে মূল ভোল্টেজ গণনা করতে দেয়।

 

  • সঠিক পরিমাপের জন্য রোধগুলো 1% সহনশীলতার হয় তা নিশ্চিত করুন।
  • ESP32-এর ইনপুট ভোল্টেজ রেটিং অতিক্রম করা রোধ করতে একটি ভোল্টেজ ডিভাইডার ব্যবহার করুন।
  • R1 10kΩ এ রাখুন এবং ভোল্টেজ পরিসরের উপর ভিত্তি করে R2 সামঞ্জস্য করুন।
  • ভাসমান ইনপুট এড়াতে সংযোগগুলো পরীক্ষা করুন যা ভুল রিডিংয়ের দিকে নিয়ে যেতে পারে।
  • সামঞ্জস্যপূর্ণ ভোল্টেজ পরিমাপের জন্য একটি স্থিতিশীল পাওয়ার সোর্স ব্যবহার করুন।

ওয়্যারিং নির্দেশাবলী

সার্কিটটি ওয়্যার করতে, প্রথমে R1 রোধের (10kΩ) একটি প্রান্ত আপনার ভোল্টেজ সোর্সের সাথে সংযুক্ত করুন এবং অন্য প্রান্তটি ESP32-এর GPIO পিন 35-এর সাথে সংযুক্ত করুন। এই পিনটি R1 জুড়ে থাকা ভোল্টেজটি পড়বে। এরপর, R2 রোধটি (যা 100kΩ বা আপনার প্রয়োজনের উপর নির্ভর করে অন্য মান হতে পারে) R1-এর সংযোগ বিন্দু এবং গ্রাউন্ডের মধ্যে সংযুক্ত করুন। নিশ্চিত করুন যে পাওয়ার সোর্সের গ্রাউন্ডও ESP32-এর গ্রাউন্ডের সাথে সংযুক্ত।

উদাহরণস্বরূপ, 24V পরিমাপ করলে, পাওয়ার সাপ্লাইয়ের পজিটিভ টার্মিনালটি R1-এর সাথে সংযুক্ত করুন, তারপর R1-এর অন্য প্রান্তটি পিন 35 এবং দুটি রোধের সংযোগ বিন্দুর সাথে সংযুক্ত করুন। R2-এর মুক্ত প্রান্তটি গ্রাউন্ডে যাওয়া উচিত। এই কনফিগারেশনটি ESP32-কে নিরাপদে একটি স্কেল-ডাউন ভোল্টেজ পড়তে দেবে।

কোড উদাহরণ ও ওয়াকথ্রু

const int R1 = 10000; // রোধ 1 এর মান
const int R2 = 100000; // রোধ 2 এর মান
const int VinPin = 35; // ভোল্টেজ ইনপুট পিন

এই অংশে, আমরা আমাদের রোধগুলির মান, R1 এবং R2, সেইসাথে অ্যানালগ পিন VinPin সংজ্ঞায়িত করি যা আমরা ভোল্টেজ পড়তে ব্যবহার করব। এই ধ্রুবকগুলো আমাদের ভোল্টেজ গণনার জন্য অত্যন্ত গুরুত্বপূর্ণ।

void readVoltage() {
  uint32_t voltage_mV = analogReadMilliVolts(VinPin); // মিলিভোল্টে পড়ুন
  VB1 = (((float) voltage_mV) / 1000.0) * (1 + (float)R2/(float)R1);
}

এই ফাংশনটি নির্দিষ্ট পিন থেকে মিলিভোল্টে ভোল্টেজ পড়ে এবং ভোল্টেজ ডিভাইডার সূত্র ব্যবহার করে প্রকৃত ভোল্টেজ VB1 গণনা করে। স্কেল-ডাউন ভোল্টেজকে মূল মানে ফিরিয়ে আনার জন্য এটি গুরুত্বপূর্ণ।

void maxVoltage() {
  float maxVoltage = (3.1) * (1 + (float)R2/(float)R1);
}

এখানে, আমরা রোধের মানগুলির উপর ভিত্তি করে নিরাপদে পরিমাপ করা যেতে পারে এমন সর্বোচ্চ ভোল্টেজ গণনা এবং প্রিন্ট করার জন্য একটি ফাংশন সংজ্ঞায়িত করি। ESP32-এর ভোল্টেজ সীমা অতিক্রম না করা নিশ্চিত করার জন্য এই ফাংশনটি গুরুত্বপূর্ণ।

প্রদর্শন / কী আশা করবেন

আপনি যখন কোডটি চালাবেন, তখন সিরিয়াল মনিটরে পরিমাপ করা ভোল্টেজটি প্রদর্শিত হতে দেখা উচিত। আপনি ইনপুট ভোল্টেজ সামঞ্জস্য করার সাথে সাথে, রিডিংগুলো রিয়েল-টাইমে এই পরিবর্তনগুলো প্রতিফলিত করবে, যা ESP32-এর বিভিন্ন DC ভোল্টেজ সঠিকভাবে পরিমাপ করার ক্ষমতা প্রদর্শন করবে। যদি রিডিংয়ে ওঠানামা অনুভব করেন, তাহলে আরও স্থিতিশীল ফলাফল পেতে একাধিক নমুনার গড় নেওয়ার কথা বিবেচনা করুন (ভিডিওতে 12:30 সময়ে)।

ভিডিও টাইমস্ট্যাম্প

  • 00:00 শুরু
  • 1:59 প্রকল্পের পরিচিতি
  • 5:45 ভোল্টেজ ডিভাইডার
  • 7:33 ওয়্যারিং ব্যাখ্যা
  • 9:14 Arduino কোড ব্যাখ্যা
  • 14:45 Arduino IDE-তে ESP32 বোর্ড এবং COM পোর্ট নির্বাচন
  • 16:27 ESP32 ব্যবহার করে 30V পরিমাপ প্রদর্শন
  • 21:36 R2 কে 330k ওহমে পরিবর্তন করা হয়েছে
  • 22:33 ন্যূনতম ভোল্টেজ পরিমাপ

ছবি

ESP32-55_any-voltrage-formula
ESP32-55_any-voltrage-formula
ESP32-55-any-voltage-main
ESP32-55-any-voltage-main
805-ESP32 Tutorial 55/55 - Arduino code to measure 12V, 24V or 100V DC voltage
ভাষা: C++
/*
Arduino code for ESP32 to measure any DC voltage
📚⬇️ Download and resource page https://robojax.com/RJT674
written by Ahmad Shamshiri
watch full video explanation https://youtu.be/znBiVlgV9JI
www.robojax.com
Feb 19, 2024
*/
bool debug = false;
const int R1 = 10000;//we read the voltage acrosst this resistor ()
const int R2 = 100000;

const int VinPin = 35; // Potentiometer connected to GPIO14


// PWM settings
const int freq = 5000; // PWM frequency
const int resolution = 12; // PWM resolution (bits)
const int channel = 0; // PWM channel

float VB1;
int mV;

void setup() {
  Serial.begin(115200);
  // Configure PWM
  ledcSetup(channel, freq, resolution);
  //calculatResistor(R1, 24);//10000 ohm and 35.0V

}



void loop() {
   readVoltage();

  Serial.print("VB1 Voltage: ");
  Serial.print(VB1); // Convert millivolts to volts
  Serial.println("V ");


  delay(500);
}

void readVoltage()
{
  uint32_t voltage_mV = analogReadMilliVolts(VinPin); // Read the voltage in millivolts
  if(debug)
  {
    maxVoltage();
    Serial.print("PinVoltage: ");
    Serial.print(voltage_mV);
    Serial.println("mV");
    Serial.println();//this adds a new line
  }
  mV = voltage_mV;
  VB1 = (((float) voltage_mV) / 1000.0)  * (1 + (float)R2/(float)R1);
}

/*
prints maximum volage
*/
void maxVoltage()
{
  float maxVoltage = ( 3.1)  * (1 + (float)R2/(float)R1);
    Serial.print("****Maximum Voltage: ");
    Serial.print(maxVoltage);
    Serial.println("V");

}//maxVoltage() end

void calculatResistor(int r1, float voltage)
{
    Serial.print("Calculating R2 when R1 is :");
    Serial.print(r1);
    Serial.print(" Ohms and Maximum Input Voltage is ");  
    Serial.print(voltage);  
    Serial.println("V");  
    Serial.print("***** R2 Should Be ");  
    float r2 = (voltage - 3.1)/ (3.1/ (float)r1);
    Serial.print(r2 / 1000.0);  
    Serial.println(" kilo Ohms");  
    while(1);
}

সম্পদ ও রেফারেন্সসমূহ

এখনো কোনো সম্পদ নেই।

ফাইলসমূহ📁

কোনো ফাইল উপলব্ধ নেই।