Добрый день всем)
есть у меня CJMCU-226 и шунт 100А 75mV Fl-2 0.5%.
Сначала подключил CJMCU-226 к ESP все отлично работает!
подключил по такой схеме
Плюс аккумулятора на Вход VBS и на Плюс нагрузки
Минус аккумулятора к IN-
Минус нагрузки к IN+
выпаял резистор R100 и заменил его на шунт 100А 75mV Fl-2 0.5%
подключил по такой же схеме, но значения соответственно уже не те(
INA226 сконфигурирован по умолчанию 0x4127.
Вот скетч
#include <Wire.h>
float rShunt=0.1;
const int INA226_ADDR = 0x40;
void setup() {
Serial.begin(9600);
Serial.println("Hello!");
Wire.begin(4, 5); // SDA - GPIO4, SCK - GPIO5
writeRegister(0x00, 0x4127);
}
void loop() {
int voltBit = readRegister(0x02);
Serial.print("voltBit: ");
Serial.print(voltBit);
int shuntBit = readRegister(0x01);
Serial.print(" shuntBit:");
if (shuntBit && 0x8000) {
shuntBit = ~shuntBit;
shuntBit += 1;
shuntBit *= -1 ;
}
Serial.print(shuntBit);
float volt = voltBit * 0.00125;
float currentA = shuntBit * 0.0000025 / rShunt; // * LSB / R
float powerW = abs(volt*currentA);
Serial.print(" Volt: ");
Serial.print(volt);
Serial.print(" V , Current: ");
Serial.print(currentA);
Serial.print(" A, Power: ");
Serial.println(powerW);
delay(2000);
}
static void writeRegister(byte reg, int value) {
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
Wire.write((value >> 8) & 0xFF);
Wire.write(value & 0xFF);
Wire.endTransmission();
}
static int readRegister(byte reg) {
int res = 0x0000;
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
if (Wire.endTransmission() == 0) {
if (Wire.requestFrom(INA226_ADDR, 2) >= 2) {
res = Wire.read() * 256;
res += Wire.read();
}
}
return res;
}
Помогите правильно настроить INA226 или прописать коэффициенты.
Заранее спасибо)
есть у меня CJMCU-226 и шунт 100А 75mV Fl-2 0.5%.
Сначала подключил CJMCU-226 к ESP все отлично работает!
подключил по такой схеме
Плюс аккумулятора на Вход VBS и на Плюс нагрузки
Минус аккумулятора к IN-
Минус нагрузки к IN+
выпаял резистор R100 и заменил его на шунт 100А 75mV Fl-2 0.5%
подключил по такой же схеме, но значения соответственно уже не те(
INA226 сконфигурирован по умолчанию 0x4127.
Вот скетч
#include <Wire.h>
float rShunt=0.1;
const int INA226_ADDR = 0x40;
void setup() {
Serial.begin(9600);
Serial.println("Hello!");
Wire.begin(4, 5); // SDA - GPIO4, SCK - GPIO5
writeRegister(0x00, 0x4127);
}
void loop() {
int voltBit = readRegister(0x02);
Serial.print("voltBit: ");
Serial.print(voltBit);
int shuntBit = readRegister(0x01);
Serial.print(" shuntBit:");
if (shuntBit && 0x8000) {
shuntBit = ~shuntBit;
shuntBit += 1;
shuntBit *= -1 ;
}
Serial.print(shuntBit);
float volt = voltBit * 0.00125;
float currentA = shuntBit * 0.0000025 / rShunt; // * LSB / R
float powerW = abs(volt*currentA);
Serial.print(" Volt: ");
Serial.print(volt);
Serial.print(" V , Current: ");
Serial.print(currentA);
Serial.print(" A, Power: ");
Serial.println(powerW);
delay(2000);
}
static void writeRegister(byte reg, int value) {
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
Wire.write((value >> 8) & 0xFF);
Wire.write(value & 0xFF);
Wire.endTransmission();
}
static int readRegister(byte reg) {
int res = 0x0000;
Wire.beginTransmission(INA226_ADDR);
Wire.write(reg);
if (Wire.endTransmission() == 0) {
if (Wire.requestFrom(INA226_ADDR, 2) >= 2) {
res = Wire.read() * 256;
res += Wire.read();
}
}
return res;
}
Помогите правильно настроить INA226 или прописать коэффициенты.
Заранее спасибо)