Altinkaya: турецкие корпуса для РЭА

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

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

Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

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

Микроконтроллер 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 В

.Алаптер USB-UART

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

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

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

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

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

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

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

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

Программа для ПК на языке 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) и исполняемый файл – скачать

Перевод: Vadim по заказу РадиоЛоцман

На английском языке: Low cost temperature data logger using PIC and Processing

Электронные компоненты. Бесплатная доставка по России
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Имя
Фрагменты обсуждения:Полный вариант обсуждения »
  • Хорошая вещь. Сбор данных с периодом 2 секунды, да еще и в файл сохраняем. Хотел для своих целей, чтобы не лопатить программу для ПК, посмотреть как данные по uart отправляются, чтобы повторить на другом МК подобный девайс, но в протеусе 7 нет такого МК. Может в новых версиях есть. Хорошо было-бы, если автор расписал алгоритм общения МК с ПК (что в каком порядке отправлять). Хотя догадки есть...
  • Если-бы мне понадобилось подобное, то я взял-бы PIC c аппаратным USB PIC16F1454, 1455, 1459, или PIC18F2455, 2550, 4455, 4550. Для PIC16 даже резонатор не нужен. Взял-бы нормальный компилятор XC8, или HT PICC. У Microchip куча готовых примеров для реализации CDC. Паяется и пишется за вечер. Из плюсов: минимум компонентов, никаких переходников, полный исходный текст для подробного изучения. Из минусов - необходимость изучать исходники работы с USB, но это - уже инвестиции. Если требуется "сделать и забыть" то можно и повторить конструкцию по ссылке ТС, даже исходников не надо, достаточно HEX-файла. Если-же нужно получить опыт и сделать задел на будущее, то MikroC и подобный аппаратный подход, IMHO, не лучший выбор. PIC18 с USB должны быть в Proteus. Вот статья по теме для допила, как говорится "почувствуйте разницу": [url]http://gamma.spb.ru/index.php/obuchenie/stati/microchip/127-navernoe-samyj-deshevyj-most-usb-uart[/url] PIC16F1455 за 87р. есть здесь: [url]http://trt.ru/Stock.php?Part=160[/url]