সুচিপত্র:

Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক: 8 টি ধাপ
Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক: 8 টি ধাপ

ভিডিও: Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক: 8 টি ধাপ

ভিডিও: Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক: 8 টি ধাপ
ভিডিও: GENERADOR AR del año 1940 Dynamotor Generator 2024, জুন
Anonim
Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক
Arduino ব্যবহার করে 4-20ma জেনারেটর/পরীক্ষক

ইবেতে 4-20mA জেনারেটর পাওয়া যায়, কিন্তু আমি একজনের জন্য DIY জিনিসগুলিকে পছন্দ করি এবং আমার কাছাকাছি থাকা অংশগুলি ব্যবহার করি।

আমি আমাদের পিএলসি এর এনালগ ইনপুট পরীক্ষা করতে চেয়েছিলাম আমাদের স্ক্যাড রিডিং যাচাই করতে এবং 4-20mA যন্ত্রের আউটপুট পরীক্ষা করতে। ইবে তে আরডুইনো এর জন্য কারেন্ট থেকে ভোল্টেজ কনভার্টার এবং ভোল্টেজ থেকে কারেন্ট কনভার্টার এর লোড আছে, যদিও তাদের ক্রমাঙ্কন প্রয়োজন। আমি ইবে এবং পছন্দগুলিতে পাওয়া সেই রূপান্তরকারীদের যে কোনওটি ক্রমাঙ্কন করতে এটি ব্যবহার করতে পারি।

আমি সিদ্ধান্ত নিলাম যে আমি একটি জেনারেটর এবং পরীক্ষক DIY করব। এই সময়ে এটি এখনও একটি কাজ চলছে এবং একটি প্রোটোটাইপ।

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

সরবরাহ:

অংশ তালিকা.

এলসিডি // 20x4 (আপনার ছোট হলে কোড অ্যাডাপ্ট করুন)

LM7808 // 8 ভোল্ট রেগুলেটর

LED // কোন প্রকার বা আকার

LED এর জন্য প্রতিরোধক // LED টাইপ এবং 8 ভোল্টের জন্য উপযুক্ত

সিরিজের 100 ওম প্রতিরোধক + 47 ওহম প্রতিরোধক // শান্ট প্রতিরোধক হিসাবে ব্যবহার করা হবে

10K প্রতিরোধক // উচ্চ ভোল্টেজের বিরুদ্ধে সুরক্ষায় Arduino এনালগ

22K প্রতিরোধক // A0 কে ভাসমান হতে বাধা দিতে

Trimpot 100 ohm + 47 ohm resistor in series // PT100 simulator

35 ভোল্ট ক্যাপাসিটর // আমি 470uF ব্যবহার করেছি, শুধু সাপ্লাই ভোল্টেজের ওঠানামা বন্ধ রাখতে

RTD (PT100 transducer) // স্প্যান কোন ব্যাপার না (পরিসীমা)

DIODE (মেরুতা সুরক্ষার জন্য)

INA219

আরডুইনো

ধাপ 1:

ছবি
ছবি

পরিকল্পিতভাবে অনুসরণ করা উচিত যেখানে আপনি অংশগুলি যুক্ত করতে এবং তারগুলি সংযুক্ত করতে শুরু করবেন।

LM7808 সর্বোচ্চ 25volts ইনপুট অনুমোদন করে যা PLC সিস্টেমের জন্য ভালো, তারা সাধারণত 24volt পাওয়ার সাপ্লাই ব্যবহার করে। নিয়ন্ত্রক একটি হিটসিংক যোগ করুন এবং বর্ধিত সময়ের জন্য এটি ব্যবহার করবেন না। 16 ভোল্ট ড্রপ করার ফলে রেগুলেটর প্রচুর তাপ উৎপন্ন করে।

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

INA219 VOUT থেকে RTD+ RTD পর্যন্ত ক্ষমতা দেয়। RTD- to ground সার্কিট সম্পন্ন করে।

একটি পিএলসি এনালগ কার্ড পরীক্ষা করার জন্য আপনি RTD- কে এনালগ কার্ডের ইনপুট এবং কার্ড থেকে আরডুইনো গ্রাউন্ডের সাথে সংযুক্ত করবেন। (পরীক্ষা করা চ্যানেলের সাথে সংযুক্ত কোনো যন্ত্র বিচ্ছিন্ন করতে ভুলবেন না)।

R5 এবং LED1, ইঙ্গিত করে যে সিস্টেমটি চালিত।

নিয়ন্ত্রক arduino VIN (arduino 5volts- এ নিয়ন্ত্রক তৈরি করেছে)।

Arduino 5V পিনটি INA219- এ অন-বোর্ড চিপ পাওয়ার জন্য যায়। INA219 GND থেকে arduino গ্রাউন্ডে।

RTD PIN1 এ ট্রিম পট ওয়াইপার এবং ট্রিম পট পিন 3 থেকে RTD পিন 2 একটি PT100 সংযোগ অনুকরণ করবে। (ট্রিম পটকে ঘড়ির কাঁটার দিকে ঘুরিয়ে দিলে এমএ বাড়বে না)

ধাপ 2: যন্ত্র আউটপুট পরীক্ষা

যন্ত্রের আউটপুট পরীক্ষা করার জন্য শান্ট রোধকের মতো অতিরিক্ত যন্ত্রাংশ প্রয়োজন। সাধারণ 0.25W প্রতিরোধক ঠিক কাজটি করবে। আপনি শান্ট প্রতিরোধক ছেড়ে দিতে পারেন এবং যন্ত্রের আউটপুট পরীক্ষা করতে দ্বিতীয় INA219 যোগ করতে পারেন। আমার কেবল একটি বাকি ছিল তাই আমি পরিবর্তে একটি প্রতিরোধক ব্যবহার করেছি।

একটি শান্ট ব্যবহার করে পরীক্ষা শুধুমাত্র ডিভাইসের নেতিবাচক দিকে করা যেতে পারে। আপনি যদি ইতিবাচক দিকটি ব্যবহার করেন তবে আপনি আপনার আরডুইনোকে অনুমোদিত ভোল্টেজের 4 গুণের বেশি সরবরাহ করবেন এবং ধোঁয়া ছাড়বেন।

যন্ত্রের নেতিবাচক তারের সাথে সিরিজে শান্ট রোধকারী যুক্ত করুন। ডিভাইসের সবচেয়ে কাছের শান্টের দিকটি আরডুইনোর জন্য ইতিবাচক এনালগ হয়ে উঠবে। বিদ্যুৎ সরবরাহের নিকটতম শান্টের অন্য দিকটি এনালগ ইনপুট সার্কিট সম্পন্ন করে আর্ডুইনো গ্রাউন্ড হয়ে যাবে।

150 ওহম শান্ট রেসিস্টর হল সর্বাধিক সর্বোচ্চ যা আরডুইনো ব্যবহার করার সময় ব্যবহার করা উচিত। প্রতিরোধকের একটি ভোল্টেজ ড্রপ রৈখিক এটি থেকে প্রবাহিত এমএ। এমএ যত বেশি হবে ভোল্টেজ তত বেশি।

20mA বর্তমান # 150ohm*0.02A = 3volt থেকে arduino।

4mA বর্তমান # 150ohm*0.004A = 0.6volt থেকে arduino।

এখন আপনি ভোল্টেজটি 5 ভোল্টের কাছাকাছি হতে চান যাতে আপনি আমাদের আরডুইনো এর পূর্ণ ADC পরিসীমা দিতে পারেন। (ভালো বুদ্ধি নই).

RTD এর 30.2mA আউটপুট পৌঁছাতে পারে (খনি করে)। 150ohm*0.03A = 4.8volts। আমি যতটা কাছাকাছি থাকতে চাই ততই কাছাকাছি।

আরেকটি ওয়েবসাইট একটি 250ohm প্রতিরোধক ব্যবহার করার ইঙ্গিত দিয়েছে।

20mA কারেন্টে # 250ohm*0.02A = 5volt to arduino।

30mA কারেন্টে # 250ohm*0.03A = 7.5volt to arduino।

আপনি আপনার এডিসি এবং আরডুইনো পোড়ানোর ঝুঁকি নিয়েছেন।

মাঠে একটি যন্ত্র পরীক্ষা করার জন্য, আপনার সাথে একটি 12 ভোল্ট ব্যাটারি নিন এবং এটি সরবরাহের ইনপুটের সাথে সংযুক্ত করুন। বাহ্যিক শক্তি উৎস ব্যবহার করা বর্তমান PLC সেটআপকে প্রভাবিত করবে না।

ক্ষেত্রে একটি এনালগ ইনপুট কার্ড পরীক্ষা করতে, আপনার সাথে একটি 12volt ব্যাটারি নিন। সার্কিট থেকে যন্ত্র + সংযোগ বিচ্ছিন্ন করুন। মাটির সাথে যন্ত্রের স্থল এবং RTD- সংযোগ বিচ্ছিন্ন যন্ত্রের তারের সাথে সংযুক্ত করুন।

ধাপ 3: ক্রমাঙ্কন

ক্রমাঙ্কন
ক্রমাঙ্কন

আপনার শান্ট রেসিস্টর রিডিং ক্যালিব্রেট করার জন্য, RTD- ওয়্যার শান্ট এনালগ-এ। আপনার ট্রিম পট সেট করুন যাতে উৎপন্ন mA 4mA হয়। যদি আপনার ডিভাইস mA সমান না হয় তাহলে কোডের প্রথম মান line নম্বরে পরিবর্তন করুন। এই মান বাড়ালে mA রিডআউট কমে যাবে।

তারপর 20mA উৎপন্ন করার জন্য আপনার ট্রিম পট সেট করুন। যদি আপনার ডিভাইস mA সমান না হয় তাহলে কোডের দ্বিতীয় মানটি লাইন 84 এ পরিবর্তন করুন।

সুতরাং আপনার 4-20mA এখন 0.6-3volts (তাত্ত্বিক) হয়ে যাবে। পর্যাপ্ত পরিসরের চেয়ে বেশি। ERCaGuy থেকে লাইব্রেরি ব্যবহার করে, ওভারস্যাম্পলিং আপনাকে একটি ভাল এবং স্থিতিশীল রিডআউট দেবে।

আশা করি আপনি এটি পড়েছেন। এটি আমার প্রথম নির্দেশযোগ্য, তাই যদি আমি কোথাও ভুল করে থাকি বা কিছু বাদ দিয়ে থাকি তবে দয়া করে এটি সহজভাবে নিন।

এই প্রকল্পটি সম্ভবত এটি সম্পর্কে যাওয়ার সর্বোত্তম উপায় নয়, তবে এটি আমার পক্ষে কাজ করে এবং এটি করতে মজাদার ছিল।

কিছু ধারনা আমার অতিরিক্ত আছে …

বাক্সের ভিতরে ট্রিম পট ঘুরানোর জন্য একটি সার্ভো যোগ করুন।

সার্ভো বাম বা ডানে ঘোরানোর জন্য পুশ বোতাম যুক্ত করুন।

বিপজ্জনক তাপের জন্য সতর্ক করার জন্য নিয়ন্ত্রক হিটসিংকে একটি ডিজিটাল তাপমাত্রা সেন্সর যুক্ত করুন।

ধাপ 4: Arduino প্রোগ্রামিং

#অন্তর্ভুক্ত

// #অন্তর্ভুক্ত // যদি আপনি একটি শিফট রেজিস্টারের সাথে একটি LCD ব্যবহার করেন তবে মন্তব্য করুন।

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

#অন্তর্ভুক্ত

// A4 = (SDA)

// A5 = (এসসিএল)

Adafruit_INA219 ina219;

লিকুইডক্রিস্টাল এলসিডি (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd (3, 4, 2); // যদি আপনি একটি শিফট রেজিস্টার সহ একটি LCD ব্যবহার করেন তবে মন্তব্য করুন।

// | | | _ লেচ পিন

// | / _ ঘড়ি পিন

// / _ ডেটা/পিন সক্ষম করুন

বাইট bitsOfResolution = 12; // কমান্ড overampled রেজল্যুশন

স্বাক্ষরবিহীন দীর্ঘ numSamplesToAvg = 20; // সর্বাধিক নমুনা সংখ্যা যা আপনি নিতে চান এবং গড়

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

স্বাক্ষরবিহীন দীর্ঘ পূর্ববর্তী মিলিস = 0;

ভাসমান শান্টভোল্টেজ = 0.0; // INA219 থেকে

ভাসা busvoltage = 0.0; // INA219 থেকে

float current_mA = 0.0; // INA219 থেকে

ভাসা ভোল্টেজ = 0.0; // INA219 থেকে

ভাসা arduinovoltage = 0.0; // A0 পিন থেকে ভোল্টেজ গণনা

স্বাক্ষরবিহীন দীর্ঘ A0analogReading = 0;

বাইট analogIn = A0;

ভাসা ma_mapped = 0.0; // A0 থেকে 4-20mA পর্যন্ত মানচিত্রের ভোল্টেজ

অকার্যকর সেটআপ() {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219. শুরু ();

ina219.setCalibration_32V_30mA (); // এমএ -তে আরও স্পষ্টতার জন্য পরিবর্তিত লাইব্রেরি

lcd.begin (20, 4); // এলসিডি আরম্ভ করুন

lcd.clear ();

lcd.home (); // বাড়িতে যেতে

lcd.print ("********************");

বিলম্ব (2000);

lcd.clear ();

}

অকার্যকর লুপ ()

{

স্বাক্ষরবিহীন দীর্ঘ কারেন্টমিলিস = মিলিস ();

const দীর্ঘ ব্যবধান = 100;

//&&&&&&&&&&&&&&&&&

বিরতিতে I2C ডিভাইসগুলি পড়ুন এবং কিছু গণনা করুন

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

যদি (currentMillis - previousMillis> = ব্যবধান) {

পূর্ববর্তী মিলিস = বর্তমান মিলিস;

অন্তর();

}

Print_To_LCD (); // আমার সম্ভবত এই দ্রুত এলসিডি আপডেট করার দরকার নেই এবং নীচের ব্যবধানে সরানো যেতে পারে ()

}

শূন্য

অন্তর() {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

loadvoltage = (busvoltage + (shuntvoltage / 1000)) + 0.71; // +0.71 আমার ডায়োড ভোল্টেজ ড্রপ

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // mV গণনা করা হয়

ma_mapped = মানচিত্র (arduinovoltage, 752, 8459, 30, 220) / 10.0; // মানচিত্র ভাসা ব্যবহার করতে পারে না। ম্যাপ করা মানের পিছনে একটি 0 যোগ করুন এবং ফ্লোট রিডআউট পেতে 10 দিয়ে ভাগ করুন।

// ভোল্টেজ গণনা থেকে ম্যাপিং কাঁচা এডিসি রিডিং ব্যবহার করে আরও স্থিতিশীল রিডআউট দেয়।

যদি (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // কোন লোড ছাড়াই INA219 নীচে -0.01 পড়তে থাকে, ভাল আমার আছে।

{

current_mA = 0;

busvoltage = 0;

loadvoltage = 0;

shuntvoltage = 0;

}

}

শূন্য

Print_To_LCD () {

lcd.setCursor (0, 0);

যদি (ma_mapped <1.25) {// কোন কারেন্ট ছাড়াই এটি আমার এমএ পড়ছে, তাই আমি এটিকে দূরে সরিয়ে দিলাম।

lcd.print (" * 4-20mA জেনারেটর *");

}

অন্য {

lcd.print ("** অ্যানালগ টেস্টার **");

}

lcd.setCursor (0, 1);

lcd.print ("ডিভাইস:");

lcd.setCursor (10, 1);

যদি (ma_mapped <1.25) {

lcd.print ("ডিভাইস নেই");

}

অন্য {

lcd.print (ma_mapped);

}

lcd.print ("mA");

lcd.setCursor (0, 2);

lcd.print ("জেনারেট করুন:");

lcd.setCursor (10, 2);

lcd.print (current_mA);

lcd.print ("mA");

lcd.setCursor (0, 3);

lcd.print ("সরবরাহ:");

lcd.setCursor (10, 3);

lcd.print (loadvoltage);

lcd.print ("V");

}

ধাপ 5: আরো কিছু ছবি

আরো কিছু ছবি
আরো কিছু ছবি

পরিবর্ধক স্পিকার টার্মিনাল। বর্তমান জেনারেটর (RTD) দ্বারা চালিত LED। এনালগ কার্ড ওয়্যারিং এলইডি প্রতিস্থাপন করবে।

সুদূর বামদিকে টার্মিনাল সরবরাহের জন্য। ডানদিকে টার্মিনালগুলি যন্ত্রের ইনপুটের জন্য।

ধাপ 6: ফিটিং ইন

ফিটিং ইন
ফিটিং ইন

সবকিছু মানানসই মনে হচ্ছে। সাময়িকভাবে কিছু জিনিস একসাথে রাখার জন্য আমি সিলিকন ব্যবহার করেছি। ছাঁটা পাত্রটি উপরের ডানদিকে সিলিকন করা। একটি ছোট গর্ত পূর্বনির্ধারিত ছিল। আমি বক্সের উপর থেকে কারেন্ট সামঞ্জস্য করতে পারি।

ধাপ 7: শুধু ফটো

শুধু ফটো
শুধু ফটো
শুধু ফটো
শুধু ফটো
শুধু ফটো
শুধু ফটো
শুধু ফটো
শুধু ফটো

ধাপ 8: চূড়ান্ত শব্দ

আমি একটি অ্যালান ব্র্যাডলি পিএলসি দিয়ে এই ডিভাইসের আউটপুট পরীক্ষা করেছি। ফলাফল খুব ভাল ছিল। আমি সম্পূর্ণ পরিসীমা পেয়েছি আমি এই ডিভাইসটি 4-20mA চাপ সেন্সর দিয়ে পরীক্ষা করেছি যার একটি বিল্ট ইন এলসিডি ডিসপ্লে রয়েছে। আবার ফলাফল খুব ভাল ছিল। আমার পাঠ কয়েক দশমিক দ্বারা বন্ধ ছিল।

আমি আমার arduino কোড ট্যাবে লিখি। পিএলসিতে তাদেরকে সাব রুটিন বলা হয়। আমার জন্য ডিবাগিং সহজ করে তোলে।

সংযুক্ত ট্যাবগুলির টেক্সট ফাইল।

প্রস্তাবিত: