Универсальный внешний накопитель для всех iOS-устройств, совместим с PC/Mac, Android
Header Banner
8 800 100 5771 | +7 495 540 4266
c 9:00 до 24:00 пн-пт | c 10:00 до 18:00 сб
0 Comments

Простой термостат на PIC16F628A и DS18B20

Простой термостат на PIC16F628A и DS18B20Термометр позволяет измерять температуру в диапазоне от -55 до +125 градусов, а также осуществлять функции термостата во всем диапазоне температур, с любым гистерезисом. Реализована и функция контроля ошибок датчика. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20.

Простой термостат на PIC16F628A и DS18B20

Управление осуществляется 2-мя кнопками. Нажатием кнопки +1 активируется режим настройки температуры ВКЛЮЧЕНИЯ реле. Кратковременно выскакивает надпись On и далее мигают цифры установленной температуры включени. Кнопками +1 и -1 можно изменять это значение от -55 до +125 градусов. После установки температуры нужно подождать несколько секунд, на дисплее кратковременно мигнут три тире (—), новые данные будут записаны в EEPROM и прибор перейдет в основной режим отображения температуры. Аналогично, нажав кнопку -1 на дисплее появится надпись OFF и начнет мигать значение температуры ОТКЛЮЧЕНИЯ реле. Точно так же после паузы в несколько секунд появятся три тире и произойдет сохранение в EEPROM температуры отключения реле.

Обратите внимание, что термостат понимает любые ситуации. Температура отключения меньше или больше температуры включения, от этого будет зависить как сработает реле. А в случае если заданные температуры равны, то реле вообще не сработает, прибор будет работать как обычный термометр. Так же важно, что запись в EEPROM происходит именно в момент, когда появляются три тире. По этому до записи данных не отключайте питание.

Для включения режима настроек типа индикации и типа датчика нужно удерживая кнопку +1 подать питание. Так же этот режим автоматически включается при первом включении устройства, после прошивки микроконтроллера. В этом режиме сначала поочередно на несколько секунд будут отображаться цифры 123 то под общий АНОД, то под общий КАТОД. В момент когда цифры отображаются правильно нужно нажать любую кнопку, режим индикации будет запомнен. Далее на дислее будет мигать надпись или (-S-) или (-b-). Кнопками можно выбрать тип датчика, 18S20 или 18B20 – -S- и -b- соответственно. А не нажимая кнопки несколько секунд выбранный датчик будет запомнен и все настройки сохранятся в EEPROM. Термостат перейдет в основной режим работы.

В случае получения ошибочных данных с датчика на дисплее появляется надпись (Err) – ошибка. Ошибка появляется только в том случае, если ошибочные данные получены с датчика 3 раза подряд (защита от случайных сбоев). При ошибке функции термостата будут выключены, реле отключено.

Простой термостат на PIC16F628A и DS18B20

Простой термостат на PIC16F628A и DS18B20Простой термостат на PIC16F628A и DS18B20Простой термостат на PIC16F628A и DS18B20

Простой универсальный термостат на микроконтроллере PIC16F628A и датчике DS18B20 (вер.2)

Термометр позволяет измерять температуру в диапазоне от -55 до +125 градусов, а также осуществлять функции термостата во всем диапазоне температур, с любым гистерезисом. Реализована и функция контроля ошибок датчика. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20. Схемы остались прежними, изменилась только прошивка.

Простой термостат на PIC16F628A и DS18B20

Управление осуществляется 2-мя кнопками. Нажатием кнопки +1 активируется режим настройки температуры ВКЛЮЧЕНИЯ реле. Кратковременно выскакивает надпись On и далее мигают цифры установленной температуры включени. Кнопками +1 и -1 можно изменять это значение от -55 до +125 градусов. После установки температуры нужно подождать несколько секунд, на дисплее кратковременно мигнут три тире (—), новые данные будут записаны в EEPROM и прибор перейдет в основной режим отображения температуры. Аналогично, нажав кнопку -1 на дисплее появится надпись OFF и начнет мигать значение температуры ОТКЛЮЧЕНИЯ реле. Точно так же после паузы в несколько секунд появятся три тире и произойдет сохранение в EEPROM температуры отключения реле.

Обратите внимание, что термостат понимает любые ситуации. Температура отключения меньше или больше температуры включения, от этого будет зависить как сработает реле. А в случае если заданные температуры равны, то реле вообще не сработает, прибор будет работать как обычный термометр. Так же важно, что запись в EEPROM происходит именно в момент, когда появляются три тире. По этому до записи данных не отключайте питание.

Для включения режима настроек типа индикации и типа датчика нужно удерживая кнопку +1 подать питание. Так же этот режим автоматически включается при первом включении устройства, после прошивки микроконтроллера. В этом режиме сначала поочередно на несколько секунд будут отображаться цифры 123 то под общий АНОД, то под общий КАТОД. В момент когда цифры отображаются правильно нужно нажать любую кнопку, режим индикации будет запомнен. Далее на дислее будет мигать надпись или (-S-) или (-b-). Кнопками можно выбрать тип датчика, 18S20 или 18B20 – -S- и -b- соответственно. А не нажимая кнопки несколько секунд выбранный датчик будет запомнен и все настройки сохранятся в EEPROM. Термостат перейдет в основной режим работы.



В случае получения ошибочных данных с датчика на дисплее появляется надпись (Err) – ошибка. Ошибка появляется только в том случае, если ошибочные данные получены с датчика 3 раза подряд (защита от случайных сбоев). При ошибке функции термостата будут выключены, реле отключено.

На видео (автора) показана работа старой версии

В термостате применен 3-х разрядный светодиодный индикатор с общим анодом (или общим катодом). Индикация температуры осуществляется так: температура ниже -9 градусов, отображается знак минус и 2 цифры. От -9 до +99 добавляется символ градуса в 3-м знакоместе, при плюсовой температуре знак + естественно не отображается. Температура выше 100 градусов также отображается без символа градуса. В качестве датчика температуры использован ходовой, можно сказать классический датчик – DS18B20 или DS18S20 (DS1820). Хоть термостат и может работать на температурах до 125 градусов, длительная эксплуатация его в таких режимах не рекомендуется, датчик долго не проживет. Оптимальная макс.температура 80…90 градусов.

Прошивки и платы

Еще записи по теме

Термометр термостат на pic16f628a | Все своими руками

Опубликовал admin | Дата 20 октября, 2015

     Здравствуйте уважаемые посетители. Приходят пожелания от вас об увеличении диапазона регулировки температуры и ее индикации, представленных на сайте термометров-термостатов.

     Схема нового термостата представлена на рисунке 1.

Схема термометра-термостата

     В принципе она почти ничем не отличается от своих старших собратьев. Вообще это огромный плюс схем с применением микроконтроллеров.
     Основа схемы — микроконтроллер PIC16F628A. В качестве датчика применен один из известных и популярных цифровых датчиков температуры DS18B20. Показания реальной температуры, величина устанавливаемой температуры стабилизации и необходимого гистерезиса выводится на семисегментный светодиодный трехразрядный индикатор с общим анодом. Резисторы R1…R4, это подтягивающие резисторы . R1 подтягивает шину передачи данных с датчика температуры DS18B20 к шине питания схемы плюс пять вольт. R2…R4 подтягивают соответствующие выводы микроконтроллера к шине плюс пять вольт.

Резисторы с пятого по двенадцатый, являются гасящими резисторами, или ограничивающими применительно к току, протекающему через светодиоды. Изменяя номинал этих резисторов, можно регулировать яркость свечения сегментов индикатора. Иногда встречаются индикаторы с разной яркость свечения отдельных сегментов, этот дефект так же можно устранить при помощи этих резисторов. Для установки температуры термостатирования применены две кнопки с соответствующими знаками «+» и «-», это кнопки SB2 и SB3. Этими же кнопками устанавливается необходимый вам гистерезис, от 0,1 ˚С до 0,9˚С при нажатой кнопке SB1 — «Гистерезис». Сигнал управления коммутирующим ключом снимается с вывода 17 микросхемы DD1. Схему ключа я не стал рисовать, выберите сами, например, из статьи «Транзисторный ключ переменного тока»

     Обращаю ваше внимание, что в железе я устройство не проверял, все было промоделировано в Протеусе.

Скриншот программы Proteus со схемой термостата.

    Соответственно печатную плату не рисовал, но если у вас появится желание повторить данный термостат, рисунок можете выслать мне на адрес — [email protected] Начинающим «радиогубителям» (шутка), это очень пригодится. Я не в курсе затей тех посетителей, которые просили об усовершенствовании термостата, но возможно это были химики, для которых важна точность температуры растворов. Я, думаю, и вы найдете применение этому устройству. Не плохо бы было, если бы и вы прокомментировали, где можно применить его. Успехов. К.В.Ю.

Скачать “Термометр термостат на pic16f628a” Universal_term_isis.rar – Загружено 2243 раза – 33 KB


&nbsp

Скачать “Universal_term_OK” Universal_term_OK.rar – Загружено 666 раз – 69 KB

Обсудить эту статью на – форуме “Радиоэлектроника, вопросы и ответы”.

Просмотров:11 812


Электронный термостат на PIC16F628 и DS1820.

РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Электронный термостат на PIC16F628 и DS1820.

Сконструировал я мастерскую, она же помещение для ЧПУ станка. Стал вопрос поддержания приемлемой температуры в помещении, при сырой и холодной погоде. Буржуйка и всякого рода печи отпали сразу, не буду я сидеть сутками и топить дровишки. Решил остановиться на электрическом тепловентиляторе, только не на дешевеньком, в пластиковом корпусе, а на таком:

 

Параметры:
– Источник электропитания, В/Гц __220 / 50;
– Тепловая мощность, кВт ____ 1 / 2 кВт;
– Производительность, м3/час _____200;

Ну что, с источником тепла определился. Теперь задача номер два – чем управлять? Поиски в интернете привели меня на страницы журнала Радио-Конструктор №11/2008г. (стр.19 – 21), статья «Цифровой термостат». Также мне попалась ссылка на эту же конструкцию на сайте https://radioparty.ru – «Термостат на PIC16F628 и DS1820». Конструкция понравилась простотой, наличием дисплея. Ниже собственно схема, отрисовал в SPlan.

Температуру, которую необходимо поддерживать, можно установить в пределах от -25 до +75°С с шагом 0,25°С. Кроме того можно установить и необходимый гистерезис, в пределах которого температура должна поддерживаться, гистерезис устанавливается шагами по 0,1°С.
Управление термостатом осуществляется с помощью трёх кнопок. Кнопки «+» и «-» (S1 и S2) служат для установки численных значений температуры или гистерезиса, а кнопка «MODE» (S3) – для выбора установки.
Чтобы задать температуру, которую необходимо поддерживать, нужно нажать кнопку S3 и удерживать её пока на дисплее не появится надпись «SET TEMPERATURE».

Затем кнопками S1 и S2 установить необходимый гистерезис.

Затем, ещё раз нажать S3, чтобы вернуться на индикацию фактической температуры.

Температура измеряется с помощью интегрального термометра А1 – DS1820. Это готовый калиброванный датчик, не нуждающийся в налаживании. Датчик выполнен в виде отдельного щупа, соединённого с основной схемой экранированным кабелем через штекер 3,5мм (стерео).

Если датчик температуры неисправен или не подключен, отображается на дисплее следующая информация

Схема управления выполнена на микроконтроллере PIC16F628. Тактовая частота стабилизирована кварцевым резонатором ZQ1 на 4МГц.
Управление тепловентилятором осуществляется с помощью симистора VS1 типа BT136. Включение симистора производится с помощью оптопары MOC3043 (можно IL420). Схему включения тепловентилятора я изменил, применил промежуточное реле. В качестве нагрузки использовал катушку реле, а его контакты спаял параллельно и включил в разрыв цепи питания тепловентилятора.
Источник питания схемы построен на основе маломощного китайского трансформатора с двойной вторичной обмоткой , типа 9V-0-9V, на максимальный ток 100mA. Схема выпрямителя сделана двухполупериодной на двух диодах VD1и VD2. В случае использования трансформатора с одиночной вторичной обмоткой нужно применить мостовую схему выпрямителя. Напряжение питания контроллера и дисплея 5V стабилизировано интегральным стабилизатором А2 типа 7805.
Наличие трансформаторного питания и оптопары в цепи управления тепловентилятором обеспечивает полную гальваническую развязку между электросетью и схемой датчика и измерителя температуры.
Для отображения информации используется стандартный двухстрочный жидкокристаллический индикаторный модуль на 16 знаков в строке. Шрифт латинский. Подстроечным резистором R8 можно регулировать контрастность дисплея. Через резистор R9 подаётся ток на схему подсветки дисплея. Если подсветка не нужна вывод 16 дисплея можно не подключать, я поставил тумблер.
Со второго источника я взял файл прошивки, а вот печатную плату устройства пришлось развести, с удовольствием, самому.

Плата управления в сборе:

В файле thermostat.lay есть несколько вкладок: вкладка с моноплатой как на фото; плата питания; две платы управления, но с разными силовыми разъёмами; шаблон для корпусных отверстий.

Задача номер три – корпус для термостата. Подобрал корпус из серии «Z», а именно Z20 (KRADEX).

Нравятся мне корпуса этой серии, прочный материал. Теперь главное всё разместить, чтоб всё вместилось.
Воспользовавшись шаблонами, приступил к вырезке отверстий под дисплей, тумблер питания и кнопки управления. Сначала вырезал шаблоны, закрепил к корпусу на скотч, поверх линий на шаблоне сделал разметку канцелярским ножом. После высверлил лишнее и обработал надфилями кромки.

Вкрутил стойки под дисплей и вклеил стойки под плату с кнопками.

Примерка.

Врезал кабельный ввод питания термостата и разъём подключения датчика

Сбоку корпуса врезал маленький тумблер, отключение подсветки дисплея.

Нечего ей круглые сутки светить.
Далее приступил к сборки всего в корпус.

Всё компоненты поместились в корпус, правда, плотно. На выходе термостата подключил розетку для тепловентилятора.

Блок термостата с розеткой будут закреплены, на отрезке гетинакса и установлены внутри мастерской при входе, на стенке.

P.S. – На авторство, данного электронного термостата, ни в коем случае не претендую. Я только разработал печатную плату и предложил свой вариант монтажа устройства.


Файлы:
RK_2008_11
datasheet
plata + spl
termo.hex


Все вопросы в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?

Цифровой термометр-термостат для приборной панели автомобиля на PIC16F628A » RADIOSHEM.RU

Цифровой термометр-термостат для приборной панели автомобиля на PIC16F628A и датчике DS18B20

Данное устройство предназначено для замены штатного термометра автомоблия и управления охлаждающим вентилятором двигателя. Идеально подходит для установки в панель приборов автомобилей ВАЗ, но также подойдет практически для любого автомобиля.

Установив такой прибор вы получите:

– Высокую точность измерения температуры.
– Удобную и красивую индикацию в диапазоне от -55 до +125 градусов.
– Включение вентилятора при достижении 90 градусов и отключение при падении температуры до 87.
– Индикации перегрева. При 100 градусах цифры мигают и подается звуковой сигнал. При 110 градусах звуковой сигнал изменяется.
– Возможность устнановить его на место штатного термометра, не навредив дизайну панели.
– Использование единственного датчика для управления вентилятором и индикации температуры.
– Датчик легко встраивается в корпус неисправного штатного датчика температуры.
– Вывод звукового сигнала может быть настроен, как флаг. (например для управления внешним звуковым синтезатором или “колокольчиком”)
– В момент включения зажигания высвечивается короткая анимационная заставка (на время инициализации датчика, около 2-х секунд).
– Индикация выполнена на 3-х разрядном светодиодном индикаторе, естественно, их цвет может быть любым.

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

Датчик DS18B20 устанавливается в корпус штатного датчика (желательно не исправного, чтобы не курочить рабочий). Так же можно использовать самодельный корпус датчика. Соединение между устройством и датчиком лучше выполнить экранированным проводом, так же провод должен быть достаточно термостойким, т.к. работать ему придется около горячих деталей двигателя (подробнее о правильном монтаже датчика на рисунке в архиве). Все остальные детали монтируются на печатной плате, позволяющей легко вмонтировать этот прибор на место штатного термометра. Реле – это обычное стандартное автомобильное реле, с парой нормально разомкнутых контактов. Именно это реле включает вентилятор охлаждения.

! В новой версии прошивки снижена скорость опроса датчика, тем самым исключая его разогрев и завышение показаний на 1-2 градуса. Прошивка лежит в архиве, однако оставлена и старая версия.

Фото термометра-термостата

Простой универсальный термостат на микроконтроллере pic16f628a и датчике ds18b20 CAVR.ru Рассказать в:
Термометр позволяет измерять температуру в диапазоне от -55 до +125 градусов, а также осуществлять функции термостата во всем диапазоне температур, с гистерезисом +/- 1 градус. Т.е. реле будет включено при температуре на 1 градус ниже заданной и выключено, при температуре на 1 градус выше заданной. Кроме того, я постарался сделать его максимально универсальным, поэтому здесь размещено две схемы, одна под индикатор с общим анодом (ОА), другая под индикатор с общим катодом (ОК). Также есть возможность применять датчики DS18B20 и DS18S20.              Управление осуществляется 2-мя кнопками. при нажатии на любую – дисплей индицирует заданную температуру (показания мигают). Далее кнопками +1 или -1 изменяют в ту или иную сторону порог темростата. Если кнопки не нажимать, то через несколько секунд термометр выйдет из режима установок, внесенные изменения будут сохранены в энергонезависимой памяти EEPROM, мигание прекратиться и дисплей будет отображать текущую температуру. В термостате применен 3-х разрядный светодиодный индикатор с общим анодом (или общим катодом). Индикация температуры осуществляется так: температура ниже -9 градусов, отображается знак минус и 2 цифры. От -9 до +99 добавляется символ градуса в 3-м знакоместе, при плюсовой температуре знак + естественно не отображается. Температура выше 100 градусов также отображается без символа градуса. В качестве датчика температуры использован ходовой, можно сказать классический датчик – DS18B20 или DS18S20 (DS1820). Хоть термостат и может работать на температурах до 125 градусов, длительная эксплуатация его в таких режимах не рекомендуется, датчик долго не проживет. Оптимальная макс.температура 80…90 градусов.  На схеме указан стабилизатор 78L05, схема с ним вполне работает, но микросхема греется. Для большей надежности все же лучше применить более мощный стабилизатор 7805. 
Естественно, что под каждый из типов индикации и вариант датчика идет своя прошивка. Т.е. всего имеется четыре разных прошивки. Под ОК, с датчиком DS18B20 Под ОА, с датчиком DS18B20 Под ОК, с датчиком DS18S20 Под ОA, с датчиком DS18S20 При желании в прошивке легко изменить гистерезис и сделать инверсию включения реле. АРХИВ: Скачать  ОБНОВЛЕНИЕ:Скачать
Раздел: [Схемы]
Сохрани статью в:
Оставь свой комментарий или вопрос:

Цифровой термометр-термостат для приборной панели автомобиля на pic16f628a и датчике ds18b20 Рассказать в:
Данное устройство предназначено для замены штатного термометра автомоблия и управления охлаждающим вентилятором двигателя. Идеально подходит для установки в панель приборов автомобилей ВАЗ, но также подойдет практически для любого автомобиля. 

Установив такой прибор вы получите: 

– Высокую точность измерения температуры. 
– Удобную и красивую индикацию в диапазоне от -55 до +125 градусов. 
– Включение вентилятора при достижении 90 градусов и отключение при падении температуры до 87. 
– Индикации перегрева. При 100 градусах цифры мигают и подается звуковой сигнал. При 110 градусах звуковой сигнал изменяется. 
– Возможность устнановить его на место штатного термометра, не навредив дизайну панели. 
– Использование единственного датчика для управления вентилятором и индикации температуры. 
– Датчик легко встраивается в корпус неисправного штатного датчика температуры. 
– Вывод звукового сигнала может быть настроен, как флаг. (например для управления внешним звуковым синтезатором или “колокольчиком”) 
– В момент включения зажигания высвечивается короткая анимационная заставка (на время инициализации датчика, около 2-х секунд). 
– Индикация выполнена на 3-х разрядном светодиодном индикаторе, естественно, их цвет может быть любым.

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

Датчик DS18B20 устанавливается в корпус штатного датчика (желательно не исправного, чтобы не курочить рабочий). Так же можно использовать самодельный корпус датчика. Соединение между устройством и датчиком лучше выполнить экранированным проводом, так же провод должен быть достаточно термостойким, т.к. работать ему придется около горячих деталей двигателя (подробнее о правильном монтаже датчика на рисунке в архиве). Все остальные детали монтируются на печатной плате, позволяющей легко вмонтировать этот прибор на место штатного термометра. Реле – это обычное стандартное автомобильное реле, с парой нормально разомкнутых контактов. Именно это реле включает вентилятор охлаждения. 
  ! В новой версии прошивки снижена скорость опроса датчика, тем самым исключая его разогрев и завышение показаний на 1-2 градуса. Прошивка лежит в архиве, однако оставлена и старая версия.


          АРХИВ:Скачать    


Раздел: [Схемы]
Сохрани статью в:
Оставь свой комментарий или вопрос:

Терморегулятор на микроконтроллере PIC16F84 и датчике DS18B20. РадиоКот >Схемы >Цифровые устройства >Бытовая техника >

Терморегулятор на микроконтроллере PIC16F84 и датчике DS18B20.

Не смотря на огромное количество цифровых термометров и терморегуляторов, представленных на различных форумах, тема всегда остается актуальной, ввиду большого разброса пожеланий к такому изделию. Попытки сделать его универсальным увеличивают сложность схемы и естественно габариты всего устройства. В данной статье представлена попытка собрать более-менее универсальное, законченное устройство для применения в быту. Хотя первоначально это задумывалось, как отладочное и экспериментальное средство для изучения программирования, так как этот процесс должен подразумевать конкретную цель с конечным результатом, иначе будет не интересно, и все желания что-то изучить быстро остывают, не имея практического подтверждения и проверки. Выбор компонентов и микроконтроллера обусловлен их наличием и желанием хоть как-то применить, чтобы не валялось зря, вот и результат работы.
Область применения терморегулятора широка. Возможно его использовать для поддержания температуры в овощехранилище в зимнее время, как реле управления холодильником, и прочие варианты. Изготовление в отдельном корпусе G766 позволяет использовать его, как самостоятельное устройство, или в составе какой-либо системы управления. Терморегулятор состоит из двух плат, спаянных под прямым углом между собой, небольшого пластинчатого радиатора для симистора, внешнего датчика температуры, на 3-х метровом шнуре. Датчик использован один, в схеме с 3-х проводным включением и 12-и разрядным разрешением. Выход терморегулятора рассчитан на подключение нагрузки переменного тока 220В до 10A. (ток зависит от применяемого симистора и радиатора).

Схема разработана на основе аналогичных конструкций из журнала Радио № 10 за 2003г. и Радио № 1 за 2006г. В этом варианте изменены алгоритм работы, индикация, анализ сравнения чисел, выбор установок. Обновление температуры (опрос датчика) один раз в 1,05 сек. Расположение индикатора, кнопок и выключателя питания на передней панели, а всех разъемов подключения на задней панели, позволило использовать прибор более функционально и возможность скрыть все провода, при монтаже в составе другого изделия. Индикатор 4-х разрядный семисегментный с ОА (цвет свечения по желанию пользователя). Отображение температуры с фиксированной запятой младшего разряда, а старшие разряды с гашением не значащих нулей. Применение индикатора с суперяркими светодиодами в сегментах, или красного цвета позволит использовать плату (первоначальный вариант) без доработки. В моем распоряжении оказался обычный индикатор с зелеными светодиодами, что потребовало установку дополнительных ключей в цепи анодов (доработка указана на схеме), для увеличения яркости свечения сегментов, это еще и снизило влияние на яркость свечения сегментов, при разном количестве горящих в разряде. Чтобы исключить вопросы про точность датчика и необходимость вывода десятичной доли градуса, на краях измеряемого диапазона, можно сказать, что датчик работает в 12 разрядном режиме, считываются все разряды и преобразуются в цифровой вид, индикатор позволяет это сделать во всем диапазоне измеряемых температур. А вот оценка точности, потребность в десятичных долях градуса, на краях диапазона, на усмотрение пользователя, тем более эти возможности осуществимы изменением программы, под конкретные задачи. Сколько людей, столько и мнений, и пожеланий. На мой взгляд, все функционально и есть возможность подстроиться под широкую область применения. Была задумка ввести калибровку под применяемый датчик и записывать ее в память (где то встречалось в интернете) но пока такая точность не была востребована. А если и будет замечена неточность измерений и в поддержании заданной температуры, то все можно решить подстройкой гистерезиса и сдвигом установленного значения в требуемую сторону.
На передней панели кнопка “SET” переключает выбор режима установок: гистерезиса температуры, инверсии выхода (для холодильника), скважности (П- регулирование), температуры уставки. Кнопки “Минус” и “Плюс” меняют значения уставок, включают или выключают соответственно режимы инверсии и П-регулирования. После изменения установок и режимов, все записывается в энергонезависимую память EEPROM МК. Светодиод отображает подачу напряжения питания на выходную розетку.
При включении прибора на мигающем индикаторе по 2 секунды последовательно отображаются:
1 установленная температура ( далее по тексту Ту )в формате “XXX.X”
2 установленный гистерезис ( далее по тексту дТ ) в формате “d X.X”
3 если установлена инверсия, то отображается в формате “? O.n”
4 если установлено П-регулирование, то отображается в формате “П O.n”
Далее происходит инициализация датчика и его проверка, если он неисправен или не получен импульс присутствия по различным причинам, то на индикаторе отображается ошибка в формате “Егг.” в течении 2 сек, а затем вновь происходит проверка до восстановления связи с датчиком. Если все исправно, то далее происходит измерение температуры ( Ти ) и ее сравнение с установленной с учетом гистерезиса, причем гистерезис, как в положительную, так и в отрицательную сторону. Например, установленная температура +2гр. с гистерезисом в 0,4гр. будет поддерживаться в интервале от +1,8 гр. до +2,2 гр. Реакция на включение, или выключение нагревателя, при отключенных инверсии и П-регулировки происходит только после 5 замеров, подтверждающих необходимость коммутации выхода (для исключения ложных замеров). Исключение составляет режим П-регулирования, при котором по достижении температуры нижнего порога уставки (Ту-дТ/2) начинается ограничение мощности нагревателя, при помощи импульсного выключения/включения на определенное время, в течении каждого замера (т.е. каждую секунду). А по достижении верхнего предела уставки (Ту+дТ/2) нагреватель выключается полностью. При нулевом гистерезисе П-регулирование не работает, а нагреватель выключается при Ти>Ту и наоборот (так же через 5 замеров). Пропорции в соотношении вкл./выкл. нагрева устанавливаются исходя из дТ и Ти. Так например, при дТ в 1гр. количество ступеней регулировки 10. Длительность импульса включения определится из: (1Сек/дТ)*(Ту+дТ/2-Ти) с учетом десятичной части веса числа. Таким образом при равенстве Ти и Ту соотношение импульса и паузы 1:1 т.е. соблюдается пропорциональность регулирования мощности нагревателя на участке изменения температуры в диапазоне дТ.
Режим инверсии используется для управления холодильником и исключает включение П-регулировки. Более того, выключение компрессора холодильника осуще-ствляется при пятикратном подтверждении условия Ти Ту+дТ/2 и выдержки времени более 2 минут, после предыдущего выключения или пропадания напряжения питания в сети. Это необходимо, чтобы не сжечь компрессор при тяжелом пуске, после его выключения на короткое время.
В режиме изменения установок индикатор мигает с частотой 3Гц. Установка порога температуры осуществляется кнопками “Плюс” и “Минус”. Кратковременное нажатие кнопок изменяет Ту на 0,1°, а длительное удержание в нажатом положении изменяет Ту по 1° за 0,3 сек. (т.е. изменить уставку на 30° можно примерно за 10 сек).
По нажатию кнопки “Set” последовательно переходим в режимы установок:
1 Гистерезиса (от 0 до 8 град. кнопками “плюс” и “минус” с точностью 0,1°)
2 Включения инверсии ( кн. “плюс” включает, а кн. “минус” выключает)
3 П-регулирование ( кн. “плюс” включает, а кн. “минус” выключает)
4 Вновь установка температуры (далее по кольцу к п.1)
Так производят установки, нажимая кнопки с периодом менее 5 Сек. А если кнопки не нажимать более 5сек, то происходит запись режимов в память и переход к штатному установленному режиму работы. Есть особенность в установке инверсии и П-регулировки, они друг друга исключают, поэтому, если последним установить П-рег. то инверсии не будет, и наоборот, если установить инверсию, то П-рег. отключено, хоть до этого и было включено. Рекомендуется после изменений и записи в память, выключить терморегулятор на 3 сек, а потом включить, чтобы удостовериться в том, что установили (на всякий случай). Конструктивно прибор можно собрать в любом подходящем корпусе, использовать внешний блок питания на +5В, компоненты могут быть заменены любыми, подходящими по параметрам. Печатная плата выполняется любыми доступными средствами, по собственному усмотрению (ЛУТ, монтажка и др.) поэтому, думаю нет смысла навязывать собственный вариант. Программирование микроконтроллера производится внутрисхемно через разъем IDC10, но возможна установка МК в панельку и программировать во внешнем программаторе. Я использовал простейший комплект: программу WinPic800 и программатор собственного изготовления, немного отредактированный вариант из журнала Радио №10 за 2007г. Стр 31. Никаких проблем с установками бит конфигурации не было, они присутствуют в файле прошивки. Единственное условие, это необходимость отключать датчик во время программирования, мешает процессу своими ответами на импульсы по РВ7. Пытался прошивать программой Pony-prog, но что-то не получалось это делать стабильно. Программа дописывалась кусочками, по мере возможности, возникающих пожеланий и окончательной отладки. Вот вроде бы и все.

Файлы:
Печатные платы в формате PDF.
Файл проекта для Proteus.
Прошивка МК.

Вопросы, как всегда в Форум.


Как вам эта статья?

Заработало ли это устройство у вас?


Эти статьи вам тоже могут пригодиться:

90000 Interfacing PIC16F877A with DS18B20 temperature sensor 90001 90002 // Interfacing PIC16F877A with DS18B20 temperature sensor 90003 90002 // C Code for CCS C compiler. 90003 90002 90003 90002 // LCD module connections 90003 90002 #define LCD_RS_PIN PIN_D0 90003 90002 #define LCD_RW_PIN PIN_D1 90003 90002 #define LCD_ENABLE_PIN PIN_D2 90003 90002 #define LCD_DATA4 PIN_D3 90003 90002 #define LCD_DATA5 PIN_D4 90003 90002 #define LCD_DATA6 PIN_D5 90003 90002 #define LCD_DATA7 PIN_D6 90003 90002 // End LCD module connections 90003 90002 90003 90002 #include <16F877A.h> 90003 90002 #fuses HS, NOWDT, NOPROTECT, NOLVP 90003 90002 #use delay (clock = 8MHz) 90003 90002 #include 90003 90002 #define DS18B20_PIN PIN_B1 // DS18B20 Data pin is connected to pin RB1 90003 90002 90003 90002 signed int16 raw_temp; 90003 90002 float temp; 90003 90002 90003 90002 int1 ds18b20_start () {90003 90002 output_low (DS18B20_PIN); // Send reset pulse to the DS18B20 sensor 90003 90002 output_drive (DS18B20_PIN); // Configure DS18B20_PIN pin as output 90003 90002 delay_us (500); // Wait 500 us 90003 90002 output_float (DS18B20_PIN); // Configure DS18B20_PIN pin as input 90003 90002 delay_us (100); // wait to read the DS18B20 sensor response 90003 90002 if (! Input (DS18B20_PIN)) {90003 90002 delay_us (400); // Wait 400 us 90003 90002 return TRUE; // DS18B20 sensor is present 90003 90002} 90003 90002 return FALSE; 90003 90002} 90003 90002 90003 90002 void ds18b20_write_bit (int1 value) {90003 90002 output_low (DS18B20_PIN); 90003 90002 output_drive (DS18B20_PIN); // Configure DS18B20_PIN pin as output 90003 90002 delay_us (2); // Wait 2 us 90003 90002 output_bit (DS18B20_PIN, value); 90003 90002 delay_us (80); // Wait 80 us 90003 90002 output_float (DS18B20_PIN); // Configure DS18B20_PIN pin as input 90003 90002 delay_us (2); // Wait 2 us 90003 90002} 90003 90002 90003 90002 void ds18b20_write_byte (int8 value) {90003 90002 int8 i; 90003 90002 for (i = 0; i <8; i ++) 90003 90002 ds18b20_write_bit (bit_test (value, i)); 90003 90002} 90003 90002 90003 90002 int1 ds18b20_read_bit (void) {90003 90002 int1 value; 90003 90002 output_low (DS18B20_PIN); 90003 90002 output_drive (DS18B20_PIN); // Configure DS18B20_PIN pin as output 90003 90002 delay_us (2); 90003 90002 output_float (DS18B20_PIN); // Configure DS18B20_PIN pin as input 90003 90002 delay_us (5); // Wait 5 us 90003 90002 value = input (DS18B20_PIN); 90003 90002 delay_us (100); // Wait 100 us 90003 90002 return value; 90003 90002} 90003 90002 90003 90002 int8 ds18b20_read_byte (void) {90003 90002 int8 i, value = 0; 90003 90002 for (i = 0; i <8; i ++) 90003 90002 shift_right (& value, 1, ds18b20_read_bit ()); 90003 90002 return value; 90003 90002} 90003 90002 90003 90002 int1 ds18b20_read (int16 * raw_temp_value) {90003 90002 if (! Ds18b20_start ()) // Send start pulse 90003 90002 return FALSE; 90003 90002 ds18b20_write_byte (0xCC); // Send skip ROM command 90003 90002 ds18b20_write_byte (0x44); // Send start conversion command 90003 90002 while (ds18b20_read_byte () == 0); // Wait for conversion complete 90003 90002 if (! Ds18b20_start ()) // Send start pulse 90003 90002 return FALSE; // Return 0 if error 90003 90002 ds18b20_write_byte (0xCC); // Send skip ROM command 90003 90002 ds18b20_write_byte (0xBE); // Send read command 90003 90002 * raw_temp_value = ds18b20_read_byte (); // Read temperature LSB byte and store it on raw_temp_value LSB byte 90003 90002 * raw_temp_value | = (int16) (ds18b20_read_byte ()) << 8; // Read temperature MSB byte and store it on raw_temp_value MSB byte 90003 90002 return TRUE; // OK -> return 1 90003 90002} 90003 90002 90003 90002 void main () {90003 90002 lcd_init (); // Initialize LCD module 90003 90002 lcd_putc ( ‘\ f’); // Clear LCD 90003 90002 lcd_gotoxy (3, 1); // Go to column 3 row 1 90003 90002 printf (lcd_putc, “Temperature:”); 90003 90002 while (TRUE) {90003 90002 if (ds18b20_read (& raw_temp)) {90003 90002 temp = (float) raw_temp / 16; // Convert temperature raw value into degree Celsius (temp in ° C = raw / 16) 90003 90002 lcd_gotoxy (5, 2); // Go to column 5 row 2 90003 90002 printf (lcd_putc, “% f”, temp); 90003 90002 lcd_putc (223); // Print degree symbol (°) 90003 90002 lcd_putc ( “C”); // Print ‘C’ 90003 90002} 90003 90002 else {90003 90002 lcd_gotoxy (5, 2); // Go to column 5 row 2 90003 90002 printf (lcd_putc, “Error!”); 90003 90002} 90003 90002 delay_ms (1000); // Wait 1 second 90003 90002} 90003 90002} 90003 90002 // End of code.90003.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *