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

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

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

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

Timber

Это не сложно, так что добавлю :)

UstAlexei

#55
Заработал двухканальный логгер на Attiny13, за счет введения в протокол второго стоп бита.
Нашел программу которая как нельзя лучше позволяет отслеживать наши сигналы http://www.x-io.co.uk/downloads/Serial-Oscilloscope-v1.5.zip с отображением на экран монитора и писать лог в файл.
Таким образом функционала логгера на attiny13 более чем достаточно для контроля за разрядом АКБ, сразу видно что разряд проходит без приключений, банки все разряжаются равномерно, разбаланса большого нет.
Вот лог разряда моего аккумулятора 50 А*ч.

при разряде до 11,5 В АКБ отдал 35,9 А*ч, при разряде до 12 В - 17,9 А*ч.
После 6 часов на логе есть потерянный интервал около 15 минут... Комп уснул :-)

P.S. хочу сказать СПАСИБО Алексу Сороке! Реально разряжать ниже 11,5В аккумулятор большого смысла нет, имхо скорость падения напряжения начинает расти и много чего там выкачать не удасться, конечно это касается АКБ которые не имеют мнимый заряд!
И еще применение импульсных методов заряда восстанавливает здоровье АКБ! Год назад разряжал этот же аккумулятор - отдал он тогда мне только 20 А*ч...

UriBas

Цитата: UstAlexei от 20 Дек. 2016 в 11:35..Нашел программу которая как нельзя лучше позволяет отслеживать наши сигналы http://www.x-io.co.uk/downloads/Serial-Oscilloscope-v1.5.zip с отображением на экран монитора и писать лог в файл.
при разряде до 11,5 В АКБ отдал 35,9 А*ч, при разряде до 12 В - 17,9 А*ч.   
Ну слава Богу! Лед тронулся..  В принципе уже кое что..  интерестно, как он ток будет рисовать?.. 
Описание  https://github.com/xioTechnologies/Serial-Oscilloscope
http://x-io.co.uk/serial-oscilloscope/ - а тут видео программы
Вот пишут: 
Серийный осциллограф совместим с любым последовательным потоком, содержащим значения, разделенные запятыми заканчивается символом новой строки ("\ г"). Например, "11,22,33 \ г" будет интерпретироваться как значения 11, 22 и 33 для каналов 1, 2 и 3 соответственно. Последовательный поток может также включать в себя не являющиеся числовые символы, которые будут игнорироваться. Например, "а = 0,5, синий, х = 3,14, t1t2t3,8 \ г \ п" будет интерпретироваться как значения 0,5, 3,14, 123 и 8 для каналов 1, 2, 3 и 4 соответственно.

По графику еще пару вопросов
С какой частотой писались в график данные?  Разряд шел непрерывно (не считая паузы сна) или были паузы?
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

UstAlexei

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

В данный момент собрал по приведенной схеме, как видно из схемы для возможности измерения тока на 1 вход можно подавать величину вплоть до 2,2 В (в моем случае на погрешности сопротивлений величина получилась 2,16В), при этом с учетом оверсемплинга точность измерения тока напряжения на датчике тока будет около 1 мВ.
На второй вход подается напряжение с АКБ с учетом делителя и оверсеплинга величина измеяется с точностью до 5 мВ, чего вполне хватает для измерения напряжения.
В архиве прошивка, печатка и схема. В данной прошивке период пересылки данных определяется пользователем, вводом по Uart времени паузы между передачей измерений в миллисекундах. Но обольщаться что вы сможете получать данные каждые 5 - 10 мс не стоит. Дело в том что при скорости передачи 9600 бод на передачу по Uart тратиться около 7-12 мс (в зависимости от данных).
Передача идет в формате принимаемом Serial-Oscilloscope.

Разряд шел непрерывно, на лампу 55 Ватт (подключалась напрямую), но замер тока в начале процесса показал что мощность лампы чуть ниже.
Данные передавались на комп каждые 30с. Обрабатывал excel.
После снятия нагрузки напряжение выше 11,8 В не выросло в течении 5 минут, поэтому сразу перешел к заряду... Сейчас АКБ стоит на добивке третьи сутки.

Забыл написать параметры передаваемого сигнала baud - 9600, data bits - 8, stop bits - 2, Parite - None.
Проверил максимальную скорость работы логгера - за 20,84 секунды логгер сделал 573 выборки с измерение данных по обоим портам.
Для тех кто желает большую скорость могу предложить вариант на arduino mini.

P.s. Обнаружена опечатка в схеме R7 = 1 кОм!!!

UriBas

Цитата: UstAlexei от 20 Дек. 2016 в 20:45.. Для тех кто желает большую скорость могу предложить вариант на arduino mini.
Да, было бы неплохо.  Тинька хороша там, где нужно дешевое и не требовательное решение, скажем на моргалку с небольшим функционалом.   А там, где надо наблюдать процессы, или применять разные режимы, нужно что-то посерьезней.
Еще, было бы хорошо в ардуино среде со скетчем.. как вариант.
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651

UstAlexei

Скетч во вложении, в комментариях строки для перевода в многоканальный логгер
Спойлер

/*
  Uart-data datalogger
The circuit:
* analog sensors on analog ins 0, 1, and 2
This example code is in the public domain.
*/

unsigned int time_pause = 0;
 
void setup()
{
  // Open serial communications and wait for port to open:
  Serial.begin(115200);
  analogReference(INTERNAL);
  Serial.println("Enter time pause in millisecond (1-65536)");

  while (time_pause < 1)
  {
      time_pause = Serial.parseInt();
  }
  Serial.print("Time pause in millisecond = ");
  Serial.println(time_pause);
  delay(1000);
}

void loop()
{
  // make a string for assembling the data to log:
  //String dataString = "";
  // read three sensors and append to the string:
  int analogPin = 1;
  unsigned long sensor = 0;
  //for (int analogPin = 0; analogPin < 2; analogPin++)
  {
    for (int oversempl = 0; oversempl < 255; oversempl++)
    {
      sensor += analogRead(analogPin);
    }
    sensor = sensor >> 7;
    //dataString = dataString + String(sensor) + ";";
  }
  //Serial.println(dataString);
  Serial.println(sensor); //Serial.println(sensor/121.6359, 3);
  delay(time_pause);
}

8244

#60
Цитата: UstAlexei от 15 Дек. 2016 в 18:44
Как оказалось логгер из attiny13 оказался очень ху...... плохой. Ввиду нестабильности частоты встроенного генератора частота плавает что приводит к ошибкам передачи по Uart.

Специально заморачивался делать софтовый UART на встроенном RC-генераторе Tiny2313. Работал чётко. За скорость 4800 ручаюсь, но в памяти осталась цифра 38400, и что это работало. Возможно, просто исследовал на передачу тестовой последовательности. Но суть в том, что нестабильность генератора в пределах паспортных норм, и уж никак не 10% в пределах сеанса. Разумеется, после калибровки частоты RC. Скорее всего, у вас неверно составлен алгоритм.

ЦитироватьНашел программу которая как нельзя лучше позволяет отслеживать наши сигналы http://www.x-io.co.uk/downloads/Serial-Oscilloscope-v1.5.zip
пишет: Unable to find a version of the runtime to run this application - независимо от расположения exe-шника и .dll а также от присутствия/отсутствия ini
А что, самописных логгеров так и нет? Чтоб не показометр, а нормальный Инструмент, с курсорами, растяжкой, прокруткой, масштабированием, а то и экспортом выделенного фрагмента графика в таблицу?

Цитата: Alex_Sorokaобращаю внимание "пейсателей кода на ардуине", что обращение к флешке может иметь непредсказуемое время доступа, причем скачкообразное, иногда до 1.5сек. задержки между "блок на запись" и "блок записан"
нужно каждому отсчёту пришивать метку системного времени


UstAlexei

[user]8244[/user], вполне вероятно. На чем писали, кодом не поделитесь?

8244

#62
[user]UstAlexei[/user], Там накручено так что чёрт ногу сломит. Причём задержки подобраны с учётом количества инструкций в процедурах передачи-приёма. Зато код полностью инкапсулирован, работаешь как с обычным UART: загрузил байт в регистр, вызвал процедуру начала передачи и ждёшь, пока флаг BUSY не сбросится. На приём и передачу разные куски кода. hex занимает 840 байт

И я наврал про 38400. В рабочей версии только 4800 скорость была, т.к. работал через переполнение TMR0, это 256 тактов. Обработчик эмулятора где-то 30-40 инструкций. Но вопрос был про стабильность генератора.  Я почему-то запомнил 38400 как "работает". Наверное, просто вываливал тестовую последовательность в порт. Но это не суть: уход частоты в пределах паспортных норм.

UstAlexei

[user]8244[/user], Спасибо, не стоит тогда. Меня скорость в 38400 купила. :-)

8244

[user]UstAlexei[/user],
вообще-то нестабильность генератора должна проявляться одинаково на любой скорости.
Учтитывая, что размер кода на передачу выходит 20-30 инструкций,  при потоковой передаче на тактовой ч-те 1МГц не вижу препятствий добиться скоростей до 50кб/с . АЦП 8 бит это, если не вру, 14 тактов всего. Чем удивила Вас скорость 38400 ?


UstAlexei

[user]8244[/user],  добейтесь сначала.

реношник

#66
склЁпал на коленке логгер (ПроМини 328), пишет данные на СД карту



это просто тестовое включение, я вручную проводом касался лампочки (нагрузка).




Вопрос по частоте записей, не слишком ли часто идет запись ?

*****
добавил второй канал для контроля тока...




UstAlexei

При такой скорости записи толку от записи на флешку мало. Это уже почти осциллограф. Его надо на экране смотреть! Необходимо добавить при запуске конфигурирование. Чтобы пользователь мог сам выбирать необходимую ему частоту записи.
Как решили вопрос с непредвиденным задержали записи? Создали буфер?

реношник

Цитата: UstAlexei от 20 Янв. 2017 в 04:50
При такой скорости записи толку от записи на флешку мало. Это уже почти осциллограф. Его надо на экране смотреть! Необходимо добавить при запуске конфигурирование. Чтобы пользователь мог сам выбирать необходимую ему частоту записи.
Как решили вопрос с непредвиденным задержали записи? Создали буфер?
непредвиденным - чем ???
задержку и буферизацию не делал.

тоже думаю, что очень часто, оставлю три или четыре записи в секунду

UstAlexei

Цитата: реношник от 20 Янв. 2017 в 14:13
непредвиденным - чем ???
Алекс Сорока пугал непредвиденными задержками при обращении к флешке на запись.
https://electrotransport.ru/index.php?msg=982924
Не думаю что просто так.

реношник

Цитата: UstAlexei от 20 Янв. 2017 в 17:34
Цитата: реношник от 20 Янв. 2017 в 14:13
непредвиденным - чем ???
Алекс Сорока пугал непредвиденными задержками при обращении к флешке на запись.
https://electrotransport.ru/index.php?msg=982924
Не думаю что просто так.

Вы видели у меня частоту выборок это при том, что в программе замер напряжений 64 итерации, разбор "милис" на часы, минуты и секунды...
Какие тут нежданчики если еще уменьшу частоту записей до 3 - 4 в секунду...

А вот в самом ЗУ логгирование в процессе заряда, вот тут могут быть нежданчики, тут уже параллельная обработка...

UriBas

Цитата: реношник от 20 Янв. 2017 в 19:20.. А вот в самом ЗУ логгирование в процессе заряда, вот тут могут быть нежданчики, тут уже параллельная обработка...
..Хорошая мысль, чтобы нежданчики" (или подозрительные моменты) вылавливал сам МК и в этом случае выдавал бы в ЛОГГ  с максимальной скростью выборок..  в остальном с обычной скростью.  Если преобразование сильно влияет на частоту записей, может не преобразовывать миллисекунды? На сколько можно повысить скорость записей?
Восточная мудрость - "Шакал воет - караван идет"  Эл.вел. 350Вт.   Верую в Иисуса Христа, НЛО.  тема "продвинутой моргалки" https://electrotransport.ru/index.php?msg=1669651