การทำระบบตรวจเช็คไฟดับ โดยอาศัยการอ่านสถานะจาก Adapter โดยตรง
ใช้ voltage divider เพื่อลด 5V ของ Adapter ให้เป็น ~3.3V ที่ ESP อ่านได้ (และไม่ทำให้ GPIO ถูก overvoltage)
คำนวณแบบ digit-by-digit เพื่อชัดเจน:
เราต้องการ Vout = 3.3V จาก Vin = 5.0V
สูตร Vout = Vin * R2 / (R1 + R2)
ให้ R1 = ตัวต้านจาก 5V ไปจุดอ่าน, R2 = ตัวต้านจากจุดอ่านไป GND
ต้องการ R2/(R1+R2) = 3.3/5 = 0.66
เลือก R1 = 10kΩ → หา R2:
R2 = 0.66 * (R1 + R2) → R2 = 0.66R1 + 0.66R2 → R2 - 0.66R2 = 0.66R1
→ 0.34R2 = 0.66R1 → R2 = (0.66/0.34) * R1 ≈ 1.941176 * R1
ถ้า R1 = 10k → R2 ≈ 19.41k → ใกล้เคียง 20kΩ (ใช้ค่ามาตรฐาน)
ตรวจอีกที: Vout = 5 * (20k / (10k+20k)) = 5 * (20/30) = 5 * 0.666666... = 3.333... V → พอใช้ได้ดี
การต่อสาย (voltage divider)
Adapter 5V:
+5V --- R1 (10kΩ) ---+--- to GPIO D1 (ESP8266)
|
+--- R2 (20kΩ) --- GND (เชื่อมกับ GND ESP)
GND ของ Adapter ต้องเชื่อมกับ GND ของ ESP (common ground)
โค้ด
const int sensePin = D1;
void setup(){
Serial.begin(115200);
pinMode(sensePin, INPUT);
}
void loop(){
int v = digitalRead(sensePin); // HIGH means adapter present (3.3V)
if(v == HIGH) Serial.println("Adapter มีไฟ");
else Serial.println("Adapter ไม่มีไฟ");
delay(500);
}
ข้อดี: ตอบสนองเร็ว, กระแสต่ำ, เสถียรข้อจำกัด: ถ้า Adapter ถูกใช้เป็นแหล่งจ่ายไฟหลักกับอุปกรณ์อื่น อาจต้องออกแบบให้ปลอดภัยมากขึ้น (เพิ่มกรอง/optocoupler)
ความคิดเห็น
แสดงความคิดเห็น