विषयसूची:

4-20ma जेनरेटर/परीक्षक Arduino का उपयोग करना: 8 कदम
4-20ma जेनरेटर/परीक्षक Arduino का उपयोग करना: 8 कदम

वीडियो: 4-20ma जेनरेटर/परीक्षक Arduino का उपयोग करना: 8 कदम

वीडियो: 4-20ma जेनरेटर/परीक्षक Arduino का उपयोग करना: 8 कदम
वीडियो: 4-20 MA Transmitter: How Does It Work? 2024, जून
Anonim
4-20ma जेनरेटर/परीक्षक Arduino का उपयोग कर
4-20ma जेनरेटर/परीक्षक Arduino का उपयोग कर

4-20mA जनरेटर eBay पर उपलब्ध हैं, लेकिन मैं एक चीज के DIY हिस्से से प्यार करता हूं और उन हिस्सों का उपयोग कर रहा हूं जो मैंने चारों ओर बिछाए हैं।

मैं हमारे स्काडा रीडिंग को सत्यापित करने और 4-20mA उपकरणों के आउटपुट का परीक्षण करने के लिए हमारे पीएलसी के एनालॉग इनपुट का परीक्षण करना चाहता था। ईबे पर आर्डिनो के लिए वोल्टेज कन्वर्टर्स और वोल्टेज से करंट कन्वर्टर्स के लिए करंट का भार होता है, हालांकि उन्हें कैलिब्रेशन की आवश्यकता होती है। मैं इसका उपयोग eBay और पसंद पर पाए गए किसी भी कन्वर्टर्स को कैलिब्रेट करने के लिए कर सकता हूं।

मैंने फैसला किया कि मैं एक जनरेटर और परीक्षक को DIY करूंगा। इस समय यह अभी भी एक कार्य प्रगति पर है और एक प्रोटोटाइप है।

मेरे पास एक पुराना 2.1 साउंड सिस्टम था जिसका उपयोग नहीं किया जा रहा था (छोटे स्पीकर)। इसलिए मैंने स्पीकर बॉक्स में से एक को बाड़े के रूप में इस्तेमाल किया। मेरे पास एक एम्पलीफायर भी था जो बिजली की वजह से मर गया, मैंने उस एम्पलीफायर से स्पीकर टर्मिनल को हवा से जोड़ने के लिए हटा दिया। मैं भविष्य में एक पीसीबी और एक बेहतर बाड़े बनाने का इरादा रखता हूं।

आपूर्ति:

हिस्सों की सूची।

एलसीडी // 20x4 (यदि आपका छोटा है तो कोड को अनुकूलित करें)

LM7808 // 8 वोल्ट रेगुलेटर

एलईडी // कोई भी प्रकार या आकार

एलईडी के लिए प्रतिरोधी // एलईडी प्रकार और 8 वोल्ट के लिए उपयुक्त

श्रृंखला में 100 ओम रोकनेवाला + 47 ओम रोकनेवाला // शंट रोकनेवाला के रूप में इस्तेमाल किया जाएगा

10K रोकनेवाला // उच्च वोल्टेज के खिलाफ सुरक्षा में Arduino एनालॉग

22K रोकनेवाला // A0 को तैरने से रोकने के लिए

श्रृंखला में ट्रिम्पोट 100 ओम + 47 ओम अवरोधक // पीटी 100 सिम्युलेटर

35 वोल्ट कैपेसिटर // मैंने 470uF का उपयोग किया, बस आपूर्ति वोल्टेज में उतार-चढ़ाव को कम रखने के लिए

RTD (PT100 ट्रांसड्यूसर) // स्पैन कोई फर्क नहीं पड़ता (रेंज)

डायोड (ध्रुवीयता संरक्षण के लिए)

आईएनए२१९

अरुडिनो

चरण 1:

छवि
छवि

योजनाबद्ध के बाद आपको शुरू करना चाहिए कि भागों को कहाँ जोड़ना है और उन्हें तार देना है।

LM7808 अधिकतम 25 वोल्ट इनपुट की अनुमति देता है जो पीएलसी सिस्टम के लिए ठीक है, वे आम तौर पर 24 वोल्ट बिजली की आपूर्ति का उपयोग करते हैं। रेगुलेटर में हीटसिंक जोड़ें और लंबे समय तक इसका इस्तेमाल न करें। 16 वोल्ट गिराने से रेगुलेटर बहुत अधिक ऊष्मा उत्पन्न करता है।

इनपुट आपूर्ति नियामक को खिलाती है और INA219 VIN से जुड़ती है, इस कॉन्फ़िगरेशन में INA219 डायोड से वोल्टेज ड्रॉप को घटाकर सही आपूर्ति वोल्टेज को मापने में भी सक्षम होगा। आपको अपने डायोड वोल्टेज ड्रॉप को मापना चाहिए और इसे कोड में जोड़ना चाहिए ताकि आपको सही आपूर्ति वोल्टेज रीडआउट मिल सके।

