Логгер - токовые клещи.

astrafoto
Offline
Зарегистрирован: 18.11.2015

Есть необходимость поминутного мониторинга потребляемого тока в электросетях СНТ в пределах от 1 до7 суток. Использовать буду вот такой: http://www.ebay.com/itm/281621527318_trksid=p2057872.m2749.l2649&ssPageName=STRK%3AMEBIDX%3AIT датчик тока. Ардуинка на этапе отладки Nano, потом возможно mini. Собственно вопрос - как проще всего организовать хранение однобайтных данных - через прямой доступ к памяти, или через массивы? Использовать для этих целей SD просьба не предлагать. Удорожание конструкции, увеличение потребления, и все это ради нескольких килобайт инфы, как бы не особо оправдано. Устройство автономное, будет висеть на столбе сутки -двое, после чего сниматься, подключаться к компу и по нажатию кнопки скидывать инфу в сериал монитор. Что посоветуете?

astrafoto
Offline
Зарегистрирован: 18.11.2015

Непонятно, как тут редактировать сообщения. Рабочая ссылка http://www.ebay.com/itm/1pcs-SCT027H-Current-Sensor-Handheld-Slip-Core-Current-Transformer-NEW-/281621527318?hash=item4191f37b16:g:naAAAOSwLVZVqyb8

inspiritus
Offline
Зарегистрирован: 17.12.2012

А что Вы подразумеваете под прямым доступом к памяти и массивами ? 

Тайм-штамп Вам писать не требуется?

Ради нескольких килобайт кувыркайтесь с еепром, если уж сд не подходит. 

astrafoto
Offline
Зарегистрирован: 18.11.2015

Нет, тайминг писать не требуется. Насчет прямого доступа к памяти я и имел ввиду еепром, но там ограничение в 1кб - это менее суток. Может через использование массивов больше получится прописать? Ессно прийдется реализовать контроль за переполнением памяти. Где хранятся данные из массивов, в оперативке или во флэш? Извините за ламерские вопросы.

vitalikost
Offline
Зарегистрирован: 28.11.2014
Yarik.Yar
Offline
Зарегистрирован: 07.09.2014

Массивы - во оперативке. И, если Вы вдруг допустите ошибочку в проге, или забудете снять данные и обнулить массив, то он может разростись на всю оперативу, занять область стека...ресетом всё лечится, но данные потеряете. Ах да, еще и питание должно быть постоянным, чтобы данные в оперативе не стирались. хотя, как показывает практика, данные в ОЗУ ненадолго остаются...

astrafoto
Offline
Зарегистрирован: 18.11.2015

vitalikost пишет:
Как вариант I2C EEPROM

Пока что ищу варианты без внешних костылей.

 

astrafoto
Offline
Зарегистрирован: 18.11.2015

Yarik.Yar пишет:
Массивы - во оперативке.

Тогда тоже не вариант, там всего 2кб. Флэш память можно для этого как-то задействовать?

bwn
Offline
Зарегистрирован: 25.08.2014

Флэш задействовать не выйдет. Смотрите на внешний EEPROM, удорожание там копеечное. Да и SD вроде не бешено стоит.

astrafoto
Offline
Зарегистрирован: 18.11.2015

То есть у меня только два варианта - или еепром контроллера, или внешняя память?

bwn пишет:
Да и SD вроде не бешено стоит.

Для одного девайса да, для десятка уже ощутимо, хотя тоже не принципиально. Плюс повышение энергопотребления и общее усложнение конструктива и скетча - для меня как совсем новичка это немаловажно.

astrafoto
Offline
Зарегистрирован: 18.11.2015

ЕЕПРОМ я могу использовать по полной, все 1024 ячейки? Или его Ардуинка тоже пользует?

inspiritus
Offline
Зарегистрирован: 17.12.2012

А что энергопотребление ? У вас провод рядом :) клещи - трансформатор. Секунду замеряете , 59 секунд заряжаете аккумулятор 

bwn
Offline
Зарегистрирован: 25.08.2014

astrafoto пишет:

ЕЕПРОМ я могу использовать по полной, все 1024 ячейки? Или его Ардуинка тоже пользует?

Дуина не пользует, но объем для вас мал. Я имел в виду внешний I2C EEPROM. Что то вроде этого

astrafoto
Offline
Зарегистрирован: 18.11.2015

inspiritus пишет:
А что энергопотребление ? У вас провод рядом :) клещи - трансформатор. Секунду замеряете , 59 секунд заряжаете аккумулятор 
Да там крохи на выходе, боюсь даже для нормального измерения без усиления не хватит.

astrafoto
Offline
Зарегистрирован: 18.11.2015

bwn пишет:
Дуина не пользует, но объем для вас мал.

Это хорошо. Если писать раз в минуту - это уже 17 часов, можно и пожертвовать интервалом, писать раз в две-три минуты, а это уже вполне приемлемо по времени. Или вообще делать выборку раз в минуту, а писать максимальное значение раз в пять минут. Ну а если появится потребность в более точных и более длительных интервалах, буду разбираться с SD.

Еще вопрос - как известно еепром имеет ограничение по количеству циклов записи. Так вот это ограничение на каждую ячейку по отдельности, или это ограничение в целом на весь еепром? Ну то есть могу я записать 100000 раз в первую ячейку, 100000 раз во вторую и т.д. Или у меня есть только 100000 обращений неважно к какой ячейке? Иными словами, если я пропишу все 1024 ячеек по разу - это считается за один цикл(каждая ячейка по разу) или за 1024 цикла доступа к еепром? 

bwn
Offline
Зарегистрирован: 25.08.2014

По епрому значение справедливо для каждой ячейки.

astrafoto
Offline
Зарегистрирован: 18.11.2015

bwn пишет:
По епрому значение справедливо для каждой ячейки.

Это радует. Спасибо за помощь!

pav2000
Offline
Зарегистрирован: 15.12.2014

Вам дело советуют i2c eeprom.

Часики реал тайм нужны в этом проекте? Мне кажется нужны. Обычно с часами ставят еепром на одной плате.

Т.е при добавлении часов память автоматом получается. 

Объем кажись 4 кбайта надо уточнять. Цена около 100 рублей, соединяется 4 проводами.

И еще подумайте какой максимальный ток будет мерить устройство? (Если отдельные дома то 25-32 а максимум)

Брать токовый трансформатор на 160а не разумно.  Надо брать на 20-30 а. А то точность потеряете. И еще было озвучено 1 байт измерения. Т.е дискретность будет 25/256= где то 0.1 ампера (это даже не точность а дискрет отсчета, точность будет 0.2-0.3). Она Вас устроит (ацп 10 битный в мк)? И нужна правильная схема подключения (входной фильтр) и обработка полученного сигнала (там тоже тонкости есть).

И обращаю Ваше внимание датчик не ток выдает а переменное напряжение которое пропорционально измеряемому току.

По поводу потребления

Про микро 3.3в 8мгц батарейка литиевая 3.6 в формата аа. Секунду измеряете далее на минуту засыпаете. Хватит на месяцы работы гарантированно.

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000 пишет:
Вам дело советуют i2c eeprom.

Часики реал тайм нужны в этом проекте?

Не-не, пока что самая минималка, чем проще - тем лучше.

pav2000 пишет:
Брать токовый трансформатор на 160а не разумно.

Контроль поуличный - и уже потом подомовой поиск основного потребителя. По улице идут три фазы - мониторим все три и определяем фазу с потребителем, на ней обычно висят три-четыре дома из всей улицы(10-12 домов). Точность не важна, скорее нужна общая картина  - большинство обогревателей и котлов включаются-выключаются по термостату, и очень сложно обычными токовыми клещами вычислить.

pav2000 пишет:
И нужна правильная схема подключения (входной фильтр) и обработка полученного сигнала (там тоже тонкости есть).

Это первое что прийдется решать - пожалуй основная задача в данном проекте. Схемы включения я смотрел, самое простое - сдвигают ноль синусоиды в район 2,5в при опорном 5в.

pav2000 пишет:
По поводу потребления

Ага, понял, спасибо!

astrafoto
Offline
Зарегистрирован: 18.11.2015

Может кто пояснит мне, к чему именно такая схема включения http://openenergymonitor.org/emon/buildingblocks/ct-sensors-interface

Сместили синусоиду в плюсовую зону - фактически значимыми значениями стала лишь половина от опорных 5в. - потеряли в точности.

Полезный сигнал задавили шунтом, в итоге на низах вообще нереально будет что-то померять.

Не лучше ли без всяких шунтов со вторички сразу на диодный мост с небольшим кондером, и уже потом давить шунтом, чтобы не вылезать за пределы входных 5в для АЦП. Получим повышение точности за счет использования всех значений от 0 до 5в и вполне реальные данные на низах. Самого датчика пока нет, пробовал с катушкой 7000витков(с сердечником ессно) - при 1квт нагрузки получаю от 0,7 до 1в постоянки  в зависимости от положения провода в сердечнике. Что я делаю не так?

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000 пишет:
По поводу потребления

Про микро 3.3в 8мгц батарейка литиевая 3.6 в формата аа. Секунду измеряете далее на минуту засыпаете. Хватит на месяцы работы гарантированно.

Ардуинка сама себя будит? Или только по внешнему прерыванию?

pav2000
Offline
Зарегистрирован: 15.12.2014

astrafoto пишет:

pav2000 пишет:
По поводу потребления

Про микро 3.3в 8мгц батарейка литиевая 3.6 в формата аа. Секунду измеряете далее на минуту засыпаете. Хватит на месяцы работы гарантированно.

Ардуинка сама себя будит? Или только по внешнему прерыванию?

 

Wdt  использую

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000 пишет:

Wdt  использую

Для этого вроде нужно бутлоадер перешивать? Или я что-то путаю?

pav2000
Offline
Зарегистрирован: 15.12.2014

 Да  optiboot 5.0

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000 пишет:

 Да  optiboot 5.0

С этим ясно, спасибо! А библиотеку для сна какую используете?

pav2000
Offline
Зарегистрирован: 15.12.2014

Либо сам регистры устанавливаешь. Либо либ Low-Power

 

astrafoto
Offline
Зарегистрирован: 18.11.2015

Ага, спасибо! Буду разбираться.

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000 пишет:
Про микро 3.3в 8мгц 

Про мини трехвольтовая пойдет для этих целей? Про микро 3.3в похоже сворачивают производство.

astrafoto
Offline
Зарегистрирован: 18.11.2015

Ох, там же 32U4 стоит. Мне бы с обычным 328 для начала разобраться.

pav2000
Offline
Зарегистрирован: 15.12.2014

ошибся малек конечно про мини

astrafoto
Offline
Зарегистрирован: 18.11.2015

О.....это радует, спасибо!

))))

astrafoto
Offline
Зарегистрирован: 18.11.2015

Почитал про WDT - не пойму логику использования его как будильника из режима сна. Это же рестарт-таймер, каждые 8сек его нужно обнулять, иначе ребут. Если МК мы усыпили, кто будет WDT обнулять? Просвятите вкратце пожалуйста на эту тему.

bwn
Offline
Зарегистрирован: 25.08.2014

astrafoto пишет:

Почитал про WDT - не пойму логику использования его как будильника из режима сна. Это же рестарт-таймер, каждые 8сек его нужно обнулять, иначе ребут. Если МК мы усыпили, кто будет WDT обнулять? Просвятите вкратце пожалуйста на эту тему.

От он сам его и пнет, необнуленный)))

astrafoto
Offline
Зарегистрирован: 18.11.2015

bwn пишет:

От он сам его и пнет, необнуленный)))

Ну да, пнет через 8сек после засыпания. А мне на минуту надо, или на час, кто в это время будет таймер сбрасывать и считать время до просыпания? 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

astrafoto, не забывайте вотчдог -это в первую очередь аппаратная антизависайка, а не программируемый будильник.

pav2000
Offline
Зарегистрирован: 15.12.2014

dimax пишет:

astrafoto, не забывайте вотчдог -это в первую очередь аппаратная антизависайка, а не программируемый будильник.

Не согласен - Есть режим глубокого сна из которого контроллер выводится только по прерыванию или вотчдогу. Это не спроста изготовитель в данном случае предусмотрел режим будильника.

Из 8 секунд сделать минуту просто - используейте счетчик 8 секундных итервалов и когда он достигнет 60/8 значения далайте то что Вам надо. Не забыть про объявления типа

// Перемнные которые сохраняются в памяти без инициализации
int S8_tick __attribute__((section(".noinit")));           // число 8 секундных интервалов с последнего измерения

 

astrafoto
Offline
Зарегистрирован: 18.11.2015

pav2000]</p> <p>[quote=dimax пишет:
Из 8 секунд сделать минуту просто - используейте счетчик 8 секундных итервалов и когда он достигнет 60/8 значения далайте то что Вам надо.

А кто этот счетчик считать будет, если МК спит?

pav2000
Offline
Зарегистрирован: 15.12.2014

Раз в 8 секунд просыпаетесь (wdt),

Счетчик+1, далее проверяете не пора ли делать измерение (60/8 счетчик), если пора до делаете и сбрасываете счетчик,  засыпаете.

Без измерения Время работы -  микросекунды

astrafoto
Offline
Зарегистрирован: 18.11.2015

При выходе из сна по wdt программа с какого места начнет работать? Так как это фактически рестартер, то предполагаю что с самого начала? То есть с инициализации переменных, блока setup и только потом основной блок loop. А.....и еще при рестарте бутлогер же сначала загрузку скетча какое то время ждет. То есть проснулись, бутлогер нового скетча не дождался, запустил залитый скетч, так?

Куда в таком случае лучше прописать обработку сна? В setup или в самом начале loop?

 

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

astrafoto, у вотчдога 2 режима работы - сделать ресет по окончанию счёта таймера или вызвать аппаратное прерывание. Соответссно во втором случае программа вернётся в то место, с которого ушла спать :)

pav2000
Offline
Зарегистрирован: 15.12.2014

Мыслите в нужном направлении (по поводу рестарта).

Обратите внимание на код который я приводил выше он важен. Это запрет на инициализацию переменных.

Сам код я делал в лупе.  Главное нужные переменные не потерять.   Контроллер возвращается туда где заснул.

По поводу загрузкика,  его код при этом не выполняется. МК знает что проснулся и загрузчик прогонять не надо, куда возвращаться тоже знает.

 

И еще момент про мини надо доработать напильником для низкого потребления

1.  Светодиоды долой (хотя бы по питанию, но лучше и по 13 ноге если SPI используешь)

2.  Стабилизатор долой.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

astrafoto, задумайтесь,  по-моему вы не по тому пути собираетесь идти. Если вам нужен логгер данных, то для него очень удобно использовать  энергонезависимые часы типа DS3231. Эти же часы могут будить МК через любой промежуток времени, для этого там есть специальная нога, которая подключается на внешнее прерывание МК. На этой же плате часов обычно ставят епромку на 4 Кбайта, её вполне хватит под ваши задачи.

astrafoto
Offline
Зарегистрирован: 18.11.2015

Теперь понятно, спасибо!

pav2000 пишет:
Обратите внимание на код который я приводил выше он важен. Это запрет на инициализацию переменных.
Да, это учту.

Жаль пока не могу найти нормального подробного справочника, везде только перепечатки с этого минимализма - http://arduino.ru/Reference - уже неоднократно встречаю части кода, про которые ни слова в этих мини-шпаргалках. Буду благодарен, если что-то порекомендуете. )) 

astrafoto
Offline
Зарегистрирован: 18.11.2015

dimax пишет:
использовать  энергонезависимые часы типа DS3231. 
Спасибо! Пока что я рассматриваю это как запасной вариант. Там выигрыш по памяти небольшой получается. Сохранять лог в реальном времени мне не требуется, а брать лишний девайс только ради того чтобы избежать перепрошивки загрузчика и лишних 4кб памяти.....ну не знаю, пока что попробую изначальный вариант.

bwn
Offline
Зарегистрирован: 25.08.2014

astrafoto, вряд ли вы это найдете в справочниках. Если закончили с Соммером, переходите к K&R. Конкретно Вашу задачу там тоже не опишут, выполнять примеры, достигать понимания, что в них происходит. Иначе не выйдет.

astrafoto
Offline
Зарегистрирован: 18.11.2015

bwn пишет:

astrafoto, вряд ли вы это найдете в справочниках. Если закончили с Соммером, переходите к K&R. Конкретно Вашу задачу там тоже не опишут, выполнять примеры, достигать понимания, что в них происходит. Иначе не выйдет.

Не, это уже выше моего понимания, да и времени столько нет, чтобы Си по полной штудировать.

bwn
Offline
Зарегистрирован: 25.08.2014

Не разобравшись с "собакой", вы вряд ли куда продвинетесь.

astrafoto
Offline
Зарегистрирован: 18.11.2015

Вот тут http://student-proger.ru/2013/10/energopotreblenie-arduino/ говорится о всего лишь двукратном снижении энергопотребления в режиме сна. Имеет ли смысл ради этого огород городить? Я думал кардинально можно ток потребления снизить.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

astrafoto, тот товарищ измерял ток с включённым преобразователем USB-UART, поэтому у него в сухом остатке оставался ток потребления преобразователя.

bwn
Offline
Зарегистрирован: 25.08.2014

astrafoto пишет:

Вот тут http://student-proger.ru/2013/10/energopotreblenie-arduino/ говорится о всего лишь двукратном снижении энергопотребления в режиме сна. Имеет ли смысл ради этого огород городить? Я думал кардинально можно ток потребления снизить.

Так вы ищите энергосбережение не на дуину, а на МК, это вообще то разные вещи. На плате у вас развешаны, ОУ, стабилизаторы, светодиод питания, мелкосхема интерфейса и все это кушает. Сам не занимался, но там вроде речь о микроамерах.

dimax
dimax аватар
Offline
Зарегистрирован: 25.12.2013

Тут уже летала ссылочка на товарища из забугорья, который досканально разобрался в спящих режимах и токах потребления http://www.gammon.com.au/power