Реклама ⓘ
Главная » Микроконтроллеры
Призовой фонд
на апрель 2024 г.
1. 100 руб.
От пользователей

Реклама ⓘ

Дата-логгер (регистратор аналоговых данных)

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

А теперь более человеческим языком.

Для своих нужд long long time ago я разработал систему регистрации аналоговых сигналов, которая позволяет получить интервал измерения (и накопления) данных от 1 секунды до 1 часа (с дискретностью в 1 секунду), используя для этих целей конфигурационный файл на карте памяти, тем самым обеспечивается гибкость настройки и отсутствие дополнительных интерфейсов сопряжения с компьютером.

Основой регистратора данных является микроконтроллер ATmega32. Программа, записанная в микроконтроллер, позволяет работать с картами памяти типа SD и MMC, которые отформатированы в системе FAT16 или FAT32. Файловая система, применённая в проекте – FatFs (за что мой низкий поклон мистеру ChaN(у) который подарил человечеству продукт своих титанических усилий. Хотя в программе CodeVision AVR, в которой я создавал проект, присутствует встроенная библиотека работы с картами памяти и файловой системой, я подключил библиотеку FatFs именно ChaN(а), т.к. хотел разобраться с некоторыми особенностями её работы.

Регистратор позволяет отслеживать 8 аналоговых каналов (столько аналоговых входов имеет АЦП микроконтроллера), т.е. пользователи могут подключить к устройству до 8 аналоговых сенсоров. 

Принципиальная схема регистратора:

Схема даталоггера

Устройство содержит часы реального времени с резервным источником питания, что позволяет записывать, помимо данных с АЦП, время получения данных. Такая функция полезна при анализе данных и при составлении статистики их изменения.

Для реализации функции записи времени регистрации данных применена микросхема часов реального времени DS1307 (DD2) с интерфейсом I2C.

Данные сохраняются регистратором на карте памяти SD или MMC емкостью до 32 ГБайт в формате TXT, хотя вы можете без проблем изменить расширение на CSV. (CSV  – текстовый формат, предназначенный для представления табличных данных. Каждая строка файла – это одна строка таблицы. Значения отдельных колонок разделяются разделительным символом – запятой) Карта памяти должна быть с файловой системой FAT. Файл данных имеет вид "DATA000.txt". Т.к. данные с карты памяти в любом случае будут считываться после проведения записи аналоговых сигналов, то при разработке схемы решено было отказаться от какого-либо интерфейса, связывающего регистратор с компьютером, а установка даты, времени и режима работы регистратора происходит изменением значений файла конфигурации на карте памяти.

Установка времени, даты и интервала измерения выполняется корректировкой файла конфигурации, который создаётся на карте памяти при первом включении устройства. Это простой текстовый файл с именем "auto_exe.txt", который можно создать с помощью любого текстового редактора. При первом включении контроллера с картой памяти, в конфигурационном файле будет содержаться конфигурационная строка вида:
HH:MM DD/MM/YY   NNNN

Например:
12:00 01/01/14    10

В приведенной строке устанавливается время 12:00, дата 1 января 2012 года и интервал выборок 10 секунд. Значение интервала выборок может быть четырёхзначным числом от 1 до 3600 (т.е. интервал измерения и записи аналогового сигнала от 1 секунды до 1 часа).

После начальной установки текущего времени и даты в часах реального времени DD2, в файле конфигурации напротив конфигурационной строки установится знак «+», сигнализирующий о том, что время установлено успешно. Это предохраняет от очередной установки времени часов при последующих включениях регистратора.

При минимуме средств индикации (два светодиода) обеспечивается полноценная наглядность работы устройства. Разные варианты работы светодиодов позволяют контролировать режим работы (наличие питания, начало записи) и определять наличие и характер ошибок в работе регистратора (карта памяти переполнена, сбой часов реального времени, сбой в работе карты памяти). Кнопкой SB1 осуществляется пуск и остановка записи данных. Кнопка SB2 сбрасывает порядковый номер создаваемого файла (количество созданных файлов имеет ограничение  в 999 файлов, что при необходимости можно изменить, подкорректировав программу). 

Регистратор данных позволяет использовать аналоговые датчики, сигнал которых находится в диапазоне 0-5 В, но при необходимости этот диапазон можно увеличить, введя дополнительные резисторы в цепь входа устройства.

Сохраненные на карте памяти данные можно затем просмотреть на компьютере с помощью программы «Блокнот» или же импортировать в другую программу для обработки.

Собственно, девайс (мне было лень делать разводку для SMD-монтажа):

Биты конфигурации для микроконтроллера:

При подаче питания на устройство и при правильной инициализации карты памяти загорается зелёный светодиод. В случае возникновения ошибки в работе регистратора (сбой в работе карты памяти) начинает мигать красный светодиод. Если произошёл сбой микросхемы часов реального времени (часы стоят) будет мигать зелёный светодиод. А если одновременно мигают оба светодиода, то это значит что карта переполнена. При записи данных будет гореть красный светодиод.

На рисунке 3 показан пример файла, открытого на компьютере в программе «Блокнот», в который проходила запись данных с 8-ми каналов АЦП с интервалом в 10 секунд, причём напряжение (в виде подключённой пальчиковой батарейки на 1,5 В) подавалось только на первый канал АЦП.

Список радиоэлементов

Обозначение Тип Номинал Количество ПримечаниеМагазинМой блокнот
DD1 МК AVR 8-бит
ATmega32
1 Поиск в магазине ОтронВ блокнот
DD2 Часы реального времени (RTC)
DS1307
1 Поиск в магазине ОтронВ блокнот
DA1 Линейный регулятор
L7805AB
1 Поиск в магазине ОтронВ блокнот
DA2 Линейные регуляторLD331 Поиск в магазине ОтронВ блокнот
VD1 Светодиод
АЛ307В
1 ЗелёныйПоиск в магазине ОтронВ блокнот
VD2 Светодиод
АЛ307Б
1 КрасныйПоиск в магазине ОтронВ блокнот
ZQ1 Кварц16 МГц1 Поиск в магазине ОтронВ блокнот
ZQ2 Кварц32768 Гц1 Поиск в магазине ОтронВ блокнот
C1, C2 Конденсатор22 пФ2 Поиск в магазине ОтронВ блокнот
C3, C4, C6, C7, C9 Конденсатор100 нФ5 Поиск в магазине ОтронВ блокнот
C5, C8 Электролитический конденсатор47 мкФ2 Поиск в магазине ОтронВ блокнот
R1, R2 Резистор
510 Ом
2 Поиск в магазине ОтронВ блокнот
R3-R10 Резистор
15 кОм
8 Поиск в магазине ОтронВ блокнот
R11-R13 Резистор
5.6 кОм
3 Поиск в магазине ОтронВ блокнот
R14-R16 Резистор
10 кОм
3 Поиск в магазине ОтронВ блокнот
R17, R18 Резистор
4.7 кОм
2 Поиск в магазине ОтронВ блокнот
Добавить все

Скачать список элементов (PDF)

Прикрепленные файлы:

Теги:

Опубликована: 0 2
Я собрал 0 1
x

Оценить статью

  • Техническая грамотность
  • Актуальность материала
  • Изложение материала
  • Полезность устройства
  • Повторяемость устройства
  • Орфография
0

Средний балл статьи: 5 Проголосовало: 1 чел.

Комментарии (22) | Я собрал (0) | Подписаться

0
Виталий #
Интересная статья. А как АВТОРУ идея, как один из возможных режимов устройства, чтобы данные писались на карту памяти по событию. Изменилось значение на входах, даже на 1мВ, только происходит запись на карту. В Вашем варианте хорошо строить графики работы, а вот находить изменения значения одного из каналов, среди сотен строк... И еще, устройство уже готовое, но... а восемь свободных портов С не хотелось использовать, запись изменение состояния на входах и т.д.
Ответить
0

[Автор]
Igoryosha #
Спасибо, идея интересная - включать запись данных по изменению входного сигнала, а насчёт некоторой сложности поиска изменения значения одного из каналов, так для этого предполагается, что по полученным данным можно построить графики в Excel, по которым уже можно визуально оценивать массив данных.
Ответить
0
Виталий #
Вдумайтесь в идею. Контроллер считывает данные в буфер с заведомо настраиваемой скоростью (например 1мс...1сек..1мин, кому как надо) и по изменению показаний между значениями уже на карту. Ко всем показания нужно добавить одну колонку - время между изменениями (в мс..сек...мин) и все! Вам ненужно в екселе смотреть когда изменились данные, и поверьте, если одинаковых данных сотни, это уже плохо для анализа графика. В данной идеи есть одно преимущество - ВЫ ЗНАЕТЕ ЧТО СТРОКА С ДАННЫМИ ЭТО УЖЕ ДРУГИЕ ДАННЫЕ!!! И смотрите на последнюю колонку сколько времени прошло между событиями или на текущее время события. ивам незачем просматривать сотни строк. Так "трейсы" пишутся, по крайней мере...
Ответить
0

[Автор]
Igoryosha #
Спасибо, теперь понял Вашу идею. Возьму на заметку!
Ответить
+1
Виталий #
Я рад что Вы прислушались к идее, спасибо. Я смотрел многие логгеры, практически одна и та же идея - просто запись через определенное время. Но данных одинаковых очень много, как в Вашем случае с батарейкой на картинке в описании. Например саморазряд батареи измерить, сколько у Вас будет одинаковых записей, даже с интервалом через 1 минуту? Или заряд ак.бат. -вначале напряжение быстро подымается, а вот в конце заряда...а так у вас будет ровно, например, 600 записей - от 0,9В до 1,5В по 1мВ, и самое интересное вы будете знать точно динамику заряда, без кучи лишних/одинаковых данных. И еще, в начале файла записывайте названия колонок з данными, параметры считывания в буфер данных, точность сравнения, например 1мВ или 10мВ. Разбивайте данные в разные файлы - например по датам/часам если данных много. По прошествии времени, все забывается, а открыв файл сразу вначале информация о параметрах "логгирования". Название файла - дата/время и т.д. Удачи Вам!
Ответить
0

[Автор]
Igoryosha #
Спасибо! Попробую реализовать в свободное время данный алгоритм!
Ответить
0
Алекс #
Можете ли вы переделать прошивку для записи данных о силе тока и напряжении по трем фазам и частоте по одной?
Ответить
0

[Автор]
Igoryosha #
Тут не только потребуется измение программы, но и существенное изменение схемы электрической тоже. Потребуется блок согласования логгера с трёхфазной системой напряжения на трансформаторах тока, с применением усилителей и буферов на операционных усилителях, необходим узел для получения уровня напряжения, необходимый контроллеру, и это только часть необходимых узлов.
Ответить
0
alexs #
Хотелось бы по интересоваться - Вы не переписывали алгоритм как предлагал "Виталий"?
Ответить
0

[Автор]
Igoryosha #
Будет время - переделаю через месяц-полтора...
Ответить
0
STALKER7538 #
Вы не пробовали сделать даталогер на C8051F350?
У нее 24 битный АЦП.
Ответить
0
RusikOk #
Я бы все таки писал не в текстовый файл, а в CSV тогда бы графики строить через эксель было бы очень просто.
Автор сам разработал схему и программу? Уж как то очень смахивает структура проекта на http://www.dharmanitech.com/2011/05/microsd-atmega32-datalogger.html
Ответить
0
Александр #
Скажите, пожалуйста, если я подключу к каналу датчик температуры из серии LM(235 или 335) будет ли происходить запись данных для дальнейшего перевода их в температуру?
Ответить
+1
Дмитрий #
Проект заглох? С момента когда вы предполагали(месяц, полтора) прошло больше года. Очень нужен такой как у вас регистратор, но как его доработать до использования с однофазной сетью пока не знаю.
Суть такова, что хочу прицепить его на стабилизатор напряжения, чтобы выяснить качество его работы, а для этого нужно параллельно контроллировать 2 канала входного и выходного напряжения. Так же не помешала бы возможность изменять колличство контроллируемых каналов, чтобы не писать даные с пустышек.
Ответить
0
ЭФЭ #
Решил собрать Ваше устройство. Два вопроса:
Микросхема ATmega32A-AU подойдет?
В программе PONI PROG в таблице фьюзов отсутствует окно "SPIEN". Т.е закрашен серым и нет возможности вставить галочку. Это нормально?
Спасибо.
Ответить
0
Bredov-IV #
ЭФЭ, Атмега32А-АУ подойдёт, если можем переразвести плату под SMD-монтаж. В приведённом варианте она "ПУ".
В пони отсутствует "ШПИЁН" - это нормально. Если микросхема видится, его и так нельзя трогать.
От себя добавлю всем - галочку "JTAGEN" дружно снимаем. BODEN можно поставить по вкусу.
Ответить
+1
Руслан #
Ищу аналогичное устройство. Хочу применить для контроля состояния питающей сети. Можно ли увеличить период записи, скажем пару суток?
Возможно есть готовые устройства или полуфабрикаты?
Ответить
0
Александр #
Как подключить датчик давления чтобы показывал не вольты, а давление или температуру в градусах?
Ответить
0
Александр #
Если подключить датчик давления или температуры прибор регистрирует напряжение? Или показывает в паскалях или Цельсиях и как это сделать?
Ответить
0
Владимир Похорский #
Ни кто не обратил внимание, что в схеме ошибки - выводы МК - 7 и 8....
Ответить
0
Manoj Soorya #
Hi Author
Its a great project you shared with us. I collect the same and working great. I need to know when lamp on/off time and its to be recorded. This device will work with some changes in the input of datalogger input. I just design a circuit with 12F675 for switching 0 to 5 volt. Now able to find the right time to know when the lamp is on and off. One thing more, DS3231 will work insted of DS1307... Thank you so much for this great device.. Thank you.
Ответить
0
Евгений #
Есть возможность приобрести девайс?
Ответить
Добавить комментарий
Имя:
E-mail:
не публикуется
Текст:
Защита от спама:
В чем измеряется электрическая мощность?
Файлы:
 
Для выбора нескольких файлов использйте CTRL

AVR-программатор USB ASP
AVR-программатор USB ASP
Макетная плата для пайки (10 шт) FM-модуль RDA5807M
вверх