การวัดแรงดันแบตเตอรี่แรงดันสูง (High-Voltage Monitoring)
ไมโครคอนโทรลเลอร์ (3.3V หรือ 5V) ไม่สามารถวัดแรงดันแบตเตอรี่ 12V หรือ 16V ได้โดยตรง เราจึงต้องใช้วงจร Voltage Divider (แบ่งแรงดัน)
1. วงจรแบ่งแรงดัน (Voltage Divider Circuit)
เราใช้ตัวต้านทาน 2 ตัวเพื่อลดทอนแรงดันลงมาให้อยู่ในระดับที่ปลอดภัย
แผนผังวงจร
การคำนวณ (3S Battery 12.6V -> 3.3V ADC)
- R1: 10 kΩ
- R2: 2.2 kΩ
- สูตร: $V_{out} = V_{in} \times \frac{R2}{R1 + R2}$
- $12.6V \times \frac{2.2}{10 + 2.2} \approx 2.27V$ (ปลอดภัยสำหรับพิน 3.3V)
2. โค้ดสำหรับคำนวณ (Arduino/ESP32)
เมื่ออ่านค่า Digit ได้แล้ว ต้องแปลงกลับเป็นแรงดันจริงโดยใช้ค่า Ratio ของตัวต้านทาน
const float R1 = 10000.0;
const float R2 = 2200.0;
const float ratio = (R1 + R2) / R2;
void setup() {
Serial.begin(115200);
}
void loop() {
int rawADC = analogRead(34); // อ่านจากพิน GPIO 34
float pinVoltage = (rawADC * 3.3) / 4095.0; // แปลงเป็นโวลต์ที่พิน (สำหรับ ESP32 12-bit)
float batteryVoltage = pinVoltage * ratio; // แปลงเป็นโวลต์ของแบตเตอรี่จริง
Serial.print("Battery: ");
Serial.print(batteryVoltage);
Serial.println(" V");
delay(1000);
}
🛠️ เคล็ดลับความแม่นยำ (Pro Tips)
- วัดค่าตัวต้านทานจริง: ตัวต้านทานมีความคลาดเคลื่อน (Tolerance) ควรใช้มัลติมิเตอร์วัดค่า R จริงก่อนนำมาใส่ในโค้ด
- ใช้ Capacitor กรองสัญญาณ: ต่อ C 0.1uF คร่อม R2 เพื่อให้ค่า ADC นิ่งขึ้น
- Calibration: หากค่าที่อ่านได้ไม่ตรงกับมัลติมิเตอร์ ให้ปรับค่า "3.3" ในโค้ดทีละนิดเพื่อให้ตรงกับแรงดันอ้างอิงของบอร์ดจริง