Самодельный логгер - делал ли кто?

Автор Timber, 26 Сен. 2016 в 22:21

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Серик

#216
Приветствую Всех Форумчан!
Достал модули HC-12 из почтовой упаковки, припаял колодку с штырьками с одной стороны и антенну с другой стороны, также заранее завел set  на gnd (для входа в командный режим). Нашел адаптер: https://radiomart.kz/konvertery/1215-6-ti-pinovyj-konverter-usbuart-ys-15-na-cp2102.html (который лежал неиспользуемый с весны) в сборе с двухканальным логгером от UstAlexei , отсоединил логгер, присоединил HC-12 (Rx и Tx накрест), вставил адаптер+HC-12 в USB гнездо, открыл диспетчер устройств, там он есть ( адаптер ), но в свойствах пишут, что необходимо переустановить драйвер, снова установил драйвер ( по той же ссылке, что и в прошлый раз (весной) устанавливал: https://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp-drivers из этого сообщения: https://electrotransport.ru/index.php?msg=1313228 ), затем не вынимая сборки открыл "терминал", нажал connect, ввел тестовую команду "AT" и получил такую ошибку:
Спойлер
Затем, нажал disconnect, quit еще по моему, то есть вышел из терминала, затем вытащил сборку из USB гнезда.
Через некоторое время снова вставил сборку в USB гнездо, открыл Terminal v1.93b, ввел тестовую команду "AT" и получил ответ "OK". Следовательно, я могу вводить нужную мне команду, ввожу "AT+U8N2" и получаю "OK"!
Спойлер
Спойлер
Спойлер
Нажимаю disconnect, quit, вытаскиваю сборку с USB гнезда, теперь надо отпаять (отсоединить проводок с разъемом надетый на штырек set от  припаянного к gnd штырька) set модуля HC-12 с gnd этого же модуля.
Круть!
Теперь можно/нужно проделать то же самое с вторым модулем!
Приготовил второй модуль:
Спойлер
Теперь рискнул ввести сразу нужную мне команду (без тестовой команды):
Спойлер
Также получил положительный ответ:
Спойлер
В Terminal v1.93b нажал disconnect, quit, вытащил сборку "адаптер+второй HC-12" из USB гнезда..
Отсоединил set от gnd.
Надеюсь, должно заработать. :-)



Серик

#217
Радисвязь заработала!
Спойлер
Расстояние метров 25 (по даташиту в этом режиме должна работать до 600 метров, но мне это не надо, максимум мне понадобится 100 метров, так что надеюсь, что с запасом ).
HC-12 модуль в режиме по умолчанию FU3, единственное, что изменил stop bit 1 переставил на stop bit 2!
Заряжается 2V 4PzS420 аккумуляторный элемент ( уже 3 суток, НРЦ было 1,48В-стоял примерно 4 года в отстое, после 4-х лет, примерно, эксплуатации , на данный момент плотность 1,180 ) , ЗУ база-2В 30А CCCV с выкрученным Vstab до 2,8В+Моргалка на Attiny13 с управлением по первичке ( замер напряжения неправильный из-за шунта, пока не переделывал ), режим заряда с модуляцией (в режиме заряда с модуляцией на 200А 75мВ шунте видел пики тока до 100А при заполнении 10%).
Производится замер напряжения, замер тока не производится (пока).
Благодарю Уважаемых UstAlexei за простой двухканальный логгер и KIE за ссылку на радиомодули HC-12 https://electrotransport.ru/index.php?msg=1285382!
Спойлер
Вышел из терминала, подключил осциллоскоп, тоже работает:
Спойлер
Только вот на 5 секунд не могу переставить, даже после того как вышел из терминала, передергивал/вытаскивал из USB гнезда адаптер+радиомодуль, и обратно вставлял, все равно, после подключения адаптера+радиомодуль, и после входа в терминал, инфо поступает раз в секунду. хотя отправлял 5000? Надо обесточить еще сам логгер с той стороны радиосвязи, что бы поменять интервал поступления данных?
Пойду, выключу ЗУ на той стороне, переключу в режим заряда постоянным током с паузами ( без модуляции ), приду и посмотрю, что будет.
Спойлер
Так и есть, что бы поменять интервал, надо обесточить логгер, так как пришел и увидел что передача остановлена, вышел из осциллоскопа, снова зашел, что то не так нажал, и пошел стремительный поток данных, видать, пауза очень маленькая.
Осциллоскоп работает как микроскоп ( можно очень сильно увеличивать кривую, интервал очень маленький-запись очень подробная):
Спойлер

Пойду еще раз отключу и подключу.
В этот раз зашел в терминал ( здесь понятнее, как отправить интервал ), подключил, отправил 1000, и интервал стал 1 секунда, вышел из терминала, зашел в осциллоскоп, и да, запись идет с интервалом в одну секунду, идет заряд постоянным током с паузами.
Спойлер
Весь лог в осциллоскопе:
Спойлер
Интервал измерений-1 секунда. В одной клетке 2000 секунд?.
Лог за последние 3 часа:
Спойлер
Интервал измерений-1 секунда. В одной клетке 500 секунд.
За последние 0,5 часа:
Спойлер
Интервал измерений-1 секунда. В одной клетке 100 секунд.
Замерил напряжение на полюсах элемента: заряд-2,35В, пауза-2,27В.
Плотность-1,210.
На экране 145 секунд заряда:
Спойлер
Интервал измерений 1 секунда. В одной клетке 10 секунд.
На экране 90 секунд заряда:
Спойлер
Интервал измерений 1 секунда. В одной клетке 5 секунд.
Обнаружил вот такой "артефакт":
Спойлер
Пауза, порядка 75-100 секунд с снижением напряжения в паузе, что это было?
Паузы достигли регулярных 15-20 секунд и алгоритм решил проверить падение напряжения в длительной паузе?
Вот еще продолжение, "добивка" при заряде постоянным током удивляет:
Спойлер
До этих двух событий все шло "горизонтально."
Тенденция новой "негоризонтальной" кривой закрепилась, похоже на следующий этап алгоритма:
Спойлер
Сходил, замерил напряжение заряда ( подачи тока ) и напряжение в паузе: 2,45В и 2.29В соответственно.
На "горизонтальном" этапе было, соответственно: 2,35В и 2,27В.
Похоже, произошел возврат к предыдущему, "горизонтальному" этапу:
Спойлер
Теперь, заметил, что уменьшилась пауза, с достигных ( до артефактов ) 15-17 секунд, до 7-10 секунд:
Спойлер
Вот в таком масштабе, наверное, видно уменьшение паузы:
Спойлер
Интересно, на основании чего алгоритм так делает?
Увеличились подачи тока, до 3 секунд, с предыдущих 1,5 секунд:
Спойлер
Замазки начали просыпаться?
График снова уходит от "горизонта":
Спойлер
График снова уходит в "горизонт":
Спойлер
Подачи тока снова уменьшились:
Спойлер
Интервал паузы остается небольшим.
Еще раз весь лог заряда:
Спойлер
Снова весь лог заряда:
Спойлер

30102018, примерно в 17-30 местного времени, выключил ЗУ и снова включил. В компьютере, в терминале ввел 500 ( 0,5 секунды ), пошла запись. Вышел из терминала, вошел в осциллоскоп,  выбрал порт, выбрал baud rate, заработало, теперь пошла более детальная запись:
Спойлер
интервал измерения 0,5 секунды, в клетке делается 2 измерения, следовательно, клетка=1 секунда.
Весь новый лог:
Спойлер
Интервал измерения 0,5 секунды. Длительность примерно 30 минут.

31102018, 06-55 местного времени.
Весь (новый-0,5 сек.) лог:
Спойлер
Процесс идет по горизонтали, не отклоняясь. Интервал измерения 0,5 секунды.
Немного в деталях:
Спойлер
В одной клетке 10 измерений, интервал измерения 0,5 сек., следовательно 1 клетка-5 секунд.
Паузы 15-20 секунд, подачи 1 секунда. Интервал измерения 0,5 секунды.
Паузы еще не дошли до стабильных, повторяющихся 30 секунд, аккумулятор потихоньку берет ток?
В 07-30 местного времени плотность: 1,225. Вчера утром, примерно в это же время плотность была 1,205.
Напряжение на пике секундного импульса заряда по мультиметру 2,35В, напряжение в конце паузы 2,26В.

Серик

#218
Приветствую Всех Форумчан!
Здравствуйте, Уважаемый UstAlexei!
В теме уже затрагивались вопросы:
https://electrotransport.ru/index.php?msg=984771
и ответы:
https://electrotransport.ru/index.php?msg=984965

Цитироватьsmiley UriBas, Если внимательно прочитаете описание то Serial-Oscilloscope. воспринимает и данные с плавающей запятой, НО! зачем контроллер загружать операциями деления? Ну посчитал он в квантах, давайте кванты и будем смотреть! А уж потом интересующие нас моменты сможем проанализировать в различных компьютерных программах.

А как найти "различные компьютерные программы", где можно "проанализировать интересующие нас моменты"?
Расскажите, пожалуйста, поподробнее!
Здесь Вы пишите:
https://electrotransport.ru/index.php?msg=984965
ЦитироватьДанные передавались на комп каждые 30с. Обрабатывал excel.
То есть, я при открытии Serial Oscilloscope 1.5, выбираю Start Logging, затем после завершения заряда ( или разряда ), беру этот логфайл и обрабатываю в excel?

Спойлер
31102018 15-50 местного времени перевел в режим заряда 12В ( я его использую как кипятильник для перемешивания электролита, база ЗУ при этом 2В 30А CCCV с падением тока на Vstab, Vstab выкручен до примерно 2,8В ), "устал" от "горизонтального" лога, электролит при этом спокойный, почти "зеркало" нету заметного роста плотности, как было утром 1,225, так и осталось на данный момент. Может быть после часа кипячения размешается ( посмотрю, есть расслоение или нет, все же элемент находился в отстое примерно 4 года, процесс восстановления длительный )?
Спойлер
Напряжение заряда ( в течении 25 секунд ) при этом получается 2,48В, в паузе ( около 5 секунд ) примерно 2,35В.
Сделал скрин в 16-10 местного времени, прошло более 15 минут, может быть 20 минут:
Спойлер
Интервал измерения 0,5 секунды.
Напряжение почему то не идет (даже, хотя бы медленно ) к установленному Vst, а застабилизировалось на отметке 2,48В, идет заряд?

Посмотрел (в 16-35 местного времени) непосредственно сам элемент, что там происходит, кипение мелкими пузырями ( почти туман ), бурления нет, в пробирке ареометра электролит мутный от мелких пузырьков, но без какого либо окрашивания, плотность за 50 минут не изменилась, так же 1,225. Напряжение такое же, в заряде 2,48В, в паузе 2,34В. Уровень не поднялся. Так как все штатно, оставлю еще на час, затем переведу снова в 2В адаптивный режим заряда постоянным током.
Картинка: 
Спойлер
Еще картинка для контраста:
Спойлер
31102018 в 17-40 местного времени перевел ЗУ обратно в 2В адаптивный режим заряда постоянным током:
Спойлер
Интервал измерения прежний, 0,5 секунды.
Плотность не выросла ( перемешиваться было нечему?, можно сделать вывод, что при таком темпе заряда-секундные подачи тока с паузой 10 секунд-электролит успевает перемешиваться и без кипячения )! Энергия была потрачена зря! Надеюсь, аккумулятору не сильно навредил!
Таким образом весь заряд с самого начала проходил в адаптивном 2В ( Моргалка на Attiny13 от UstAlexei и Vova_n, выбор режима 2В ) режиме, без газовыделения, напряжение , за небольшим исключением, не превышало 2,37В ( уровень электролита-почти зеркало, редкие отдельные мелкие пузырьки ), и привел к росту плотности с 1000 до 1225 2В 420Ач элемента с начальным НРЦ 1,48В, простоявшим в отстое примерно 4 года ( подробности в деталях неизвестны ). Элемент будет заряжаться в этом режиме пока не наступят повторяющиеся паузы в 30 секунд между подачами тока (  согласно одному из критериев окончания заряда от авторов алгоритма ), посмотрим что получится.
Спойлер
Здесь видно, как аккумулятор постепенно успокаивается после кипячения:
Спойлер

Спойлер
01.11.2018. 08-45 местного времени,продолжается заряд 2В 420А*ч аккумуляторного элемента.
Плотность выросла ( за сутки ) на 5 граммов/литр и составила 1,230.
Спойлер
Интервал измерения по прежнему 0,5 секунды. Паузы составляют повторяющиеся 20 секунд, иногда до 50 секунд.
Спойлер
Импульс заряда постоянного тока 1 секунда, изредка, после иногда появляющейся длительной паузы, 1,5 секунды:
Спойлер
Оставляю еще на сутки без изменения режима заряда, поглядим, насколько увеличатся паузы и подрастет ли плотность

Спойлер
01.11.2018. В 19-00 продолжительность паузы достигла повторящихся 25 секунд:
Спойлер



Серик

#219
Приветствую Всех Форумчан!
Завершил заряд 2В 420А*ч аккумулятора адаптивным зарядом постоянным током по Моргалка на Attiny13 от UstAlexei, выбор режима-2В, за последние сутки плотность не изменилась, вчера в это же время плотность была 1,23, такая же плотность и сегодня, 02112018 в 08-20 местного времени.
Спойлер

Паузы достигли и продолжительное время были повторяющиеся/следующие друг за другом 25 секунд, с появляющимися периодическими паузами до 50-70 секунд.
Решил ( перед КТЦ ) попробовать применить неадаптивный метод заряда (покипятить немного импульсами), включил в режим модуляции 12В ( база зу при этом остается 2В с выкрученным Vst до примерно 2,8В, таким образом, риска перезаряда по перенапряжению нет ), 10Гц модуляция с паузами 3 секунды каждые 25 секунд сессии, пиковые импульсные токи в этом режиме выше ( чем установившийся средний ток при заряде постоянным током ), оставлю на сутки.
Спойлер

Интервал измерения выбрал 100, то есть 0,1 секунда, посмотрим, потянет ли HC-12 такой темп передачи данных, расстояние 25 метров, надеюсь не будет сбоить.
Прошел час с момента нового способа дозаряда, напряжение заряда 2,50В, напряжение паузы 2,38В.
О чем может говорить небольшое/монотонное снижение напряжения заряда за 2 часа такого способа дозаряда?
Спойлер
В 10-40 местного времени замерил плотность, плотность поднялась на заметных 5 с плюсом граммов и составила 1,235+. Напряжение заряда все так же 2,50В, паузы 2,37В.
Сейчас ( 10-57 ) картинка такая:
Спойлер
Вопрос знатокам адаптивных импульсных алгоритмов, можно ли "притянуть за уши" и сказать, что график заряда имеет признаки адаптивного заряда ( кривая спада стремится перейти в горизонт-заряд прерывается, кривая фронта также стремится перейти в горизонт-но тут ей ( к сожалению ) не дается пауза, но модуляции хоть немного дают спад и соответствующий фронт )?
Спойлер
Для сверки/сравнения: оригинальная картинка чуть выше.






Alex_Soroka

Цитата: Серик от 02 Нояб. 2018 в 05:43
Завершил заряд 2В 420А*ч аккумулятора адаптивным зарядом постоянным током по Моргалка на Attiny13 от UstAlexei,
ну так разработчиков и спрашивайте - про графики которые вы выложили  :pardon:
Вообще по последним графикам - надо растянуть "пачку импульсов" если хотите что-то понять - сильно мало точек и идут артефакты усреднения(прокладки линий) осциллографа.

Серик

#221
Здравствуйте, Уважаемый Alex_Soroka!
Артефакты-это да, скорее всего передача данных мало о чем говорит.
Но не могу уменьшить интервал передачи, боюсь что радиомодуль не потянет, равно как и автор двухканального логгера на Attiny13 не рекомендует делать совсем уж малое число интервала передачи данных.
Благодарю за ответ!
Пачку растяну и загружу картинку в пост.
Нет, сначала схожу, выключу логгер, снова включу, приду и введу число хотя бы 50.
Ну вот, сделал интервал 50милисекунд, растянул до 5 записей в клетку, куда то все исчезло :-(
Спойлер


Уровни напряжений, замер мультиметром:


Спойлер
10 записей в клетку:

20 записей в клетку:

50 записей в клетку:

100 записей в клетку:

Вопрос исчерпан, спасибо!
На этом испытания радиомодуля HC-12 завершены, показал себя неплохо, лично для меня-то что надо!
Переведу в интервал передачи данных-1  секунда ( во избежание, мало ли чего ).
В 18-**местного времени снял аккумулятор с заряда по истечении 10 часов кипячения импульсами. Плотность 1,235.
Буду делать КТЦ.
Интересно,  сколько весит каждый пакет отправки в этом логгере?
Последние передачи по 50 mS могут ли быть недостоверными?
https://www.mini-tech.com.ua/download/datasheet/communications/HC-12_user_manual_v2.3B.pdf
У меня заводская настройка FU3, только изменил
ЦитироватьThe default setting is FU3, 9,600bps (8-dibit data, no check, one stop bit), CH001 (433.4MHz).
one stop bit на 2.



Серик


Серик

#223
Приветствую Всех Форумчан!
При замене верхнего резистора делителя напряжения столкнулся с нестабильностью получаемых данных в программу Oscilloscope 1.5:
https://electrotransport.ru/index.php?msg=1517556
Спойлер
Предполагаю что получился высокоомный делитель, вместо 15 кОм впаял 36 кОм, таким образом ток делителя получился, например, при напряжении аккумулятора 12,50В/37 000=337 микроАмпер (против 12,50В/16 000=781 микроАмпер в оригинальной схеме).
По правилу делителя ( когда то читал :-) ), хорошее соотношение токов ( через делитель и идущего на вход ) должно быть как можно больше, что бы не проваливалось напряжение в точке делителя, для измерения напряжения рекомендуют не менее 1000, в худшем случае не менее 500.
Может быть, мне попробовать перепаять резисторы делителя, с тем, что бы поднять/увеличить ток делителя (при неизменном коэффициенте делителя, что бы сохранить желаемое напряжение подаваемое на вход)?
Например, параллельно нижнему резистору делителя 1 кОм впаять 1 кОм, а верхний делитель с 36 кОм перепаять на 18 кОм?
Тогда, ток делителя мог бы быть 12,50В/18 500=675 микроАмпер.
Но что то тут не так. А как же тогда логгер работает/замеряет 2В аккумулятор, в этом случае ток делителя совсем мизерный: 2В/16 000=125 микроАмпер?
Спойлер
Неисправность передачи данных не самоустраняется :-):
Спойлер
АЦП считает то что ему дают? С МК все нормально?
Все события формируются в средней точке делителя?
Спойлер
/:-)
Попробую увеличить ток делителя.
Перед перепаиванием решил увеличить ток делителя перестановкой провода измеряющего напряжение на пин между двумя включенными последовательно резисторами верхнего плеча делителя ( резистор верхнего плеча делителя у меня состоит из двух включенных последовательно резисторов по 18 кОм, между ними впаян пин от 2,54 мм разъема "расческа"), теперь у меня делитель 18 кОм к 1 кОм, посмотреть на стабильность измеряемых/передаваемых/получаемых в Oscilloscope 1.5 данных:
Спойлер
Спойлер
Получил четкую/стабильную линию на графике!
Следовательно Логгер+НС12 работает исправно, дело было в номиналах делителя?
Но цифры на вертикальной шкале слева в окне программы Oscilloscope 1.5 перестали соответствовать цифрам напряжения разряжаемого аккумулятора по мультиметру.
А хотелось бы получать идентичные цифры, а не условные "кванты".
Попробую напаять 1 кОм резистор на резистор нижнего плеча делителя, а верхний резистор оставлю 1 шт. 18 кОм, что бы получился делитель 18 кОм к 0,5 кОм, что бы увеличить ток, посмотрю, что получится.

Перепаял и подключил к разряжающемуся аккумулятору:
Спойлер

Спойлер

1 час с небольшим работы нового делителя-проблемы остаются:
Спойлер
На данный момент, 02012019, 18-45 местного времени, весь лог выглядит таким образом:
Спойлер
02012019, 20-45:
Спойлер
02012019, 23-25:
Спойлер
Отскок 40 mV.
03012019, 00-43
Разряд до касания 12В 20,6:
Спойлер
Отскок 60 mV.
Спойлер
03012019 09-35
Спойлер
Спойлер
Отскок 90 mV.
Последний скрин разряда:
Спойлер
отскок 120 mV.
Начался заряд 03012019 12-38:
Спойлер
Предустановленный режим STD12 ^0^.
Спойлер
Оставлю этот вариант делителя логгера, посмотрю как дальше себя проявит, цифры на экране Oscilloscope 1.5 идентичные цифрам на мультиметре при измерении напряжения разряжаемого/заряжаемого аккумулятора-очень удобно!
Перенесу дальнейший процесс заряда в тему:
https://electrotransport.ru/index.php?topic=56276.0





SapienzSPB

#224
Привет всем. Решил я в свой зарядник прикрутить еще и логгер. Поискал по инету и не нашел ничего подходящего для отрисовки и хранения получаемых из SerialPort данных. Пришлось писать самому под свои хотелки.  Пока - стадия набросков но уже вполне юзабельное. Буду допиливать по мере нужд, настроения и времени.
Спойлер
Чего умеет?
1.  Умеет принять строку с шестью параметрами, вида 1.1;2.22;3.333;4.4444;5;6.666666 \n - то есть тупо вывод float'ов с разным количеством знаков после запятой.  Для ардуино проще и милее нет.
2. Распарсивает эту строчку и рисует шесть подсвеченных графов на одном листе. Есть (пока коряво конечно) возможность зумить поле графиков.  Включать и отключать неинтересные графы. При том Y шкала подстраивается под диапазон максимального значения.
3. Как только началась отрисовка графика - в папке C:\SerialLog\ (его предварительно надо создать ручками) создаются файлики с уникальным именем на основе текущей даты, с расширением CSV.
Спойлер
При каждом поступлении данных из Serial - туда добавляется строчка в понятном Эксэлю формате(с запятой). Выделяем мышью колонки и смотрим на график.
Спойлер
Очень удобно для ардуинщиков, если надо собрать долгий лог.
У меня контроллер отправляет строчку данных десять раз в секунду. Но это походу слишком часто. Логи в эксэле медленно ворочаются. Оптимальнее будет раз в секунду / минуту .
Версия бета. Когда будет первая стабильная - напишу обзор. Просьба - если кому интересно будет - запустить - заскринить какие файлы программа попросит в качестве библиотек к доустановке. Добавлю их в пакет.
Версии буду складывать в репозиторий : https://drive.google.com/drive/folders/153zxWUkkSxH1rfT0D9SjuOUZhtQr2_JY?usp=sharing
Сильно не пинайте. Я бейсиком чуть-чуть баловался еще в молодости.

UriBas

[user]SapienzSPB[/user], программа сделана на Ардуино Иде? 
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

SapienzSPB

#226
Зарядное написано в Arduino Ide. Отсылает данные через Serial (их можно посмотреть в терминале Arduino IDE).
Программа принимающая и рисующая графики написана в Visual Studio 2017 на Visual Basic.NET.
По сути пишу клиентскую часть так чтобы ее можно было использовать с чем угодно. В будущем обзывать графы можно будет как угодно.
Мне интересно будет посмотреть и на динамику изменения внутреннего сопротивления и побаночные напряжения и многое другое.
Для разных устройств можно будет использовать одну программу логера. Достаточно только в прошивке устройства прописать отсылку данных строкой определенного формата.

UriBas

[user]SapienzSPB[/user], а скетч можете выложить в репозитории или здесь? Было бы очень удобно закачивать программу, ну и изменять под свои нужды если что.
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

SapienzSPB

#228
Скетч ЗУ, извините, не дам. Пока код закрыт.
Скетч ардуинки(на Esp8266) используемой для отладки, при разработке программы-логера - пожалуйста:


Спойлер
unsigned int TimerNew,TimerPrev,GlobalSec=0;
byte msec10,sec,msec=0;
float Ubatprom = 0;
float Ubatcorrect=0.005;
float Ubatsred,Ubat,UbatLcdsred,UbatLcd=0;
byte TimerForSendData=0;

void setup() {
pinMode(A0, INPUT); \\определение аналогового пина для esp8266
Serial.begin(115200); \\ включение возможности передачи данных на скорости 115200 бод

}

void OprosNaprug(){
Ubatprom = (analogRead(A0) * Ubatcorrect);
Ubatsred = Ubatsred-(Ubatsred/ 4 )+ Ubatprom;
Ubat =(Ubatsred / 4 ); 
UbatLcdsred = UbatLcdsred-(UbatLcdsred/1024)+Ubatprom; //усредняем
UbatLcd =UbatLcdsred/1024; // и сглаживаем
}

void OutToSerial(){ // функция отсылки данных в порт
  if (TimerForSendData>=1){ // раз в 100 миллисекунд
      TimerForSendData=0;
      Serial.print (analogRead(A0)*0.6542,5); // просто от балды взятое значение для отладки. Если надо отправить конкретное значение переменной - Serial.print (x,y);  где x-значение, y - знаков после запятой
      Serial.print (";" );
      Serial.print (analogRead(A0)*0.5794621,5); // просто от балды взятое значение для отладки
      Serial.print (";" );
      Serial.print (analogRead(A0)*0.7798746521,5); // просто от балды взятое значение для отладки
      Serial.print (";" );
      Serial.print (analogRead(A0)*0.8798746521,5); // просто от балды взятое значение для отладки
      Serial.print (";" );
      Serial.print (analogRead(A0)*0.9798746521,5); // просто от балды взятое значение для отладки
      Serial.print (";" );
      Serial.println (analogRead(A0)*0.9798746521,5);      // просто от балды взятое значение для отладки
  }
}

void timer(){ //правильный таймер
TimerNew=millis()%1000/10; // 10 милисекунд. выявляем остаток от деления на тысячу счетчика милис и вычисляем одну десятую для таймера
if (TimerPrev!=TimerNew){
    TimerPrev=TimerNew;
    OprosNaprug();
    msec10=msec10+1;
    TimerForSendData=TimerForSendData+1;
    }   
    if (msec10>=10){
      msec10=0;
      msec=msec+1;
      TimerForSendData=TimerForSendData+1;
      OutToSerial();
    }
    if (msec>9){
        sec=sec+1;
        msec=0;
        GlobalSec=GlobalSec+1;
       
    }
   
}

void loop() {
timer();
OprosNaprug();
}

Непосредственно строку обрабатываемую и выводящуюся в графики формирует функция

Спойлер
void OutToSerial(){
      Serial.print (q,5);
      Serial.print (";" );
      Serial.print (w,5);
      Serial.print (";" );
      Serial.print (e,5);
      Serial.print (";" );
      Serial.print (r,5);
      Serial.print (";" );
      Serial.print (t,5);
      Serial.print (";" );
      Serial.println (y,5);
}

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

SapienzSPB

#229
Спойлер
Дописал основу просмотрщика сохраненых логов.
По клику на кнопке OPEN загружается график разряда. Перед этим надо выбрать желаемые графы. Их можно обозвать как удобно кликнув прямо по тексту рядом с галкой линии.
Спойлер
В данном случае показан почти суточный процесс разрядки аккумулятора до 12 вольт, а потом зарядки постоянным током(красный граф) до прекращения роста напряжения(черный граф) и контролем его дельты напряжения (голубой граф).
Если хочется что-то разглядеть поближе - можно выделить мышью интересующую область
Спойлер
и получить примерно такое.
Спойлер
или такое (да, знаю, разрешение АЦП маловато, но что есть то есть)
Спойлер
А вот и дельта изменения напряжения в интервале 10 минут
Спойлер
Работу веду неспешно. Близится альфа релиз.
Для интересующихся в репозитории положу последнюю сборку программы и примеры CSV логов.
Файлы достаточно большие, по 90 000 строк, потому ворочаются неспешно, но все равно проворнее и удобнее чем в эксэле. Так что если покажется, что программа зависла - это она просто просчитывает данные. Надо чуть подождать.





SapienzSPB

#230
Итак небольшой отчет о завершенном проекте.

Всем привет!

Разрабатывая свой контроллер я решил, что раз уж он умеет делать автоматические КТЦ, то он просто обязан как - нибудь передавать информацию о их ходе на компьютер. 
Для этого проще всего использовать стандартный Serial(последовательный) протокол связи. В ардуино IDE он называется монитор порта.
Спойлер
На компьютере же должна быть установлена программа которая умеет захватывать передаваемые с контроллера данные, отображать и сохранять лог-файл на диск для дальнейшего, более детального изучения.

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

Итак по порядку.

[b-b]1.Формат[/b-b]
Программа понимает строку из шести параметров целочисленного или с плавающей запятой типа.  Шесть параметров должны разделяться между собой ";" - точкой с запятой. Пример возможной строки : "0;1.0;2.22;3.333;4.4444;5.55555\n"

Эту строку формирует простейшая функция в ардуино IDE
Спойлер

void OutToSerial(){
      Serial.print (q,5);
      Serial.print (";" );
      Serial.print (w,5);
      Serial.print (";" );
      Serial.print (e,5);
      Serial.print (";" );
      Serial.print (r,5);
      Serial.print (";" );
      Serial.print (t,5);
      Serial.print (";" );
      Serial.println (y,5);
}
Рекомендованная скорость порта 115200 бод.


2. Интерфейс

Делится на две области:

1 - окно записи лога и отображения информации в реальном времени
Спойлер
           
2 -  Окно анализа сохраненных данных из лог-файла
Спойлер

2.1 Окно записи лога

Активируется по умолчанию. 
Спойлер

Cодержит в себе элементы управления:
Спойлер

Кнопка ScanPort - ищет все доступные устройства с COM портами и выводит их в выпадающий список.

Список BaudRate - позволяет выбрать одну из стандартных скоростей порта.

Кнопка Connect/Disconnect - подключается к выбранному порту на выбранной скорости и начинает прием данных. На диске С:\ в папке  SerialLog создается CSV файл с именем включающим текущую дату(пример: "2019.02.12 20-35 SerialLog.csv"). При поступлении из порта строки данных, к ней добавляется порядковый номер и метка времени. Новая строка дописывается в файл.

Если поступление данных происходит слишком часто и нет необходимости в таком детальном логе, можно указать период сохранения данных в лог с помощью текстового поля Save to disc every.

То есть в лог будет писаться каждый первый ... тысячный фрейм поступающих данных. К примеру если контроллер отсылает данные раз в секунду, то для того чтобы сохранить его в лог как есть - нужно указать - "Сохранять на диск каждый (1) фрейм".
Если нужно сохранить значения в лог раз в минуту - нужно указать: "Сохранять на диск каждый 60 фрейм".
Если нужно сохранить значения в лог раз в 10 минут - нужно указать: "Сохранять на диск каждый 3600 фрейм".

Аналогично тому работает поле Show on chart every.

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

Запись значений в лог файл и вывод значений на предварительный график никак не связаны друг с другом. К примеру вы можете выводить только каждую десятую принимаемую из устройства строчку на графы, а сохранять в лог каждую третью.

[b-b]Строка[/b-b]

показывает имя и путь записываемого в данный момент лога.

[b-b]Чекбоксы [/b-b]с уникальными именами
Спойлер
позволяют указать программе какие из поступающих параметров будут отображаться на графике предварительных результатов. Для изменения названия графа можно щелкнуть по названию и изменить его на новое.

Чекбокс [b-b]From Zero[/b-b] - позволяет просматривать граф значения от нуля по Y  (как ниже)
Спойлер
или подогнать шкалу к автоматическим пределам (как тут)
Спойлер

Движок Zoom Area
Спойлер
устанавливает область графика в точках. Если количество принятых и отрисованных  точек будет превышать это значение - включается автопрокрутка, на графике появится полоса прокрутки и старые значения(превышающие Zoom Area) скроются за левой границей графика. Имеется возможность промотать полосу прокрутки влево и посмотреть что происходило на графике ранее. При этом автопрокрутка графика отменяется. Для возобновления автопрокрутки - уведите полосу прокрутки вправо до упора.

Если хочется подробнее рассмотреть часть графика по оси Y можно выделить ее мышкой
Спойлер
и график примет вид
Спойлер

Alarma!  При работе с графиком предварительного просмотра нужно помнить о том что скорость отрисовки зависит от мощности компьютера. При увеличении Zoom Area - нагрузка на процессор увеличивается и могут наблюдаться задержки отрисовки. Запись данных в лог при этом страдать не должна. 

2.2 Окно анализа лога 

Содержит в себе элементы управления:
Спойлер
Кнопка Open Log - открывает сохраненный ранее лог через стандартное меню открытия файла Windows.

Кнопка Save in *.JPG - сохраняет изображение поля графиков в картинку через стандартное меню сохранения файла Windows.

Кнопка Refresh - перерисовывает графики

Чекбоксы рисуемых графов - переименовываемые по клику мышки. Говорят отображать ли параметр лога линией на графике. Название и состояние каждого чекбокса сохраняются при выходе из программы.

Чекбокс From Zero - говорит программе отрисовать график от нуля координат или автоматически определить границу экстремумов графика.  После установки требует перерисовки графика кнопкой Refresh. Состояние запоминается при выходе из программы.

После нажатия кнопки Open Log и выбора файла лога, программа отрисовывает требуемые графы на поле графиков  и подписывает их в соответствии с именем чекбокса.
На картинке ниже можно видеть перекрестие курсора в точке соответствующей значению напряжения в момент окончания КТЦ - 12 Вольт. Слева от поля графиков отображается следящая подсказка, с точным значением напряжения в данной точке. Она перемещается вслед за горизонтальным курсором.
Сверху поля графиков такая же подсказка отображает время в тот момент(21:05:41)
Спойлер

Для более детального отображения отрезка времени с интересующим процессом можно выделить область на графике.
Спойлер
При этом область укрупнится для более детального изучения до такого состояния:
Спойлер
Следящие подсказки позволяют очень точно зафиксировать значение параметра и его временные метки. Таким образом разрешение графика можно менять в очень больших пределах добиваясь просто фантастической детализации. Вот пример показывающий небольшое изменение напряжения на продолжительном отрезке времени.
Одна клетка по х = 10 минутам времени.
Спойлер
Для выхода из режима детального просмотра - кликните по соответствующим кнопкам на концах полос прокрутки осей X и Y.

Alarma! Чем больше количество точек в логе - тем более заметна задержка при отрисовке графика. Для того чтобы комфортно работать при анализе - рекомендую здраво подходить к периоду выборки записи лог-файла. В папку с программой я добавлю пару демонстрационных CSV - файлов. Один из них на 1500 выборок (что соответствует 25 часам записи с выборкой 1 раз в минуту), второй на 95000 выборок (26 часов записи с выборкой 1 раз в секунду). Оцените детализацию и скорость работы на каждой из них. Как показывает практика оптимальным временем выборки можно считать 30-60 секунд.

Итоги

Все что мне нужно было для текущего и будущих проектов я реализовал. Старался сделать так чтобы у тех кому нужно отрисовывать данные со своих устройств не испытывали трудностей. Если будут вопросы или замечания - пишите. 
Сборка проекта доступна по ссылке https://drive.google.com/open?id=1oz6uj5gKBQPdesgnMrdvgGGbeDvg6t1V


SapienzSPB

Добавил еще одну интересную фишечку: маркер запоминающий точку на графике с ее параметрами. Активируется правой кнопкой мыши. При этом появляются дополнительные лейблы.
Спойлер

UPS Второй маркер конечно по Y
На примере ниже маркер был установлен на начало роста напряжения(слева внизу). 
На лейблах можно увидеть следующую информацию:
Заряд начался в 21:08 вечера с напряжения в 12В
Длился 10 часов 32 минуты и закончился отсутствием повышения напряжения в 07:41 утра, продлившись 10 часов 32 минуты.
Конечное напряжение зарядки составило 15,32 Вольта. 
Спойлер


Серик

#232
Приветствую Всех Форумчан!
Захотелось мне сделать Простой двухканальный логгер на Attiny13 от UstAlexei+HC12 в smd-варианте, что бы можно было припаять HC12 к плате логгера напрямую, без проводов, посредством 2,54 мм гребенки (пин ту пин)-получилась бы компактная двухэтажная платка, которую я мог бы всунуть в пластмассовую коробочку, что бы все было почти IP65 ( или хотя бы IP54), только провода бы торчали. Для этого приобрел smd детали: танталовые смд конденсаторы 47 мкФ 35В 2 шт., смд 78М05, смд 1N4007 для организации питания 4,4 вольта ( по рекомендации в мануале на НС12), 104-ые конденсаторы в 1206 корпусе, резисторы в 1206 корпусе. И конечно же Attiny13A в smd корпусе. Развел платку, все напаял. Попытался было прошить Attiny13A, прижимая МК к кроватке, но Sinaprog выдавала ошибки при любом обращении. Запаял МК к миниплатке переходнику-сообщения об ошибке исчезли, вроде бы прошилось. После чего пришлось выпаивать Attiny13A с платки переходника и уже припаивать к плате логгера. Подсоединил НС12 проводками (до этого, на другой платке логгера при подобном присоединении все работало). Подключаю к 12В аккумулятору. Вторую сторону подключаю к USB гнезду. Открываю Terminal v1,93b, нажимаю connect, ввожу в необходимое поле число задающее интервал передачи данных, enter, Tx светодиод моргнул на USB-адаптере, в нижней строке окна Terminal v1,93b отобразилась передача Tx, но в окне приема ничего нет, и так неоднократно! Пробовал и в Serial Oscilloscope 1.5- то же самое!
Плата логгера отмыта изрядным количеством спирта, даже была оставлена в спирте на 10 минут, после чего была промыта свежим объемом спирта и просушена, визуально на просвет - постороннего ничего нет.
Пробовал делать ресет заземлением 1 ноги МК на минусовой полигон платы-в окне/блоке приема программы Terminal v1,93b появились такие несуразные сообщения, при этом в самой нижней строке окна появилось уведомление Rx OK.
Уважаемые Форумчане, подскажите пожалуйста, что можно предпринять для исправления ситуации?
Спойлер
Спойлер
Спойлер

Есть ли возможность перепрошить МК не выпаивая из платы?
Также, на 8 ноге МК у меня два конденсатора по 100 нФ на землю, может быть столько емкости не надо, и один следует выпаять?



Яков93

Цитата: Серик от 20 Фев. 2019 в 17:28
Пробовал делать ресет заземлением 1 ноги МК на минусовой полигон платы-в окне/блоке приема программы Terminal v1,93b появились такие несуразные сообщения, при этом в самой нижней строке окна появилось уведомление Rx OK.
Обычно в серийном порту вылазят несуразные сообщения когда скорость передачи не совпадает у платы и у монитора. Может попробуете другую скорость, а не 9600 как сейчас?