Регулировка температуры на ардуино

Программирование Arduino, оживление микроэвм Электроника МК-90, аппаратный хакинг.

Страницы

24.08.2010

Термоконтроллер на Arduino

  • Собственно сама плата Arduino или аналог;
  • Макетная плата для сборки компонентов схемы;
  • Дисплей WH1601A-NGG-CT с подстроечным резистором на 20 кОм или аналогичный;
  • Резисторы – 220 Ом, 10 кОм, 4.7 кОм;
  • Биполярный транзистор SS8050D или аналогичный ему;
  • Цифровой температурный датчик DS18B20;
  • Диод 1N4148 или аналог;
  • Вентилятор осевой трехпроводной (на 12В), например — компьютерный;
  • Разъем гнезда питания 2,1/5,5 мм.

В завершение хотел бы выразить огромную благодарность Илье Данилову (idanilov) за «привитый» интерес к Arduino и за помощь в освоении данной платформы.

UPD: Последняя версия LiquidCrystalRus доступна на github.

Автор: id

Мнение:

4 комментария:

Собрал по схеме, счетчик оборотов постоянно скачет и показывает не реальные значения то 5382, то 940, возможно ли такое из-за того, что у меня источник питания 12В 0,15А, а вентилятор требует 12В 0,16А =)

Пытался регулировать обороты от минимальной заданной до макс заданной температуры обороты росли автоматически от минимальных до максимальных

int fanspeed = map(val, 25, 28, 50, 255);
analogWrite(FAN, fanspeed);

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

То, что написано на вентиляторе, особенно китайского производства, далеко от реальности. Как обычно завышено. На вентиляторе написано: 12V 0,14A. Подключив к источнику питания через LM7812 получаем 12В и 0,09A на полных оборотах.

#include На сайте мертва ссылка на эту библиотеку. А новая 372 бета, не поддерживает это название, она распознает только #include Но после даже этой замены не компилируется
ошибка в этой строке: DallasTemperature tempSensor; (текст ошибки в командной строке: no matching function for call to ‘DallasTemperature::DallasTemperature()’)

Читайте также  Проверка орфографических ошибок русского языка

Нужна была печь, для запекания полимерной глины. После не долгих поисков выбор пал на электрическую печь для кухни «КЕДР». Мощностью 600 ватт, с максимальной температурой 250 градусов, без регулятора. На первое время был установлен термомеханический регулятор, так как температура для работы требовалась в диапазоне 100-130 градусов. Но вся проблема заключалась в том, что у печи очень большой разгон(после отключения нагревателя температура продолжала расти еще на 20-50 градусов), а у регулятора очень большой диапазон включения и отключения. То есть устанавливая температуру в 130 градусов я получал диапазон 100 — 160 градусов, что не является допустимым.

После нескольких месяцев разбора принципов работы с Arduino IDE и C++ родился проект, который полностью удовлетворяет требованиям. Устройство умеет удерживать установленную температуру от 100 до 150 градусов, по достижению которой срабатывает установка таймера на 5-35 минут, в зависимости от установки, по истечению срабатывает будильник.

Здесь блок-схема работы программы.

В состав устройства входит: четыре последовательных нагревателя установленных в печи по умолчанию, которые можно заменить на любой другой нагреватель соответственной мощности, твердотельное реле SSR-25 DA, Arduino Pro Mini, инкрементальный энкодер с кнопкой подключенного через инвертирующим триггер Шмитта, дисплей WH1602D и два NTC терморезисторов MF58 на 100кОм.

Применение термостата с ПИД управлением не ограничено птицеводством, КО , проект может использоваться пивоварами для поддержания температуры сусла, винокурами в перегонных аппаратах, может просто греть воду в бойлере до приятной температуры, после небольших изменений, в самодельных паяльных станциях, муфельных печах, кароче везде где требуется контроль температуры с высокой точность. Принцип работы и отличие от банального термостата с гистерезисом показан в видео:

Ниже схемы подключения и исходные коды проекта.

Читайте также  Свободные частоты для fm трансмиттера

О датчиках температуры:

Исходные коды проекта написаны нескольких типов датчиков:

  • TMP102 — датчик температуры с интерфейсом I2C, подробнее про работу с датчиком написано тут. Возможно датчик потребует корректировку температуры.
  • LM35 — не дорогой и распространенный, достаточно точный аналоговый датчик температуры, подробнее про него тут.
  • MCP9808 — высокоточный датчик температуры с интерфейсом I2C. Оптимальный выбор.

Имея навыки программирования ардуино, изменить код под другие датчики температуры труда не составит.

О ЖКИ индикаторе:

Решил не усложнять и взял стандартный текстовый экран WH1602A, про подключение подобных экранов к ардуино уже написано тут. Подключается напрямую, без переходников на I2C. Указанные в проекте номера выходов для подключения ЖКИ совпадают с китайским LCD Keypad Shield, я его использовал на стадии отладки.

Органы управления:

Настройка температуры терморегулятора осуществляется с помощью энкодера, удобно использовать модуль KY-040 по китайской номенклатуре 🙂

О реле:

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

Правильным решением будет использование твердотельного реле, либо модуль с симистором (что по сути является одним и тем же) на необходимый ток. Например SSR-25DA на 25А, если мощность нагревателя в районе нескольких киловатт, OMRON G3MB 202P держит до 2А или 440Вт.

У меня они в наличии не оказались, пришлось закупить в местном магазине радиодеталей оптосимистор MOC3063 для гальванической развязки и «детекции нуля» с симистором BT137x-800 на 8А и собирать твердотельное реле на макетке. Схема взята из даташита на MOC3063.

Схема подключения:

Возможно на этой будет понятней.

Схема подключения актуальная для датчиков с интерфейсом I2C (MCP9808, TMP102), в случаи использования аналогового LM35, его выход подключается к аналоговому входу А5.

Ссылка на основную публикацию
Adblock
detector