ในการพัฒนาระบบฝังตัว (Embedded Systems) ขนาดเล็ก สิ่งหนึ่งที่เป็นความท้าทายอย่างยิ่งคือการจัดการพลังงาน โดยเฉพาะเมื่อต้องใช้แบตเตอรี่ LiPo (Lithium Polymer) ขนาด 3.7V 250mAh ในพื้นที่ที่จำกัด การออกแบบระบบให้สามารถชาร์จไฟได้ "ในตัว" (In-place charging) โดยไม่ต้องถอดแบตเตอรี่ออกมาภายนอกถือเป็นเรื่องสำคัญ แต่ปัญหาที่ตามมาคือเราจะทราบได้อย่างไรว่าสถานะแบตเตอรี่เหลือเท่าไหร่ และจะชาร์จอย่างไรให้ปลอดภัย เนื่องจากแบตเตอรี่ LiPo มีความไวต่อกระแสชาร์จและแรงดันที่ผิดปกติสูงมาก
บทความนี้จะเจาะลึกถึงการสร้างระบบ Battery Tester และชุดชาร์จไร้สาย (QI Wireless Charging) ที่ปรับแต่งมาเพื่อแบตเตอรี่ความจุต่ำโดยเฉพาะ เพื่อให้คุณสามารถนำไปประยุกต์ใช้กับโปรเจกต์ Wearable หรือ IoT ขนาดเล็กได้อย่างมืออาชีพ
1. การวัดแรงดันแบตเตอรี่ด้วยหลักการ Voltage Divider และ Internal Reference
โดยปกติแล้ว Arduino จะใช้แรงดัน VCC เป็นแรงดันอ้างอิง (Reference Voltage) สำหรับ ADC (Analog-to-Digital Converter) แต่เมื่อเราใช้แบตเตอรี่จ่ายไฟโดยตรง แรงดัน VCC จะลดลงตามสถานะของแบตเตอรี่ ทำให้เกิดปัญหา "Auto-referential" หรือการอ้างอิงตัวเอง ซึ่งจะทำให้ค่าที่อ่านได้จากพิน Analog ผิดเพี้ยนไปตลอดเวลา
ทางเลือกที่ดีกว่าคือการใช้ฟังก์ชัน analogReference(INTERNAL) (หรือ INTERNAL1V1 ในบางบอร์ด) เพื่อกำหนดให้ ADC ใช้แรงดันอ้างอิงคงที่จากภายในไมโครโปรเซสเซอร์ ซึ่งอยู่ที่ประมาณ 1.1V วิธีนี้จะช่วยให้การวัดค่ามีความแม่นยำแม้แรงดันแบตเตอรี่จะตกลง
อย่างไรก็ตาม แรงดันสูงสุดของ LiPo เมื่อชาร์จเต็มคือ 4.2V ซึ่งเกินกว่า 1.1V ที่ ADC จะรับได้ เราจึงต้องใช้ Voltage Divider เพื่อลดทอนแรงดันลง

วงจรแบ่งแรงดัน (Voltage Divider) ประกอบด้วยตัวต้านทานสองตัวต่ออนุกรมกัน ในการเลือกค่าตัวต้านทานสำหรับอุปกรณ์ที่ใช้แบตเตอรี่ เราควรเลือกค่าที่สูงพอ (ระดับร้อยกิโลโอห์มขึ้นไป) เพื่อป้องกันการสูญเสียพลังงานโดยเปล่าประโยชน์ (Quiescent Current) จากนั้นเราจะนำแรงดันที่แบ่งแล้วเข้าสู่พิน Analog ของ Arduino
2. ตรรกะของซอฟต์แวร์ (The Code Logic)
ในโค้ดที่เราเตรียมไว้ กระบวนการทำงานจะเริ่มต้นจากการอ่านค่า Analog จากพินที่เชื่อมต่อกับ Voltage Divider:
// ตัวอย่างตรรกะการคำนวณ
analogReference(INTERNAL); // ตั้งค่า Reference ไปที่ 1.1V
int rawValue = analogRead(A0);
float voltage = rawValue * (1.1 / 1023.0) * ((R1 + R2) / R2);
เมื่อได้ค่าแรงดันจริงมาแล้ว เราจะใช้เงื่อนไข if-else หรือฟังก์ชัน map() เพื่อแปลงค่าแรงดันให้เป็นเปอร์เซ็นต์ (0-100%) และแสดงผลเป็นกราฟิกไอคอนบนหน้าจอ เพื่อให้ผู้ใช้งานทราบว่าเมื่อใดที่ควรเริ่มการชาร์จ
3. ระบบชาร์จไร้สาย QI และการปรับแต่งกระแส (Current Modification)
ส่วนที่สองของโปรเจกต์คือการรวมเอา QI Wireless Receiver เข้ากับวงจรชาร์จ LiPo โดยใช้สวิตช์แบบสองทาง (Two-way Switch) เพื่อสลับโหมดระหว่างการจ่ายไฟให้ Arduino และการชาร์จแบตเตอรี่
ข้อควรระวังขั้นวิกฤต: วงจรชาร์จแบตเตอรี่ USB ส่วนใหญ่ในตลาด (เช่นโมดูล TP4056) มักถูกตั้งค่ากระแสชาร์จไว้ที่ 1A (1000mA) ซึ่งเหมาะสำหรับสมาร์ทโฟน แต่สำหรับแบตเตอรี่ขนาด 250mAh การชาร์จด้วยกระแส 1A จะทำให้แบตเตอรี่ร้อนจัดและอาจระเบิดได้!
กฎเหล็กของการชาร์จ LiPo คือกระแสชาร์จไม่ควรเกิน 0.4C ถึง 1C ของความจุ ในกรณีนี้ 250mAh x 0.4 = 100mA คือกระแสที่เหมาะสมที่สุด คุณจำเป็นต้องเปลี่ยนตัวต้านทานที่ระบุในวงจร (มักจะเป็นตัวต้านทานที่พิน Prog ของ IC ชาร์จ) เพื่อจำกัดกระแสให้เหมาะสมกับแบตเตอรี่ขนาดเล็กของคุณ การบัดกรีนี้ต้องใช้ความระมัดระวังและสายตาที่ดีเนื่องจากเป็นอุปกรณ์ประเภท SMD ที่มีขนาดเล็กมาก
4. การต่อยอดและพัฒนา (Inspirations for Improvements)
โปรเจกต์นี้เป็นเพียงจุดเริ่มต้น สำหรับวิศวกรที่ต้องการความซับซ้อนมากขึ้น คุณสามารถพัฒนาต่อยอดได้ดังนี้:
- Optocoupler: ใช้เพื่อแยกส่วนวงจรชาร์จและวงจรประมวลผลออกจากกันอย่างเด็ดขาดเพื่อลดสัญญาณรบกวน
- MOSFET Switching: แทนที่จะใช้สวิตช์แบบกลไก (Manual Switch) คุณสามารถใช้ MOSFET ในการทำวงจร Auto-path management เพื่อสลับจากแบตเตอรี่ไปเป็นการชาร์จโดยอัตโนมัติเมื่อวางบนแท่นชาร์จไร้สาย
การทำระบบจัดการพลังงานที่สมบูรณ์แบบต้องการความอดทนและการทดลอง (Experimentation) โดยเฉพาะในบอร์ด Pro Mini ที่ต้องใช้ตัวแปลง FTDI ในการอัปโหลดโค้ด แต่เมื่อคุณเข้าใจหลักการของ ADC Reference และการควบคุมกระแสชาร์จแล้ว คุณจะสามารถสร้างโปรเจกต์ที่มีความเสถียรและปลอดภัยได้ในทุกขนาดของแบตเตอรี่