INA219 VOUT से RTD+ तक RTD को पावर देता है। आरटीडी- टू ग्राउंड सर्किट को पूरा करता है।

पीएलसी एनालॉग कार्ड का परीक्षण करने के लिए आप आरटीडी- को एनालॉग कार्ड के इनपुट से और कार्ड से जमीन को आर्डिनो ग्राउंड से जोड़ेंगे। (परीक्षण किए जा रहे चैनल से जुड़े किसी भी उपकरण को डिस्कनेक्ट करना सुनिश्चित करें)।

R5 और LED1, संकेत प्रणाली संचालित है।

रेगुलेटर arduino VIN में फीड करता है (arduino ने 5volts के रेगुलेटर में बनाया है)।

Arduino 5V पिन ऑन-बोर्ड चिप को पावर देने के लिए INA219 में जाता है। INA219 GND से आर्डिनो ग्राउंड में।

पॉट वाइपर को आरटीडी पिन1 में ट्रिम करें और पॉट पिन 3 को आरटीडी पिन 2 में ट्रिम करें एक पीटी100 कनेक्शन का अनुकरण करेगा। (यदि ट्रिम पॉट को दक्षिणावर्त घुमाने से एमए में वृद्धि नहीं होती है तो तारों को स्वैप करें)।

चरण 2: इंस्ट्रूमेंट आउटपुट टेस्ट

इंस्ट्रूमेंट आउटपुट का परीक्षण करने के लिए अतिरिक्त भागों की आवश्यकता होती है, जैसे शंट रेसिस्टर। सामान्य 0.25W रेसिस्टर्स ठीक काम करेंगे। आप शंट रेसिस्टर को छोड़ सकते हैं और इंस्ट्रूमेंट आउटपुट का परीक्षण करने के लिए दूसरा INA219 जोड़ सकते हैं। मेरे पास केवल एक ही बचा था इसलिए मैंने इसके बजाय एक अवरोधक का उपयोग किया।

शंट का उपयोग करके परीक्षण केवल डिवाइस के नकारात्मक पक्ष पर ही किया जा सकता है। यदि आप सकारात्मक पक्ष का उपयोग करते हैं तो आप अपने arduino को अनुमत वोल्टेज से 4 गुना से अधिक की आपूर्ति करेंगे और धुएं को बाहर निकलने देंगे।

साधन के ऋणात्मक तार के साथ श्रृंखला में शंट रोकनेवाला जोड़ें। डिवाइस के सबसे नज़दीकी शंट का पक्ष arduino के लिए सकारात्मक एनालॉग बन जाएगा। बिजली की आपूर्ति के निकटतम शंट का दूसरा पक्ष एनालॉग इनपुट सर्किट को पूरा करने वाला आर्डिनो ग्राउंड बन जाएगा।

150 ओम शंट रोकनेवाला पूर्ण अधिकतम है जिसका उपयोग एक आर्डिनो का उपयोग करते समय किया जाना चाहिए। रोकनेवाला के माध्यम से बहने वाले mA के लिए एक वोल्टेज ड्रॉप रैखिक होता है। एमए जितना अधिक होगा वोल्टेज उतना ही अधिक होगा।

20mA करंट पर # 150ohm*0.02A = 3volt से arduino तक।

4mA करंट पर # 150ohm*0.004A = 0.6volt से arduino तक।

अब आप चाहते हैं कि वोल्टेज 5 वोल्ट के करीब हो ताकि आप हमें आर्डिनो की पूरी एडीसी रेंज दे सकें। (अच्छा विचार नहीं)।

आरटीडी 30.2mA आउटपुट (मेरा करता है) तक पहुंच सकता है। 150ohm*0.03A = 4.8 वोल्ट। यह उतना ही करीब है जितना मैं होना चाहूंगा।

एक अन्य वेबसाइट ने 250ohm रोकनेवाला का उपयोग करने का संकेत दिया।

20mA करंट पर # 250ohm*0.02A = 5volt से arduino तक।

30mA करंट # 250ohm * 0.03A = 7.5volt से arduino पर।

आप अपने ADC और arduino को जलाने का जोखिम उठाते हैं।

क्षेत्र में किसी उपकरण का परीक्षण करने के लिए, अपने साथ 12 वोल्ट की बैटरी लें और इसे आपूर्ति इनपुट से कनेक्ट करें। बाहरी पावर स्रोत का उपयोग करने से वर्तमान पीएलसी सेटअप प्रभावित नहीं होगा।

