সুচিপত্র:

Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ: 6 টি ধাপ
Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ: 6 টি ধাপ

ভিডিও: Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ: 6 টি ধাপ

ভিডিও: Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ: 6 টি ধাপ
ভিডিও: ফেজ ভোল্টেজ এবং লাইন ভোল্টেজ কি? কিভাবে পরিমাপ করতে হয়? Line Voltage | Phase Voltage 2024, নভেম্বর
Anonim
Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ
Arduino ব্যবহার করে পাওয়ার সাপ্লাই ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ

ভূমিকা:

এই প্রকল্পের লক্ষ্য হল সরবরাহের ফ্রিকোয়েন্সি এবং ভোল্টেজ পরিমাপ করা, যা ভারতে 220 থেকে 240 ভোল্ট এবং 50Hz এর মধ্যে। আমি সিগন্যাল ক্যাপচার এবং ফ্রিকোয়েন্সি এবং ভোল্টেজ গণনার জন্য একটি Arduino ব্যবহার করেছি, আপনি অন্য যে কোন মাইক্রোকন্ট্রোলার বা বোর্ড ব্যবহার করতে পারেন। সার্কিটে একটি মুষ্টিমেয় উপাদান প্রয়োজন এবং সমস্ত ব্যবহারিক উদ্দেশ্যে এটি মোটামুটি সঠিক।

ধাপ 1: প্রয়োজনীয় উপাদান

  • আরডুইনো উনো
  • আইসি এলএম 358
  • স্টান্স ডাউন ট্রান্সফরমার (220V থেকে 12V)
  • ক্যাপাসিটর:

    • 0.1uF
    • 2 x 1uF
  • প্রতিরোধক:

    • 3 x 1kOhm
    • 2 x 100kOhm
    • 1.5kOhm
    • 3.3kOhm
    • 6.8kOhm
  • 3 x 1N4148 ডায়োড
  • রুটি বোর্ড এবং জাম্পার তার (alচ্ছিক)

ধাপ 2: পরিকল্পিত চিত্র

পরিকল্পিত ডায়াগ্রাম
পরিকল্পিত ডায়াগ্রাম
পরিকল্পিত ডায়াগ্রাম
পরিকল্পিত ডায়াগ্রাম

উপরের সার্কিটে, ট্রান্সফরমার প্রাইমারি সাপ্লাই মেইনের সাথে সংযুক্ত এবং প্রাইমারি আমাদের মেজারিং সার্কিটের সাথে সংযুক্ত

ধাপ 3: সার্কিট বোঝা

সার্কিট বোঝা
সার্কিট বোঝা
সার্কিট বোঝা
সার্কিট বোঝা
সার্কিট বোঝা
সার্কিট বোঝা

কার্যকারিতা অনুসারে, এই সার্কিটটিকে চারটি ভাগে ভাগ করা যায়:

উত্তর: জিরো ক্রসিং ডিটেক্টর সার্কিট

এই সার্কিট একটি 5V বর্গ পালস উৎপন্ন করে যখনই সাইনওয়েভ পজিটিভ থেকে নেগেটিভে যায়। প্রতিরোধক R1 D1 এবং D2 এর সাথে মিলিত হয়ে ডায়োড জংশনে ইনপুট ভোল্টেজ সুইং -0.6V থেকে +5.6V (ডায়োড ফরোয়ার্ড ভোল্টেজ 0.6V বলে ধরে নিচ্ছে) সীমাবদ্ধ করে। উপরন্তু, আপনি R1 এর মান বৃদ্ধি করে সার্কিটের ইনপুট ভোল্টেজ পরিসীমা বাড়িয়ে তুলতে পারেন।

প্রতিরোধক R2 এবং R3 নেগেটিভ ভোল্টেজ সুইং -0.24 ভোল্টকে সীমাবদ্ধ করার জন্য একটি ভোল্টেজ ডিভাইডার গঠন করে কারণ LM358 এর ইনপুট কমন -মোড ভোল্টেজ -0.3 ভোল্টে সীমাবদ্ধ।

রোধকারী R4, R5, ক্যাপাসিটর C1 এবং op-amp (এখানে একটি তুলনাকারী হিসাবে ব্যবহৃত হয়) Schmitt ট্রিগার সার্কিট গঠন করে যেখানে প্রতিরোধক R4 এবং R5 মাটির উপরে ইনপুট +49.5mV এ হিস্টেরিসিস সেট করে। আরও প্রক্রিয়াকরণের জন্য শ্মিট ট্রিগারের আউটপুট Arduino PIN2 কে খাওয়ানো হয়।

বি: বিচ্ছিন্নতা এবং ভোল্টেজ স্টেপ ডাউন

নাম অনুসারে এই অংশটি বিচ্ছিন্ন করে এবং ভোল্টেজকে প্রায় 12Vrms এ নামিয়ে দেয়। স্টেপ-ডাউন ভোল্টেজটি ইন্সট্রুমেন্টেশন সার্কিটে আরও খাওয়ানো হয়।

সি: পিক ডিটেক্টর সার্কিট

এই সার্কিট ইনপুট সিগন্যালের সর্বোচ্চ শিখর ভোল্টেজ নির্ধারণ করে। প্রতিরোধক বিভাজক R6 এবং R7 ইনপুট ভোল্টেজ 0.23 এর একটি ফ্যাক্টর দ্বারা হ্রাস করে (12Vrms 2.76Vrms এ হ্রাস পায়)। ডায়োড D3 সংকেতের শুধুমাত্র ইতিবাচক অর্ধচক্র পরিচালনা করে। C2 জুড়ে ভোল্টেজ সংশোধিত সংকেতের সর্বোচ্চ মান পর্যন্ত বৃদ্ধি পায়, যা ভোল্টেজের আরও হিসাব করার জন্য Arduino এনালগ পিন A0 কে খাওয়ানো হয়।

উপরন্তু, আপনি এই সার্কিটটিকে এখানে উল্লেখিত একটি নির্ভুলতা পিক ডিটেক্টর সার্কিট দিয়ে প্রতিস্থাপন করতে পারেন। কিন্তু আমার প্রদর্শনের উদ্দেশ্যে, উপরের সার্কিট যথেষ্ট হবে।

ডি: আরডুইনো

এই অংশে, Arduino শ্মিট ট্রিগার সার্কিট দ্বারা উৎপন্ন বর্গ ডালগুলি ধরে এবং পিক ডিটেক্টর সার্কিট থেকে এনালগ ভোল্টেজ পড়ে। বর্গ পালস (যা এসি সাপ্লাই টাইম ব্যক্তির সমান) এবং সরবরাহের ভোল্টেজের সময়কাল (অতএব ফ্রিকোয়েন্সি) নির্ধারণ করতে ডেটা আরও প্রক্রিয়া করা হয়।

ধাপ 4: ফ্রিকোয়েন্সি এবং ভোল্টেজ গণনা

ফ্রিকোয়েন্সি গণনা:

Arduino এর সাহায্যে, আমরা সংকেতের সময়কাল T পরিমাপ করতে পারি। শূন্য-ক্রসিং ডিটেক্টর থেকে বর্গ তরঙ্গ ডাল 2 পিন খাওয়ানো হয়, সেখান থেকে আমরা প্রতিটি নাড়ির সময়কাল পরিমাপ করতে পারি। আমরা Arduino এর অভ্যন্তরীণ টাইমার (বিশেষ করে টাইমার 1) ব্যবহার করতে পারি, যাতে ইন্টারাপ্টের সাহায্যে বর্গ নাড়ির দুইটি উঠতি প্রান্তের মধ্যে সময়কাল গণনা করা যায়। টাইমার প্রতি ক্লক সাইকেলে 1 দ্বারা বৃদ্ধি পায় (প্রেসকলার = 1 ছাড়া) এবং মান টিসিএনটি 1 রেজিস্টারে সংরক্ষণ করা হয়। অতএব 16Mhz ঘড়ি প্রতি মাইক্রোসেকেন্ডে কাউন্টারে 16 বৃদ্ধি করে। একইভাবে prescaler = 8 এর জন্য টাইমার প্রতি মাইক্রোসেকেন্ডে 2 দ্বারা বৃদ্ধি পায়। অতএব দুটি উঠতি প্রান্তের মধ্যে সময়কাল

T = (TCNT1 মান) / প্রতিটি গণনার জন্য নেওয়া সময়

