Меню

Сбор данных с датчиков температуры

Простая система сбора данных о температуре на PIC микроконтроллере

В проекте рассматривается простое и дешевое решение цифрового термометра, который подключется по интерфейсу USB к персональному компьютеру. Аппаратная часть состоит из PIC микроконтроллера, датчика температуры и адаптера USB-UART. Программа микроконтроллера написана на Си в среде mikroC (mikroElektronika). Программное обеспечение для ПК написано на языке Processing. Это открытый язык программирования, основанный на Java. Представляет собой легкий и быстрый инструментарий для людей, которые хотят программировать изображения, анимацию и интерфейсы. Как дополнительная функция, в программе реализована запись данных о температуре по времени и дате в ASCII файл.

Микроконтроллер Microchip PIC12F1822 выполнен в 8-выводном корпусе, работает в широком диапазоне питающих напряжений (1.8 В – 5.5 В), имеет интегрированный 10-битный АЦП и модуль EUSART для коммуникации по последовательному интерфейсу. В схеме применяется аналоговый датчик температуры MCP9701A, который поддерживает измерение температуры в диапазоне от –40°С до +125°С. Выходное напряжение датчика прямо пропорционально температуре, температурный коэффициент составляет 19.53 мВ/°С. Измерение отрицательных температур возможно за счет смещения по постоянному напряжению 400 мВ, что соответствует температуре 0 °С.

Выход датчика подключен к одному из каналов АЦП микроконтроллера. Встроенный источник опорного напряжения микроконтроллера сконфигурирован для получения напряжения 2.048 В, причем использование этого внутреннего источника гарантирует стабильность данных АЦП при нестабильном питании микроконтроллера. Микроконтроллер передает преобразованные 10-битные данные по последовательному интерфейсу в компьютер.

Многие современные компьютеры и ноутбуки не имеют последовательных портов, поэтому автор использовал готовый модуль преобразователя интерфейсов USB-UART, он может быть непосредственно подключен к ТТЛ входам и выходам модуля EUSART микроконтроллера. Кроме того, модуль имеет шину питания +5 В, +3.3 (зависит от конструкции преобразователя USB-UART). В нашем случае напряжение питания микроконтроллера +5 В

.

Принципиальная схема

Схема цифрового термометра очень простая. Датчик температуры подключен к порту микроконтроллера RA2/AN2. Выводы адаптера USB-UART RX и TX подключены к соответствующим выводам микроконтроллера. Источник тактирования микроконтроллера – внутренний осциллятор 4 МГц.

Следует отметить, что вывод микроконтроллера MCLR сконфигурирован для работы в качестве линии ввода/вывода с целью дальнейшего расширения функций. Однако пользователь может настроить на использование по прямому назначению – сигнал внешнего сброса.

Микроконтроллер и датчик температуры установлены на небольшой макетной плате, на которой также размещен ответный коннектор для подключения к адаптеру USB-UART (для данного исполнения адаптера).

Программное обеспечение

Программа для микроконтроллера, как упоминалось выше, написана на Си в среде mikroC Pro для PIC микроконтроллеров. Данный компилятор предоставляет библиотеку функций по работе с АЦП микроконтроллера, однако, есть один нюанс – библиотека рассчитана на использование напряжения питания микроконтроллера в качестве опорного напряжения АЦП. Поэтому необходимо использовать собственный код для конфигурирования встроенного источника опорного напряжения.

Преобразование выходного напряжения датчика MCP9701A аналого-цифровым преобразователем осуществляется через каждые 2 секунды, два байта данных затем передаются на ПК по последовательному интерфейсу. Полный исходный код программы микроконтроллера с комментариями доступен для скачивания в разделе загрузок, для его компиляции подойдет и демонстрационная версия компилятора mikroC, не забудьте только использовать внутренний источник тактирования 4 МГц.

Читайте также:  Провода кислородного датчика лагуна 2 как прозвонить

Программа для ПК на языке Processing проста и реализует несколько функций: прием 10-битных данных с последовательного порта (виртуального COM порта), преобразование полученных данных в значение температуры, визуализация данных в окне программы. Библиотека функций Processing для работы с последовательным портом реализует простые способы записи данных в порт и чтения принятых данных.

По принятию двух байт данных, необходимо вычислить значение температуры. Для датчика MCP9701A расчеты следующие:

Разрешение АЦП преобразователя (Vref = 2.048V) = 2.048 В/1024 = 2 мВ/отсчет

Эквивалентное выходное напряжения для 10-битного АЦП Vadc (мВ) = 2 мВ*ADCvalue

Температура (°C) = (Vadc – 400 мВ)/19.5 мВ/°С

Вид окна программы для ПК

Кнопка «Start/Stop» предназначена для начала/остановки записи данных о температуре в файл. При нажатии копки «Start» начинается запись данных – сначала в оперативную память компьютера, а по нажатию кнопки «Stop» данные переносятся в файл. Имя файла содержит время и дату начала записи данных, поэтому наложение данных исключено. Каждый раз, когда нажимается кнопка «Start», создается новый файл.

Возможные улучшения

Интервал преобразования данных в данной версии жестко фиксирован в программе микроконтроллера, однако более гибким вариантом может быть пользовательская установка интервалов в программе на ПК. Кроме того возможна реализация прорисовки графиков изменения температуры по сохраненным данным в виде отдельного программного модуля.

Исходный код программы микроконтроллера (mikroC) – скачать
Исходный код программы для ПК (Processing) и исполняемый файл – скачать

Источник

Мониторинг температур на предприятии

Пришла задача придумать “что нибудь” для просмотра и контроля за температурами на производстве. Был уже установлен контроллер ПЛК 160 и подключены датчики температур по интерфейсу RS-485 (Википедия).

Контроллер и датчики были установлены до меня.

Была примерная схема подключения:

Использовали CoDeSys (Википедия) для просмотра.

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

Начало

Идея пришла такая — создать WEB-сайт в связке с базой MySQL и хранить там информацию по температурам и авариям.

  • Просмотр данных с любого компьютера на территории предприятия
  • Просмотр текущих аварий и произошедших
  • Онлайн просмотр текущих значений
  • Изменять максимальные и минимальные значения для регистрации аварий

В дальнейшем выяснилось следующее:

Минимум и максимум недостаточны для контроля аварий.

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

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



Если температура вышла за пределы критического минимума или критического максимума, то это сразу критическая авария.


Потребовалось разграничить доступ:

  • Администратор — только для меня )))
  • Технологи — для каждого датчика менять 5 параметров


Пришлось добавить изменения параметров аварии по времени. Это для того чтобы, например, с 00:00 до 09:00 не регистрировались аварии.



Инженеры — калибровка

По правильному необходимо с помощью ноутбука с COM портом цепляться к модулю для калибровки. Решил реализовать так же через WEB, т.е. человек занимающийся калибровкой подходит к датчику со своим термометром и выставляет фактическое значение на сайте.

  • Все остальные — просмотр
  • Программная часть

    Была создана виртуальная машина со связкой с ПЛК 160 по локальной сети.
    Установлен CoDeSys.

    Настроены IP адреса, чтобы компьютер видел контроллер.

    Проект находится по пути c:\project\pro\ и называется my_work.pro.

    Запуск самого проекта производится через файл run.cmd

    Приложение запускает файл run.cmd

    Для получения значений температуры использовал DDE (Википедия)

      Загружаем параметры конфигурации CoDeSys из “config.ini”

      Загружаем параметры конфигурации MySQL из “config.ini”

    По Таймеру ( Определились что достаточно будет считывать данные раз в минуту ):

    • Получаем количество датчиков с MySQL
    • Для каждого датчика создаем компонент DDE.DDEConv:

    Создаем компонент DDE.DDEItem и связываем с компонентом DDE.DDEConv:

    Передаем имя датчика с MySQL:

    Как результат – получаем значение температуры:

    Сохраняем текущее значение температуры и их параметры для каждого датчика.

    Получаем из MySQL на текущую дату и время:

    Примечание: «Защита от дурака» – если минимум больше максимума или наоборот – то меняем эти значения местами.

    Если не было аварии создаем запись

    Если была авария обновляем

    Авария закончилась устанавливаем Флаг завершения

    WEB-сайт

    Главная страница (кусок кода, сильно не пинайте):

    Остальные страницы примерно такого же типа. Каждая страница обрабатывает свои данные.

      Список датчиков. Наименования, Имя датчика для программы, Тип датчика.


    Датчики были Сгруппированы по назначению.

  • Добавлены “статусы аварий”: В процессе аварии, Авария завершена, Критическая авария.
  • Реализовано добавление пользователей и их роли.
  • Логирование кто что делал.
  • Архив всех аварий.
  • Графики.
  • Костыли

      При запуске программы CoDeSys выходит окошко:


    Программно его закрываем.

    Вдруг контроллер отключили.

    ZABBIX

    Создал узел сети с адресом 127.0.0.1.

    В нем правило обнаружения с наименованием “Датчики”.

    Прототипы элементов данных.

    Добавляем в zabbix_agentd.conf

    А дальше через zabbix можно и отправлять на почту и смс и многое другое.

    Результат

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

    На данный момент добавлены датчики открытия/закрытия дверей.

    • Минимальные затраты (относительно).
    • Плюс к карме (?).
    • Мониторинг работает уже 3 года.

    Минусы:

    • Много точек отказа: контроллер, сеть, программа CoDeSys, виртуальная машина, MySQL, IIS.

    P.S.

    Не пинайте сильно. Это первая моя статья.

    Источник

    Как работает система мониторинга?

    Система дистанционного мониторинга работает следующим образом:

    1. Определяемся с тем, что хотим контролировать.
    2. Подбираем необходимые датчики.
    3. Подключаем датчики к логгеру (регистратору) или модулю ввода.
    4. Получаем информацию о происходящем постоянно или при наступлении событий (SMS, Email, звонок, визуально).
    5. Ваше спокойствие и контроль над ситуацией.

    Из чего состоит система мониторинга?

    1. Датчики и сенсоры.

    Датчики — это «глаза» и «уши» системы мониторинга. Датчики раличаются назначением и способом подключения к контроллеру.

    Аналоговый датчик температуры на основе PT100

    Часто применяются:

    • датчики температуры;
    • влажности;
    • протечки;
    • открытия двери или окна;
    • движения;
    • задымления;
    • давления жидкостей и газов;
    • уровня жидкостей;

    По типу подключения датчики бывают:

    2. Контроллер датчиков, терминал сбора данных, RTU (регистратор).

    Ядром системы мониторинга является контроллер датчиков. Еще он называется RTU — Remote Terminal Unit, логгер или регистратор. Это устройство предствляет собой миниатюрный промышленный компьютер с различными входами и выходами для подключения всевозможных датчиков и сопряженного оборудования.

    Контроллер-регистратор Zoglab DSR

    Чем контроллеры RTU отличаются между собой?

    • мощностью электронной начинки (объем памяти, производительность);
    • количеством входов и выходов для подключения датчиков и сопряженных устройств;
    • интерфейсом передачи данных — COM порт RS232/Modbus RS485/USB/LAN/Wi-Fi/GSM;
    • наличием встроенного дисплея;
    • вариантом исполнения — копус пластик, метал;
    • степенью защиты от внешних воздействий, например IP67;
    • наличием батареи и длительностью автономной работы;
    • наличием GPS/GLONASS модуля;

    Контроллер датчиков GSX8-HV-WF

    3. Сбор информации от системы мониторинга.

    Рассмотрим основные варианты использования системы мониторинга, получения уведомлений и сбора информации с датчиков.

    Вариант A: Хочу знать только о нарушениях и все. Мне не нужна история показаний и анализ.

    SMS уведомления о нарушениях режима хранения

    Это самый простой вариант использования системы мониторинга. В этом случае часто используется встроенное программное обеспечение контроллера для того, чтобы отправить SMS или Email при наступлении какого-то события. Пользователь информируется только о нарушениях. Например, превышена допустимая температура, давление выше нормы и так далее. Вся настройка осуществляется через специальное программное обеспечение контроллера и сохраняется в его энергонезависимой памяти.

    На заметку: к этой категории относится класс устройств GSM сигнализации.

    Вариант B: Хочу знать о нарушениях, иметь историю показаний, проводить анализ. Данные должны храниться на моем сервере.

    Сбор данных с датчиков внутри локальной сети

    В этом случае контроллеры собирают телеметрию с датчиков и отправляют по каналам связи (RS485/LAN/Wi-Fi/GSM/GPRS) на центральный сервер. Показания датчиков сохраняются в базе данных и доступны для анализа и отчетности. Вся система мониторинга находится в единой локальной сети и требует наличия круглосуточно включенного сервера, который будет принимать данные от контроллеров. В этой конфигурации может быть много контроллеров, которые все настроены на единый сервер.

    Вариант C: Хочу знать о нарушениях, иметь историю показаний, проводить анализ. Своего сервера нет, покупать не хочу и следить за ним некому.

    Передача данных с датчиков в облачный сервис

    Полностью идентичный варианту B, но с тем условием, что данные передаются на специальный сервис в интернете и сохраняются там. Вам не надо приобретать и содержать свой сервер, беспокоиться о сохранности данных. Просто настраиваете контроллеры на внешний адрес и все. Данные будут надежно сохранены на резервируемых серверах, а вам будет предоставлен доступ к личному кабинету через интернет. Стоимость абонентской платы — 250 руб/мес за 1 датчик, подключенный к системе. При большом количестве датчиков расчет абонентской платы будет индивидуальным (от 20 датчиков).

    Здесь описаны основные и наиболее часто встречающиеся варианты систем мониторинга. С универсальными системами мониторинга и управления на основе промышленного протокола modbus RS-485 вы можете почитать здесь. На практике их можно комбинировать и строить совершенно уникальное решение на основе контроллеров и датчиков. Присылайте нам свои задачи и вопросы через форму на сайте или звоните +7 961 421-03-07 и +7 (863) 229-67-37. Наши инженеры подберут оборудование удовлетворяющее Вашим запросам и бюджетам.

    Источник

    Adblock
    detector