2025 Tác giả: John Day | [email protected]. Sửa đổi lần cuối: 2025-01-13 06:58
Một thiết bị có thể được sử dụng để đo điện năng tiêu thụ. Mạch này cũng có thể hoạt động như một Vôn kế và Ampe kế để đo điện áp và dòng điện.
Quân nhu
Các thành phần phần cứng
Arduino Uno
LCD 16 X 2
LM 358 Op-Amp
Bộ điều chỉnh điện áp 7805
Chiết áp 10k ohm
0,1 µF
Điện trở 10k ohm
Điện trở, 20 kohm
Điện trở 2,21k ohm
Điện trở, 0,22 ohm
Kiểm tra tải
Kết nối dây
Thành phần phần mềm:
Arduino IDE
Bước 1: Làm việc của Arduino Wattmeter
Việc xây dựng máy đo của riêng bạn không chỉ giảm chi phí thử nghiệm mà còn cung cấp cho chúng tôi không gian để tạo điều kiện thuận lợi cho quá trình thử nghiệm.
Đang làm việc:
Từ phần cảm biến, có hai phần đáng tin cậy để đo điện áp và dòng điện. Để đo điện áp, một mạch phân áp được thực hiện bằng cách sử dụng Điện trở 10KΩ và Điện trở 2,2KΩ.
Với sự trợ giúp của các điện trở này, bạn có thể dễ dàng đo điện áp lên đến 24V. Các điện trở này cũng hỗ trợ chúng tôi trong việc lấy dải điện áp đến 0V - 5V, là dải bình thường mà Arduino hoạt động.
Để đo dòng điện, chúng ta phải thay đổi các giá trị dòng điện thành các giá trị điện áp thông thường. Theo Định luật Ohm, điện áp giảm trên tải tỷ lệ với dòng điện.
Do đó, một điện trở shunt nhỏ được bố trí đối với tải. Bằng cách ước tính điện áp trên điện trở này, chúng ta có thể tính được dòng điện. Chúng tôi đã sử dụng Op-Amp LM358 ở Chế độ Khuếch đại Không Đảo ngược để phóng đại các giá trị được cung cấp cho Arduino.
Mạng phân áp cho điều khiển phản hồi bao gồm Điện trở a20KΩ và Điện trở 1KΩ. Các điện trở này cung cấp độ lợi xấp xỉ 21.
Tìm hiểu thêm về Khóa học IoT sẽ giúp bạn xây dựng Giải pháp IoT tùy chỉnh.
Bước 2: Chạy mã
#bao gồm
int Read_Voltage = A1;
int Read_Current = A0;
const int rs = 2, en = 4, d4 = 9, d5 = 10, d6 = 11, d7 = 12;
LiquidCrystal lcd (rs, en, d4, d5, d6, d7);
float Điện áp = 0.0;
float Hiện tại = 0.0;
float Power = 0.0;
void setup ()
{
lcd.begin (16, 2);
Serial.begin (9600);
lcd.print ("Arduino");
lcd.setCursor (0, 1);
lcd.print ("Wattmeter");
chậm trễ (2000);
lcd.clear ();
}
void loop ()
{
Voltage = analogRead (Read_Voltage);
Hiện tại = analogRead (Read_Current);
Điện áp = Điện áp * (5.0 / 1023.0) * 6.46;
Hiện tại = Hiện tại * (5.0 / 1023.0) * 0.239;
Serial.println (Điện áp); Serial.println (Hiện tại);
Công suất = Điện áp * Dòng điện;
Serial.println (Nguồn);
lcd.setCursor (0, 0);
lcd.print ("V =");
lcd.print (Điện áp);
lcd.print ("");
lcd.print ("I =");
lcd.print (Hiện tại);
lcd.setCursor (0, 1);
lcd.print ("P =");
lcd.print (Nguồn);
chậm trễ (1000);
}