Классический термометр, даже цифровой, показывает текущее значение температуры контролируемого объекта. Задержка в отображении результата измерения, как правило, не превышает нескольких секунд. Но что делать в ситуации, когда нас интересует далекое прошлое, точнее: полученное минимальное и максимальное значение? Тогда вы можете обратиться к проекту, описанному в этой статье.
Основные параметры:
- измерение температуры в диапазоне -55 ... +125°C с разрешением 0,1°C;
- три дисплея для отображения температуры: текущая, минимальная и максимальная;
- большие 7-сегментные светодиодные индикаторы;
- датчик температуры с цифровым выходом, не требующий калибровки;
- результаты, хранящиеся в энергонезависимой памяти EEPROM;
- кнопка для обнуления запоминаемых показаний, также с внешним входом;
- источник питания постоянного напряжения 8 ... 35 В;
- потребляемый ток до 50 мА.
Для чего может пригодиться такое исполнение? Например, для наблюдения за угольной печью центрального отопления. Запомнившаяся максимальная температура укажет пользователю, не приближается ли вода в установке к температуре, угрожающей кипячению - может быть, пора сжигать топливо немного экономнее? В свою очередь, минимальная температура будет хорошим сигналом о том, превышает ли выхлопные газы так называемую точку росы, то есть температуру, ниже которой вода из выхлопных газов конденсируется внутри дымохода, ускоряя его коррозию. А текущая температура будет полезна для отслеживания текущей ситуации.
Не только печи могут контролироваться таким образом. Также температура в офисных помещениях (не слишком ли остывает утром?) или в теплицах с овощами - возможностей полно! Система разработана таким образом, что ее управление сводится к нажатию всего одной кнопки. И даже это не всегда необходимо. Просто подключите питание правильно, остальное произойдет автоматически.
Конструкция и эксплуатация
Принципиальная схема рассматриваемой системы приведена на рисунке 1. Наиболее важным элементом является мк ATmega8A-PU. Этот микроконтроллер можно найти во многих проектах, опубликованных на страницах нашего сайта, его популярность не ослабевает, несмотря на годы. Количество его выводов (программно настраиваемых) и объем памяти вполне достаточны для выполнения этой задачи. Конденсаторы C1 ... C3 фильтруют напряжение, питающее микроконтроллер, и уменьшают пульсации напряжения подключенного к нему источника питания. Внешний кварцевый резонатор не использовался для стабилизации частоты тактового сигнала, так как система практически не выполняет критических по времени задач - кроме того, количество выводов оказалось бы слишком маленьким. Вполне достаточно внутреннего RC-генератора, производящего тактовый сигнал на частоте 8 МГц. С помощью разъема J1 его можно запрограммировать, не нужно снимать этот чип с печатной платы.
Рисунок 1. Принципиальная схема термометра
Текущий результат измерения отображается с помощью дисплея LED2. Запоминаемое максимальное значение можно увидеть на LED1, а минимальное на LED3. Каждый из этих дисплеев имеет по четыре цифры, чтобы на них можно было показывать температуру с разрешением 0,1°C и возможный знак " - " для температуры ниже 0°C. общие аноды каждой из цифр (а их двенадцать!) включаются биполярными транзисторами PNP, которые по отдельности входят в состояние насыщения. Ток сегментов цифр и точек ограничен резисторами 330 Ом, что делает их яркость достаточно высокой, а потребление тока достаточно низким, чтобы их можно было питать непосредственно от выходов микроконтроллера.
Цифровой датчик температуры типа DS18B20 должен быть подключен к клеммам разъема J3. Напряжение питания этого датчика фильтруется простым RC-фильтром, состоящим из резистора R24 и конденсаторов C4 и C5, что улучшает стабильность работы этого датчика. Для защиты входа микроконтроллера от разрушения, к которому могут привести индуцирующие в проводе помехи и электростатические разряды, были добавлены диоды, ограничивающие напряжение в диапазоне -0,7...+5,7 В. резистор R25 ограничивает ток этих диодов. Резистор R27, в свою очередь, ограничивает ток защитных диодов, встроенных в микроконтроллер, так как их прямое напряжение может оказаться немного ниже. Резистор R26 необходим для правильной работы шины, связывающейся с датчиком, так как он подтягивает ее до потенциала +5 В. При этом значения R25 и R27 были подобраны таким образом, что вносимые ими падения напряжения и увеличение продолжительности нисходящего наклона не влияют на работу шины.
Очистка сохраненных значений возможна после стирания содержимого памяти EEPROM микроконтроллера или - гораздо проще - после нажатия кнопки S1. Если кто-то захочет подключить другую кнопку, можно сделать это без проблем, используя для этого клеммы разъема J2. Резистор R22 обеспечивает высокое логическое состояние на входе микроконтроллера, а R23 ограничивает ток защитных диодов, встроенных в US1, если в соединительных проводах появляется напряжение, превышающее напряжение, питающее эту систему. Стоит отметить, что этот очень простой трюк не может быть использован для защиты шины 1-Wire, поскольку в ней логическое состояние линии устанавливается низким как датчиком, так и микроконтроллером. Использование резистора столь значительного номинала привело бы к тому, что логический «0», выставленный микроконтроллером на входе датчика температуры, был бы неправильно интерпретирован — он составлял бы около 50% напряжения питания.
Напряжение питания системы подается на клеммы разъема J4. Диод D3 отсекает питание в случае обратной полярности при подаче этого напряжения. Линейный стабилизатор типа 7805 подает напряжение 5В на цифровые схемы: микроконтроллер и датчик температуры.
Монтаж и ввод в эксплуатацию
Схема была собрана на двухсторонней печатной плате размером 140x60 мм. Ее макет показан на рисунке 2.
Рисунок 2. Монтажная схема и схема дорожек платы
На расстоянии 3 мм от края пластины было четыре монтажных отверстия, каждое диаметром 3,2 мм. Чтобы сделать корпус проще, на рисунке 3 показано расположение кнопки обнуления и трех дисплеев на поверхности платы.
Рисунок 3. Расположение дисплеев и кнопок на поверхности платы
Я предлагаю начать сборку с элементов с наименьшей высотой корпуса, то есть резисторов и диодов на верхней стороне платы. После этого можно припаять панельку под микроконтроллер US1, применение которой я искренне рекомендую из-за простоты замены микроконтроллера в случае его повреждения.
Затем вы можете припаять светодиодные индикаторы и транзисторы, а в конце кнопку S1. На этом этапе монтажа плата будет выглядеть так же, как на титульной фотографии. На другой (нижней) стороне платы есть место для компонентов с более высокими корпусами: кпленочные и электролитические конденсаторы, разъемы J1...J4 и стабилизатор US2. Эти компоненты, встроенные в соответствующие места, показаны на фотографии 1.
Фотография 1. Внешний вид собранного устройства с нижней стороны
На этапе запуска необходимо запрограммировать флэш-память микроконтроллера и изменить его биты конфигурации на такие значения:
Low Fuse = 0x24
High Fuse = 0xD9
Детали показаны на рисунке 4, который показывает окно конфигурации этих битов в BitBurner. Таким образом, будет запущен внутренний RC-генератор с частотой колебаний 8 МГц и Brown-Out Detector, который переведет микроконтроллер в состояние обнуления, если его напряжение питания упадет ниже 4 в. это значительно снижает риск зависания микроконтроллера при запуске.
Рисунок 4. Детали настройки битов конфигурации
Правильно запрограммированная схема готова к работе после подключения цифрового датчика температуры типа DS128B20, как описано на плате, к клеммам разъема J3. Это может быть готовый модуль: с двойными изолированными проводами, с самим датчиком, герметично зажатым в металлической трубке.
Напряжение питания системы может находиться в диапазоне 8...35 в. как нижний, так и верхний пределы этого интервала обусловлены необходимостью обеспечения правильных условий работы стабилизатора типа 7805. Потребление тока чипом может составлять не более 50 мА и зависит от содержимого, отображаемого на дисплеях. По этой причине нет необходимости использовать радиатор на стабилизаторе, если напряжение питания не превышает около 15 В-для более высокого значения я предлагаю прикрутить к стабилизатору небольшой теплоотводящий элемент.
В макете прототипа используются три светодиодных дисплея с разными цветами свечения: красный для максимальной температуры, синий для минимальной и зеленый для текущей. Во время тестирования мы обнаружили, что дисплей с зелеными светодиодами (с символом LED-AF5643FG) светится значительно темнее, чем два других, несмотря на то, что он от того же производителя и имеет одинаковый ток сегментов. Ничто не мешает без каких-либо изменений в макете применять другие цвета или даже припаять три одинаковых дисплея.
Эксплуатация
При включении питания микросхема дважды пытается связаться с датчиком. В то время дисплеи выглядят как на фотографии 2. Если все работает нормально, примерно через четыре секунды термометр переходит в нормальную работу. В чем смысл этого? Каждое показание температуры должно быть правильным, так как даже отдельные случайные ошибки могут быть записаны и увековечены на дисплее MIN или MAX. Иногда первое считывание температуры от DS18B20 после включения питания не обновляет его внутренние регистры, несмотря на то, что ранее было принудительное преобразование. В такой ситуации температура, которую покажет чип, будет 85°C, потому что это содержимое регистров DS18B20 по умолчанию. Весьма вероятно, что такое значение будет значительно выходить за пределы поддерживаемого диапазона, поэтому оно будет представлять собой ненужное нарушение результатов предыдущих измерений. Эти штрихи будут отображаться до тех пор, пока не произойдет два правильных показания температуры.
Фотография 2. Внешний вид дисплея после включения питания
Когда запуск прошел успешно, система считывает внутреннюю память EEPROM и принимает решение: либо записанные в ней значения имеют смысл (то есть находятся в диапазоне -55...+125°C), либо какая-либо из них не имеет смысла. В первой ситуации чип отображает на LED1 и LED3 то, что он записал ранее, а в противоположной он предполагает, что минимальная температура = максимальная температура = текущая температура. Только с этих "стартовых" значений максимальная температура будет увеличиваться, а минимальная-уменьшаться. Это достаточно логичное действие, в отличие от установки двух фиксированных значений, например 0,0°C. ведь на батарее центрального отопления или в жилом помещении такая минимальная температура никогда не будет регистрироваться, поэтому это значение никогда не обновится, это произойдет только после регистрации отрицательной температуры. Вид дисплеев показывает фото 3. Запись в EEPROM происходит сразу после каждого изменения отображаемой максимальной или минимальной температуры.
Фотография 3. Внешний вид дисплея во время работы
Как упоминалось ранее, данные датчика DS18B20 обрабатываются в этой системе очень строго. Из-за циклических прерываний (с частотой 1 кГц), задачей которых является обновление содержимого дисплеев, иногда в этот тонкий битовый обмен вкрадываются ошибки. Таким образом, был реализован механизм проверки контрольной суммы (CRC), который отклоняет любой результат измерения, для которого вычисленная контрольная сумма несовместима с полученной. Отдельные ошибки не сообщаются-просто результат измерения будет обновлен через секунду или две. Однако, если произойдет хотя бы четыре таких отклонения подряд, в месте текущей температуры появится информация об ошибке.
Фотография 4. Внешний вид дисплея с сообщением об ошибке датчика
Восстановление корректности работы датчика температуры автоматически восстанавливает индикацию текущей температуры.
Кнопка S1 используется для обнуления индикаторов MIN и MAX, но это не обнуление в буквальном смысле этого слова. Как и при неправильном чтении с EEPROM, максимальная и минимальная температура будут приравнены к текущей. Для этого требуется правильная работа датчика, поэтому на центральном дисплее не может быть надписи Err. Достаточно короткого замыкания контактов S1 или клемм разъема J2, чтобы очистить память - в том числе и энергонезависимую.
Автор: Михаил Курзела
Файлы к статье "Термометр с памятью мин/макс значений" | |
Описание:
Файл прошивки микроконтроллера, макет печатной платы Eagle 7.6 |
|
Размер файла: 91.37 KB Количество загрузок: 28 | Скачать |