Доброго времени суток. Имеется: гараж с солнечной панелью и аккумуляторами, ардуинка нано в гараже. С целью выяснения полезности солнечной панели и наличия свободных ресурсов на ардуино, решил сделать ваттметр, который будет измерять количество сэкономленных ватт электроэнергии, а так же наконец на цифрах определиться стоит ли мне дальше расширять мою "экологическую электростанцию". Мастерить было решено из этого самого и палок, так как в наличии на алишке нормальных недорогих ваттметров с возможностью передать данные на ардуино не нашел. Из просторов интернета была собрана бюджетнейшая схема на основе резисторов, с помощью вот этого видео попытался рассчитать шунт, для измерения токов до 100 А вышло 1,29м медного провода сечением 2,5. для ардуино был написан следующий скетч на основе статьи
по итогу: данный агрегат стал что то считать. При подачи нагрузки (подключения ИПБ используемого как инвертор) показания ампер начинают жутко прыгать от минусовых значений к плюсовым, но в состоянии покоя показывает силу тока -0,11, -0,16 и -0,22, чаще всего -0,16. Три вот этих значения с шагом -0,05 А. Для уменьшения прыгучести показаний было принято решение подцепить по конденсатору 16V100UF на каждый делитель, но улучшающего эффекта мною обнаружено не было. В 31 строке кода поставил делить на 100 так как значения показались ну сильно завышенными (примерно в 100 раз) к тому же вроде как установлен шунт на 100 А. В схеме указано напряжение 12В, но по факту напряжение аккумуляторов достигает 14,4 в полностью заряженном состоянии (далее ШИМ панели отрубает панель от аккумуляторов чтобы не спалить их) поэтому схема рассчитывалась на напряжение 15В, что бы не спалить ардуинку.
Прошу дать экспертное мнение полетит ли данный паровоз? высокоточные расчеты потребления мне не важны, но остается непреодолимое чувство, что я сделал что то не так. На что обратить внимание и что поправить?
C++:
#include <microDS3231.h>
MicroDS3231 rtc;
#define OLED_SOFT_BUFFER_64 // Буфер на стороне МК
#include <GyverOLED.h> // Библиотека дисплея
#include <GyverBME280.h> // библиотека датчика BME280
#include <GyverButton.h> // библиотека кнопок
GyverOLED oled;
GyverBME280 bme;
GButton up(4, HIGH_PULL); // Кнопки
GButton down(5, HIGH_PULL);
GButton ok(3, HIGH_PULL);
uint32_t chaswata=millis();
uint32_t t=0;
uint32_t disp=0;
const float AmpRx = 0.027; //сопротивление шунта
const float VoltMult = 30;
const float Erif = 5.1*30/1024;
float wattchass=0;
void setup() {
oled.init(OLED128x64); // Инциализация дисплея
oled.setContrast(cont); // Макс. яркость
}
void loop() {
t=millis()-chaswata;
chaswata=millis();
float Volt = analogRead(A1)*Erif;
float Amp = (Volt-(analogRead(A0)* Erif)) / AmpRx/100 ;
if(Amp>0) wattchass+=Volt*Amp*t/3600000;
if (millis()-disp>1000){
disp=millis();
oled.clear(); // Очищаем буфер
oled.home();
oled.print(F("Напряжение1: ")); //напряжение сети
oled.print(analogRead(A1)* 0.0146627565982405, 3);
oled.print(F("V"));
oled.setCursor(0,1);
oled.print(F("Напряжение2: ")); //напряжение сети
oled.print(analogRead(A0)* 0.0146627565982405, 3);
oled.setCursor(0,2);
oled.print(F("amp: "));
oled.print(Amp);
oled.setCursor(0,3);
oled.print(F("Watt/h: "));
oled.print(wattchass);
oled.update();
}
}
Прошу дать экспертное мнение полетит ли данный паровоз? высокоточные расчеты потребления мне не важны, но остается непреодолимое чувство, что я сделал что то не так. На что обратить внимание и что поправить?