תוכן עניינים:

מחולל/בודק 4-20ma באמצעות Arduino: 8 שלבים
מחולל/בודק 4-20ma באמצעות Arduino: 8 שלבים

וִידֵאוֹ: מחולל/בודק 4-20ma באמצעות Arduino: 8 שלבים

וִידֵאוֹ: מחולל/בודק 4-20ma באמצעות Arduino: 8 שלבים
וִידֵאוֹ: Обзор модуля ввода/вывода EBYTE Modbus RTU 2024, יוני
Anonim
מחולל/בודק 4-20ma באמצעות Arduino
מחולל/בודק 4-20ma באמצעות Arduino

גנרטורים של 4-20mA זמינים ב- eBay, אבל אני מצד אחד אוהב את החלק העשיני של הדברים והשימוש בחלקים שיש לי.

רציתי לבדוק את הכניסות האנלוגיות של ה- PLC שלנו כדי לאמת את קריאות ה- scada שלנו ולבדוק את התפוקה של מכשירים של 4-20mA. ישנם המון ממירי זרם למתח ומתח לממירים זרם עבור arduino ב- ebay, אך הם זקוקים לכיול. אני יכול להשתמש בזה כדי לכייל כל אחד מהממירים שנמצאו ב- eBay וכדומה.

החלטתי שאני אעשה גנרטור ובודק. בנקודת זמן זו עדיין מדובר בעבודה בתהליך ואב -טיפוס.

הייתה לי מערכת שמע ישנה של 2.1 שלא הייתה בשימוש (רמקולים קטנים). אז השתמשתי באחת מארגזי הרמקולים כמארז. היה לי גם מגבר שמת בגלל ברק, הסרתי את מסוף הרמקולים מהמגבר הזה כדי לגרום לחיבור למשב רוח. אני מתכוון להכין PCB בעתיד ומארז טוב יותר.

אספקה:

רשימת חלקים.

LCD // 20x4 (התאם קוד אם שלך קטן יותר)

ווסת LM7808 // 8 וולט

LED // כל סוג או גודל

הנגד ל LED // מתאים לסוג הלד ו -8 וולט

נגד 100 אוהם + 47 אוהם נגד בסדרה // ישמש כנגד שאנט

נגד 10K // אנלוגי Arduino בהגנה מפני מתח גבוה

הנגד 22K // כדי לעצור את A0 מהציפה

נגד 100 טריהם + אוהם 47 אוהם בסדרה // סימולטור PT100

קבל 35 וולט // השתמשתי ב- 470uF, רק כדי לשמור על תנודות מתח האספקה

RTD (מתמר PT100) // טווח לא משנה (טווח)

DIODE (להגנה על קוטביות)

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 ואת סיכת הסיר 3 לחיתוך סיכה 2 לדמות חיבור PT100. (החלף את החוטים אם סיבוב סיר הגימור עם כיוון השעון אינו מגביר את ה- mA).

שלב 2: בדיקת פלט מכשיר

כדי לבדוק את פלט המכשיר יש צורך בחלקים נוספים, כמו נגד שאנט. נגדים רגילים של 0.25W יעשו את העבודה מצוין. אתה יכול לעזוב את הנגד shunt ולהוסיף INA219 שני לבדיקת פלט המכשיר. נשאר לי רק אחד אז השתמשתי בנגד.

בדיקה באמצעות shunt יכולה להיעשות רק בצד השלילי של המכשיר. אם תשתמש בצד החיובי תספק לארדואינו שלך יותר מפי 4 מהמתח המותר ותתן לעשן לצאת.

הוסף את הנגד shunt בסדרה עם חוט שלילי של המכשיר. הצד של shunt הקרוב ביותר למכשיר יהפוך לאנלוגי החיובי של arduino. הצד השני של shunt הקרוב ביותר לאספקת החשמל יהפוך לקרקע הארדואינו שמשלימה את מעגל הכניסה האנלוגי.

נגד שאנט 150 אוהם הוא המקסימום המוחלט שיש להשתמש בו בעת שימוש בארדואינו. לנגד יש ירידת מתח לינארית ל- mA הזורם דרכו. ככל שה- mA גדול יותר המתח גדול יותר.

ב 20mA הנוכחי # 150ohm*0.02A = 3 וולט לארדואינו.

ב 4mA הנוכחי # 150ohm*0.004A = 0.6 וולט לארדואינו.

עכשיו אולי תרצה שהמתח יהיה קרוב יותר ל -5 וולט, כך שתוכל להציע לנו את כל טווח ה- ADC המלא של הארדואינו. (לא רעיון טוב).

RTD יכול להגיע לפלט של 30.2mA (שלי עושה). 150 אוהם*0.03A = 4.8 וולט. זה קרוב ככל שהייתי רוצה להיות.

אתר אחר הצביע על שימוש בנגד 250 אוהם.

ב 20mA הנוכחי # 250ohm*0.02A = 5 וולט לארדואינו.

בזרם 30mA # 250ohm*0.03A = 7.5volt לארדואינו.

אתה מסתכן בשריפת ה- ADC והארדואינו שלך.

כדי לבדוק מכשיר בשטח, קח איתך סוללה של 12 וולט וחבר אותה לכניסת האספקה. שימוש במקור חשמל חיצוני לא ישפיע על התקנת ה- PLC הנוכחית.

כדי לבדוק כרטיס כניסה אנלוגי בשטח, קח איתך סוללה של 12 וולט. נתק את המכשיר + מהמעגל. חבר את הקרקע לקרקע המכשיר ואת ה- RTD- לחוט המכשיר המנותק.

שלב 3: כיול

כִּיוּל
כִּיוּל

כדי לכייל את קריאת הנגד shunt שלך, חוט RTD- אל shunt אנלוגי פנימה. הגדר את סיר הגימור שלך כך שה- mA שנוצר יהיה 4mA. אם ה- mA של המכשיר שלך אינו שווה, שנה את הערך הראשון בקוד בשורה 84. הגדלת ערך זה תוריד את קריאת ה- mA.

לאחר מכן הגדר את סיר הגימור שלך ליצירת 20mA. אם ה- mA של המכשיר שלך אינו שווה, שנה את הערך השני בקוד בשורה 84.

אז 4-20mA שלך יהפוך כעת ל-0.6-3 וולט (תיאורטי). טווח די והותר. שימוש בספרייה מ- eRCaGuy, דגימת יתר תעניק לך קריאה טובה ויציבה יותר.

מקווה שאתה קורא את זה. זו ההנחיה הראשונה שלי, אז אנא הקל על עצמך אם טעיתי איפשהו או השארתי משהו בחוץ.

הפרויקט הזה הוא כנראה לא הדרך הטובה ביותר לעשות את זה, אבל זה עובד בשבילי והיה כיף לעשות את זה.

כמה רעיונות יש לי נוספים…

הוסף סרוו לסובב את סיר החיתוך בתוך הקופסה.

הוסף כפתורי לחיצה לסיבוב סרוו שמאלה או ימינה.

הוסף חיישן טמפרטורה דיגיטלי לגוף הקירור של הרגולטור כדי להזהיר מפני חום מסוכן.

שלב 4: תכנות Arduino

#לִכלוֹל

// #include // ביטול תגובה אם אתה משתמש ב- LCD עם רשם משמרות.

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

#לִכלוֹל

// A4 = (SDA)

// A5 = (SCL)

Adafruit_INA219 ina219;

LiquidCrystal lcd (12, 11, 5, 4, 3, 2);

// LiquidCrystal_SR lcd (3, 4, 2); // לא להגיב אם אתה משתמש ב- LCD עם רשימת משמרות.

// | | | _ סיכת תפס

// | / _ סיכת שעון

// / _ נתונים/אפשר סיכה

בתים bitsOfResolution = 12; // מצווה על רזולוציה מדוגמת יתר

numSamplesToAvg לא חתום ארוך; // מספר הדגימות ברזולוציה הממומנת שברצונך לקחת ובממוצע

ADC_prescaler_t ADCSpeed = ADC_DEFAULT;

unsign long long previousMillis = 0;

מצוף shuntvoltage = 0.0; // מאת INA219

צף אוטובוס = 0.0; // מאת INA219

float current_mA = 0.0; // מאת INA219

מצף עומס = 0.0; // מאת INA219

צף arduinovoltage = 0.0; // חישוב מתח מפין A0

A0analogReading ארוך ללא חתימה = 0;

בייט analogIn = A0;

float ma_mapped = 0.0; // מתח מפה מ A0 עד 4-20mA

הגדרת בטל () {

adc.setADCSpeed (ADCSpeed);

adc.setBitsOfResolution (bitsOfResolution);

adc.setNumSamplesToAvg (numSamplesToAvg);

uint32_t currentFrequency;

ina219.begin ();

ina219.setCalibration_32V_30mA (); // ספריה שונה לשיפור הדיוק ב- mA

lcd.begin (20, 4); // לאתחל את ה- LCD

lcd.clear ();

lcd.home (); // ללכת הביתה

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

עיכוב (2000);

lcd.clear ();

}

לולאת חלל ()

{

current Signillial millis = millis ();

const מרווח ארוך = 100;

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

קראו התקני I2C במרווחי זמן ועשו כמה חישובים

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

if (currentMillis - previousMillis> = מרווח) {

previousMillis = currentMillis;

הַפסָקָה();

}

Print_To_LCD (); // כנראה שאני לא צריך לעדכן את ה- LCD מהר כל כך וניתן להעביר אותו למטה למרווח ()

}

בָּטֵל

מרווח () {

shuntvoltage = ina219.getShuntVoltage_mV ();

busvoltage = ina219.getBusVoltage_V ();

current_mA = ina219.getCurrent_mA ();

עומס = (busvoltage + (shuntvoltage / 1000)) + 0.71; // +0.71 היא ירידת מתח הדיודה שלי

A0analogReading = adc.newAnalogRead (analogIn);

arduinovoltage = (5.0 * A0analogReading); // מחושב ל- mV

ma_mapped = map (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;

shuntvoltage = 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 ("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: עוד כמה תמונות

עוד כמה תמונות
עוד כמה תמונות

מסוף רמקול מגבר. LED מונע על ידי הגנרטור הנוכחי (RTD). חיווט כרטיס אנלוגי יחליף את הנורית.

הטרמינל בצד שמאל ביותר מיועד לקלט אספקה. מסופים מימין מיועדים לקלט מכשירים.

שלב 6: התאמה

להשתלב
להשתלב

נראה שהכל מתאים. השתמשתי בסיליקון כדי להחזיק כמה דברים ביחד. סיר החיתוך מסוכך בצד ימין למעלה. נקב חור קטן. אני יכול להתאים את הזרם מהחלק העליון של התיבה.

שלב 7: רק תמונות

רק תמונות
רק תמונות
רק תמונות
רק תמונות
רק תמונות
רק תמונות
רק תמונות
רק תמונות

שלב 8: מילים אחרונות

בדקתי את הפלט של מכשיר זה עם Allan Bradley PLC. התוצאות היו טובות מאוד. קיבלתי טווח מלא. בדקתי גם מכשיר זה עם חיישן לחץ 4-20mA הכולל צג LCD מובנה. שוב התוצאות היו טובות מאוד. הקריאות שלי הושקעו בכמה עשרוניות.

אני כותב את קוד הארדואינו בכרטיסיות. ב- PLC הם נקראים שגרות משנה. מקל על ניפוי הבאגים שלי.

מצורפים קבצי טקסט של כרטיסיות אלה.

מוּמלָץ: