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

Arduino LTC6804 BMS - חלק 2: לוח איזון: 5 שלבים
Arduino LTC6804 BMS - חלק 2: לוח איזון: 5 שלבים

וִידֵאוֹ: Arduino LTC6804 BMS - חלק 2: לוח איזון: 5 שלבים

וִידֵאוֹ: Arduino LTC6804 BMS - חלק 2: לוח איזון: 5 שלבים
וִידֵאוֹ: Lithium-Ion Battery Management System | BMS | LTC6804-2 2024, יולי
Anonim
Arduino LTC6804 BMS - חלק 2: לוח איזון
Arduino LTC6804 BMS - חלק 2: לוח איזון

חלק 1 כאן

מערכת ניהול סוללות (BMS) כוללת פונקציונליות לאיתור פרמטרים חשובים של סוללת סוללה, כולל מתח תא, זרם סוללה, טמפרטורות תאים וכו '. אם אחד מאלה נמצא מחוץ לטווח מוגדר מראש, ניתן לנתק את החבילה מהעומס או המטען שלה., או שניתן לנקוט בפעולה מתאימה אחרת. בפרויקט קודם (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) דנתי בעיצוב BMS שלי, המבוסס על שבב צג הסוללות הרב-תאי LTC6804 Linear Technology ובמיקרו-בקר Arduino.. פרויקט זה מרחיב את פרויקט BMS על ידי הוספת איזון סוללות.

מארזי סוללות בנויים מתאים בודדים בתצורות מקבילות ו/או סדרות. לדוגמה, חבילת 8p12s תיבנה באמצעות 12 סטים המחוברים לסדרה של 8 תאים המחוברים במקביל. בחבילה יהיו סך של 96 תאים. לקבלת הביצועים הטובים ביותר לכל 96 התאים צריכים להיות מאפיינים התואמים היטב, אולם תמיד תהיה שונות מסוימת בין התאים. לדוגמה, לתאים מסוימים יש קיבולת נמוכה יותר מאשר לתאים אחרים. כשהחבילה טעונה, תאי הקיבולת הנמוכה יותר יגיעו למתח הבטוח המרבי שלהם לפני שאר החפיסה. ה- BMS יזהה מתח גבוה זה וינתק טעינה נוספת. התוצאה תהיה שחלק גדול מהחבילה אינו טעון במלואו כאשר ה- BMS מנתק את הטעינה בשל המתח הגבוה יותר של התא החלש ביותר. דינמיקה דומה יכולה לקרות במהלך פריקה, כאשר תאים בעלי קיבולת גבוהה יותר אינם יכולים לפרוק לחלוטין כיוון שה- BMS מנתק את העומס כאשר הסוללה החלשה ביותר מגיעה לגבול המתח הנמוך שלה. החבילה היא אפוא רק טובה כמו הסוללות החלשות ביותר שלה, כמו שרשרת חזקה רק כמו החוליה החלשה ביותר שלה.

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

אספקה

אתה יכול להזמין את לוח ה- Balance Board מ- PCBWays כאן:

www.pcbway.com/project/shareproject/Balance_board_for_Arduino_BMS.html

שלב 1: תורת הפעולה

תורת המבצע
תורת המבצע

עמוד 62 בגיליון הנתונים LTC6804 דן באיזון תאים. ישנן שתי אפשרויות: 1) שימוש ב- MOSFETS הפנימי של ערוץ N כדי לדמם זרם מהתאים הגבוהים, או 2) שימוש ב- MOSFETS הפנימי לשליטה במתגים חיצוניים הנושאים את זרם הדימום. אני משתמש באפשרות השנייה מכיוון שאני יכול לעצב מעגל דימום משלי כך שיתמודד עם זרם גבוה יותר ממה שניתן לעשות באמצעות המתגים הפנימיים.

ה- MOSFETS הפנימי זמין דרך סיכות S1-S12 בעוד שהתאים עצמם ניגשים באמצעות סיכות C0-C12. התמונה למעלה מציגה אחד מ -12 מעגלי הדימום זהים. כאשר Q1 מופעל, הזרם יזרום מ- C1 לקרקע דרך R5, ויפזר חלק מהמטען בתא 1. בחרתי עמיד של 6 אוהם, 1 ואט, שאמור להיות מסוגל להתמודד עם מספר מיליאמפר של זרם דימום. נוספה LED כך שהמשתמש יכול לראות אילו תאים מאזנים בכל זמן נתון.

סיכות S1-S12 נשלטות על ידי ה- CFGR4 ו -4 הסיביות הראשונות של קבוצות הרישום של CFGR5 (ראה עמודים 51 ו -53 בגיליון הנתונים LTC6804). קבוצות רגיסטר אלה מוגדרות בקוד הארדואינו (יידונו להלן) בפונקציה balance_cfg.

שלב 2: סכמטי

סכמטי
סכמטי

הסכימה של לוח האיזון של BMS תוכננה באמצעות Eagle CAD. זה די פשוט. יש מעגל דימום אחד עבור כל קטע מסדרת הסוללות. המתגים נשלטים על ידי אותות מה- LTC6804 דרך הכותרת JP2. זרם הדימום זורם מארז הסוללות דרך הכותרת JP1. שים לב שזרם הדימום זורם לפלח הסוללה התחתון הבא, כך לדוגמה, C9 מדמם ל- C8 וכו '. סמל מגן Arduino Uno ממוקם על סכמטי לפריסת ה- PCB המתוארת בשלב 3. ניתן תמונה ברזולוציה גבוהה יותר. בקובץ ה- zip. להלן רשימת החלקים (משום מה תכונת העלאת הקבצים Instructables לא עובדת בשבילי …)

ערך ערך תיאור חלקי החבילה של המכשיר

12 LEDCHIPLED_0805 CHIPLED_0805 LED1, LED2, LED3, LED4, LED5, LED6, LED7, LED8, LED9, LED10, LED11, LED12 LED 12 BSS308PEH6327XTSA1 MOSFET-P SOT23-R Q1, Q2, Q3, Q7, Q6, Q9, Q10, Q11, Q12 P-Channel Mosfet 2 PINHD-1X13_BIG 1X13-BIG JP1, JP2 PIN HEADER 12 16 R-US_R2512 R2512 R5, R7, R9, R11, R13, R15, R17, R19, R21, R23, R25, R27 RESISTOR, סמל אמריקאי 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTOR, סמל אמריקאי 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 RESISTOR, סמל אמריקאי

שלב 3: פריסת PCB

פריסת PCB
פריסת PCB

הפריסה נקבעת בעיקר על ידי עיצוב מערכת ה- BMS הראשית הנדונה במדריך נפרד (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/). הכותרות JP1 ו- JP2 צריכות להתאים את הכותרות התואמות ב- BMS. Mosfets, נגדי דימום ונורות LED מסודרים בצורה הגיונית על מגן ה- Arduino Uno. קבצי גרבר נוצרו באמצעות Eagle CAD וה- PCB נשלחו למעגלי סיירה לייצור.

הקובץ המצורף "Gerbers Balance Board.zip.txt" הוא למעשה קובץ zip המכיל את הגרברס. אתה יכול פשוט למחוק את החלק.txt של שם הקובץ ולאחר מכן לפתוח אותו כמו קובץ zip רגיל.

שלח לי הודעה אם ברצונך להשיג PCB, יכול להיות שעדיין יישארו לי כמה.

שלב 4: הרכבת PCB

לוח PCB של הלוח איזון מולחם ביד באמצעות תחנת הלחמה מבוקרת טמפרטורה של Weller WESD51 עם קצה "מברג" מסוג ETB ET 0.0 ET ו הלחמה 0.3 מ"מ. למרות שעצות קטנות יותר עשויות להיראות טובות יותר לעבודה מורכבת, הן אינן שומרות על חום ולמעשה מקשות על העבודה. השתמש בעט שטף לניקוי כריות ה- PCB לפני הלחמה. הלחמה 0.3 מ"מ עובדת היטב לחלקי SMD בהלחמה ביד. הניחו מעט הלחמה על כרית אחת ולאחר מכן הניחו את החלק בעזרת פינצטה או סכין x-acto והדקו את הפד הזה. לאחר מכן ניתן להלחם את הכרית הנותרת מבלי שהחלק יזוז. הקפד לא לחמם יתר על המידה את החלק או את כריות ה- PCB. מכיוון שרוב הרכיבים גדולים למדי בסטנדרטים של SMD, קל להרכיב את ה- PCB.

שלב 5: קוד

קוד
קוד

הקוד המלא של Arduino מסופק בהוראות הקודמות המקושרות לעיל. כאן אפנה את תשומת לבכם לקטע השולט באיזון התא. כפי שצוין לעיל, S1-S12 נשלטים על ידי ה- CFGR4 ו -4 הסיביות הראשונות של קבוצות הרישום CFGR5 ב LTC6804 (ראה עמודים 51 ו -53 בגיליון הנתונים של LTC6804). פונקציית הלולאה של קוד ה- Arduino מזהה את קטע חבילת הסוללות במתח הגבוה ביותר וממקמת את מספרו במשתנה cellMax_i. אם המתח של cellMax_i גדול מה- CELL_BALANCE_THRESHOLD_V, הקוד יקרא לפונקציה balance_cfg (), ויעביר את מספר הפלח הגבוה, cellMax_i. הפונקציה balance_cfg קובעת את הערכים של הרשם LTC6804 המתאים. שיחה ל- LTC6804_wrcfg לאחר מכן כותבת ערכים אלה ל- IC, ומפעילה את סיכת ה- S המשויכת ל- cellMax_i.

מוּמלָץ: