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

עוד בודק קיבולת סוללה: 6 שלבים
עוד בודק קיבולת סוללה: 6 שלבים

וִידֵאוֹ: עוד בודק קיבולת סוללה: 6 שלבים

וִידֵאוֹ: עוד בודק קיבולת סוללה: 6 שלבים
וִידֵאוֹ: אוניברסלי DIY DC UPS 1228-12 עבור 100 וואט - הבחירה הטובה ביותר בכיתה שלה 2024, יולי
Anonim
עוד בודק קיבולת סוללה
עוד בודק קיבולת סוללה
עוד בודק קיבולת סוללה
עוד בודק קיבולת סוללה

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

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

שלב 1: היסטוריה - גרסה 1

היסטוריה - גרסה 1
היסטוריה - גרסה 1

למעלה הגרסה הראשונה עם נוספה להלן תמיכה בקלט 10V (R12 & R17 & Q11 & Q12).

הגרסה הראשונה נלקחה פחות או יותר מתוך הוראה על ידי deba168 (לצערי אני לא יכול למצוא את ההוראה שלו לספק קישור). בוצעו רק כמה שינויים קלים. בגרסה זו היה לי נגד עומס אחד של 10 אוהם הנשלט על ידי מוספת. עם זאת זה הביא כמה בעיות. כאשר בודקים תא NiCd או NiMH אחד הזמן הנדרש נמדד בקלות בשעות אם לא ימים. סוללת 1500mAh ארכה יותר מ -12 שעות (הזרם היה 120mA בלבד). מצד שני, הגרסה הראשונה תוכל לבדוק רק סוללות בנפח 10 וולט. וסוללה טעונה במלואה 9.6V יכולה למעשה להגיע עד 11.2V שלא ניתן היה לבדוק אותה בשל מגבלת 10V. היה צריך לעשות משהו. ראשית, הוספתי רק כמה משטחים ונגדים כדי שהמחלקים למתח יוכלו לאפשר יותר מ- 10V. אבל זה מצד שני העלה בעיה נוספת. סוללה של 14.4V טעונה במלואה יכולה לקבל עד 16.8V tp אשר עם נגד 10 אוהם פירושו זרם 1.68A וכמובן פיזור הספק מנגד העומס של כמעט 30W. אז, עם מתח נמוך זמן בדיקה ארוך מדי ועם מתח גבוה זרם גבוה מדי. ברור שזה לא היה פתרון הולם והיה צורך בפיתוח נוסף.

שלב 2: גירסה 2

רציתי פתרון שבו הזרם יישאר בגבולות מסוימים ללא קשר למתח הסוללה. פתרון אחד היה להשתמש ב- PWM ונגד אחד בלבד, אך העדפתי שיהיה פתרון ללא זרם פועם או שיהיה צורך לפזר חום של mosfet. לפיכך, יצרתי פתרון עם 10 חריצי מתח, כל אחד ברוחב 2V, תוך שימוש ב -10 נגדים של 3.3 אוהם ומוספט לכל נגד.

שלב 3: כך יצא

כך יצא
כך יצא

הערות על המעגל ניתן לטעון כי אובדן המתח על גבי המסת הוא זניח מכיוון שההתנגדות של המוספט כה נמוכה, אך השארתי את בחירת המוספט לקורא ובכך ההתנגדות יכולה לעבור אפילו יותר מ -1 אוהם היכן שהיא מתחילה חוֹמֶר. בגרסה אחת בחירה נכונה של מוספת תסיר את הצורך במדידת נקודה נמוכה יותר אך בגרסה 2 החלטתי למדוד את המתח על נגד אחד בלבד מה שאחר כך גורם לחשיבות של שתי נקודות מדידה. והסיבה מאחורי הבחירה הייתה הפשטות בחיווט של ה- Veroboard. זה אכן מוסיף שגיאת דיוק כלשהי מכיוון שהמתח הנמדד על פני הנגד אחד קטן משמעותית ממדידה על כל הנגדים. בבחירת הרכיבים החלטתי להשתמש במה שכבר היה לי ידוע או במה שאוכל להשיג בקלות. זה הוביל ל- BOM הבא:

  • Arduino Pro Mini 5V! חשוב! השתמשתי בגרסת 5V והכל מבוסס על זה
  • תצוגת OLED 128x64 I2C
  • נגדי 10 x 5W 3.3 אוהם
  • 3 x 2n7000 פוסטים
  • 10 x לוחות IRFZ34N
  • נגדי 6 x 10 kOhm
  • נגדים 2 x 5 kOhm
  • קבל 16V 680uF
  • מאוורר מעבד ישן אחד

לא הוספתי את הדברים הבאים בתרשימים

  • נגדי pullup בקווי I2C, שהבחנתי בהם הפכו את התצוגה ליציבה יותר
  • קווי חשמל
  • קבלים בקו 5V שגם ייצב את התצוגה

במהלך הבדיקה שמתי לב שנגדי העומס יתחממו למדי במיוחד אם כולם היו בשימוש. הטמפרטורה עלתה ליותר מ -100 מעלות צלזיוס (שהם מעל 212 מעלות פרנהייט) ואם יש לסגור את כל המערכת בקופסה אמור להיות סוג של קירור. נגדים בהם השתמשתי הם 3.3 אוהם / 5W והזרם המרבי אמור להתרחש עם כ 2V לנגד הנותן 2V / 3.3 = 0.61A וכתוצאה מכך 1.21W. בסופו של דבר הוספתי מאוורר פשוט בקופסה. בעיקר כי במקרה היה לי איזה מאוורר מעבד ישן.

פונקציונליות סכמטית

זה די פשוט ומובן מאליו. הסוללה הנבדקת מחוברת לסדרת הנגדים והקרקע. נקודות מדידת המתח הן חיבור הסוללה והנגד הראשון. מחיצות המתח משמשות אז להורדת המתח לרמה המתאימה יותר לארדואינו. פלט דיגיטלי אחד משמש לבחירת טווח 10V או 20V של המחיצות. כל נגד בעומס יכול להיות מקורקע בנפרד באמצעות המוספות, המונעות ישירות על ידי ארדואינו. ולבסוף, הצג מחובר לסיכות Arduino I2C. אין הרבה מה לומר על ה- J הסכמטי

שלב 4: הקוד

הקוד
הקוד

למעלה ניתן לראות את הפונקציונליות הגסה של הקוד. בואו נסתכל מקרוב על הקוד (קובצי arduino ino מצורפים). ישנן מספר פונקציות ולאחר מכן הלולאה הראשית.

לולאה ראשית

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

נוהל להצגת תוצאות

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

נוהל למדידת מתח

בתחילת הפונקציה נמדד ה- Vcc של Arduino. זה נחוץ כדי להיות מסוגל לחשב את המתחים הנמדדים באמצעות כניסות אנלוגיות. אז מתח הסוללה נמדד באמצעות טווח 20V כדי להיות מסוגל להחליט באיזה טווח להשתמש. לאחר מכן מחושבים הן מתח הסוללה והן מתח הנגד. מדידות מתח הסוללה מנצלות את מחלקת DividerInput הכוללת שיטות קריאה ומתח לתת את הקריאה הגולמית או המתח המחושב של הכניסה האנלוגית המדוברת.

נוהל בחירת ערכים משומשים

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

נוהל לחישוב קיבולת הסוללה

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

נוהל לאיתור מספר הנגדים לשימוש

בפונקציית selectNumOfResistors מתבצעת השוואה פשוטה של מתח לערכים שנקבעו מראש ובעקבות כך נקבעת מספר הנגדים שיש להשתמש בהם. המפתח המתאים נפתח כדי לדלג על חלק מהנגדים. חריצי המתח נבחרים כך שהזרם המרבי בכל זמן במהלך הפריקה יישאר מעט מעל 600mA (2V/3.3Ohm = 606mA). הפונקציה מחזירה את מספר הנגדים המשמשים. מכיוון שהמאוורר מונע מאותו קו כמו המוספט הראשון, הוא חייב תמיד להיפתח כאשר מתרחשת פריקה.

שלב 5: כיול המונה

כיול המונה
כיול המונה

כדי לכייל את המונה יצרתי אפליקציה נוספת (מצורפת). הוא משתמש באותה חומרה. בהתחלה ערכי מחלק התיקון כולם מוגדרים ל -1000.

const int divCorrectionB10V = 1000; // מכפיל תיקון מחלקים בטווח 10V const int divCorrectionR10V = 1000; // מכפיל תיקון מחלקים בטווח 10V const int divCorrectionB20V = 1000; // מכפיל תיקון מחלקים בטווח 20V const int divCorrectionR20V = 1000; // מכפיל תיקון מחלקים בטווח 20V

בפונקציה readVcc () מתח ה- Vcc המתקבל תלוי בהגדרת הערך בשורה האחרונה של הפונקציה לפני החזרה. בדרך כלל אתה יכול למצוא באינטרנט ערך של 1126400L לשימוש בחישוב. שמתי לב שהתוצאה לא נכונה.

תהליך כיול:

  1. טען את אפליקציית המדידה ל- Arduino.
  2. אתה יכול לראות ב- Arduino (ובפלט הטורי ואם המאוורר מסתובב) אם העומס מופעל. אם הוא מפעיל את מתג בחירת סוג הסוללה.
  3. התאם את הערך ב- readuVCC () כדי לקבל תוצאה נכונה. קח את הערך שהפונקציה נותנת (שהוא במיליוולט) וחלק איתו את הערך הארוך. תקבל את הערך הגולמי של ההפניה הפנימית. כעת מדוד את מתח האספקה בפועל במיליוולט עם מולטימטר והכפיל אותו עם הערך המחושב בעבר ותקבל את הערך הארוך המתוקן החדש. במקרה שלי הפונקציה החזירה 5288mV כאשר ה- Vcc בפועל היה 5.14V. חישוב 1126400/5288*5140 = 1094874 שסידרתי על ידי ניסוי. הכנס את הערך החדש לקוד והעלה אותו שוב ל- Arduino.
  4. התאמת ערכי התיקון של מחלק הקלט האנלוגי מתבצעת באמצעות מקור כוח מתכוונן המשמש להזנת קלט המונה. הפשוטה ביותר היא להשתמש במתח מ- 1V ל- 20V עם שלבים של 1V ולהקליט את התוצאות בגיליון אלקטרוני. בגיליון האלקטרוני נלקח הממוצע. הערכים המתוקנים מחושבים לפי הנוסחה הבאה: "raw_value*range*Vcc/Vin" כאשר raw_value הוא הערך ב- 10VdivB, 10VdivR, 20VdivB או 20VdivR בהתאם לאיזה תיקון יש לחשב.

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

ככה

const int divCorrectionB10V = 998; // מחלק תיקון מחלק בטווח 10V const int divCorrectionR10V = 1022; // מחלק תיקון מחלק בטווח 10V const int divCorrectionB20V = 1044; // מחלק תיקון מחלק בטווח 20V const int divCorrectionR20V = 1045; // מחלק תיקון מחלקים בטווח 20V

התאמת ערך הנגד יכולה להיעשות על ידי מתן מתח כלשהו לכניסה (כלומר 2V), החלפת מתג סוג העטלף (כדי לקבל עומס) ומדידת הזרם הנכנס והמתח על הנגד הראשון וחלוקת המתח עם הזרם.. בשבילי 2V נתן 607mA שנותן 2/0.607 = 3.2948 אוהם שעיגלתי ל -3.295 אוהם. אז עכשיו הכיול נעשה.

שלב 6: הערה אחרונה

הערה אחת חשובה כאן. חובה שיהיו כל החיבורים במצב מעולה מהסוללה לנגדים. היה לי חיבור אחד גרוע ותהיתי מדוע קיבלתי 0.3V פחות וולט ברשת הנגד מאשר על הסוללה. המשמעות היא שתהליך המדידה הסתיים כמעט מייד עם תאי NiCd 1.2V מכיוון שהגבול התחתון של 0.95V הגיע במהירות.

מוּמלָץ: