Страница 6 из 32
Re: POWER MONITOR на Arduino
Добавлено: Пн фев 25, 2013 8:44 am
BATONS
Alex
Почему не сделать? В MajorDoMo можно сделать любые графики.
Причём обновляется почти в реальном времени. Я поставил обновление раз в 20 секунд. Ползут потихоньку графики. 7 живых графиков на страничке совсем не грузят систему.
Тут используется та самая прецизионная мода, которая не теряет пики (в отличие от «традиционного» алгоритма).
Красивый у Вас график получился, поможете мне такой же у себя запустить?
Re: POWER MONITOR на Arduino
Добавлено: Пн фев 25, 2013 10:31 am
Alex
Код отдельно выложить (как независимую программу) или вставить этот модуль в свою программу для измерения тока и напряжения?
У меня работает ваша программа по измерению U, I, P. И код будет работать в её составе, так что лучше, наверное, сразу интегрировать всё вместе. Только желательно выделить дополнения, чтобы можно было легко понять, где новое и что мне переносить в мой скетч.
Красивый у Вас график получился, поможете мне такой же у себя запустить?
У меня такой график рисуется таким вызовом
<img src="/pChart/?p=analog42.value&type=12h&width=800&height=210&title= &unit=Вт&gcolor=brown>ype=fline&scale=0&prec=1&px=1&grid=0&fil02=2">
Проблема в том, что мой index.php не совпадает со стандартным. Для начала попробуйте запустить это у себя (только объект замените). Возможно, это заработает сразу.
Основная фишка здесь - &prec=1. Это отключает стандартные графики и переключает в прецизионный режим, где не теряется информация и прорисовывается каждый пик.
Re: POWER MONITOR на Arduino
Добавлено: Вт мар 05, 2013 7:58 am
P43YM
Господа собрал девайс, MajorDoMo еще даже не ставил, снимаю показания с lcd. Постепенно "уплывают" показания относительно вольтметра после калибровки, как я понимаю, связано это с тем что опорное напряжение на ацп нестабильно. Кто решил данную проблему? Дополнительный стабилизированный источник на 5в для AREF?
Re: POWER MONITOR на Arduino
Добавлено: Вт мар 05, 2013 10:58 am
Alex
Постепенно "уплывают" показания относительно вольтметра после калибровки
Насколько уплывают?
Кто решил данную проблему? Дополнительный стабилизированный источник на 5в для AREF?
У меня расхождение с калибровкой (через несколько месяцев) около 1,5 вольт. Это в пределах погрешности довольно неплохих приборов (меньше 1 процента). Так что заморачиваться не вижу смысла.
Тут ещё дело в том, что эти показания не используются для строгой отчётности, где всё равно нужны сертифицированные приборы.
Re: POWER MONITOR на Arduino
Добавлено: Вт мар 05, 2013 3:25 pm
P43YM
Alex писал(а):Насколько уплывают?
До пяти вольт минут за 30, а через некоторое время возвращается назад. Чем питаете ардуинку?
Re: POWER MONITOR на Arduino
Добавлено: Вт мар 05, 2013 4:33 pm
Alex
Питается от USB порта, никаких проблем не наблюдается.
Re: POWER MONITOR на Arduino
Добавлено: Вт мар 05, 2013 4:36 pm
P43YM
Ладно, спасибо. Буду искать проблему,экспериментировать с питанием.
Re: POWER MONITOR на Arduino
Добавлено: Сб мар 16, 2013 6:39 pm
dmw
Не проще былоб использовать счетчик Меркурий 200.02? Его цена 1350 руб. И при этом есть интерфейс RS485, мерит мгновенные напряжение, мощность и ток, считает потребление по 2 тарифам, фиксирует последние отключение и включение напряжения. Есть и дисплей.
Использую его, отлично справляется.
Re: POWER MONITOR на Arduino
Добавлено: Сб мар 16, 2013 7:40 pm
Vadymkyr
Расскажите пожалуйста, как вы интегрировали его в MajorDoMo, какой длины кабель RS485 и как подключили к компьютеру?
Re: POWER MONITOR на Arduino
Добавлено: Вс мар 17, 2013 12:17 am
dmw
Есть несколько вариантов его подключить:
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 минут, для графиков и анализа этого вполне достаточно.
Для получения показаний счетчика команда немного другая, но сам скрипт почти тотже.