جدول المحتويات:

4-20ma Generator / Tester باستخدام Arduino: 8 خطوات
4-20ma Generator / Tester باستخدام Arduino: 8 خطوات

فيديو: 4-20ma Generator / Tester باستخدام Arduino: 8 خطوات

فيديو: 4-20ma Generator / Tester باستخدام Arduino: 8 خطوات
فيديو: LAP-F1: How to perform logic analyzer measurement on LabVIEW 2024, ديسمبر
Anonim
4-20ma مولد / فاحص باستخدام Arduino
4-20ma مولد / فاحص باستخدام Arduino

تتوفر مولدات 4-20mA على موقع ئي باي ، لكني أحب جزء DIY من الأشياء واستخدام الأجزاء التي أضعها حولها.

كنت أرغب في اختبار المدخلات التناظرية الخاصة بـ PLC للتحقق من قراءات scada الخاصة بنا واختبار إخراج أجهزة 4-20mA. هناك الكثير من محولات التيار إلى الجهد والجهد لمحولات التيار لاردوينو على موقع اردوينو ، إلا أنها تحتاج إلى معايرة. يمكنني استخدام هذا لمعايرة أي من تلك المحولات الموجودة على موقع ئي باي وما شابه.

قررت أن أقوم بعمل مولد واختبار. في هذا الوقت ، لا يزال العمل قيد التقدم ونموذج أولي.

كان لدي نظام صوت قديم 2.1 لم يتم استخدامه (مكبرات صوت صغيرة). لذلك استخدمت أحد مربعات السماعات كحاوية. كان لدي أيضًا مكبر صوت توفي بسبب البرق ، لقد قمت بإزالة طرف السماعة من هذا مكبر الصوت لجعل التوصيل أمرًا سهلاً. أعتزم صنع ثنائي الفينيل متعدد الكلور في المستقبل وعلبة أفضل.

اللوازم:

قائمة الاجزاء.

LCD // 20 × 4 (قم بتكييف الكود إذا كان حجمك أصغر)

LM7808 // منظم 8 فولت

LED // أي نوع أو حجم

المقاوم لـ LED // مناسب لنوع LED و 8 فولت

100 أوم المقاوم + 47 أوم المقاوم في السلسلة // سوف تستخدم كمقاوم تحويلة

10K المقاوم // التناظرية اردوينو في الحماية ضد الجهد العالي

22K المقاوم // لإيقاف A0 من العائمة

Trimpot 100 ohm + 47 ohm المقاوم في السلسلة // PT100 simulator

مكثف 35 فولت // لقد استخدمت 470 فائق التوهج ، فقط للحفاظ على تقلبات جهد الإمداد منخفضة

RTD (محول الطاقة PT100) // لا يهم Span (المدى)

الصمام الثنائي (لحماية القطبية)

INA219

اردوينو

الخطوة 1:

صورة
صورة

يجب أن يبدأ اتباع المخطط التخطيطي في مكان إضافة الأجزاء وتوصيلها.

يسمح LM7808 بحد أقصى 25 فولتًا للإدخال وهو أمر جيد لأنظمة PLC ، فهي تستخدم عمومًا مصادر طاقة 24 فولت. أضف خافض حرارة للمنظم ولا تستخدمه لفترات طويلة. يؤدي إسقاط 16 فولت إلى توليد قدر كبير من الحرارة من خلال المنظم.

يغذي مصدر الإدخال المنظم ويتصل بـ INA219 VIN ، في هذا التكوين سيكون INA219 أيضًا قادرًا على قياس جهد الإمداد الصحيح مطروحًا منه انخفاض الجهد من الصمام الثنائي. يجب عليك قياس انخفاض جهد الصمام الثنائي وإضافته إلى الكود حتى تحصل على قراءات جهد الإمداد الصحيحة.

من INA219 VOUT إلى RTD + تقوم بتشغيل RTD. RTD- إلى الأرض يكمل الدائرة.

لاختبار بطاقة تمثيلية PLC ، ستقوم بتوصيل RTD- بالإدخال على البطاقة التناظرية والأرض من البطاقة إلى أرض اردوينو. (تأكد من فصل أي جهاز متصل بالقناة قيد الاختبار).

R5 و LED1 ، مما يشير إلى تشغيل النظام.

يتغذى المنظم في اردوينو VIN (قام اردوينو ببناء منظم حتى 5 فولت).

ينتقل دبوس Arduino 5V إلى INA219 لتشغيل الشريحة الموجودة على اللوحة. INA219 GND إلى أرض اردوينو.

تقليم ممسحة وعاء إلى RTD PIN1 و Trim pot pin 3 إلى RTD pin 2 ستحاكي اتصال PT100. (قم بتبديل الأسلاك إذا لم يؤدي تدوير وعاء القطع في اتجاه عقارب الساعة إلى زيادة مللي أمبير).

الخطوة 2: اختبار إخراج الجهاز

لاختبار إخراج الجهاز هناك حاجة إلى أجزاء إضافية ، مثل المقاوم التحويلة. المقاومات العادية 0.25 واط ستؤدي المهمة على ما يرام. يمكنك ترك المقاوم التحويلة وإضافة INA219 ثاني لاختبار إخراج الجهاز. لم يتبق لي سوى واحد لذا استخدمت المقاوم بدلاً من ذلك.

لا يمكن إجراء الاختبار باستخدام التحويل إلا على الجانب السلبي للجهاز. إذا كنت تستخدم الجانب الإيجابي ، فسوف تزود اردوينو بأكثر من 4 أضعاف الجهد المسموح به وتترك الدخان يخرج.

أضف المقاوم التحويلة في سلسلة مع السلك السلبي للأداة. سيصبح جانب التحويل الأقرب للجهاز هو التناظرية الإيجابية لاردوينو. سيصبح الجانب الآخر من التحويلة الأقرب إلى مصدر الطاقة هو أرضية اردوينو التي تكمل دائرة الإدخال التناظرية.

150 أوم مقاوم تحويل هو الحد الأقصى المطلق الذي يجب استخدامه عند استخدام اردوينو. المقاوم لديه انخفاض الجهد الخطي إلى mA يتدفق من خلاله. كلما زاد مللي أمبير كلما زاد الجهد.

في 20mA الحالي # 150ohm * 0.02A = 3 فولت إلى اردوينو.

عند 4mA الحالي # 150 أوم * 0.004A = 0.6 فولت إلى اردوينو.

الآن قد ترغب في أن يكون الجهد أقرب إلى 5 فولت حتى تتمكن من استخدام نطاق ADC الكامل لاردوينو. (ليست فكرة جيدة).

يمكن أن تصل مخرجات RTD إلى 30.2mA (المنجم لا). 150 أوم * 0.03 أمبير = 4.8 فولت. هذا هو أقرب ما أريد أن يكون.

أشار موقع ويب آخر إلى استخدام المقاوم 250 أوم.

عند 20 مللي أمبير الحالي # 250 أوم * 0.02A = 5 فولت إلى اردوينو.

عند 30 مللي أمبير تيار # 250 أوم * 0.03 أمبير = 7.5 فولت إلى اردوينو.

أنت تخاطر بحرق ADC و arduino.

لاختبار أداة في الميدان ، خذ معك بطارية 12 فولت وقم بتوصيلها بمدخل الإمداد. لن يؤثر استخدام مصدر طاقة خارجي على إعداد PLC الحالي.

لاختبار بطاقة إدخال تناظرية في الميدان ، خذ معك بطارية 12 فولت. افصل الجهاز + عن الدائرة. قم بتوصيل الأرض بأرض الجهاز و RTD- بسلك الجهاز المنفصل.

الخطوة 3: المعايرة

معايرة
معايرة

لمعايرة قراءة المقاوم التحويلية الخاصة بك ، سلك RTD- إلى التحويلة التناظرية في. اضبط وعاء القطع الخاص بك بحيث يكون mA الذي تم إنشاؤه هو 4mA. إذا لم يكن جهازك mA مساويًا ، فقم بتعديل القيمة الأولى في الكود في السطر 84. ستؤدي زيادة هذه القيمة إلى خفض قراءة mA.

ثم اضبط وعاء التشذيب على توليد 20 مللي أمبير. إذا لم يكن جهازك mA مساويًا ، فقم بتعديل القيمة الثانية في الكود في السطر 84.

لذا ستصبح 4-20mA الآن 0.6-3 فولت (نظري). نطاق أكثر من كاف. باستخدام المكتبة من eRCaGuy ، ستمنحك زيادة العينات قراءة أفضل ومستقرة.

أتمنى أن تقرأ هذا. هذا هو أول تدريب لي ، لذا يرجى أخذ الأمر بسهولة إذا ارتكبت خطأ في مكان ما أو تركت شيئًا ما.

ربما لا يكون هذا المشروع هو أفضل طريقة للقيام بذلك ، لكنه يعمل بالنسبة لي وكان ممتعًا في القيام به.

لدي بعض الأفكار الإضافية …

أضف مؤازرة لتدوير وعاء التقليم داخل الصندوق.

أضف أزرار الدفع لتدوير المؤازرة لليسار أو لليمين.

أضف مستشعر درجة حرارة رقميًا إلى المبدد الحراري المنظم للتحذير من الحرارة الخطيرة.

الخطوة 4: برمجة Arduino

#يشمل

// #include // Uncomment إذا كنت تستخدم شاشة LCD مع سجل التحول.

#يشمل

#يشمل

#يشمل

#يشمل

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219 ؛

LiquidCrystal LCD (12 ، 11 ، 5 ، 4 ، 3 ، 2) ؛

// LiquidCrystal_SR lcd (3، 4، 2) ؛ // Uncomment إذا كنت تستخدم شاشة LCD مع سجل التحول.

// | | | _ دبوس مزلاج

// | / _ دبوس الساعة

// / _ البيانات / تمكين رقم التعريف الشخصي

بتات بايتOfResolution = 12 ؛ // أمر قرار مبالغة في أخذ العينات

numSamplesToAvg طويلة بدون توقيع = 20 ؛ // عدد العينات في القرار الزائد الذي تريد أن تأخذ ومتوسط

ADC_prescaler_t ADCSpeed = ADC_DEFAULT ،

ميلليس طويل بدون توقيع = 0 ؛

تعويم تحويلة الجهد = 0.0 ؛ // من INA219

تعويم busvoltage = 0.0 ؛ // من INA219

تعويم 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 الحالي

ina219.begin () ،

ina219.setCalibration_32V_30mA () ، // مكتبة معدلة لمزيد من الدقة في mA

lcd.begin (20 ، 4) ؛ // تهيئة شاشة LCD

lcd.clear () ؛

lcd.home () ؛ // اذهب للمنزل

lcd.print ("**********************") ؛

تأخير (2000) ؛

lcd.clear () ؛

}

حلقة فارغة()

{

تيار طويل بدون توقيع ميليس = ميلي () ؛

فاصل زمني طويل = 100 ؛

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

اقرأ أجهزة I2C على فترات وقم ببعض العمليات الحسابية

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

إذا (currentMillis - previousMillis> = الفاصل الزمني) {

PreviousMillis = CurrentMillis ؛

فترة()؛

}

Print_To_LCD () ، // ربما لا أحتاج إلى تحديث شاشة 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) ؛ // محسوبة بالسيارات

ma_mapped = خريطة (arduinovoltage، 752، 8459، 30، 220) / 10.0 ؛ // لا يمكن للخريطة استخدام العوامات. أضف 0 خلف القيمة المعينة وقسمها على 10 للحصول على قراءة عائمة.

// التعيين من حساب الجهد يعطي قراءات أكثر ثباتًا ثم استخدام قراءة ADC الأولية.

إذا (shuntvoltage> = -0.10 && shuntvoltage <= -0.01) // مع عدم وجود حمل ، يميل INA219 إلى القراءة أدناه -0.01 ، جيدًا المنجم.

{

current_mA = 0 ؛

busvoltage = 0 ؛

جهد الحمل = 0 ؛

تحويلة الجهد = 0 ؛

}

}

فارغ

Print_To_LCD () {

lcd.setCursor (0 ، 0) ؛

إذا (ma_mapped <1.25) {// مع عدم وجود تيار ، فهذه هي قراءة mA الخاصة بي ، لذلك قمت بإزالتها بعيدًا.

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 ("مللي أمبير") ؛

lcd.setCursor (0 ، 2) ؛

lcd.print ("إنشاء:") ؛

lcd.setCursor (10 ، 2) ؛

lcd.print (current_mA) ؛

lcd.print ("مللي أمبير") ؛

lcd.setCursor (0 ، 3) ؛

lcd.print ("العرض:") ؛

lcd.setCursor (10 ، 3) ؛

lcd.print (loadvoltage) ؛

lcd.print ("V") ؛

}

الخطوة 5: بعض المزيد من الصور

بعض المزيد من الصور
بعض المزيد من الصور

مكبر الصوت الطرفية. يقودها المولد الحالي (RTD). سوف تحل أسلاك البطاقة التناظرية محل LED.

المحطة الطرفية في أقصى اليسار لإدخال العرض. المحطات الموجودة على اليمين مخصصة لإدخال الأجهزة.

الخطوة 6: التركيب

ملائم
ملائم

يبدو أن كل شيء مناسب. لقد استخدمت السيليكون لتثبيت بعض الأشياء معًا مؤقتًا. وعاء الزخرفة مصنوع من السيليكون في أعلى اليمين. تم حفر حفرة صغيرة مسبقًا. يمكنني ضبط التيار من أعلى الصندوق.

الخطوة 7: مجرد صور

مجرد صور
مجرد صور
مجرد صور
مجرد صور
مجرد صور
مجرد صور
مجرد صور
مجرد صور

الخطوة 8: الكلمات الأخيرة

لقد اختبرت إخراج هذا الجهاز باستخدام Allan Bradley PLC. كانت النتائج جيدة جدا. لقد حصلت على نطاق كامل ، لقد اختبرت هذا الجهاز أيضًا باستخدام مستشعر ضغط 4-20mA يحتوي على شاشة LCD مدمجة. مرة أخرى كانت النتائج جيدة جدا. كانت قراءاتي خارجة عن طريق زوج من الكسور العشرية.

أكتب كود اردوينو الخاص بي في علامات التبويب. في PLC يطلق عليهم الإجراءات الفرعية. يجعل التصحيح أسهل بالنسبة لي.

تم إرفاق ملفات نصية من علامات التبويب تلك.

موصى به: