มิเตอร์ดิจิตอลสำหรับความจุและความต้านทานภายในของแบตเตอรี่ อุปกรณ์สำหรับวัดความจุของแบตเตอรี่ วิธีการพื้นฐาน วงจรวัดความจุของแบตเตอรี่ลิเธียมไอออน

อุปกรณ์นี้ได้รับการออกแบบมาเพื่อวัดความจุของแบตเตอรี่ Li-ion และ Ni-Mh ตลอดจนชาร์จแบตเตอรี่ Li-ion โดยเลือกกระแสไฟชาร์จเริ่มต้นได้

ควบคุม

เราเชื่อมต่ออุปกรณ์กับแหล่งจ่ายไฟที่เสถียร 5V และกระแส 1A (เช่นจากโทรศัพท์มือถือ) ตัวบ่งชี้จะแสดงผลการวัดความจุไฟฟ้าก่อนหน้านี้ “xxxxmA/c” เป็นเวลา 2 วินาที และบนบรรทัดที่สองคือค่าของการลงทะเบียน OCR1A “S.xxx” เราใส่แบตเตอรี่ หากคุณต้องการชาร์จแบตเตอรี่ ให้กดปุ่ม CHARGE สั้นๆ หากต้องการวัดความจุ ให้กดปุ่ม TEST สั้นๆ หากคุณต้องการเปลี่ยนกระแสการชาร์จ (ค่าของการลงทะเบียน OCR1A) ให้กดปุ่ม CHARGE เป็นเวลานาน (2 วินาที) ไปที่หน้าต่างการปรับการลงทะเบียน มาปล่อยปุ่มกันเถอะ โดยการกดปุ่ม CHARGE สั้นๆ เราจะเปลี่ยนค่ารีจิสเตอร์ (50-75-100-125-150-175-200-225) เป็นวงกลม บรรทัดแรกจะแสดงกระแสการชาร์จของแบตเตอรี่เปล่าตามค่าที่เลือก (โดยมีเงื่อนไขว่าคุณมีตัวต้านทาน 0 ในวงจร 22 โอห์ม) กดปุ่ม TEST สั้น ๆ ค่าของการลงทะเบียน OCR1A จะถูกเก็บไว้ในหน่วยความจำแบบไม่ลบเลือน
หากคุณดำเนินการปรับแต่งอุปกรณ์หลายอย่างและจำเป็นต้องรีเซ็ตนาฬิกาหรือความจุที่วัดได้ ให้กดปุ่ม TEST เป็นเวลานาน (ค่าของการลงทะเบียน OCR1A จะไม่ถูกรีเซ็ต) ทันทีที่การชาร์จเสร็จสมบูรณ์ ไฟแบ็คไลท์ของจอแสดงผลจะดับลง หากต้องการเปิดไฟแบ็คไลท์ ให้กดปุ่ม TEST หรือ CHARGE สั้นๆ

ตรรกะการทำงานของอุปกรณ์มีดังนี้:

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

หากแรงดันไฟฟ้ามากกว่า 2V แสดงว่าเป็นแบตเตอรี่ Li-ion และแรงดันไฟฟ้าจำหน่ายเต็มจะเป็น 2.9V มิฉะนั้นจะเป็นแบตเตอรี่ Ni-MH และแรงดันไฟฟ้าจำหน่ายเต็มจะเป็น 1V ปุ่มควบคุมใช้งานได้หลังจากเชื่อมต่อแบตเตอรี่แล้วเท่านั้น ต่อไปเครื่องจะรอให้กดปุ่ม Test หรือ Charge หน้าจอแสดง "_STOP" เมื่อคุณกดปุ่ม Test สั้นๆ โหลดจะเชื่อมต่อผ่าน MOSFET

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

จอแสดงผลจะแสดงค่าปัจจุบันของความจุของแบตเตอรี่ "xxxxmA/s" และช่องคายประจุ "A.xxx" รวมถึงเวลา "xx:xx:xx" นับจากวินาทีที่กดปุ่ม ไอคอนแบตเตอรี่เหลือน้อยแบบเคลื่อนไหวจะปรากฏขึ้นมาด้วย เมื่อสิ้นสุดการทดสอบแบตเตอรี่ Ni-MH ข้อความ "_STOP" จะปรากฏขึ้น ผลการวัดจะแสดงบนจอแสดงผล "xxxxmA/c" และจะถูกจดจำไว้

หากแบตเตอรี่เป็น Li-ion ผลการวัดจะแสดงบนจอแสดงผล “xxxxmA/c” ด้วยและจะถูกจดจำไว้ แต่โหมดการชาร์จจะเปิดใช้งานทันที หน้าจอแสดงเนื้อหาของรีจิสเตอร์ OCR1A "S.xxx" ไอคอนการชาร์จแบตเตอรี่แบบเคลื่อนไหวจะแสดงขึ้นด้วย

กระแสไฟชาร์จจะถูกปรับโดยใช้ PWM และจำกัดด้วยตัวต้านทาน 0.22 โอห์ม ในฮาร์ดแวร์ กระแสประจุสามารถลดลงได้โดยการเพิ่มความต้านทานจาก 0.22 โอห์มเป็น 0.5-1 โอห์ม เมื่อเริ่มชาร์จกระแสจะค่อยๆ เพิ่มเป็นค่ารีจิสเตอร์ OCR1A หรือจนกระทั่งแรงดันไฟฟ้าที่ขั้วแบตเตอรี่ถึง 4.22V (หากชาร์จแบตเตอรี่แล้ว)

ปริมาณประจุกระแสจะขึ้นอยู่กับค่าของรีจิสเตอร์ OCR1A ยิ่งค่ามาก กระแสประจุก็จะยิ่งมากขึ้น เมื่อแรงดันไฟฟ้าที่ขั้วแบตเตอรี่เกิน 4.22V ค่าของรีจิสเตอร์ OCR1A จะลดลง กระบวนการชาร์จจะดำเนินต่อไปจนกว่าค่ารีจิสเตอร์ OCR1A จะเป็น 33 ซึ่งสอดคล้องกับกระแสประมาณ 40 mA การดำเนินการนี้จะสิ้นสุดการเรียกเก็บเงิน ไฟแบ็คไลท์ของจอแสดงผลจะดับลง

การตั้งค่า

1. เชื่อมต่อสายไฟ
2. เชื่อมต่อแบตเตอรี่
3. เชื่อมต่อโวลต์มิเตอร์เข้ากับแบตเตอรี่
4. การใช้ปุ่ม + และ - ชั่วคราว (PB4 และ PB5) เราตรวจสอบให้แน่ใจว่าการอ่านค่าโวลต์มิเตอร์บนจอแสดงผลและโวลต์มิเตอร์อ้างอิงตรงกัน
5. กดปุ่ม TEST ค้างไว้ (2 วินาที) การท่องจำจะเกิดขึ้น
6. ถอดแบตเตอรี่ออก
7. เชื่อมต่อโวลต์มิเตอร์กับตัวต้านทาน 5.1 โอห์ม (ตามแผนภาพใกล้กับทรานซิสเตอร์ 09N03LA)
8. เชื่อมต่อแหล่งจ่ายไฟแบบปรับได้เข้ากับขั้วแบตเตอรี่ ตั้งค่าแหล่งจ่ายไฟเป็น 4V
9. กดปุ่ม TEST สั้นๆ
10. เราวัดแรงดันไฟฟ้าของตัวต้านทาน 5.1 โอห์ม - U.
11. คำนวณกระแสคายประจุ I=U/5.1
12. การใช้ปุ่มชั่วคราว + และ - (PB4 และ PB5) เราตั้งค่ากระแสคายประจุที่คำนวณได้ I บนตัวบ่งชี้ "A.xxx"
13. กดปุ่ม TEST ค้างไว้ (2 วินาที) การท่องจำจะเกิดขึ้น

อุปกรณ์นี้ใช้พลังงานจากแหล่งที่มีความเสถียรด้วยแรงดันไฟฟ้า 5 โวลต์และกระแสไฟฟ้า 1A ควอตซ์ที่ 32768Hz ได้รับการออกแบบมาเพื่อการรักษาเวลาที่แม่นยำ คอนโทรลเลอร์ ATmega8 นั้นโอเวอร์คล็อกจากออสซิลเลเตอร์ภายในด้วยความถี่ 8 MHz และจำเป็นต้องตั้งค่าการป้องกันการลบ EEPROM ด้วยบิตการกำหนดค่าที่เหมาะสม เมื่อเขียนโปรแกรมควบคุม จะใช้บทความทางการศึกษาจากไซต์นี้

