Окончание
Начало читайте здесь:
Программа
Программа для PIC контроллера
Программа для PIC контроллера написана на ассемблере и основана на предыдущих проектах, в которых использовался I2C интерфейс. Микросхема EEPROM, контроллер и внешний разъем подключены к одной шине I2C. Контроллер не использует шину до тех пор, пока термистор не будет подключен, при этом адрес продолжает инкрементироваться. Таким образом, повреждения данных будут видны.
Когда измерение температуры не производится, контроллер находится в спящем режиме. Он «просыпается» раз в секунду (используя внешний кварцевый резонатор и внутренний счетчик) чтобы проверить, не пора ли сделать измерение. Интервал измерений хранится в EEPROM по строго определенному адресу и считывается при включении питания.
Термистор и резистор формируют делитель напряжения, которое измеряется встроенным АЦП PIC контроллера. Измерение производится четыре раза, и четыре значения складываются. Это позволяет производить измерения немного точнее, так как среднее значение четырех измерений будет ближе к истинному значению, чем результат одного измерения, в связи с шумом, присутствующим в схеме.
Значения, полученные с АЦП, сохраняются непосредственно, без преобразования в значения температуры. Для экономии места в памяти без потери точности измерений, изменение значения по сравнению с предыдущим измерением сохраняется, по возможности, в 1 байте. При отсутствии такой возможности используются 2 байта. Если значение изменилось с последнего момента не более чем на ±112, записывается разница. Если изменения значения превышают этот порог, записываются 2 байта, при этом первый байт имеет флаг, указывающий на то, что число хранится в двух байтах.
В устройстве используется контроллер PIC12F683, работающий от внутреннего генератора на частоте 4 МГц. I2C интерфейс работает на частоте около 100 кГц, при этом интерфейс реализован программно, PIC SSP не используется.
Полная информация по этому проекту доступна для скачивания. Она включает библиотеку функций для I2C интерфейса, схему, расположения элементов на печатной плате и различные программы на С. Этот проект включен в библиотеку library of PIC code, которая доступна для загрузки.
Программа для ПК
Чтобы перезапустить устройство имеется программа, которая очищает всю EEPROM (до 0xff) и записывает 32 байтный заголовок со временем запуска и интервалом измерений. PIC контроллер использует значение интервала измерений, чтобы определять когда делать измерение, значение времени запуска используется программой, которая обрабатывает данные.
Чтобы прочитать данные, есть программа, которая считывает все содержимое EEPROM и выделяет из него время старта, интервал измерений и «сырые» данные. Данные из каждой области EEPROM преобразуются в дату, время, измеренное значение и температуру.
Схема
Схема очень проста: один резистор для встроенного АЦП, два – для интерфейса I2C, микросхема EEPROM, интерфейс для программирования PIC (разъем, 1 диод и 1 резистор), тактовый генератор (резонатор и 2 конденсатора).
Расположение элементов на плате, версия 1
На этой простой схеме показан монтаж элементов на макетной плате. Это вид сверху, такой же, как на фотографии.
Расположение элементов на плате, версия 2
На этом рисунке показаны элементы и дорожки на печатной плате, сделанной на заказ. Плата показана со стороны дорожек, хотя некоторые компоненты смонтированы на другой стороне.
Примеры результатов
Ниже изображен пример результатов, полученных с использованием устройства регистрации температуры устройством.
Устройство было помещено рядом с домашним термостатом на 10 дней зимой в начале 2007. На графике показаны измеренная температура и установки термостата («умный» термостат, достигающий установленной температуры за определенное время). Измеренные данные явно соответствуют установкам термостата: когда термостат включен в течение дня, и когда выключен ночью, и температура быстро спадает.