क्षेत्र में एक एनालॉग इनपुट कार्ड का परीक्षण करने के लिए, अपने साथ 12 वोल्ट की बैटरी लें। उपकरण + को सर्किट से डिस्कनेक्ट करें। ग्राउंड को इंस्ट्रूमेंट ग्राउंड से और RTD- को डिस्कनेक्ट किए गए इंस्ट्रूमेंट वायर से कनेक्ट करें।

चरण 3: अंशांकन

कैलिब्रेशन
कैलिब्रेशन

अपने शंट रेसिस्टर रीडिंग को कैलिब्रेट करने के लिए, आरटीडी- को शंट एनालॉग में तार दें। अपना ट्रिम पॉट सेट करें ताकि उत्पन्न एमए 4 एमए हो। यदि आपका डिवाइस एमए बराबर नहीं है तो कोड में पहले मान को लाइन ८४ पर संशोधित करें। इस मान को बढ़ाने से एमए रीडआउट कम हो जाएगा।

फिर 20mA उत्पन्न करने के लिए अपना ट्रिम पॉट सेट करें। यदि आपका डिवाइस एमए बराबर नहीं है तो कोड में दूसरे मान को लाइन 84 पर संशोधित करें।

तो आपका 4-20mA अब 0.6-3volts (सैद्धांतिक) हो जाएगा। पर्याप्त सीमा से अधिक। eRCaGuy से लाइब्रेरी का उपयोग करते हुए, ओवरसैंपलिंग आपको एक बेहतर और स्थिर रीडआउट देगा।

उम्मीद है आपने इसे पढ़ा होगा। यह मेरा पहला निर्देश है, इसलिए कृपया इसे आसान बनाएं अगर मैंने कहीं गलती की है या कुछ छोड़ दिया है।

यह परियोजना शायद इसके बारे में जाने का सबसे अच्छा तरीका नहीं है, लेकिन यह मेरे लिए काम करता है और इसे करने में मज़ा आया।

कुछ विचार मेरे पास अतिरिक्त हैं…

बॉक्स के अंदर ट्रिम पॉट को घुमाने के लिए एक सर्वो जोड़ें।

सर्वो को बाएँ या दाएँ घुमाने के लिए पुश बटन जोड़ें।

खतरनाक गर्मी की चेतावनी देने के लिए नियामक हीटसिंक में एक डिजिटल तापमान सेंसर जोड़ें।

चरण 4: प्रोग्रामिंग Arduino

#शामिल

// #include // यदि आप एक शिफ्ट रजिस्टर के साथ एलसीडी का उपयोग करते हैं तो असहजता।

#शामिल

#शामिल

#शामिल

#शामिल

// ए 4 = (एसडीए)

// ए ५ = (एससीएल)

Adafruit_INA219 ina219;

लिक्विड क्रिस्टल एलसीडी(१२, ११, ५, ४, ३, २);

// लिक्विड क्रिस्टल_एसआर एलसीडी (3, 4, 2); // यदि आप एक शिफ्ट रजिस्टर के साथ एलसीडी का उपयोग करते हैं तो असहजता।

// | | |_ कुंडी पिन

// | \_ क्लॉक पिन

// \_ डेटा/पिन सक्षम करें

बाइट बिट्सऑफरिसोल्यूशन = 12; // आदेशित oversampled संकल्प

अहस्ताक्षरित लंबी numSamplesToAvg = 20; // ओवरसैंपल किए गए रिज़ॉल्यूशन पर नमूनों की संख्या जो आप लेना चाहते हैं और औसत

ADC_prescaler_t ADCस्पीड = ADC_DEFAULT;

अहस्ताक्षरित लंबे पिछलेमिलिस = 0;

फ्लोट शंटवोल्टेज = 0.0; // आईएनए२१९. से

फ्लोट बसवोल्टेज = 0.0; // आईएनए२१९. से

फ्लोट करेंट_एमए = ०.०; // आईएनए२१९. से

फ्लोट लोडवोल्टेज = 0.0; // आईएनए२१९. से

फ्लोट आर्डिनोवोल्टेज = ०.०; // A0 पिन से वोल्टेज की गणना

अहस्ताक्षरित लंबा A0analogReading = 0;

बाइट एनालॉगइन = ए0;

फ्लोट ma_mapped = 0.0; // मैप वोल्टेज A0 से 4-20mA. तक

व्यर्थ व्यवस्था() {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t वर्तमान आवृत्ति;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // mA. पर अधिक सटीकता के लिए संशोधित पुस्तकालय

LCD.begin(20, 4); // एलसीडी को इनिशियलाइज़ करें

एलसीडी.क्लियर ();

एलसीडी.होम (); // घर जाओ

एलसीडी.प्रिंट ("********");

देरी (2000);

एलसीडी.क्लियर ();

}

