Микроконтроллеры семейства МС5-51 — несомненные чемпионы среди восьмиразрядных как по числу разновидностей, так и по числу компаний, выпускающих их модификации. Первый представитель этого семейства — Intel 8051 — был выпущен еще в 1980 г. Для своего времени это очень сложное изделие. На его кристалле 128 тыс. транзисторов, в четыре раза больше, чем в микропроцессоре Intel 8086, базовом для персональных компьютеров IBM PC. Удачный набор периферийных устройств, возможность работы с внешней и внутренней программной памятью и приемлемая цена обеспечили микроконтроллеру Intel 8051 большой успех. Важную роль сыграла открытая политика фирмы Intel, широко распространявшей лицензии на производство приборов с ядром 8051 среди ведущих полупроводниковых компаний мира: Philips, Siemens, Intel, Atmel, Dallas. Temic, OW. AMD, MHS, LG( Winbond, Silicon Systems и ряда других. В СССР микроконтроллеры семейства MSC-51 выпускали в Киеве (1816ВЕ31. 1816ВЕ51). Воронеже (1830ВЕ31, 1830ВЕ51), Минске (1834ВЕЗ1) и Новосибирске (1850ВЕ31).
Сегодня во всем мире производят более 200 модификаций микроконтроллеров этого семейства, начиная с простых 20-выеодных до сложнейших 100-выводных с встроенными АЦП, многочисленными таймерами-счетчиками, аппаратными умножителями и 64 Кбайт программной памяти на одном кристалле. Все они имеют общую систему команд и с точки зрения программиста различаются лишь числом регистров специального назначения.
Когда у автора возникла необходимость защитить подвал гаража от промерзания, дистанционно контролируя и регулируя температуру в нем, для блока измерения температуры и управления нагревателем был выбран микроконтроллер AT89C2051-24PI из упомянутого семейства. Ввиду отсутствия в нем энергонезависимой памяти данных для хранения сведений об установленном режиме и допустимых значениях температуры пришлось применить отдельную микросхему энергонезависимой памяти AT24C02-10PI Обе микросхемы рассчитаны на работу в "индустриальном" интервале температуры окружающей среды (-40…+85 °С).
На выбор повлияло и то, что суммарная стоимость этих микросхем в одной из московских торговых фирм вдвое меньше цены популярного микроконтроллера PIC16F84A-04I/P, работающего в том же температурном интервале.

Основные технические характеристики
Тип датчика - DS1820 или DS18B20
Измеряемая температура, °С
-максимальная +99.9
-минимальная - 55
Дискретность отсчета, "С - 0.1
Поддерживаемая температура С
- максимальная +99,9
-минимальная 0
Расход времени на ввод нового значения поддерживаемой температуры, с - не более 15




Схема, приведенная на рис. 1, стала почти классической для микроконтроллерных устройств такого назначения. В микроконтроллер DD1 загружена программа, приведенная в таблице.



Нагрузочная способность выходов примененного микроконтроллера — 20 мА при низком уровне напряжения на них и всего 50 мкА при высоком поэтому светодиодные семиэлементные индикаторы HG1 и HG2 выбраны с общими анодами. Чтобы сократить число выводов микроконтроллера, необходимое для подключения индикаторов, программно организована динамическая индикация с длительностью отображения каждого разряда 3 мс Элемент g (знак "минус") индикатора HG1.1 подключей вместо элемента h (десятичной точки) индикатора HG1.2. так что фактически индикация трехразрядная, ее полный цикл занимает 9 мс.
Нередко на время съема показаний датчиков, вычисления температуры, записи данных в EEPROM и других сравнительно длинных операций динамическую индикацию приостанавливают, что воспринимается как мерцание индикаторов. Чтобы исключить это неприятное явление, программа оптимизирована и работает с жесткой привязкой к темпу индикации.
Резисторы R7-R14 ограничивают ток катодов индикаторов HG1 и HG2. Транзисторы VT1, VT2, VT4 коммутируют их аноды, подключая поочередно к плюсу источника питания. Резисторы R1, R2 ограничивают ток при случайных замыканиях идущих к датчикам ВК1 и ВК2 проводов, длина которых может достигать нескольких метров. Так как эти провода могут оказаться проложенными в непосредственной близости от силовых кабелей, входы Р3.2 микроконтроллера DD1 и SCL микросхемы памяти DS1 защищены от возможных импульсных помех диодами VD5 и VD6. Использование одного и того же вывода микроконтроллера для связи с датчиком и для управления памятью стало возможным потому, что эти функции никогда не выполняются одновременно. Резистор R4 — нагрузочный для линии интерфейса 1-Wire согласно которому между микроконтроллером и датчиком происходит обмен командами и данными.
Резистор R3 поддерживает высокий логический уровень на входе РЗ.З микроконтроллера, когда ни одна из кнопок управления SB1-SB3 не нажата. Диоды VD7—VD9 устраняют последствии нажатия на несколько кнопок одновременно. Транзистор VT3 по командам микроконтроллера включает и выключает реле К1, управляющее нагревателем (или другим исполнительным устройством), и сигнальный светодиод HL1. Диод VD10 защищает светодиод HL1 от обратного напряжения.
Светодиод HL2, подключенный вместо элемента h индикатора HG2.2, служит дополнительным индикатором. Например, он выключен, когда на индикатор выведены показания датчика ВК1, и включен, когда выведены показания датчика ВК2.
Узел питания прибора состоит из выпрямителя на диодном мосте VD1 —VD4 и стабилизатора напряжения +5 В DA1.
Цифровые датчики температуры ВК1, ВК2 — DS1820 или более современные DS18S20 — внесены в Государственный реестр средств измерений под№ 3169-02 и, таким образом, официально допущены к применению в РФ. В некоторых случаях это имеет решающее значение. Датчики работают при напряжении питания 3…5.5 В, потребляя в режиме ожидания ток не более 1 мкА, а во время отсчета температуры и формирования результата (эти процессы занимают не более 750 мс) — приблизительно 1 мА. Дискретность результата измерения (0,5 С) может быть уменьшена, если прочитать значения регистров датчика COUNT_REMAIN (остаток после счета) и COUNT_PERC (число, соответствующее одному градусу Цельсия). Зная их и TEMP READ (температуру, считанную из датчика стандартным образом), более точное ее значение можно вычислить по формуле:




Этим приемом дискретность представления температуры доведена до 0,1 °С.
Каждому экземпляру датчиков указанных выше типов присвоен уникальный индивидуальный номер длиной 48 двоичных разрядов, хранящийся в его внутреннем ПЗУ. Это позволяет соединять параллельно практически неограниченное число датчиков, взаимодействуя с каждым из них отдельно.
В описываемом устройстве микроконтроллер подает датчикам первой команду Skip_ROM (ОССН), предписывающую пропустить процедуру проверки индивидуального номера. Далее команда Convert_T (44Н) запускает процесс измерения температуры сразу в двух датчиках. Через 750 мс, необходимых для завершения этого процесса, микроконтроллер подает команду Match_ROM (55Н), сопровождаемую индивидуальным номером одного из датчиков. В результате на следующую команду Read_Scratchpad (ОВЕН) откликается и сообщает микроконтроллеру результат измерения только этот датчик. Затем (после команды начальной установки) последовательность команд Match_ROM и Read_Scratchpad повторяется для второго датчика.
Полученные данные микроконтроллер обрабатывает и выводит на индикатор. Для удобства незначащий нуль на индикатор не выводится, а знак "минус", если он нужен, примыкает слева к старшей значащей цифре. Если при связи с датчиком зафиксирован сбой, что может означать неисправность или отсутствие датчика, вместо значения температуры будет выведено (в стилизованном виде) сообщение "-dAt".
Кратковременными нажатиями на кнопку SB1 переключают прибор на индикацию показаний датчика ВК1 или ВК2. Если удерживать эту кнопку нажатой более 5 с, будет включен режим автоматического поочередного вывода показаний датчиков с периодом 5 с. Выходят из этого режима коротким нажатием на ту же кнопку.
Терморегулятор всегда работает по показаниям датчика ВК2. Нажатиями на кнопку SB2 на индикатор вызывают значения температуры в такой последовательности: нижняя пороговая (при ней происходит включение нагревателя) — верхняя пороговая (при ее достижении нагреватель будет выключен) — текущая. Вывод на индикатор верхней пороговой температуры сопровождается включением светодиода HL2.
Изменяют значение пороговой температуры, выведенной в данный момент на индикатор, нажатиями на кнопки SBI (в сторону увеличения) и 5ВЗ (в сторону уменьшения). Шаг изменения — 0,1 °С. Если удерживать соответствующую кнопку нажатой более 1 с, значение начнет расти или уменьшаться со скоростью 30 шагов в секунду. Если в течение 5 с ни одна из кнопок не нажималась, устройство автоматически переходит к индикации текущей температуры. Чтобы выключить терморегулятор, достаточно установить пороговые значения температуры равными или нижнее больше верхнего.
Прежде чем начать измерение температуры и ее регулирование, устройство должно "зарегистрировать" подключенные к нему датчики — определить и запомнить их индивидуальные номера. Для регистрации датчики подключают поочередно (второй на это время должен быть отключен).
Включив прибор, нажмите на кнопку SB2 и удерживайте ее нажатой не менее 5 с до появления на индикаторе стилизованного сообщения "Pr1". свидетельствующего о готовности зарегистрировать подключенный датчик как ВК1. Если необходимо зарегистрировать датчик как ВК2, кратковременно нажмите на кнопку SB2, что приведет к выводу на индикатор сообщения "Pr2". Еще одним нажатием можно вернуть на индикатор сообщение "Pr1" и так далее.
Собственно регистрация происходит после нажатия на кнопку SB1. Если девять попыток микроконтроллера связаться с датчиком, определить и запомнить его индивидуальный номер не принесут успеха, будет сделан вывод о неисправности или отсутствии датчика, а на индикатор выведено сообщение "-dAt". После успешной регистрации на индикаторе появится значение измеренной зарегистрированным датчиком температуры. Описанную процедуру необходимо выполнить и в случае замены одного или обоих датчиков. Данные о датчиках и режимах индикации хранятся в микросхеме энергонезависимой памяти DS1.



Термометр-термостат собран на односторонней печатной плате размерами 75x74 мм, показанной на рис. 2. Задача добиться максимальной плотности монтажа и минимальных размеров платы при ее разработке не ставилась. В любительских условиях значительно важнее простота изготовления, удобство монтажа и налаживания. Очевидно, применив малогабаритные элементы и двусторонний поверхностный монтаж, размеры платы можно было существенно уменьшить. Но это не дало бы никаких эксплуатационных преимуществ. Там, где должен быть установлен прибор, свободного места для него в избытке. Внешний вид смонтированной и действующей платы — на рис. 3.



Прибор питают от сети через любой понижающий трансформатор с напряжением на вторичной обмотке 9 В при токе 300 мА и хорошей межобмоточной изоляцией. Вместо сдвоенных светодиодных индикаторов HLEC-D512GWB зеленого цвета свечения можно применить любые другие с общим анодом, от одноразрядных до счетверенных. Естественно, при соответствующей корректировке печатной платы.
Диоды 1N4148 заменяют любыми маломощными кремниевыми, например, серии КД522, а диоды 1N4007 — выпрямительными на ток не менее 300 мА, например, серии КД208 или КД209 Замена транзисторов КТ3107А -КТ502Б, КТ502Г, ВС327. Стабилизатор 7805 можно заменить отечественным КР142ЕН5А или КР142ЕН5В. Его желательно снабдить небольшим теплоотводом. Вместо микросхемы АТ24С02 можно применить АТ24С01А. Частота кварцевого резонатора может находиться в пределах 10… 12 МГц. Реле К1 — с обмоткой на 12 В, током срабатывания 70 мА и контактами, рассчитанными на ток 10 А при напряжении 250 В. Вместо электромагнитного репе можно использовать симисторный коммутатор с оптической развязкой, собрав его по схеме, подобной изображенной на рис. 2 в статье С. Корякова "Термометр с функцией таймера или управления термостатом" ("Радио". 2003, № 10, с. 26—28).
Устройство помещено в корпус из изоляционного материала с разъемами для подключения датчиков (удобны трехконтактные аудиоразъемы с диаметром штекера 3.5 мм), сети и нагревателя.

Скачать печатную плату, asm и прошивка.

Автор И. ШАТАЛОВ


Обновления

Сообщения ФорумаОтветов
3D Модели для Авто0
Бакометр 2335
Touch Start-Stop Engine.587
Кодграберр17
Исправляем AVR фьюзы при помощ …109
Бакометр - измеритель остатка…4
IR конструктор на PIC12F62977
Универсальное зарядное устройство103
бaкoмeтр1974
Двунаправленный автомобильный…2
Программатор GENIUS G8401
Светодиодный тахометр34
Индикаторы ГРИ ИН1 - ИН141
Multiprog1
Управляющая программа LED CUB959
Универсальное зарядное устройство9
Изготовлю печатные платы29
Простой автоматический выключа…25