ค่าปัจจุบันของแรงดันและค่าสัมประสิทธิ์กระแส (Ukof. Ikof) สามารถดูได้หากคุณเชื่อมต่อจอแสดงผล 16x4 (16x4 จะดีกว่าสำหรับการดีบัก) ในบรรทัดที่สาม หรือใน Ponyprog หากคุณเปิดไฟล์เฟิร์มแวร์ EEPROM (อ่านจากคอนโทรลเลอร์ EEPROM)
1 ไบต์ - OCR1A, 2 ไบต์ - I_kof, 3 ไบต์ - U_kof, 4 และ 5 ไบต์เป็นผลจากการวัดความจุครั้งก่อน

วิดีโอการทำงานของอุปกรณ์:


อุปกรณ์ที่นำเสนอได้รับการออกแบบมาเพื่อวัดความจุและความต้านทานภายในของแบตเตอรี่ Ni-Cd และ Ni-MH มีเสียงบ่งชี้ว่าแรงดันแบตเตอรี่ต่ำเกินไปรวมถึงช่วงเวลาสิ้นสุดการคายประจุ

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

แผนภาพอุปกรณ์แสดงในรูป 1. พื้นฐานของมันคือไมโครคอนโทรลเลอร์ ATmedav (DD1) แป้นพิมพ์ที่มีอินเทอร์เฟซแบบสายเดี่ยวประกอบด้วยปุ่ม 6 ปุ่ม SB1-SB6 ข้อมูลเกี่ยวกับพารามิเตอร์แบตเตอรี่ที่วัดได้จะแสดงบนไฟ LED แสดงสถานะ HG1 เก้าหลัก ในการคายประจุแบตเตอรี่ที่เชื่อมต่ออยู่ จะใช้แหล่งจ่ายกระแสที่ควบคุมแรงดันไฟฟ้า (VTUN) กับ op-amp DA2, ทรานซิสเตอร์ VT1, ตัวต้านทาน R9, R10, R19-R21, R23 และตัวเก็บประจุ C7, C9

หากแรงดันไฟฟ้าของแบตเตอรี่ที่เชื่อมต่ออยู่ต่ำกว่า 1 V แป้นพิมพ์ของอุปกรณ์จะถูกล็อค และแคปซูล BF1 จะส่งเสียงพัลส์เป็นระยะ ๆ สามครั้งที่ความถี่ 600 Hz หากแรงดันไฟฟ้าของแบตเตอรี่สูงกว่า 1 V แคปซูล BF1 จะส่งเสียงพัลส์เสียงเป็นระยะ ๆ สองครั้งที่ความถี่ 3000 Hz เมื่อเชื่อมต่อแบตเตอรี่ และเมื่อคายประจุจนเสร็จสิ้นตามแรงดันไฟฟ้าที่ตั้งไว้แล้ว

หลังจากเชื่อมต่อแบตเตอรี่แล้วให้ตั้งค่าแรงดันไฟฟ้าที่ต้องระบายออกโดยกดปุ่ม SB3 และ SB4 ขั้นตอนการตั้งค่าเมื่อกดสั้น ๆ คือ 0.1 V เมื่อคุณกดปุ่มค้างไว้ค่าสิบขั้นตอนแรกคือ 0.1 V จากนั้น 1 V จากนั้นเมื่อกดปุ่ม SB1 และ SB2 กระแสไฟจะถูกตั้งค่า หากกดปุ่มเหล่านี้ค้างไว้น้อยกว่าห้าวินาที ค่าปัจจุบันจะไม่เปลี่ยนแปลงและค่าปัจจุบันจะแสดงดังที่แสดงในรูปภาพในรูปที่ 2 (สัญลักษณ์ і อยู่ในตำแหน่งล่าง) หากกดปุ่ม SB1 และ SB2 ค้างไว้นานกว่าห้าวินาที ค่าปัจจุบันจะเปลี่ยนเป็นขั้นแปรผัน: 50 mA แรก จากนั้น 150 mA ในกรณีนี้สัญลักษณ์ і จะปรากฏที่ตำแหน่งบนสุด ดังแสดงในรูปภาพในรูป 3.

ค่าสูงสุดของกระแสคายประจุคือ 2.55 A ทันทีที่กระแสคายประจุถึงค่าที่มากกว่าศูนย์ (เมื่อแรงดันแบตเตอรี่มากกว่าเกณฑ์ที่ตั้งไว้หรือเท่ากับค่านั้น) สัญญาณเสียงจะหายไปและไฟ LED HL1 จะเริ่มทำงาน ให้กระพริบด้วยความถี่ 0.25 เฮิรตซ์ เมื่อคุณกดปุ่ม SB5 แรงดันไฟฟ้าที่ไม่มีโหลดจะถูกวัดและจัดเก็บจากนั้นภายใต้โหลดจะคำนวณความต้านทานภายในเป็นโอห์มซึ่งจะแสดงเป็นตัวเลขลำดับต่ำของตัวบ่งชี้ที่มีสัญลักษณ์ g ดังที่แสดงในรูปภาพ ในรูป 4.

เมื่อคุณกดปุ่ม SB6 ตัวเลขสูงสุดของตัวบ่งชี้ HG1 จะแสดงแรงดันไฟฟ้าของแบตเตอรี่ในปัจจุบัน เมื่อไม่มีการกดปุ่ม ตัวเลขสูงของตัวบ่งชี้ HG1 จะแสดงแรงดันไฟฟ้าที่ต้องคายประจุแบตเตอรี่ และตัวเลขต่ำจะแสดงความจุในรูปแบบ XX.XX แอมแปร์-ชั่วโมง ศูนย์ที่ไม่มีนัยสำคัญสิบโวลต์และแอมแปร์ชั่วโมงจะถูกยกเลิกโดยซอฟต์แวร์

ชิ้นส่วนส่วนใหญ่ติดตั้งบนแผงวงจรพิมพ์ที่ทำจากไฟเบอร์กลาสเคลือบฟอยล์ด้านเดียวซึ่งมีภาพวาดแสดงในรูปที่ 1 5 สี่เหลี่ยมบางๆ แสดงส่วนประกอบที่ยึดบนพื้นผิว R7, R8 และ C5 ที่ติดตั้งที่ด้านข้างของตัวนำวงจรพิมพ์

เพื่อให้แน่ใจว่ากระแส ITUN เป็นเส้นตรงตลอดช่วงเวลาทั้งหมด จำเป็นต้องใช้ op-amp DA2 ที่มีแรงดันไฟฟ้าออฟเซ็ตเป็นศูนย์ต่ำที่สุดที่เป็นไปได้และทรานซิสเตอร์ VT1 ที่มีแรงดันไฟฟ้าเกณฑ์ต่ำ ในสำเนาของผู้เขียน แรงดันไบแอสเป็นศูนย์ของ op-amp DA2 อยู่ที่ประมาณ 4 mV และทรานซิสเตอร์ VT1 ที่มีแรงดันไฟฟ้าเกณฑ์ที่ 1.85 V ที่กระแสระบายที่ 1 A ความไม่เชิงเส้นของกระแส ITUN ไม่เกิน 10% ค่าต่ำสุดของกระแส ITUN คือไม่เกิน 2 mA มีการติดตั้งทรานซิสเตอร์ VT1 โดยไม่มีตัวระบายความร้อน เพื่อระบายความร้อนให้ใช้พัดลมจากโปรเซสเซอร์คอมพิวเตอร์ พัดลมและอุปกรณ์ได้รับพลังงานจากอะแดปเตอร์เครือข่ายที่ไม่เสถียรซึ่งมีแรงดันเอาต์พุต 9.. 12 V และกระแสโหลดอย่างน้อย 0.5 A

การตั้งค่าประกอบด้วยการเลือกตัวต้านทาน R6 และ R9 เมื่อเลือกตัวต้านทาน R6 การอ่านตัวเลขที่สำคัญที่สุดของตัวบ่งชี้ HG1 จะถูกกำหนดโดยใช้โวลต์มิเตอร์มาตรฐาน ถัดไปโดยการกดปุ่ม SB1 และ SB2 ค่าที่ต้องการของกระแสคายประจุจะแสดงบนตัวบ่งชี้ HG1 วัดกระแส ITUN ด้วยแอมป์มิเตอร์มาตรฐานและเลือกตัวต้านทาน R9 และตั้งค่ากระแสที่วัดได้เท่ากับการอ่านของตัวบ่งชี้ HG1 .

ป.ล. หากไม่มีการกระตุ้นตัวเองของเครื่องกำเนิดสัญญาณนาฬิกาของไมโครคอนโทรลเลอร์ ควรเชื่อมต่อพิน 9 และ 10 กับสายสามัญผ่านตัวเก็บประจุที่มีความจุเท่ากัน 12...22 pF

สามารถดาวน์โหลดโปรแกรมไมโครคอนโทรลเลอร์ได้


วันที่ตีพิมพ์: 07.06.2012


ความคิดเห็นของผู้อ่าน
  • [ป้องกันอีเมล] / 18.07.2019 - 21:40
    เรียนคุณ Ozolin M.A. ฉันสร้างเลย์เอาต์ของวงจรวิทยุหมายเลข 7 ปี 2015 ของคุณบน ATtiny26 ตามที่ฉันเข้าใจ มีข้อผิดพลาดกับควอตซ์ในวงจร แผนภาพแสดงตัวสะท้อนสัญญาณนาฬิกา 32768Hz และฟิวส์ (H-17, L-EE) เริ่มทำงานด้วยควอตซ์ 4 MHz บางทีฟิวส์อาจระบุไม่ถูกต้อง? ช่วยบอกฉันที.. พิมพ์ผิดตรงไหน? เพื่อให้ไฟ LED กระพริบที่ความถี่ 0.5Hz ดังคำอธิบาย บางทีคุณอาจต้องการควอตซ์น้อยลง? ประเภท 3.2MHz/3.579575/3.68640/ เครื่องสะท้อนเสียงเซรามิก Piezoceramic ZTA 3.58 MHz? ไดอะแกรมนั้นเรียบง่ายและเจ๋ง ไม่มีอะไรฟุ่มเฟือย ตอนนี้มันทำงานที่ 4MHz ขอบคุณคุณ. ถ้าพูดถึงควอตซ์จะดีมากเลย ขอแสดงความนับถือโรมัน
  • โอโซลิน M. A / 05/11/2558 - 10:26 น
    ความต้านทาน R8 ควรเป็น 1 ไม่ใช่ 10 kOhm! ความผิดพลาดของบรรณาธิการนิตยสารวิทยุและผู้ที่ไม่ได้ดูได้โพสต์บทความไว้ที่นี่ ฉันชี้ให้เห็นข้อผิดพลาดนี้ให้พวกเขาทราบทันทีหลังจากที่บทความถูกตีพิมพ์และมีการเผยแพร่การแก้ไขในส่วน "คำปรึกษาของเรา" ลิงก์ไปยังไดอะแกรมการทำงาน http://maxoz.ru/newAk/newAk.gif
  • โอโซลิน M. A / 05/11/2558 - 10:13 น
    ท่านสุภาพบุรุษ Boris และ Alexander K.G ตรวจสอบความสามารถในการซ่อมบำรุงของชิ้นส่วน หรือค้นหาข้อผิดพลาดในการติดตั้ง! เฟิร์มแวร์ใช้งานได้และได้รับการทดสอบหลายครั้ง!
  • อเล็กซานเดอร์ จี.เค.
    / 23/04/2558 - 10:02 น
  • ฉันเห็นด้วยกับบอริส - โครงการนี้ใช้ไม่ได้! หลังจาก "เต้นรำกับแทมบูรีน" ก็ไม่เริ่มขึ้น สิ่งเดียวที่ตรวจจับได้คือแรงดันไฟฟ้าสูงหรือต่ำกว่า 1 V (เสียงบี๊บสามหรือสองครั้ง) คุณ M. Ozolin ไม่ตอบสนอง (!) - *.HEX ฉันจะไม่ถาม ธุรกิจไม่ดี....
    เซอร์เกย์ / 18/09/2556 - 07:36 น
  • จะตั้งค่าฟิวส์สำหรับเฟิร์มแวร์คอนโทรลเลอร์ได้อย่างไร?
    บอริส / 28/05/2556 - 06:59 น
  • วงจรไม่ทำงาน เมื่อกด ปุ่มทั้งหมดจะแสดงตัวเลขเดียวกันในตัวเลขที่มีนัยสำคัญน้อยที่สุดสองหลัก คุณเอ็ม โอโซลิน คุณจะตอบไหม?
    วิตาลี / 16/11/2555 - 03:55
  • B (ITUN) - เพื่อให้ได้ความเป็นเชิงเส้นที่ดีควรแทนที่ op-amp LM357N ด้วย MCP601
    อเล็กซานเดอร์ / 10.22.2012 - 17:10 น

สวัสดีชาว Datagoria! ฉันขอแนะนำให้คุณรู้จักกับผลงานชิ้นต่อไปของฉัน - เครื่องมือทดสอบความจุของแบตเตอรี่ แน่นอนว่าอุปกรณ์นี้ไม่ได้มีไว้สำหรับทุกวัน แต่บางครั้งคุณก็ทำไม่ได้ถ้าไม่มีมัน!

ฉันจำเป็นต้องวัดความจุที่เหลืออยู่ของแบตเตอรี่กรด ในฤดูหนาว ทุกแอมแปร์มีค่า อาจถึงเวลาเปลี่ยนแบตเตอรี่แล้ว การทดสอบง่ายๆ ด้วยส้อมบรรทุกและการวัดความหนาแน่นไม่เหมาะกับฉัน พวกเขาไม่ได้ให้ข้อมูลว่าฉันจะมีพลังงานเพียงพอในการอุ่นเครื่องรถ RV เป็นเวลา 40 นาที (ประมาณ 8 A/h) แล้วสตาร์ทรถหรือไม่ กับสตาร์ทเตอร์

วงจรทดสอบความจุแบตเตอรี่

เช่นเดียวกับเด็กคนอื่นๆ ที่เกิดมาพร้อมกับความเจ็บปวด สาเหตุหลักมาจากความผิดพลาดของ “สูติแพทย์”

ไม่รวมส่วนต่างๆ นิตยสารของเรามีอยู่จากการบริจาคจากผู้อ่าน บทความนี้ฉบับเต็มมีให้ใช้งานเท่านั้น



ตัวควบคุมการปล่อยควบคุม



ตำแหน่งฟิวส์เมื่อตั้งโปรแกรม ATmega8A MK


5. การจัดอันดับชิ้นส่วนทั้งหมดจะระบุไว้บนซอฟต์แวร์

--
ขอบคุณสำหรับความสนใจของคุณ!
อิกอร์ โคตอฟ บรรณาธิการบริหารนิตยสาร Datagor


แผงวงจรพิมพ์ใน LayOut: ▼ 🕗 24/10/14 ⚖️ 144.03 Kb ⇣ 124 สวัสดีผู้อ่าน!ฉันชื่ออิกอร์ อายุ 45 ปี เป็นชาวไซบีเรียและเป็นวิศวกรอิเล็กทรอนิกส์สมัครเล่นตัวยง ฉันคิดค้น สร้างสรรค์ และดูแลรักษาเว็บไซต์ที่ยอดเยี่ยมนี้มาตั้งแต่ปี 2549
เป็นเวลากว่า 10 ปีแล้วที่นิตยสารของเรามีอยู่โดยเสียค่าใช้จ่ายเท่านั้น

ดี! ของแจกฟรีหมดแล้ว หากคุณต้องการไฟล์และบทความที่เป็นประโยชน์ช่วยฉันด้วย!

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

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

1. โครงการ

ไม่มีปัญหาในการวัดแรงดันและเวลาใน Arduino - มี ADC แต่คุณต้องแบ่งกระแสไฟฟ้าเพื่อวัดกระแส ฉันมีความคิดที่จะใช้ตัวต้านทานโหลดเป็นตัวแบ่ง นั่นคือการทราบแรงดันไฟฟ้าและเมื่อวัดความต้านทานก่อนหน้านี้แล้วเราสามารถคำนวณกระแสได้ตลอดเวลา ดังนั้นวงจรเวอร์ชันที่ง่ายที่สุดจะประกอบด้วยเฉพาะโหลดและแบตเตอรี่ที่เชื่อมต่อกับอินพุตอะนาล็อกของ Arduino แต่จะเป็นการดีถ้าจัดให้มีการปิดโหลดเมื่อถึงเกณฑ์แรงดันไฟฟ้าของแบตเตอรี่ (สำหรับ Li-Ion โดยปกติจะเป็น 2.5-3V) ดังนั้นฉันจึงรวมรีเลย์ไว้ในวงจรซึ่งควบคุมโดยพินดิจิทัล 7 ผ่านทรานซิสเตอร์ รุ่นสุดท้ายของวงจรแสดงในรูปด้านล่าง

ฉันวางองค์ประกอบทั้งหมดของวงจรไว้บนแผ่นไม้อัดซึ่งติดตั้งบน Uno โดยตรง ฉันใช้เกลียวลวดนิกโครมหนา 0.5 มม. ซึ่งมีความต้านทานประมาณ 3 โอห์มขณะโหลด ซึ่งให้กระแสคายประจุที่คำนวณได้ที่ 0.9-1.2A

2. การวัดกระแส

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

3. การวัดแรงดันไฟฟ้า

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

4. โปรแกรม

รหัสไม่ได้ซับซ้อนอะไร:

ข้อความโปรแกรม

#define A_PIN 1 #define NUM_READS 100 #define pinRelay 7 const float typVbg = 1.095; // 1.0 -- 1.2 ลอย Voff = 2.5; // แรงดันปิดเครื่องลอย I; หมวกลอย = 0; ลอยวี; ลอย Vcc; ลอยWh = 0; prevMillis แบบยาวที่ไม่ได้ลงนาม testStart แบบยาวที่ไม่ได้ลงนาม การตั้งค่าเป็นโมฆะ() ( Serial.begin(9600); pinMode(pinRelay, OUTPUT); Serial.println("กดปุ่มใดก็ได้เพื่อเริ่มการทดสอบ..."); ในขณะที่ (Serial.available() == 0) ( ) Serial.println("เปิดตัวการทดสอบ..."); Serial.print(" "); print("mA"); Serial.print(" "); Vcc"); digitalWrite(pinRelay, HIGH); testStart = millis(); prevMillis = millis(); void loop() ( Vcc = readVcc(); // อ่านแรงดันอ้างอิง V = (readAnalog(A_PIN) ) * Vcc) / 1,023.000; // อ่านแรงดันไฟฟ้าของแบตเตอรี่ถ้า (V > 0.01) I = -13.1 * V * V + 344.3 * V + 23.2; // คำนวณกระแสตามคุณลักษณะ I-V ของเกลียว I=0; มิลลิวินาที() - prevMillis) / 3600000); // การคำนวณความจุของแบตเตอรี่ใน mAh Wh += I * V * (มิลลิวินาที () - prevMillis) / 3600000000; // การคำนวณความจุของแบตเตอรี่ใน Wh prevMillis = มิลลิวินาที (); ); // ส่งข้อมูลไปยังพอร์ตอนุกรมถ้า (V< Voff) { //выключение нагрузки при достижении порогового напряжения digitalWrite(pinRelay, LOW); Serial.println("Test is done"); while (2 >1) ( ) ) ถือเป็นโมฆะ sendData() ( Serial.print((มิลลิวินาที() - testStart) / 1000); Serial.print(" "); Serial.print(V, 3); Serial.print(" ") ; Serial.print(I, 1); Serial.print(cap, 0); Serial.print(" "); ค่าและเรียงลำดับเพื่อใช้โหมด int sortedValues; for (int i = 0; i< NUM_READS; i++) { delay(25); int value = analogRead(pin); int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= ค่า) ( ​​// j คือ การแทรกตัวแบ่งตำแหน่ง; ) ) ) สำหรับ (int k = i; k >< (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; } float readVcc() { // read multiple values and sort them to take the mode float sortedValues; for (int i = 0; i < NUM_READS; i++) { float tmp = 0.0; ADMUX = _BV(REFS0) | _BV(MUX3) | _BV(MUX2) | _BV(MUX1); ADCSRA |= _BV(ADSC); // Start conversion delay(25); while (bit_is_set(ADCSRA, ADSC)); // measuring uint8_t low = ADCL; // must read ADCL first - it then locks ADCH uint8_t high = ADCH; // unlocks both tmp = (high << 8) | low; float value = (typVbg * 1023.0) / tmp; int j; if (value < sortedValues || i == 0) { j = 0; //insert at first position } else { for (j = 1; j < i; j++) { if (sortedValues <= value && sortedValues[j] >= ค่า) ( ​​// j คือ การแทรกตำแหน่งตัวแบ่ง; ) ) ) สำหรับ (int k = i; k > j; k--) ( // ย้ายค่าทั้งหมดให้สูงกว่าการอ่านปัจจุบันขึ้นไปหนึ่งตำแหน่ง sortedValues[k ] = sortedValues; ) sortedValues[j] = ค่า; // แทรกการอ่านปัจจุบัน ) // ส่งคืนโหมดปรับขนาด 10 ค่า float returnval = 0;< (NUM_READS / 2 + 5); i++) { returnval += sortedValues[i]; } return returnval / 10; }

สำหรับ (int i = NUM_READS / 2 - 5; i
ในความคิดของฉัน จุดเดียวที่น่าสนใจในโค้ดคือการใช้ตัวกรองดิจิทัล ความจริงก็คือเมื่ออ่านแรงดันไฟฟ้าค่าจะ "เต้น" ขึ้นและลงอย่างหลีกเลี่ยงไม่ได้ ตอนแรกฉันพยายามลดผลกระทบนี้โดยทำการวัด 100 ครั้งใน 5 วินาทีแล้วหาค่าเฉลี่ย แต่ผลลัพธ์ก็ยังทำให้ฉันไม่พอใจ ในระหว่างการค้นหา ฉันพบตัวกรองซอฟต์แวร์ดังกล่าว มันทำงานในลักษณะเดียวกัน แต่แทนที่จะหาค่าเฉลี่ย มันจะเรียงลำดับค่าการวัดทั้งหมด 100 ค่าตามลำดับจากน้อยไปมาก เลือกค่ากลาง 10 ค่า แล้วคำนวณค่าเฉลี่ย ผลลัพธ์ทำให้ฉันประทับใจ - ความผันผวนของการวัดหยุดลงโดยสิ้นเชิง ฉันตัดสินใจใช้เพื่อวัดแรงดันอ้างอิงภายใน (ฟังก์ชัน readVcc ในโค้ด)

5. ผลลัพธ์

ข้อมูลจากมอนิเตอร์พอร์ตอนุกรมจะถูกนำเข้าไปยัง Excel ด้วยการคลิกเพียงไม่กี่ครั้งและมีลักษณะดังนี้:

ในกรณีของ Nexus 5 ของฉัน ความจุที่ประกาศของแบตเตอรี่ BL-T9 คือ 2300 mAh สิ่งที่ฉันวัดได้คือ 2040 mAh โดยมีการคายประจุสูงถึง 2.5 V ในความเป็นจริงตัวควบคุมไม่น่าจะปล่อยให้แบตเตอรี่หมดลงจนถึงแรงดันไฟฟ้าต่ำเช่นนี้ โดยส่วนใหญ่แล้วค่าเกณฑ์คือ 3V ความจุในกรณีนี้คือ 1960 mAh การให้บริการโทรศัพท์เป็นเวลาหนึ่งปีครึ่งส่งผลให้ความจุลดลงประมาณ 15% มีการตัดสินใจที่จะระงับการซื้อแบตเตอรี่ใหม่
เมื่อใช้เครื่องทดสอบนี้ แบตเตอรี่ Li-Ion อื่นๆ หลายก้อนได้หมดประจุไปแล้ว ผลลัพธ์ดูสมจริงมาก ความจุที่วัดได้ของแบตเตอรี่ใหม่เกิดขึ้นพร้อมกับความจุที่ประกาศโดยมีค่าเบี่ยงเบนน้อยกว่า 2%
เครื่องทดสอบนี้ยังเหมาะสำหรับแบตเตอรี่เมทัลไฮไดรด์ขนาด AA อีกด้วย กระแสไฟในกรณีนี้จะอยู่ที่ประมาณ 400 mA