สารบัญ:

Arduino LTC6804 BMS - ตอนที่ 2: บอร์ดบาลานซ์: 5 ขั้นตอน
Arduino LTC6804 BMS - ตอนที่ 2: บอร์ดบาลานซ์: 5 ขั้นตอน

วีดีโอ: Arduino LTC6804 BMS - ตอนที่ 2: บอร์ดบาลานซ์: 5 ขั้นตอน

วีดีโอ: Arduino LTC6804 BMS - ตอนที่ 2: บอร์ดบาลานซ์: 5 ขั้นตอน
วีดีโอ: Processing Li-Ion batteries and the new Arduino 8x Charger / Discharger (tester) working 2024, พฤศจิกายน
Anonim
Arduino LTC6804 BMS - ส่วนที่ 2: บอร์ดบาลานซ์
Arduino LTC6804 BMS - ส่วนที่ 2: บอร์ดบาลานซ์

ตอนที่ 1 มาแล้วจ้า

ระบบจัดการแบตเตอรี่ (BMS) มีฟังก์ชันการทำงานเพื่อตรวจจับพารามิเตอร์ของชุดแบตเตอรี่ที่สำคัญ รวมถึงแรงดันไฟฟ้าของเซลล์ กระแสของแบตเตอรี่ อุณหภูมิของเซลล์ ฯลฯ หากสิ่งเหล่านี้อยู่นอกช่วงที่กำหนดไว้ล่วงหน้า คุณสามารถถอดชุดออกจากโหลดหรือเครื่องชาร์จได้ หรือสามารถดำเนินการอื่นๆ ที่เหมาะสมได้ ในโครงการก่อนหน้านี้ (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) ฉันได้พูดถึงการออกแบบ BMS ของฉันซึ่งใช้ Linear Technology LTC6804 Multicell Battery Monitor chip และไมโครคอนโทรลเลอร์ Arduino. โปรเจ็กต์นี้ขยายโปรเจ็กต์ BMS โดยเพิ่มการปรับสมดุลของแบตเตอรี

ก้อนแบตเตอรี่ถูกสร้างขึ้นจากเซลล์แต่ละเซลล์ในการกำหนดค่าแบบขนานและ/หรือแบบอนุกรม ตัวอย่างเช่น แพ็ค 8p12s จะถูกสร้างขึ้นโดยใช้ชุดที่เชื่อมต่อ 12 ชุดจาก 8 เซลล์ที่เชื่อมต่อแบบขนาน ในแพ็คจะมีทั้งหมด 96 เซลล์ เพื่อประสิทธิภาพที่ดีที่สุด เซลล์ 96 เซลล์ควรมีคุณสมบัติที่ใกล้เคียงกัน อย่างไรก็ตาม จะมีความแตกต่างระหว่างเซลล์อยู่เสมอ ตัวอย่างเช่น บางเซลล์อาจมีความจุต่ำกว่าเซลล์อื่นๆ เมื่อชาร์จแพ็ค เซลล์ที่มีความจุต่ำกว่าจะถึงระดับแรงดันไฟฟ้าที่ปลอดภัยสูงสุดก่อนส่วนที่เหลือของแพ็ค BMS จะตรวจจับไฟฟ้าแรงสูงนี้และตัดการชาร์จเพิ่มเติม ผลที่ได้คือแพ็คส่วนใหญ่ไม่ได้ชาร์จจนเต็มเมื่อ BMS ตัดการชาร์จเนื่องจากแรงดันไฟฟ้าที่สูงขึ้นของเซลล์ที่อ่อนแอที่สุด ไดนามิกที่คล้ายคลึงกันอาจเกิดขึ้นได้ในระหว่างการคายประจุ เมื่อเซลล์ที่มีความจุสูงกว่าไม่สามารถคายประจุได้อย่างสมบูรณ์เนื่องจาก BMS จะตัดการเชื่อมต่อโหลดเมื่อแบตเตอรี่ที่อ่อนที่สุดถึงขีดจำกัดแรงดันไฟฟ้าต่ำ ดังนั้นแพ็คจึงดีพอๆ กับแบตเตอรี่ที่อ่อนที่สุด เหมือนกับโซ่ที่แข็งแรงพอๆ กับตัวเชื่อมที่อ่อนที่สุดเท่านั้น

วิธีแก้ไขปัญหานี้คือการใช้กระดานดุล แม้ว่าจะมีกลยุทธ์มากมายในการปรับสมดุลของแพ็ค แต่แผงบาลานซ์ 'แบบพาสซีฟ' ที่ง่ายที่สุดได้รับการออกแบบมาเพื่อลดประจุของเซลล์แรงดันไฟฟ้าสูงสุดบางส่วนเมื่อแพ็คใกล้จะชาร์จเต็มแล้ว แม้ว่าพลังงานบางส่วนจะสูญเสียไป แต่โดยรวมแล้วแพ็คสามารถเก็บพลังงานได้มากกว่า เลือดออกทำได้โดยการกระจายพลังงานบางส่วนผ่านชุดตัวต้านทาน/สวิตช์ที่ควบคุมโดยไมโครคอนโทรลเลอร์ คำแนะนำนี้อธิบายระบบสมดุลแบบพาสซีฟที่เข้ากันได้กับ Arduino / LTC6804 BMS จากโครงการก่อนหน้า

เสบียง

คุณสามารถสั่งซื้อ Balance Board PCB จาก 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) กลุ่มการลงทะเบียนเหล่านี้ถูกตั้งค่าในโค้ด Arduino (อธิบายไว้ด้านล่าง) ในฟังก์ชัน balance_cfg

ขั้นตอนที่ 2: แผนผัง

แผนผัง
แผนผัง

แผนผังสำหรับบอร์ดดุล BMS ได้รับการออกแบบโดยใช้ Eagle CAD มันค่อนข้างตรงไปตรงมา มีวงจรตกเลือดหนึ่งวงจรสำหรับชุดแบตเตอรี่แต่ละชุด สวิตช์ควบคุมโดยสัญญาณจาก LTC6804 ผ่านส่วนหัว JP2 กระแสไฟตกไหลจากก้อนแบตเตอรี่ผ่านส่วนหัว JP1 โปรดทราบว่ากระแสตกไหลจะไหลไปยังส่วนชุดแบตเตอรี่ที่ต่ำกว่าถัดไป ตัวอย่างเช่น C9 ตกไปที่ C8 เป็นต้น สัญลักษณ์ Arduino Uno shield จะถูกวางบนแผนผังสำหรับเค้าโครง PCB ที่อธิบายไว้ในขั้นตอนที่ 3 ให้ภาพที่มีความละเอียดสูงกว่า ในไฟล์ซิป ต่อไปนี้เป็นรายการชิ้นส่วน (ด้วยเหตุผลบางอย่างคุณสมบัติการอัปโหลดไฟล์ที่สอนไม่ได้ผลสำหรับฉัน….)

รายละเอียดชิ้นส่วนแพ็คเกจอุปกรณ์มูลค่าจำนวน

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, Q4, Q5, Q6, Q7, Q8, 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, American symbol 12 1K R-US_R0805 R0805 R4, R6, R8, R10, R12, R14, R16, R18, R20, R22, R24, R26 RESISTOR, American symbol 12 200 R-US_R0805 R0805 R1, R2, R3, R28, R29, R30, R31, R32, R33, R34, R35, R36 ตัวต้านทาน, สัญลักษณ์อเมริกัน

ขั้นตอนที่ 3: เค้าโครง PCB

เค้าโครง PCB
เค้าโครง PCB

เลย์เอาต์ส่วนใหญ่จะถูกกำหนดโดยการออกแบบของระบบ BMS หลักที่กล่าวถึงในคำแนะนำแยกต่างหาก (https://www.instructables.com/id/Arduino-LTC6804-Battery-Management-System/) ส่วนหัว JP1 และ JP2 ต้องตรงกับส่วนหัวที่ตรงกันใน BMS Mosfets ตัวต้านทานตกเลือด และไฟ LED ถูกจัดเรียงอย่างสมเหตุสมผลบน Arduino Uno shield ไฟล์ Gerber ถูกสร้างขึ้นโดยใช้ Eagle CAD และ PCB ถูกส่งไปยัง Sierra Circuits เพื่อการผลิต

ไฟล์แนบ "Gerbers Balance Board.zip.txt" เป็นไฟล์ zip ที่มี Gerbers คุณสามารถลบส่วน.txt ของชื่อไฟล์แล้วคลายซิปได้เหมือนกับไฟล์ zip ปกติ

ส่งข้อความถึงฉันหากคุณต้องการรับ PCB ฉันอาจยังมีเหลืออยู่บ้าง

ขั้นตอนที่ 4: การประกอบ PCB

PCB ของบอร์ดบาลานซ์ถูกบัดกรีด้วยมือโดยใช้สถานีบัดกรีที่ควบคุมอุณหภูมิ Weller WESD51 พร้อมปลาย "ไขควง" ซีรีส์ ETB ET 0.093 และหัวแร้ง 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

แนะนำ: