В проекте рассматривается простое и дешевое решение цифрового термометра, который подключется по интерфейсу 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 МГц.
Программа для ПК на языке 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) и исполняемый файл
prsistsbinftemprnapic.rar [2,87 Mb] (cкачиваний: 517)