POWER MONITOR на Arduino

Подключение исполнительных устройств, датчиков, контроллеров.

Модератор: immortal

serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: POWER MONITOR на Arduino

Сообщение serghei » Ср мар 01, 2017 9:54 am

У меня аналогичная ситуация. И надо учитывать , что тот код был написан для древней версии МД. Как отображать графики была дискуссия ТУТ. К сожалению я в этом бессилен (((. Про сброс показаний ардуины я уже упоминал.Выход вижу только один - все таки суммирование показаний надо вести на МД. Если следующее значение меньше предыдущего ( обычно 0 ), то прибавить к предыдущему и продолжать считать. Тут реально нужна помощь форума !
А сериал можно посмотреть в IDE -просто открыть " Инструменты - монитор последовательного порта " и в окне выбрать скорость 9600 как в скетче.
За это сообщение автора serghei поблагодарил:
Serega66 (Ср мар 01, 2017 6:43 pm)
Рейтинг: 1.16%
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Serega66
Сообщения: 111
Зарегистрирован: Ср фев 22, 2017 12:08 pm
Благодарил (а): 55 раз
Поблагодарили: 13 раз

Re: POWER MONITOR на Arduino

Сообщение Serega66 » Ср мар 01, 2017 6:43 pm

понятно, в любом случае спасибо за разъяснения. Надеюсь в этой ветке найдется кто-то, кто делает себе, и подскажет другим, чтобы получить полезный законченный продукт в рамках этого проекта.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: POWER MONITOR на Arduino

Сообщение serghei » Ср мар 01, 2017 8:31 pm

А все таки что ( какие числа ) приходят в МД ? У меня осталась полужывая Дуя и не понятно в каком состоянии Езернет шилд. Попробую запустить скетч. Но что и как прописывать в МД я пока не представляю .
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Serega66
Сообщения: 111
Зарегистрирован: Ср фев 22, 2017 12:08 pm
Благодарил (а): 55 раз
Поблагодарили: 13 раз

Re: POWER MONITOR на Arduino

Сообщение Serega66 » Пт мар 03, 2017 1:31 pm

Если все сделать как в инструкции на первой странице то для МД там есть инструкция по созданию объекта, со всеми необходимыми параметрами, и код для панели задач для Power Monitorа данные выводятся в свойства обьекта и на панель управления в реальном времени. здесь в конце форума добавили статистику кВт\часов, проблема в том что надо как то сохранять суточные или месячные показания т.к. если ардуинка перезагрузится то все данные пропадут.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: POWER MONITOR на Arduino

Сообщение serghei » Пт мар 03, 2017 2:43 pm

То есть если я правильно понял, данные киловатт-часов из ардуины приходят в МД ? А вот что с ними делать ? Я пока вывел 4 одометра на страницу. Ну и естественно вижу историю.А наводить красоту и условия в неделю , месяц - это уже средствами Алисы. Начал "изучать" PHP программирование. Но похоже это будет очень долго ((
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Serega66
Сообщения: 111
Зарегистрирован: Ср фев 22, 2017 12:08 pm
Благодарил (а): 55 раз
Поблагодарили: 13 раз

Re: POWER MONITOR на Arduino

Сообщение Serega66 » Пт мар 03, 2017 7:28 pm

serghei писал(а):То есть если я правильно понял, данные киловатт-часов из ардуины приходят в МД ? А вот что с ними делать ? Я пока вывел 4 одометра на страницу. Ну и естественно вижу историю.А наводить красоту и условия в неделю , месяц - это уже средствами Алисы. Начал "изучать" PHP программирование. Но похоже это будет очень долго ((
Да, да именно так, у меня тоже все получилось. а вот как наладить статистику пока никто не подсказал. Я в программирлвании вобще полый ноль.
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: POWER MONITOR на Arduino

Сообщение ученик » Чт апр 20, 2017 8:45 pm

Решил поставить power monitor на уно
только у меня другой экран
заменил библиотеки
инициализацию
но чего то не хочет показывать
на экране
вот скетч
СпойлерПоказать
/*
Код мониторинга электропотребления и трансляции
данных на сервер majordomo
Arduino IDE 0023

Подключение датчиков:
Тока - аналоговый вход A1
Напр.- аналоговый вход A0
Схема подключения дисплея J204A (4 ряда, 20символов):
* LCD SDA к A4
* LCD SCL к A5
* LCD VSS к Общему
* LCD VDD к +5V
*/
#include <Wire.h>
#include <Ethernet.h>
#include <SPI.h>


byte mac[] = { 0x00, 0x2A, 0xF6, 0x12, 0x69, 0xDU }; // MAC-адрес устройства
byte ip[] = { 192, 168, 1, 5 }; // ip-адрес устройства
byte server[] = { 192, 168, 1, 4 }; // IP компьютера на котором установлен сервер majordomo
byte gateway[] = { 192, 168, 1, 1 };
byte subnet[] = { 255, 255, 255, 0 };
char buf[80];
EthernetClient client;

// Функция отправки HTTP-запроса на сервер
void sendHTTPRequest()
{
//Serial.println(buf);
if (client.connect(server, 80))
{
//Serial.println("OK");
client.println(buf);
client.println("Host: 192.168.1.4"); // IP компьютера на котором установлен сервер majordomo
client.println();
delay(2000);
client.stop();
}

}

int numberOfSamples = 3000;

//Установка датчиков тока и напряжения
int inPinV = 0;
int inPinI = 1;

//*************************************************************************


// Коэффициенты для калибровки выводимых значений
// Подбираются опытным путем сверяясь с эталонным прибором
double VCAL = 27.00; // для напряжения
double ICAL = 2.21; // для тока
double PHASECAL = 2.3; // для мощности

//*************************************************************************

double V_RATIO = 50.5 / 1024 * VCAL;
double I_RATIO = (long double) 15.15 * 5 / 1024 * ICAL;

//Образцы переменных
int lastSampleV,lastSampleI,sampleV,sampleI;

//Переменные для фильтров
double lastFilteredV, lastFilteredI, filteredV, filteredI;
double filterTemp;

//Сюда сохраняем калибровочное значение фазы мгновенного напряжения
double shiftedV;

//Расчет переменной для мощности
double sqI,sqV,instP,sumI,sumV,sumP;

//Полезные значения переменных
double realPower,
apparentPower,
apparentPower1,
powerFactor,
Vrms,
Irms;


// подключаем библиотеку дисплея:
#include <LiquidCrystal_I2C.h>

// инициализация библиотеки с перечнем задействованных выводов
LiquidCrystal_I2C lcd(0x3f, 20, 4);

void setup ()
{
Ethernet.begin(mac, ip, gateway, subnet); // Инициализируем Ethernet Shield

// устанавливаем ШИМ выход (регулируем контрастность дисплея):
//pinMode (9, OUTPUT);
//analogWrite (9, 70);
// устанавливаем кол-во столбцов и строк:
lcd.begin (20, 4);
lcd.print(" POWER MONITOR");
}
void loop ()
{

//Serial.println(temp);
for (int n=0; n<numberOfSamples; n++) // цикл крутится 3000 раз
{

//Используется для удаления смещения 2,5в
lastSampleV=sampleV;
lastSampleI=sampleI;

//Читаем с пинов текущее значение U и I
sampleV = analogRead(inPinV);
sampleI = analogRead(inPinI);

// Используется для удаления смещения 2,5в
lastFilteredV = filteredV;
lastFilteredI = filteredI;

//Цифровой фильтр для удаления постоянного смещения 2,5 в

filteredV = 0.996*(lastFilteredV+sampleV-lastSampleV);
filteredI = 0.996*(lastFilteredI+sampleI-lastSampleI);

//Тут калибруем фазу
shiftedV = lastFilteredV + PHASECAL * (filteredV - lastFilteredV);

//Среднеквадратический метод расчета напряжения
//1) square voltage values
sqV= filteredV * filteredV;
//2) Суммируем
sumV += sqV;

// Среднеквадратический метод расчета тока
//1) square current values
sqI = filteredI * filteredI;
//2) Суммируем
sumI += sqI;

//Мгновенная мощность
instP = shiftedV * filteredI;
//Суммируем
sumP +=instP;
}

//Расчет корня из среднего напряжения и тока (rms)
Vrms = V_RATIO*sqrt(sumV / numberOfSamples);
Irms = I_RATIO*sqrt(sumI / numberOfSamples);

//Расчет величины мощности
//realPower = V_RATIO*I_RATIO*sumP / numberOfSamples;
apparentPower = (Vrms * Irms)/1000; // значение в Киловатах
apparentPower1 = (Vrms * Irms); // значение в Ваттах
powerFactor = realPower / apparentPower;


//Сброс накопленных значений
sumV = 0;
sumI = 0;
sumP = 0;



// устанавливаем курсор в 1-ом столбце, 1 строка (начинается с 0):
lcd.setCursor (1, 1);
lcd.print ("U=");
lcd.setCursor (3, 1);
lcd.print (Vrms);
lcd.setCursor (10, 1);
lcd.print ("I=");
lcd.setCursor (12, 1);
lcd.print (Irms);
//lcd.print(sampleI);
lcd.setCursor (1, 2);
lcd.print ("P=");
lcd.setCursor (3, 2);
lcd.print(apparentPower);
lcd.setCursor (7, 2);
lcd.print ("kW");
delay(333);

// отправляем значения на сервер majordomo

//значение напряжения
sprintf(buf, "GET /objects/?object=sensorVolt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Vrms, abs(Vrms));
//sprintf(buf, "GET /objects/?object=sensorVolt&op=m&m=eleChanged&t=%d HTTP/1.0", Vrms);
sendHTTPRequest();

//значение тока
sprintf(buf, "GET /objects/?object=sensorAmper&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)Irms, abs(Irms));
sendHTTPRequest();

//значение мощности
sprintf(buf, "GET /objects/?object=sensorVatt&op=m&m=eleChanged&t=%0d.%d HTTP/1.0", (int)apparentPower1, abs(apparentPower1));
sendHTTPRequest();
//delay(3000);
}
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: POWER MONITOR на Arduino

Сообщение serghei » Чт апр 20, 2017 9:07 pm

// инициализация библиотеки с перечнем задействованных выводов
LiquidCrystal_I2C lcd(0x3f, 20, 4);
У меня четыре экрана имели адрес 0х27. Проверьте сканером I2C адресов. Кстати, этот код экрана можно прикрутить и к АМС . И выводить мощности и напряжение.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
ученик
Сообщения: 230
Зарегистрирован: Чт фев 12, 2015 2:34 pm
Благодарил (а): 36 раз
Поблагодарили: 6 раз

Re: POWER MONITOR на Arduino

Сообщение ученик » Чт апр 20, 2017 9:14 pm

serghei писал(а):
// инициализация библиотеки с перечнем задействованных выводов
LiquidCrystal_I2C lcd(0x3f, 20, 4);
У меня четыре экрана имели адрес 0х27. Проверьте сканером I2C адресов.
Я проверял сканером,он выставил мне такой адрес ( при получении экранов с Китая проверял хотел претензию писать а оказалось что адрес другой , так как стандартный адрес 0х27 не подходил)
у меня термометр с этим экраном и платой ардуино уно работает на ура
server i5, OS-Ubuntu Server 16., 1-wire
php 7, AMS,broadlink rm2,rm3 mini.
serghei
Сообщения: 2575
Зарегистрирован: Пт ноя 06, 2015 10:22 am
Откуда: Кишинёв
Благодарил (а): 303 раза
Поблагодарили: 282 раза

Re: POWER MONITOR на Arduino

Сообщение serghei » Чт апр 20, 2017 9:18 pm

Посмотрите в ветке по прикручиванию железа в АМС. Там скетч 100% рабочий. И ещё сзади есть подстроечник - его покрутить.
AMS : ESP32 + NRF24 + 1Wire-I2C мост DS2482 + счетчик DS2423 + сеть MySensors + редактирование страниц в браузере + Upload по воздуху + SPIFFS
Ответить