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

מדידות חיישן זרם ACS724 עם Arduino: 4 שלבים
מדידות חיישן זרם ACS724 עם Arduino: 4 שלבים

וִידֵאוֹ: מדידות חיישן זרם ACS724 עם Arduino: 4 שלבים

וִידֵאוֹ: מדידות חיישן זרם ACS724 עם Arduino: 4 שלבים
וִידֵאוֹ: Измерение 5A-30A переменного и постоянного тока с использованием ACS712 с библиотекой Robojax 2024, יולי
Anonim
Image
Image
תמונה
תמונה

במדריך זה נתנסה בחיבור חיישן זרם ACS724 לארדואינו לביצוע מדידות זרם. במקרה זה החיישן הנוכחי הוא מגוון +/- 5A שמפיק 400 mv/A.

ל- Arduino Uno יש ADC של 10 סיביות, ולכן שאלות טובות הן: כמה מדויקת הקריאה הנוכחית שנוכל לקבל ועד כמה היא יציבה?

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

אספקה

1 - לוח לחם 2 - ספקי כוח על שולחן העבודה 2 - DVM's1 - חיישן ACS724 +/- 5A1 - Arduino Uno1 - LM78053 - 10 אוהם, נגדי 10W1 - 1nF cap1 - 10nF cap1 - 0.1uF capJumpers

שלב 1:

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

אם תחבר את ספקי הכוח יחד, אספקת החשמל של החיישן ואספקת החשמל של Arduino יהיו בעלי אותה נקודת ייחוס +5V בדיוק והיית מצפה לתוצאות עקביות יותר.

עשיתי זאת ללא חיבור זה וראיתי קריאת זרם אפס גבוהה יותר על חיישן הזרם (2.530 V במקום 2.500 V הצפוי) וקריאת ADC נמוכה מהצפוי בנקודת זרם האפס. קיבלתי קריאת ADC דיגיטלית של כ- 507 עד 508 ללא זרם דרך החיישן, עבור 2.500V אתה אמור לראות קריאת ADC של כ- 512. תיקנתי את זה בתוכנה.

שלב 2: בדיקת מדידות

מדידות בדיקה
מדידות בדיקה

מדידות אנלוגיות עם מד וולט ודחף הצביעו על כך שהחיישן מדויק מאוד. בזרמי הבדיקה של 0.5A, 1.0A ו- 1.5A זה היה נכון בדיוק למיליוולט.

מדידות ADC עם הארדואינו לא היו מדויקות כמעט באותה מידה. מדידות אלה הוגבלו ברזולוציה של 10 סיביות של Arduino ADC ובעיות רעש (ראו את הסרטון). בשל רעש קריאת ה- ADC זינקה במקרה הגרוע ביותר עד 10 צעדים או יותר ללא זרם דרך החיישן. בהתחשב בכך שכל שלב מייצג כ- 5 mv, מדובר בתנודות של 50 mv ועם חיישן 400mv/אמפר מייצג תנודות של 50mv/400mv/amp = 125ma! הדרך היחידה שאוכל לקבל קריאה משמעותית היא לבצע 10 קריאות ברציפות ולאחר מכן לבצע אותן בממוצע.

עם 10 סיביות ADC או 1024 רמות אפשריות ו- 5V Vcc נוכל לפתור בערך 5/1023 ~ 5mv לכל שלב. החיישן יוצא 400mv/אמפר. אז במקרה הטוב יש לנו רזולוציה של 5mv/400mv/amp ~ 12.5ma.

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

שלב 3: מסקנות

מסקנות
מסקנות

מסקנות:

קריאות אנלוגיות של ACS724 מדויקות מאוד.

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

-יש בעיות ברעש וברזולוציה באמצעות ACS724 עם Arduino 10 bit ADC.

מספיק טוב רק לניטור זרם ממוצע למעגלים גבוהים יותר אך לא מספיק טוב לבקרת זרם קבוע.

-ייתכן שיהיה עליך להשתמש בשבב ADC חיצוני של 12 סיביות או יותר לתוצאות טובות יותר.

שלב 4: קוד ארדואינו

להלן הקוד שבו השתמשתי כדי למדוד את ערך ה- ADC של ה- PIN A0 Arduino ואת הקוד להמיר את מתח החיישן לזרם ולקחת ממוצע של 10 קריאות. הקוד מסביר את עצמו למדי והעיר על קוד ההמרה והממוצע.

מוּמלָץ: