สารบัญ:

ตัวทดสอบความจุแบตเตอรี่อีกตัว: 6 ขั้นตอน
ตัวทดสอบความจุแบตเตอรี่อีกตัว: 6 ขั้นตอน

วีดีโอ: ตัวทดสอบความจุแบตเตอรี่อีกตัว: 6 ขั้นตอน

วีดีโอ: ตัวทดสอบความจุแบตเตอรี่อีกตัว: 6 ขั้นตอน
วีดีโอ: การขนานแบตเตอรี่แพ็ค ที่มีค่าความจุเท่ากัน แต่มีแรงดันแตกต่างกัน 2024, กรกฎาคม
Anonim
เครื่องทดสอบความจุแบตเตอรี่อีกเครื่องหนึ่ง
เครื่องทดสอบความจุแบตเตอรี่อีกเครื่องหนึ่ง
เครื่องทดสอบความจุแบตเตอรี่อีกเครื่องหนึ่ง
เครื่องทดสอบความจุแบตเตอรี่อีกเครื่องหนึ่ง

ทำไมต้องมีเครื่องทดสอบความจุอีกหนึ่งเครื่อง

ฉันอ่านคำแนะนำในการสร้างผู้ทดสอบที่แตกต่างกันมากมาย แต่ดูเหมือนจะไม่มีคำแนะนำใดที่ตรงกับความต้องการของฉัน ฉันต้องการทดสอบมากกว่าแค่เซลล์ NiCd/NiMH หรือ Lion ฉันต้องการทดสอบแบตเตอรี่เครื่องมือไฟฟ้าโดยไม่ต้องถอดประกอบก่อน ดังนั้นฉันจึงตัดสินใจที่จะพิจารณาเรื่องนี้อย่างละเอียดยิ่งขึ้นและออกแบบด้วยตัวเอง สิ่งหนึ่งนำไปสู่อีกสิ่งหนึ่งและในที่สุดฉันก็ตัดสินใจเขียนคำสั่งสอนด้วยตัวเอง ฉันยังตัดสินใจที่จะไม่ลงรายละเอียดทั้งหมดเกี่ยวกับวิธีสร้างตัวทดสอบจริง ๆ เพราะทุกคนสามารถตัดสินใจเกี่ยวกับตัวเลือกบางอย่าง เช่น ตัวต้านทานขนาดใดที่จะใช้ หรือถ้าจำเป็นต้องใช้ PCB หรือ Veroboard เพียงพอ และยังมีคำแนะนำอีกมากมายเกี่ยวกับวิธีการ ติดตั้ง eagle หรือวิธีการทำ PCB กล่าวอีกนัยหนึ่ง ฉันจะเน้นที่แผนผังและโค้ด และวิธีการสอบเทียบเครื่องทดสอบ

ขั้นตอนที่ 1: ประวัติ - เวอร์ชัน 1

ประวัติ - เวอร์ชัน 1
ประวัติ - เวอร์ชัน 1

ด้านบนเป็นรุ่นแรกที่มีการเพิ่มการรองรับอินพุต 10V ที่กล่าวถึงด้านล่าง (R12&R17&Q11&Q12)

เวอร์ชันแรกถูกนำมาจาก deba168 ที่สอนได้ไม่มากก็น้อย (น่าเสียดายที่ฉันไม่พบคำแนะนำของเขาในการให้ลิงก์) มีการเปลี่ยนแปลงเพียงเล็กน้อยเท่านั้น ในเวอร์ชันนี้ ฉันมีตัวต้านทานโหลด 10 โอห์มหนึ่งตัวที่ควบคุมโดยมอสเฟต สิ่งนี้ทำให้เกิดปัญหาบางอย่าง เมื่อทำการทดสอบเซลล์ NiCd หรือ NiMH หนึ่งเซลล์ เวลาที่ต้องการจะวัดได้ง่ายในหน่วยชั่วโมงหากไม่ใช่วัน แบตเตอรี่ 1500mAh ใช้เวลานานกว่า 12 ชั่วโมง (กระแสไฟเหลือเพียง 120mA) ในทางกลับกัน รุ่นแรกสามารถทดสอบได้เฉพาะแบตเตอรี่ที่มีแรงดันต่ำกว่า 10V และแบตเตอรี่ 9.6V ที่ชาร์จจนเต็มแล้วสามารถสูงถึง 11.2V ซึ่งไม่สามารถทดสอบได้เนื่องจากขีด จำกัด 10V บางสิ่งบางอย่างที่ต้องทำ อันดับแรก ฉันเพิ่งเพิ่มมอสเฟตและตัวต้านทานสองสามตัวเพื่อให้ตัวแบ่งแรงดันไฟฟ้าสามารถให้มากกว่า 10V แต่กลับทำให้เกิดปัญหาอีกอย่างหนึ่งขึ้นมา แบตเตอรี่ 14.4V ที่โหลดจนเต็มสามารถมีได้ถึง 16.8V ซึ่งตัวต้านทาน 10 โอห์มหมายถึงกระแส 1.68A และแน่นอนว่ามีการกระจายพลังงานจากตัวต้านทานโหลดเกือบ 30W ดังนั้นด้วยแรงดันไฟต่ำเวลาทดสอบนานเกินไปและด้วยกระแสไฟสูงเกินไป เห็นได้ชัดว่าไม่ใช่วิธีแก้ปัญหาที่เพียงพอและจำเป็นต้องมีการพัฒนาเพิ่มเติม

ขั้นตอนที่ 2: เวอร์ชัน 2

ฉันต้องการวิธีแก้ปัญหาที่กระแสจะยังคงอยู่ในขีดจำกัดโดยไม่คำนึงถึงแรงดันแบตเตอรี่ ทางออกหนึ่งคือการใช้ PWM และตัวต้านทานเพียงตัวเดียว แต่ฉันชอบที่จะมีวิธีแก้ปัญหาที่ไม่มีกระแสเต้นเป็นจังหวะหรือต้องการกระจายความร้อนของมอสเฟต ดังนั้นฉันจึงสร้างโซลูชันที่มีช่องเสียบแรงดันไฟฟ้า 10 ช่อง แต่ละช่องกว้าง 2V โดยใช้ตัวต้านทาน 10 ตัว 3.3ohm และมอสเฟตสำหรับตัวต้านทานแต่ละตัว

ขั้นตอนที่ 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
  • พัดลม CPU เก่า 1 ตัว

ฉันไม่ได้เพิ่มสิ่งต่อไปนี้ในแผนผัง

  • ตัวต้านทานแบบดึงขึ้นบนสาย I2C ซึ่งฉันสังเกตเห็นว่าทำให้จอแสดงผลมีเสถียรภาพมากขึ้น
  • สายไฟ
  • ตัวเก็บประจุในสาย 5V ซึ่งทำให้จอแสดงผลมีเสถียรภาพ

ขณะทำการทดสอบ ฉันสังเกตว่าตัวต้านทานโหลดจะค่อนข้างร้อนโดยเฉพาะอย่างยิ่งหากใช้งานอยู่ทั้งหมด อุณหภูมิเพิ่มสูงขึ้นกว่า 100 องศาเซลเซียส (ซึ่งมากกว่า 212 องศาฟาเรนไฮต์) และถ้าจะปิดทั้งระบบในกล่องก็ควรจะมีการระบายความร้อนบางอย่างให้ ตัวต้านทานที่ฉันใช้คือ 3.3 โอห์ม / 5W และกระแสสูงสุดควรเกิดขึ้นกับประมาณ 2V ต่อตัวต้านทาน โดยให้ 2V / 3.3 = 0.61A ซึ่งส่งผลให้ 1.21W ฉันลงเอยด้วยการเพิ่มพัดลมธรรมดาในกล่อง ส่วนใหญ่เป็นเพราะฉันบังเอิญมีพัดลม CPU ตัวเก่าอยู่รอบๆ

ฟังก์ชั่นแผนผัง

มันค่อนข้างตรงไปตรงมาและอธิบายตนเองได้ แบตเตอรี่ที่จะทดสอบเชื่อมต่อกับชุดของตัวต้านทานและกราวด์ จุดวัดแรงดันไฟฟ้าคือการเชื่อมต่อแบตเตอรี่และตัวต้านทานตัวแรก จากนั้นจึงใช้ตัวแบ่งแรงดันไฟฟ้าเพื่อลดแรงดันไฟฟ้าให้อยู่ในระดับที่เหมาะสมกับ Arduino มากกว่า เอาต์พุตดิจิตอลหนึ่งตัวใช้เพื่อเลือกช่วง 10V หรือ 20V ของตัวแบ่ง ตัวต้านทานแต่ละตัวในโหลดสามารถต่อลงดินได้โดยใช้มอสเฟต ซึ่งขับเคลื่อนโดย Arduino โดยตรง และสุดท้าย จอภาพเชื่อมต่อกับพิน Arduino I2C ไม่มากที่จะพูดเกี่ยวกับแผนผังJ

ขั้นตอนที่ 4: รหัส

รหัส
รหัส

ด้านบนสามารถเห็นการทำงานคร่าวๆ ของโค้ด มาดูโค้ดกันดีกว่า (แนบไฟล์ arduino ino มาด้วย) มีฟังก์ชั่นหลายอย่างแล้วลูปหลัก

วงหลัก

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

ขั้นตอนแสดงผล

ฟังก์ชัน showResults จะตั้งค่าบรรทัดที่จะแสดงบนจอแสดงผลและสตริงที่จะส่งไปยังอินเทอร์เฟซแบบอนุกรม

ขั้นตอนการวัดแรงดันไฟฟ้า

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

ขั้นตอนการเลือกค่าที่ใช้

ในฟังก์ชัน selectUsedValues จำนวนเซลล์จะถูกคาดเดา และขีดจำกัดสูงสุดและต่ำสุดของแบตเตอรี่ถูกตั้งค่าให้ใช้กับขั้นตอนการคายประจุ นอกจากนี้ การวัดจะถูกทำเครื่องหมายเป็นเริ่มต้น ขีดจำกัดสำหรับขั้นตอนนี้ถูกกำหนดไว้ที่จุดเริ่มต้นของตัวแปรส่วนกลาง แม้ว่าค่าเหล่านี้จะคงที่ และยังสามารถกำหนดได้ภายในขั้นตอน เนื่องจากไม่ได้ใช้ทั่วโลก แต่เดี๋ยวก่อน มีอะไรให้ปรับปรุงอยู่เสมอ:)

ขั้นตอนการคำนวณความจุของแบตเตอรี่

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

ขั้นตอนการหาจำนวนตัวต้านทานที่จะใช้

ในฟังก์ชัน selectNumOfResistors จะทำการเปรียบเทียบแรงดันไฟฟ้ากับค่าที่ตั้งไว้ล่วงหน้าอย่างง่าย จากนั้นจึงตัดสินใจเลือกจำนวนตัวต้านทานที่จะใช้ เปิดมอสเฟตที่เหมาะสมเพื่อข้ามตัวต้านทานบางตัว ช่องเสียบแรงดันไฟฟ้าถูกเลือกเพื่อให้กระแสสูงสุดตลอดเวลาในระหว่างการคายประจุจะอยู่ที่ 600mA เล็กน้อย (2V/3.3Ohm=606mA) ฟังก์ชันส่งคืนจำนวนตัวต้านทานที่ใช้ เนื่องจากพัดลมถูกขับออกจากแนวเดียวกันกับมอสเฟตตัวแรกจึงต้องเปิดอยู่เสมอเมื่อปล่อยประจุออก

ขั้นตอนที่ 5: การปรับเทียบมิเตอร์

การปรับเทียบมิเตอร์
การปรับเทียบมิเตอร์

เพื่อให้มีการปรับเทียบมิเตอร์ ฉันได้สร้างแอปอื่น (แนบมาด้วย) มันใช้ฮาร์ดแวร์ตัวเดียวกัน ในช่วงเริ่มต้น ค่าตัวแบ่งการแก้ไขจะถูกตั้งค่าเป็น 1,000 ทั้งหมด

const int divCorrectionB10V = 1,000; // ตัวคูณการแก้ไขตัวหารในช่วง 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 อย่างรวดเร็ว

แนะนำ: