Tìm Hiểu Mạch Cảm Biến Dòng Điện, Điện Áp INA219 Với Arduino
![]() |
Module INA219 |
INA219 Cảm Biến Dòng Điện 3.2A được sử dụng để đo điện áp và dòng điện DC của các thiết bị với độ chính xác cao kết hợp với độ phân giải 12 bit, sai số ± 1%. Bênh cạnh đó, mạch cảm biến này sử dụng giao tiếp I2C giúp chúng ta dễ dàng kết nối với vi điều khiển để lập trình, thích hợp ứng dụng đo dòng, đo áp.
Thư viện bắt buộc
Một trong những thư viện INA219 khá phổ biến là thư viện do Adafruit phát hành, bạn có thể tải xuống TẠI ĐÂY.
Giải nén tệp thư viện và sao chép nó vào thư mục thư viện của Cài đặt Arduino IDE.
Sơ đồ mạch
Kết nối Arduino như hình:Bạn cần một số thành phần khác ngoài Arduino và INA219:
- Điện trở 200 ohm
- LED 5mm
- Pin 9 volt.
![]() |
Sơ đồ kết nối |
Code
#include <Wire.h>
#include <Adafruit_INA219.h>
Adafruit_INA219 ina219;
void setup(void)
{
Serial.begin(115200);
while (!Serial) {
// will pause Zero, Leonardo, etc until serial console opens
delay(1);
}
uint32_t currentFrequency;
Serial.println("Hello!");
// Initialize the INA219.
// By default the initialization will use the largest range (32V, 2A). However
// you can call a setCalibration function to change this range (see comments).
if (! ina219.begin()) {
Serial.println("Failed to find INA219 chip");
while (1) { delay(10); }
}
// To use a slightly lower 32V, 1A range (higher precision on amps):
//ina219.setCalibration_32V_1A();
// Or to use a lower 16V, 400mA range (higher precision on volts and amps):
//ina219.setCalibration_16V_400mA();
Serial.println("Measuring voltage and current with INA219 ...");
}
void loop(void)
{
float shuntvoltage = 0;
float busvoltage = 0;
float current_mA = 0;
float loadvoltage = 0;
float power_mW = 0;
shuntvoltage = ina219.getShuntVoltage_mV();
busvoltage = ina219.getBusVoltage_V();
current_mA = ina219.getCurrent_mA();
power_mW = ina219.getPower_mW();
loadvoltage = busvoltage + (shuntvoltage / 1000);
Serial.print("Bus Voltage: "); Serial.print(busvoltage); Serial.println(" V");
Serial.print("Shunt Voltage: "); Serial.print(shuntvoltage); Serial.println(" mV");
Serial.print("Load Voltage: "); Serial.print(loadvoltage); Serial.println(" V");
Serial.print("Current: "); Serial.print(current_mA); Serial.println(" mA");
Serial.print("Power: "); Serial.print(power_mW); Serial.println(" mW");
Serial.println("");
delay(2000);
}
Output
![]() |
Đăng nhận xét