POWER MONITOR на Arduino

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

Модератор: immortal

BATONS
Сообщения: 107
Зарегистрирован: Сб июн 30, 2012 7:54 am
Благодарил (а): 0
Поблагодарили: 14 раз

Re: POWER MONITOR на Arduino

Сообщение BATONS » Пн фев 25, 2013 8:44 am

Alex

Почему не сделать? В MajorDoMo можно сделать любые графики.

Причём обновляется почти в реальном времени. Я поставил обновление раз в 20 секунд. Ползут потихоньку графики. 7 живых графиков на страничке совсем не грузят систему.

Тут используется та самая прецизионная мода, которая не теряет пики (в отличие от «традиционного» алгоритма).


Красивый у Вас график получился, поможете мне такой же у себя запустить?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: POWER MONITOR на Arduino

Сообщение Alex » Пн фев 25, 2013 10:31 am

Код отдельно выложить (как независимую программу) или вставить этот модуль в свою программу для измерения тока и напряжения?
У меня работает ваша программа по измерению U, I, P. И код будет работать в её составе, так что лучше, наверное, сразу интегрировать всё вместе. Только желательно выделить дополнения, чтобы можно было легко понять, где новое и что мне переносить в мой скетч.
Красивый у Вас график получился, поможете мне такой же у себя запустить?
У меня такой график рисуется таким вызовом

<img src="/pChart/?p=analog42.value&type=12h&width=800&height=210&title= &unit=Вт&gcolor=brown&gtype=fline&scale=0&prec=1&px=1&grid=0&fil02=2">

Проблема в том, что мой index.php не совпадает со стандартным. Для начала попробуйте запустить это у себя (только объект замените). Возможно, это заработает сразу.

Основная фишка здесь - &prec=1. Это отключает стандартные графики и переключает в прецизионный режим, где не теряется информация и прорисовывается каждый пик.
P43YM
Сообщения: 13
Зарегистрирован: Вт мар 05, 2013 7:50 am
Благодарил (а): 0
Поблагодарили: 2 раза

Re: POWER MONITOR на Arduino

Сообщение P43YM » Вт мар 05, 2013 7:58 am

Господа собрал девайс, MajorDoMo еще даже не ставил, снимаю показания с lcd. Постепенно "уплывают" показания относительно вольтметра после калибровки, как я понимаю, связано это с тем что опорное напряжение на ацп нестабильно. Кто решил данную проблему? Дополнительный стабилизированный источник на 5в для AREF?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: POWER MONITOR на Arduino

Сообщение Alex » Вт мар 05, 2013 10:58 am

Постепенно "уплывают" показания относительно вольтметра после калибровки
Насколько уплывают?
Кто решил данную проблему? Дополнительный стабилизированный источник на 5в для AREF?
У меня расхождение с калибровкой (через несколько месяцев) около 1,5 вольт. Это в пределах погрешности довольно неплохих приборов (меньше 1 процента). Так что заморачиваться не вижу смысла.

Тут ещё дело в том, что эти показания не используются для строгой отчётности, где всё равно нужны сертифицированные приборы.
P43YM
Сообщения: 13
Зарегистрирован: Вт мар 05, 2013 7:50 am
Благодарил (а): 0
Поблагодарили: 2 раза

Re: POWER MONITOR на Arduino

Сообщение P43YM » Вт мар 05, 2013 3:25 pm

Alex писал(а):Насколько уплывают?
До пяти вольт минут за 30, а через некоторое время возвращается назад. Чем питаете ардуинку?
Alex
Сообщения: 2357
Зарегистрирован: Пт апр 20, 2012 12:53 pm
Благодарил (а): 42 раза
Поблагодарили: 262 раза

Re: POWER MONITOR на Arduino

Сообщение Alex » Вт мар 05, 2013 4:33 pm

Питается от USB порта, никаких проблем не наблюдается.
P43YM
Сообщения: 13
Зарегистрирован: Вт мар 05, 2013 7:50 am
Благодарил (а): 0
Поблагодарили: 2 раза

Re: POWER MONITOR на Arduino

Сообщение P43YM » Вт мар 05, 2013 4:36 pm

Ладно, спасибо. Буду искать проблему,экспериментировать с питанием.
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: POWER MONITOR на Arduino

Сообщение dmw » Сб мар 16, 2013 6:39 pm

Не проще былоб использовать счетчик Меркурий 200.02? Его цена 1350 руб. И при этом есть интерфейс RS485, мерит мгновенные напряжение, мощность и ток, считает потребление по 2 тарифам, фиксирует последние отключение и включение напряжения. Есть и дисплей.
Использую его, отлично справляется.
Vadymkyr
Сообщения: 125
Зарегистрирован: Ср дек 26, 2012 8:33 pm
Откуда: Севастополь
Благодарил (а): 0
Поблагодарили: 1 раз

Re: POWER MONITOR на Arduino

Сообщение Vadymkyr » Сб мар 16, 2013 7:40 pm

Расскажите пожалуйста, как вы интегрировали его в MajorDoMo, какой длины кабель RS485 и как подключили к компьютеру?
dmw
Сообщения: 469
Зарегистрирован: Вт мар 12, 2013 1:22 am
Благодарил (а): 41 раз
Поблагодарили: 81 раз

Re: POWER MONITOR на Arduino

Сообщение dmw » Вс мар 17, 2013 12:17 am

Есть несколько вариантов его подключить:
1) Их фирменный преобразователь интерфейсов Меркурий-221 http://www.incotexcom.ru/m221.htm
2) Альтернативный вариант http://incotex-counter.blogspot.ru/2012 ... 85can.html
3) Самому собрать не сложную схему преобразователя RS485/CAN - USB или COM. Схем полно в интернете.
Я использую это: http://ttronics.ru/?menu=teleport12i
Схема простая:
Изображение
Используются выходы 1 - 4 (5-ый непонятно зачем, я его не подключал).
Длина линии до счетчика 25 метров. Здесь нужно сделать уточнение, если длина линии больше 1 метра, то лучше установить подтягивающие резисторы 560-750 Ом между выходами 1-3 и 2-4 (я поставил по 620 Ом), но может работать и так, зависит от преобразователя.

На сервере нужно создать объект Electric, метод к нему и переменные sensorAmper, sensorVatt и sensorVolt как описано в самом начале этой темы.
PHP для работы с преобразователем RS485-RS232 есть тут в конце статьи: http://ab-log.ru/smart-house/mercury-230
Я немного его переделал под преобразователь RS485-Ethernet и MajorDoMo:

Код: Выделить всё

<?php
$service_port = 10010;
$address = "192.168.1.160"; //адрес преобразователя интерфейсов
$server = "192.168.1.20"; //адрес сервера MajorDoMo
$cmd = array (0x00, 0x01, 0x0B, 0xF0, 0x63, 0x50, 0x17); /*команда счетчику на запрос текущих данных, первые 4 байта - адрес счетчика (у меня 068592, это последние 6 цифр серийного номера), 2 последних байта - контрольная сумма*/
$hex = "";
for ($i=0; $i<count($cmd); $i++){$hex .= chr($cmd[$i]);} //Формируем запрос для счетчика
$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP); //Создаём  TCP/IP сокет
$result = socket_connect($socket, $address, $service_port); //Пытаемся соединиться с '$address' на порту '$service_port'
$result = socket_set_option($socket,SOL_SOCKET, SO_RCVTIMEO, array("sec"=>5, "usec"=>0)); //Устанавливаем таймаут на сокете не более 5 секунд   
socket_write($socket, $hex, strlen($hex)); //Отправляем запрос
$result = socket_read($socket, 14); //Читаем ответ
// Результат получаем в шестнадцатиричном виде, но его написание соответствует десятичному значению.
// Например 0x22 0x87 = 228,7 вольт. Переводим результат в человеческий вид.
$Uv = round(((ord($result[5])>>4)*100)+((ord($result[5])&0x0f)*10)+(ord($result[6])>>4)+((ord($result[6])&0x0f)/10),1);
$Ia = round(((ord($result[7])>>4)*10)+(ord($result[7])&0x0f)+((ord($result[8])>>4)/10)+((ord($result[8])&0x0f)/100),2);
$Pv = round(((ord($result[9])&0x0f)*10)+(ord($result[10])>>4)+((ord($result[10])&0x0f)/10)+((ord($result[11])>>4)/100)+((ord($result[11])&0x0f)/1000),3);
socket_close($socket);//Закрываем сокет

//Значения Uv, Ia, Pv теперь можно передать в базу MajorDoMo
$result=file_get_contents("http://".$server."/objects/?object=sensorAmper&op=m&m=EleChanged&t=".$Ia);
$result=file_get_contents("http://".$server."/objects/?object=sensorVatt&op=m&m=EleChanged&t=".$Pv);
$result=file_get_contents("http://".$server."/objects/?object=sensorVolt&op=m&m=EleChanged&t=".$Uv);
?>
Этим скриптом запрашиваются текущие параметры сети, его я запускаю отдельно в Cron-е раз в 5 минут, для графиков и анализа этого вполне достаточно.
Для получения показаний счетчика команда немного другая, но сам скрипт почти тотже.
Ответить