शून्य लूप ()

{

अहस्ताक्षरित लंबी वर्तमानमिलिस = मिली ();

लंबा अंतराल = १००;

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

I2C उपकरणों को अंतराल पर पढ़ें और कुछ गणना करें

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

अगर (करंटमिलिस - पिछलामिलिस>= अंतराल) {

पिछलामिलिस = करंटमिलिस;

मध्यान्तर();

}

Print_To_LCD (); // मुझे शायद एलसीडी को इतनी तेजी से अपडेट करने की आवश्यकता नहीं है और इसे अंतराल से नीचे ले जाया जा सकता है ()

}

शून्य

मध्यान्तर() {

शंटवोल्टेज = ina219.getShuntVoltage_mV ();

बसवोल्टेज = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

लोडवोल्टेज = (बसवोल्टेज + (शंटवोल्टेज / 1000)) + ०.७१; // +0.71 मेरा डायोड वोल्टेज ड्रॉप है

A0analogReading = adc.newAnalogRead(analogIn);

arduinovoltage = (5.0 * A0analogReading); // mV. के लिए परिकलित

ma_mapped = नक्शा (arduinovoltage, 752, 8459, 30, 220) / 10.0; // नक्शा फ्लोट का उपयोग नहीं कर सकता है। मैप किए गए मान के पीछे 0 जोड़ें और फ्लोट रीडआउट प्राप्त करने के लिए 10 से विभाजित करें।

// वोल्टेज गणना से मैपिंग कच्चे एडीसी रीडिंग का उपयोग करके अधिक स्थिर रीडआउट देता है।

if (शंटवोल्टेज>= -0.10 && शंटवोल्टेज <= -0.01) // बिना लोड के INA219 -0.01 से नीचे पढ़ने के लिए जाता है, ठीक है मेरा करता है।

{

वर्तमान_एमए = 0;

बसवोल्टेज = 0;

लोडवोल्टेज = 0;

शंटवोल्टेज = 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 ("कोई उपकरण नहीं");

}

अन्यथा {

एलसीडी.प्रिंट (ma_mapped);

}

एलसीडी.प्रिंट ("एमए");

LCD.setCursor(0, 2);

LCD.print ("जेनरेट करें:");

LCD.setCursor(10, 2);

एलसीडी.प्रिंट (current_mA);

एलसीडी.प्रिंट ("एमए");

LCD.setCursor(0, 3);

LCD.print ("आपूर्ति:");

LCD.setCursor(१०, ३);

एलसीडी.प्रिंट (लोडवोल्टेज);

एलसीडी.प्रिंट ("वी");

}

चरण 5: कुछ और तस्वीरें

कुछ और तस्वीरें
कुछ और तस्वीरें

एम्पलीफायर स्पीकर टर्मिनल। वर्तमान जनरेटर (आरटीडी) द्वारा संचालित एलईडी। एनालॉग कार्ड वायरिंग एलईडी की जगह लेगी।

दूर बाईं ओर टर्मिनल आपूर्ति इनपुट के लिए है। दायीं ओर के टर्मिनल इंस्ट्रूमेंट इनपुट के लिए हैं।

चरण 6: फिटिंग इन

में लायक़ हो रही
में लायक़ हो रही

सब कुछ फिट लगता है। मैंने कुछ सामान को अस्थायी रूप से एक साथ रखने के लिए सिलिकॉन का उपयोग किया। ट्रिम पॉट को ऊपर दाईं ओर सिलिकॉन किया गया है। एक छोटा सा छेद पूर्व-ड्रिल किया गया था। मैं बॉक्स के ऊपर से करंट को एडजस्ट कर सकता हूं।

चरण 7: बस तस्वीरें

बस तस्वीरें
बस तस्वीरें
बस तस्वीरें
बस तस्वीरें
बस तस्वीरें
बस तस्वीरें
बस तस्वीरें
बस तस्वीरें

चरण 8: अंतिम शब्द

मैंने एलन ब्रैडली पीएलसी के साथ इस डिवाइस के आउटपुट का परीक्षण किया है। परिणाम बहुत अच्छे थे। मुझे पूरी रेंज मिली। मैंने इस डिवाइस को 4-20mA प्रेशर सेंसर के साथ भी टेस्ट किया है जिसमें बिल्ट इन एलसीडी डिस्प्ले है। फिर से परिणाम बहुत अच्छे थे। मेरी रीडिंग दशमलव के एक जोड़े से बंद थी।

मैं अपना arduino कोड टैब में लिखता हूं। पीएलसी में उन्हें सब रूटीन कहा जाता है। डिबगिंग को आसान बनाता है my.

संलग्न उन टैब की पाठ फ़ाइलें हैं।

सिफारिश की: