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

 

Хочешь стать куратором любимой темы?

* Комментарии к новостям

7. Наше видео (ОБ + НА электротранспорте) (МЫ) от Кузьма (21.09.2020 в 08:52)8. ЗУ Бережок: техподдержка, предложения, перспективы (Наши изделия) от pushkar (21.09.2020 в 08:41)9. Smart BMS Small Ant (Системы управления аккумуляторными батареями (BMS)) от Stanislavchik (21.09.2020 в 08:39)10. Китайские электромотоциклы 72в. 2кв- 3кв и 4кв. Если разница в моторколёсах. (Электромотоциклы ) от Stanislavchik (21.09.2020 в 08:37)11. (2018) Моноколесо KingSong KS-18L / KS-18XL (Моноколёса KingSong) от D72 (21.09.2020 в 08:13)12. новый тип двигателей-генераторов без железных сердечников (Электродвигатели и генераторы) от Павел Большаков (21.09.2020 в 08:03)
Не нравится реклама? Пройдите простую регистрацию на форуме и не будете видеть рекламу.

Прочитано 22976 раз

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

29 Окт 2018 в 10:27
Ответ #216
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!
Достал модули HC-12 из почтовой упаковки, припаял колодку с штырьками с одной стороны и антенну с другой стороны, также заранее завел set  на gnd (для входа в командный режим). Нашел адаптер: ссылка (который лежал неиспользуемый с весны) в сборе с двухканальным логгером от UstAlexei , отсоединил логгер, присоединил HC-12 (Rx и Tx накрест), вставил адаптер+HC-12 в USB гнездо, открыл диспетчер устройств, там он есть ( адаптер ), но в свойствах пишут, что необходимо переустановить драйвер, снова установил драйвер ( по той же ссылке, что и в прошлый раз (весной) устанавливал: ссылка из этого сообщения: ссылка ), затем не вынимая сборки открыл "терминал", нажал 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.
Надеюсь, должно заработать. :-)


« Последнее редактирование: 29 Окт 2018 в 11:10 от Серик »


29 Окт 2018 в 14:39
Ответ #217
Оффлайн

Серик

г.Алматы Сообщений: 1552
Радисвязь заработала!
Скрытый текст
Расстояние метров 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 ссылка!
Скрытый текст
Вышел из терминала, подключил осциллоскоп, тоже работает:
Скрытый текст
Только вот на 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В.
« Последнее редактирование: 31 Окт 2018 в 04:33 от Серик »


31 Окт 2018 в 11:09
Ответ #218
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!
Здравствуйте, Уважаемый UstAlexei!
В теме уже затрагивались вопросы:
ссылка
и ответы:
ссылка

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

А как найти "различные компьютерные программы", где можно "проанализировать интересующие нас моменты"?
Расскажите, пожалуйста, поподробнее!
Здесь Вы пишите:
ссылка
Цитата
Данные передавались на комп каждые 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 секунд:
Скрытый текст

 
« Последнее редактирование: 01 Ноя 2018 в 16:05 от Серик »


02 Ноя 2018 в 05:43
Ответ #219
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!
Завершил заряд 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 ) картинка такая:
Скрытый текст
Вопрос знатокам адаптивных импульсных алгоритмов, можно ли "притянуть за уши" и сказать, что график заряда имеет признаки адаптивного заряда ( кривая спада стремится перейти в горизонт-заряд прерывается, кривая фронта также стремится перейти в горизонт-но тут ей ( к сожалению ) не дается пауза, но модуляции хоть немного дают спад и соответствующий фронт )?
Скрытый текст
Для сверки/сравнения: оригинальная картинка чуть выше.





« Последнее редактирование: 02 Ноя 2018 в 08:26 от Серик »


02 Ноя 2018 в 10:19
Ответ #220
Оффлайн

Alex_Soroka

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


02 Ноя 2018 в 10:32
Ответ #221
Оффлайн

Серик

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


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


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

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

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

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

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


« Последнее редактирование: 03 Ноя 2018 в 02:55 от Серик »


07 Ноя 2018 в 16:46
Ответ #222
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!

ссылка
Скрытый текст


02 Янв 2019 в 11:17
Ответ #223
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!
При замене верхнего резистора делителя напряжения столкнулся с нестабильностью получаемых данных в программу Oscilloscope 1.5:
ссылка
Скрытый текст
Предполагаю что получился высокоомный делитель, вместо 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 идентичные цифрам на мультиметре при измерении напряжения разряжаемого/заряжаемого аккумулятора-очень удобно!
Перенесу дальнейший процесс заряда в тему:
ссылка




« Последнее редактирование: 03 Янв 2019 в 10:09 от Серик »


30 Янв 2019 в 00:38
Ответ #224
Оффлайн

SapienzSPB

Россия, Санкт-Петербург Сообщений: 349
Привет всем. Решил я в свой зарядник прикрутить еще и логгер. Поискал по инету и не нашел ничего подходящего для отрисовки и хранения получаемых из SerialPort данных. Пришлось писать самому под свои хотелки.  Пока - стадия набросков но уже вполне юзабельное. Буду допиливать по мере нужд, настроения и времени.
Скрытый текст
Чего умеет?
1.  Умеет принять строку с шестью параметрами, вида 1.1;2.22;3.333;4.4444;5;6.666666 \n - то есть тупо вывод float'ов с разным количеством знаков после запятой.  Для ардуино проще и милее нет.
2. Распарсивает эту строчку и рисует шесть подсвеченных графов на одном листе. Есть (пока коряво конечно) возможность зумить поле графиков.  Включать и отключать неинтересные графы. При том Y шкала подстраивается под диапазон максимального значения.
3. Как только началась отрисовка графика - в папке C:\SerialLog\ (его предварительно надо создать ручками) создаются файлики с уникальным именем на основе текущей даты, с расширением CSV.
Скрытый текст
При каждом поступлении данных из Serial - туда добавляется строчка в понятном Эксэлю формате(с запятой). Выделяем мышью колонки и смотрим на график.
Скрытый текст
Очень удобно для ардуинщиков, если надо собрать долгий лог.
У меня контроллер отправляет строчку данных десять раз в секунду. Но это походу слишком часто. Логи в эксэле медленно ворочаются. Оптимальнее будет раз в секунду / минуту .
Версия бета. Когда будет первая стабильная - напишу обзор. Просьба - если кому интересно будет - запустить - заскринить какие файлы программа попросит в качестве библиотек к доустановке. Добавлю их в пакет.
Версии буду складывать в репозиторий : ссылка
Сильно не пинайте. Я бейсиком чуть-чуть баловался еще в молодости.
« Последнее редактирование: 30 Янв 2019 в 00:59 от SapienzSPB »


30 Янв 2019 в 18:45
Ответ #225
Оффлайн

UriBas

Украина, Ровно Сообщений: 2558
, программа сделана на Ардуино Иде? 


31 Янв 2019 в 02:57
Ответ #226
Оффлайн

SapienzSPB

Россия, Санкт-Петербург Сообщений: 349
Зарядное написано в Arduino Ide. Отсылает данные через Serial (их можно посмотреть в терминале Arduino IDE).
Программа принимающая и рисующая графики написана в Visual Studio 2017 на Visual Basic.NET.
По сути пишу клиентскую часть так чтобы ее можно было использовать с чем угодно. В будущем обзывать графы можно будет как угодно.
Мне интересно будет посмотреть и на динамику изменения внутреннего сопротивления и побаночные напряжения и многое другое.
Для разных устройств можно будет использовать одну программу логера. Достаточно только в прошивке устройства прописать отсылку данных строкой определенного формата.
« Последнее редактирование: 31 Янв 2019 в 03:04 от SapienzSPB »


31 Янв 2019 в 12:40
Ответ #227
Оффлайн

UriBas

Украина, Ровно Сообщений: 2558
, а скетч можете выложить в репозитории или здесь? Было бы очень удобно закачивать программу, ну и изменять под свои нужды если что.


31 Янв 2019 в 20:31
Ответ #228
Оффлайн

SapienzSPB

Россия, Санкт-Петербург Сообщений: 349
Скетч ЗУ, извините, не дам. Пока код закрыт.
Скетч ардуинки(на 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 выложу тогда, когда допишу все хотелки и выявлю все баги программы. Сейчас это только наброски. Хотя если есть опыт программирования и желание помочь - пишите.
« Последнее редактирование: 31 Янв 2019 в 20:46 от SapienzSPB »


06 Фев 2019 в 00:45
Ответ #229
Оффлайн

SapienzSPB

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




« Последнее редактирование: 06 Фев 2019 в 01:07 от SapienzSPB »


12 Фев 2019 в 22:27
Ответ #230
Оффлайн

SapienzSPB

Россия, Санкт-Петербург Сообщений: 349
Итак небольшой отчет о завершенном проекте.

Всем привет!

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

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

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

1.Формат
Программа понимает строку из шести параметров целочисленного или с плавающей запятой типа.  Шесть параметров должны разделяться между собой “;” - точкой с запятой. Пример возможной строки : “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.

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

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

Строка

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

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

Чекбокс From Zero - позволяет просматривать граф значения от нуля по 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 секунд.

Итоги

Все что мне нужно было для текущего и будущих проектов я реализовал. Старался сделать так чтобы у тех кому нужно отрисовывать данные со своих устройств не испытывали трудностей. Если будут вопросы или замечания - пишите. 
Сборка проекта доступна по ссылке ссылка

« Последнее редактирование: 13 Фев 2019 в 14:02 от SapienzSPB »


14 Фев 2019 в 03:21
Ответ #231
Оффлайн

SapienzSPB

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

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



20 Фев 2019 в 17:28
Ответ #232
Оффлайн

Серик

г.Алматы Сообщений: 1552
Приветствую Всех Форумчан!
Захотелось мне сделать Простой двухканальный логгер на 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 нФ на землю, может быть столько емкости не надо, и один следует выпаять?


« Последнее редактирование: 20 Фев 2019 в 18:37 от Серик »


20 Фев 2019 в 21:07
Ответ #233
Оффлайн

Яков93

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


 

Самодельный ЭД

Автор БуратиноРаздел Электродвигатели и генераторы

Ответов: 2
Просмотров: 1976
Последний ответ 19 Окт 2013 в 15:08
от Буратино
Самодельный BLDC c водяным охлаждением

Автор ProkuratРаздел Электродвигатели и генераторы

Ответов: 11
Просмотров: 3452
Последний ответ 14 Авг 2020 в 08:01
от kor
Самодельный пульт дистанционного управления, на детский электромобиль.

Автор ПолечкаРаздел Детский электротранспорт

Ответов: 1
Просмотров: 5681
Последний ответ 12 Сен 2014 в 01:22
от Pavel__
Самодельный мотор из готового статора генератора "honda"

Автор kozinРаздел Электродвигатели и генераторы

Ответов: 43
Просмотров: 3013
Последний ответ 08 Окт 2019 в 15:21
от kor
Педальный самодельный электропривод

Автор CahesРаздел Механика

Ответов: 4
Просмотров: 2553
Последний ответ 30 Авг 2015 в 15:52
от Cahes