যেখানে, প্রতিটি গণনার জন্য সময় নেওয়া হয়েছে = প্রেসকলার / (Arduino ঘড়ির গতি (16MHz)

অতএব, ফ্রিকোয়েন্সি f = 1 / T = (Arduino ঘড়ির গতি (16MHz) / (Prescaler * TCNT! মান)

তাই টাইমার গতি (Hz) = (Arduino ঘড়ির গতি (16MHz)) / prescaler দ্বারা দেওয়া হয়

এবং সংকেতের ফ্রিকোয়েন্সি = (Arduino ঘড়ির গতি

অনুরূপভাবে, আমরা f = 1/T সম্পর্ক থেকে ফ্রিকোয়েন্সি f গণনা করতে পারি।

ভোল্টেজ গণনা:

Arduino এর অনবোর্ড এডিসির 10 বিট (সম্ভাব্য মান = 2^10 = 1024) এর রেজোলিউশন রয়েছে, 0-1023 এর পরিসরে মানগুলি ফেরত দেয়। সংশ্লিষ্ট এনালগ ভোল্টেজ V গণনা করতে আমাদের নিম্নলিখিত সম্পর্ক ব্যবহার করতে হবে

ভি = (এডিসি রিডিং) * 5/1023

সাপ্লাই ভোল্টেজ Vs (rms) গণনা করার জন্য আমাদের অবশ্যই ট্রান্সফরমার রেশিও, রেজিস্টর ডিভাইডার R6R7 এবং পিক ডিটেক্টর সার্কিট বিবেচনা করতে হবে। আমরা সহজভাবে বিভিন্ন ফ্যাক্টর/অনুপাত একসাথে রাখতে পারি:

ট্রান্সফরমার অনুপাত = 12/230 = 0.052

রোধকারী বিভাজক = R7/(R6 + R7) = 0.23

পিক ডিটেক্টর সার্কিটে = 1.414

বনাম (আরএমএস) = ভি/(1.414*0.052*0.23) = (এডিসি রিডিং)*0.289

এটি লক্ষ করা উচিত যে এই মানটি প্রকৃত মান থেকে অনেক দূরে, প্রধানত প্রকৃত ট্রান্সফরমার অনুপাত এবং ডায়োড ফরোয়ার্ড ভোল্টেজ ড্রপের কারণে। সার্কিট একত্রিত করার পরে ফ্যাক্টর নির্ধারণ করা এটিকে এড়ানোর একটি উপায়। এটি একটি মাল্টিমিটারের সাহায্যে সরবরাহের ভোল্টেজ এবং ক্যাপাসিটরের C2 জুড়ে ভোল্টেজ পরিমাপ করে, তারপর Vs (rms) গণনা করে নিম্নরূপ:

বনাম (rms) = ((সরবরাহ ভোল্টেজ *5)/(C2 *1023 জুড়ে ভোল্টেজ)) *(ADC রিডিং)

আমার ক্ষেত্রে, বনাম (আরএমএস) = 0.33*(এডিসি পড়া)

ধাপ 5: Arduino কোড

#ডিফাইন ভোল্ট_ইন A0 // এনালগ ভোল্টেজ রিড পিন

উদ্বায়ী uint16_t t_period; uint16_t ADC_value = 0; ভাসা ভোল্ট, freq; অকার্যকর isr () {t_period = TCNT1; // t_period TCNT1 = 0 এ TCNT1 মান সংরক্ষণ করুন; // রিসেট টাইমার 1 ADC_value = analogRead (volt_in); // read analog voltage} float get_freq () {uint16_t timer = t_period; যদি (টাইমার == 0) রিটার্ন 0; // শূন্য দ্বারা বিভাজন এড়াতে 16000000.0/(8UL*টাইমার) ফেরত দিন; // ফ্রিকোয়েন্সি দেওয়া হয় f = clk_freq/(prescaler*timeperiod)} void setup () {TCCR1A = 0; TCCR1B = বিট (CS11); // 8 টিসিএনটি 1 = 0 তে প্রেসক্যালার সেট করুন; // রিসেট টাইমার 1 মান TIMSK1 = বিট (TOIE1); // সক্ষম টাইমার 1 ওভারফ্লো ইন্টারাপ্ট EIFR | = বিট (INTF0); // পরিষ্কার INT0 বাধা পতাকা Serial.begin (9600); } অকার্যকর লুপ () {attachInterrupt (0, isr, RISING); // বাহ্যিক বাধা (INT0) বিলম্ব (1000) সক্ষম করুন; detachInterrupt (0); freq = get_freq (); ভোল্ট = ADC_value*0.33; স্ট্রিং বুফ; buf += স্ট্রিং (freq, 3); buf += F ("Hz -t"); buf += স্ট্রিং (ভোল্ট); buf += F ("Volts"); Serial.println (buf); }

ধাপ 6: উপসংহার

উপসংহার
উপসংহার
উপসংহার
উপসংহার

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

আমি যে সার্কিটটি ব্রেডবোর্ডে একত্রিত করেছি তাতে LM358 (ডুয়েল ওপ্যাম্প) এর পরিবর্তে LM324 (quad opamp) ব্যবহার করা হয়েছে কারণ আমার কাছে সেই মুহূর্তে আইসি ছিল না এবং COVID-19 মহামারীর কারণে দেশব্যাপী লকডাউন আমার জন্য নতুন আইসি পাওয়া কঠিন করে তুলেছিল । তবুও, এটি সার্কিটের কাজকে প্রভাবিত করবে না।

কোন পরামর্শ এবং প্রশ্নের জন্য নীচের মন্তব্য বিনা দ্বিধায়।

প্রস্তাবিত: