הפוך את המד זרם הדיגיטלי המתקדם הזה באמצעות Arduino

נסה את הכלי שלנו לביטול בעיות





בפוסט זה אנו הולכים לבנות מד זרם דיגיטלי באמצעות תצוגת LCD בגודל 16x2 ו- Arduino. נבין את המתודולוגיה של מדידת הזרם באמצעות נגד שנט וניישם עיצוב המבוסס על ארדואינו. המד זרם הדיגיטלי המוצע יכול למדוד זרם שבין 0 ל -2 אמפר (מקסימום מוחלט) בדיוק סביר.

איך עובדים מדדי מים

ישנם שני סוגים של אמטרים: אנלוגיים ודיגיטליים, פעולתם שונה זה מזה. אבל לשניהם יש מושג אחד במשותף: נגד שאנט.



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

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



כיצד מד זרם אנלוגי עובד

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

עכשיו בוא נעביר קצת זרם מצד שמאל. i1 הוא הזרם לפני שנכנס לנגד הציד R ו- i2 יהיה הזרם לאחר שעבר נגד הנגד.

ה- i1 הנוכחי יהיה גדול מ- i2 מכיוון שהוא הפיל שבר זרם דרך הנגד. ההבדל הנוכחי בין התנגדות השינט מפתח כמות קטנה מאוד של מתח ב- V1 ו- V2.
כמות המתח תימדד על ידי אותו מטר אנלוגי.

המתח שפותח על פני הנגד השונתי תלוי בשני גורמים: הזרם הזורם דרך הנגד השונתי וערך הנגד השונתי.

אם זרימת הזרם גדולה יותר דרך המחלף המתח שפותח הוא יותר. אם ערך השאנט גבוה המתח שפותח על פני השאנט הוא יותר.

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

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

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

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

עד עכשיו אנו יודעים שנגד יפיק מתח אם יש זרם זרם. מהתרשים V1 ו- V2 הן הנקודות בהן אנו לוקחים את דגימות המתח למיקרו-בקר.

חישוב מתח להמרה זרם

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

חוק האום: I = V / R

אנו יודעים את ערכו של הנגד הצליחי R והוא יוזן בתוכנית.

המתח המיוצר על פני הנגד המחלף הוא:

V = V1 - V2

אוֹ

V = V2 - V1 (כדי למנוע סמל שלילי בזמן מדידה וגם סמל שלילי תלויים בכיוון הזרימה הנוכחית)

כדי שנוכל לפשט את המשוואה,

אני = (V1 - V2) / R.
אוֹ
אני = (V2 - V1) / R.

אחת המשוואות שלעיל תוזן בקוד ונוכל למצוא את הזרימה הנוכחית ויוצג על גבי LCD.

עכשיו בואו נראה איך לבחור את ערך הנגד לשנט.

ה- Arduino בנה ממיר אנלוגי לדיגיטלי 10 ביט (ADC). זה יכול לזהות בין 0 ל 5 וולט ב 0 עד 1024 צעדים או רמות מתח.

אז הרזולוציה של ADC זה תהיה 5/1024 = 0.00488 וולט או 4.88 מיליוולט למדרגה.

אז 4.88 מיליוולט / 2 mA (רזולוציה מינימלית של מד זרם) = נגד 2.44 או 2.5 אוהם.

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

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

ה- ADC יכול למדוד בין 0 ל -5 V בלבד כלומר. כל מה שלמעלה יפגע ב- ADC במיקרו-בקר.

מהאב-טיפוס שנבדק ראינו כי בשני הקלטים האנלוגיים מנקודה V1 ו- V2 כאשר הערך הנוכחי נמדד X mA, המתח האנלוגי קורא X / 2 (בצג סדרתי).

נניח למשל, אם המד זרם קורא 500 mA, הערכים האנלוגיים בצג הטורי קוראים 250 צעדים או רמות מתח. ה- ADC יכול לסבול עד 1024 שלבים או מקסימום 5 וולט, לכן כאשר המד זרם קורא 2000 mA, המסך הטורי קורא 1000 צעדים בקירוב. שזה קרוב ל 1024.

כל דבר מעל רמת מתח 1024 יפגע ב- ADC בארדואינו. כדי להימנע מכך ממש לפני 2000 מיליאמפר, הודעת אזהרה תתבקש על גבי LCD שתאמר לנתק את המעגל.

עד עכשיו היית מבין כיצד עובד המד זרם המוצע.

עכשיו נעבור לפרטים קונסטרוקטיביים.

תרשים סכמטי:

מד זרם דיגיטלי DC של Arduino

המעגל המוצע פשוט מאוד וידידותי למתחילים. בנה בהתאם לתרשים המעגל. כוונן את פוטנציומטר 10K להתאמת ניגודיות התצוגה.

אתה יכול להפעיל את Arduino מ- USB או דרך שקע DC עם סוללות 9 V. ארבעה נגדים של 2 וואט יפיצו את החום באופן אחיד מאשר שימוש בנגד 2.5 אוהם אחד עם נגן 8-10 וואט.

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

הערה: אל תהפוך את קוטביות אספקת עומס הקלט.

קוד תכנית:

//------------------Program Developed by R.GIRISH------------------//
#include
#define input_1 A0
#define input_2 A1
LiquidCrystal lcd(12, 11, 5, 4, 3, 2)
int AnalogValue = 0
int PeakVoltage = 0
float AverageVoltage = 0
float input_A0 = 0
float input_A1 = 0
float output = 0
float Resolution = 0.00488
unsigned long sample = 0
int threshold = 1000
void setup()
{
lcd.begin(16,2)
Serial.begin(9600)
}
void loop()
{
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_1)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A0 = PeakVoltage * Resolution
PeakVoltage = 0
for(sample = 0 sample <5000 sample ++)
{
AnalogValue = analogRead(input_2)
if(PeakVoltage {
PeakVoltage = AnalogValue
}
else
{
delayMicroseconds(10)
}
}
input_A1 = PeakVoltage * Resolution
output = (input_A0 - input_A1) * 100
output = output * 4
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
while(analogRead(input_A0) >= threshold)
{
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Reached Maximum')
lcd.setCursor(0,1)
lcd.print('Limit!!!')
delay(1000)
lcd.clear()
lcd.setCursor(0,0)
lcd.print('Disconnect now!!')
delay(1000)
}
lcd.clear()
lcd.setCursor(0,0)
lcd.print('DIGITAL AMMETER')
lcd.setCursor(0,1)
lcd.print(output)
lcd.print(' mA')
Serial.print('Volatge Level at A0 = ')
Serial.println(analogRead(input_A0))
Serial.print('Volatge Level at A1 = ')
Serial.println(analogRead(input_A1))
Serial.println('------------------------------')
delay(1000)
}
//------------------Program Developed by R.GIRISH------------------//

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




קודם: שימוש בפוטנציומטר דיגיטלי MCP41xx עם Arduino הבא: על ספק כוח מנותק הנוכחי באמצעות Arduino