ปัญหาที่เกิดขึ้นคือ เมื่อไม่มีกระแสผ่าน ACS712 สัญญาณanlog outputควรจะจ่ายแรงดันครึ่งนึงของ VCC ซึ่งค่า analog ควรจะได้ค่าครึ่งนึงของ 12bit 4095/2 = 2047.5 แต่ค่าที่ผมได้อยู่ที่ช่วง 2800 - 3000 ครับ ขาอินพุตที่รับค่าใช้ขา GPIO ที่ 39 ครับ
พอผมลองเซนเซอร์ด้วย arduino UNOได้ค่าสัญญาณที่ครึ่งนึงปกติครับ(ดูค่าสัญญาณที่ตัวแปร a น้ะครับ)
ขอคำแนะนำพี่ๆหน่อยครับ
1 Likes
ไฟเลี้ยง sensor esp32 ต่อที่จุดไหนครับ
เหมือนว่าตระกูล acs ออกแบบมาให้ใช้งานกับ arduino ที่มีแรงดันไฟฟ้าคงที่ ของ ESP32 มันรองรับแรงดันไฟฟ้าภายน้อยกว่าทำให้มีปัญหานี้ครับ
อ้างอิง : ESP32 with ACS712 - ESP32 Forum
หรือไม่อาจปรับจูนที่โค้ตแบบนี้
const int analogInPin = 34; // ตั้งค่าขา Analog Input ที่ต่อกับ ACS712
float voltage = 0;
float current = 0;
void setup() {
Serial.begin(9600);
}
void loop() {
int sensorValue = analogRead(analogInPin); // อ่านค่าแรงดันที่ได้จากเซ็นเซอร์ ACS712
voltage = sensorValue * (5.0 / 1023.0); // แปลงค่าแรงดันเป็นโวลต์
// ทำการแปลงค่าแรงดันเป็นค่ากระแสไฟฟ้าโดยใช้สเกลที่เหมาะสม
current = ((voltage - 2.5) / 0.185);
Serial.print("Voltage: ");
Serial.print(voltage);
Serial.print("V, ");
Serial.print("Current: ");
Serial.print(current);
Serial.println("A");
delay(1000); // หน่วงเวลาเพื่ออ่านค่าทุกๆวินาที
}