4 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Как сделать автоматический вентилятор на Arduino Uno для рабочего стола своими руками!

Содержание

Вентилятор с помощью Ардуино, который зависит от температуры

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

Комплектующие

Автоматический вентилятор Ардуино, который включается сам, когда температура в помещении достигнет определенной величины.

Мы будем использовать датчик DHT22 для получения значения температуры и выведем это значение температуры на ЖК-дисплее. Затем мы проверим, будет ли значение температуры больше 35 или нет, если температура будет больше 35, тогда реле будет активировано и вентилятор начнет вращаться.

Нам понадобятся следующие детали для нашего проекта:

Принципиальная схема вентилятора Ардуино

Принципиальная схема нашего вентилятора выглядит так:

Давайте разберемся с соединением всех деталей. Прежде всего сделайте подключение ЖК-дисплея к Ардуино следующим образом:

  • Подсоедините вывод VSS на ЖК-дисплее к земле Arduino.
  • Подключите контакт VDD к 5V Arduino.
  • Подсоедините вывод V0 к центральному выводу потенциометра 10K. Подключите два других контакта потенциометра к 5V и к земле.
  • Подсоедините штырь RS к контакту 2 Arduino.
  • Подключите контакт R/W к земле Arduino. Это поместит ЖК-дисплей в режим чтения.
  • Подключите контакт E (Enable) к контакту 3 Arduino.
  • Подключите контакты D4-D7 к контакту 4, 5, 6, 7 Ардуино.
  • Подключите контакт 15, который является положительным выводом подсветки светодиода на 5-контактный штырь через резистор 220 Ом.
  • Подключите контакт 16, который является отрицательным выводом подсветки светодиода к земле Arduino.

Затем подключите релейный модуль к Arduino. На стороне входа модуля реле выполните соединения следующим образом:

  • Подключите вывод VCC модуля реле к выводу 5V Arduino.
  • Подключите вывод IN модуля реле к выходу 9 Arduino.
  • Подключите вывод GND модуля реле к GND Ардуино.

На выходной стороне модуля реле подключите минус 9В-батареи к общему (C) модулю реле и подключите NC модуля реле к минусу вентилятора. Затем подключите плюс батареи к плюсу вентилятора.

В конце сделайте соединения для датчика температуры и влажности DHT22.

  • Подключите контакт 1 DHT22, который является выводом VCC, к 5V Ардуино.
  • Подключите контакт 2 DHT22, который является выводом данных к выходу 8 Arduino.
  • Подключите контакт 4 от DHT22, который является заземляющим контактом, к земле Arduino.

Скетч для Ардуино

Ниже вы можете скопировать и загрузить код в свою Ардуино Уно.

Объяснение кода

Прежде всего, мы включили библиотеки для датчика DHT22 и для ЖК-дисплея. Библиотеки помогут сделать код более простым.

Скачать все необходимые библиотеки для своих проектов вы можете на нашем сайте в разделе — Библиотеки.

Затем мы инициализировали контакты к которым мы подключили ЖК-дисплей и датчик DHT22. После этого мы определили тип датчика DHT, который используется. Существует множество других типов датчиков DHT, таких как DHT11, поэтому здесь важно определить тип.

В функции настройки мы дали команду DHT22 и LCD, чтобы начать общение с Arduino. Затем мы объявили контакт реле как выходной вывод, потому что мы дадим напряжение от Ардуино к реле для активации реле. Реле работает обратно (High означает Low для реле).

В функции цикла мы очищаем ЖК-экран, а затем считываем значение температуры от датчика.

Затем мы печатаем значение температуры на ЖК-дисплее, и если значение температуры будет больше 35, тогда реле будет активировано, и вентилятор начнет вращаться.

Мир микроконтроллеров

Популярное

  • Устройство и программирование микроконтроллеров AVR для начинающих — 143
  • Трехканальный термостат, терморегулятор, таймер на ATmega8 — 71
  • Двухканальный термостат, терморегулятор на ATmega8 — 67

Навигация по записям

Вентилятор на Arduino Uno, управляемый с помощью температуры

В этом проекте на Arduino мы будем управлять скоростью вращения вентилятора постоянного тока в соответствии с температурой в комнате и показывать изменения этих параметров (температуры и скорости вращения вентилятора) на жидкокристаллическом (ЖК) дисплее 16×2. В проекте будет происходить обмен данными между Arduino, ЖК дисплеем и датчиком температуры DHT11. Управлять скоростью вращения вентилятора постоянного тока мы будем с помощью широтно-импульсной (ШИМ) модуляции, с помощью которой можно управлять средним значением напряжения, подаваемого на вентилятор.

Читать еще:  Мини-мойка высокого давления своими руками

Необходимые компоненты

Плата Arduino UNO
Датчик DHT11
Вентилятор постоянного тока
Транзистор 2n2222
Батарейка на 9 В
ЖК дисплей 16×2
Резистор 1 кОм
Соединительные провода

Принципы ШИМ модуляции

Наша конструкция будет состоять из трех частей. В первой части будет измеряться температура с помощью датчика температуры и влажности DHT11. Вторая часть будет считывать значение температуры с выходного контакта DHT11, преобразовывать ее в температуру по шкале Цельсия и управлять скоростью вращения вентилятора постоянного тока с помощью ШИМ. А третья часть проекта будет показывать значение температуры и скорости вращения вентилятора на ЖК дисплее.

В этом проекте мы использовали датчик DHT11, который подробно описан в статье про измерение температуры и влажности с помощью Arduino. Но в этом проекте мы этот датчик будем использовать только для измерения температуры.

Принцип функционирования проекта достаточно прост. Мы будем создавать сигнал ШИМ модуляции на соответствующем контакте ШИМ платы Arduino, который будем подавать на базу транзистора. В соответствии с этим управляющим напряжением транзистор будет изменять значение напряжения на своем выходе, с которого и подается управляющее напряжение на вентилятор.

Пример ШИМ модуляции на цифровом осциллографе представлен на следующем рисунке.

Скорость вращения вентилятора и соответствующие ей значения ШИМ и ее коэффициента заполнения представлены в следующей таблице.

Что такое ШИМ? Простыми словами это такая технология, с помощью которой мы можем управлять напряжением или мощностью. К примеру, мы подаем на электродвигатель напряжение 5 Вольт, которое будет заставлять его вращаться с некоторой скоростью. Если после этого мы снизим подаваемое напряжение на 2 Вольта (т. е. до 3 Вольт), то скорость вращения электродвигателя также уменьшится. Более подробно об использовании ШИМ можно прочитать в следующей статье: управлению яркостью свечения светодиода с помощью ШИМ.

Основная идея ШИМ состоит в использовании цифровых импульсов с определенным коэффициентом заполнения (циклом занятости), который и будет отвечать за скорость вращения вентилятора.

К примеру, мы будем использовать ШИМ с коэффициентом заполнения 50% — это будет означать что на управляемое устройство мы будем подавать половину максимального напряжения импульса.

Формула для расчета коэффициента заполнения будет выглядеть следующим образом:

Duty Cycle= Ton/T

где T – общее время импульса Ton+Toff (сумма его активного и пассивного состояния)
Ton – время активного состояния импульса (означает 1 )
Toff – время пассивного состояния импульса (означает 0)

Более наглядно это представлено на следующих рисунках.

Работа схемы

Схема устройства представлена на следующем рисунке.

ЖК дисплей подключен к плате Arduino в 4-битном режиме, более подробно об этом можно прочитать в статье про подключение ЖК дисплея к Arduino. Контакты ЖК дисплея RS, EN, D4, D5, D6 и D7 подсоединены к цифровым контактам Arduino 7, 6, 5, 4, 3 и 2. Датчик DHT11 подсоединен к контакту 12 Arduino через подтягивающий резистор. Контакт 9 Arduino используется для управления скоростью вращения вентилятора (с помощью транзистора).

Исходный код программы

Сначала мы произведем подключение библиотек для работы с ЖК дисплеем и датчиком температуры (dht), а затем инициализируем контакты для подключения ЖК дисплея, датчика температуры и вентилятора.

Затем инициализируем все остальные нужные нам вещи в секции setup. А затем в секции loop мы будем использовать dht-функции для считывания значений с датчика температуры, извлекать из этих значений температуру, переводить ее в температуру по шкале Цельсия и отображать ее значение на ЖК дисплее.

После этого мы будем сравнивать значение температуры с заранее установленными нами температурными порогами (выше приведенная в тексте статьи таблица) и исходя из результатов сравнения будем генерировать соответствующее значение ШИМ на выходном контакте, к которому подключен транзистор, управляющий скоростью вращения вентилятора.

Для генерации ШИМ мы будем использовать функцию analogWrite(pin, PWM value). Мы будем использовать все 8 бит. Значение ШИМ будет эквивалентно аналоговому значения напряжения. То есть, к примеру, если мы хотим сгенерировать ШИМ с коэффициентом заполнения 20%, то мы в эту функцию (analogWrite) должны передать значение 255/5.

Далее приведен полный текст программы.

#include // подключаем библиотеку для работы с датчиком
#include
// подключаем библиотеку для работы с ЖК дисплеем

LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
#define dht_dpin 12
dht DHT;
#define pwm 9
byte degree[8] = // символ градуса для отображения на ЖК дисплее
<
0b00011,
0b00011,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000,
0b00000
>;

void setup()
<
lcd.begin(16, 2);
lcd.createChar(1, degree);
lcd.clear();
lcd.print(» Fan Speed «);
lcd.setCursor(0,1);
lcd.print(» Controlling «);
delay(2000);
analogWrite(pwm, 255);
lcd.clear();
lcd.print(«Circuit Digest «);
delay(2000);
>

void loop()
<
DHT.read11(dht_dpin); // считываем значение с выхода датчика температуры
int temp=DHT.temperature; // извлекаем из него температуру
lcd.setCursor(0,0);
lcd.print(«Temperature:»);
lcd.print(temp); // показываем значение температуры на ЖК дисплее
lcd.write(1);
lcd.print(«C»);
lcd.setCursor(0,1);
if(temp 29)
<
analogWrite(pwm, 255);
lcd.print(«Fan Speed: 100% «); // скорость вращения 100%
delay(100);
>
delay(3000);
>

Видео, демонстрирующее работу схемы

Также про вентилятор на симуляторе Arduino Uno, управляемый с помощью температуры, можно посмотреть следующее подробное обучающее видео (на английском языке):

Читать еще:  Светодиодный светильник из перегоревших лед ламп

Автоматика для вентиляции на Arduino.

Всем привет! Сделал таки я для своей бездыханно висящей на потолке приточно-вытяжной системы вентиляции Naveka Node1 систему управления на Arduino UNO+WiFi R3 ATmega328P+ESP8266.

Старая система управления не пережила грозу и была отправлена производителю ПВВУ в ремонт. Ремонтировать контроллер производитель что-то не особо торопился, а я тем временем вник в логику работы вентиляционной установки и решил сделать для нее управление на Arduino. Чуточку позже, без каких-либо телодвижений с моей стороны, производитель ПВВУ — progress-nw.ru, вернул за пульт и контроллер деньги. Приятный ход со стороны производителя в сторону клиента. Вот видео этой установки, тогда еще несмонтированной :)).

Итак, из чего состоит вентиляционная установка Naveka Node1 и, соответственно, с чем нам придется работать:

  • AC вентиляторы Ebmpapst D2E146-HR93-03 с 4мя ступенями переключения скоростей (вариант с али);
  • электропривод Vilmann TAFA2-05S с возвратной пружиной, установленный на заслонке притока;
  • пластинчатый алюминиевый теплообменник (рекуператор);
  • нагревательные элементы PTC 1500W

220В — 2 шт (неплохой магазин PTC нагревателей на али);

  • термостат нагревательных элементов — 1 шт;
  • твердотельное реле Maxwell MS-3DA3825 — 1 шт;
  • датчик температуры приточного воздуха (вместо «родного» используем цифровой DS18B20);
  • фильтр карманный G4 — 2 шт;
  • реле перепада давления Lefoo LF32-05 — 4шт;
  • контактор IEK КМ 20-20 — 1 шт;
  • реле промежуточное IEK РЭК 78/3;
  • Все это железо под управлением платы ZENTEC M100-B1 позволяло осуществлять приточно-вытяжную вентиляцию на первой или второй ступени скорости, поддерживать температуру приточного воздуха с помощью керамических саморегулируемых электронагревателей — PTC. Программировать работу установки по расписанию. Этой функцией так и не воспользовался ни разу и реализовывать в новой системе управления не стал. Для нового управления приточно-вытяжной вентиляционной установкой купил на али следующие комплектующие:

    1. Плата Arduino UNO+WiFi R3 ATmega328P+ESP8266 -1 шт;
    2. отверточный шилд (Screw Shield) — 1 шт;
    3. цифровые датчики температуры DS18B20 — 4 шт;
    4. дисплей LCD2004 c I2C — 1 шт;
    5. модуль из 6-ти твердотельных реле (Omron) High level Trigger — 1 шт.
    • Arduino UNO+WiFi R3 ATmega328P+ESP8266
    • LCD 2004 с I2C интерфейсом
    • Датчики DS18b20
    • Модуль твердотельного реле

    Какова же логика работы приточно-вытяжной вентиляционной установки? Понимание принципа работы — это первый шаг к созданию управления на базе Arduino или подобной платы. Как логику работы ПВВУ понял я.

    Принцип работы приточно-вытяжной вентиляционной установки.

    Вентиляция без подогрева воздуха. При включении ПВВУ, контроллер проверяет состояние пожарного шлейфа и термостата нагревателя, в случае нормы происходит открытие клапана на притоке и запуск приточного и вытяжного вентиляторов на скорости, выбранной пользователем. Фактический запуск приточного вентилятора подтверждается сработкой соответствующего реле перепада давления (РПД ПВ). При эксплуатации в зимнее время, при низких температурах окружающего воздуха, возможно обмерзание рекуператора и сработка соответствующего реле перепада давления (РДП рекуператора). В этом случае контроллер отключает приточный вентилятор, закрывает заслонку приточного канала и начинается отогрев теплообменника вытяжным теплым воздухом. После завершения операции оттаивания рекуператора и восстановления РПД, происходит открытие заслонки на притоке, запуск приточного вентилятора, работа ПВВУ продолжается. При отключении вентиляционной установки происходит остановка вентиляторов и закрытие заслонки приточного канала.

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

    Работа ПВВУ автоматически прекращается в случае:

    • срабатывания пожарной сигнализации,
    • срабатывания термостата нагревателя,
    • остановки приточного вентилятора.

    На дисплее будет отображаться соответствующее состояние. Для восстановления работы необходимо устранить неисправности и осуществить запуск ПВВУ.

    Замена фильтров. Нужны они прежде всего для того, чтобы обитатели помещения могли дышать чистым воздухом. Во-вторых, для того чтобы рекуператор не забило пылью как со стороны притока, так и вытяжки. Сработка РПД фильтров свидетельствует о загрязнении фильтров, фильтра нуждаются в замене. На дисплее управления будет выведена соответствующая индикация, работа ПВВУ при этом продолжается.

    Понимая таким образом логику работы приточно-вытяжной вентиляционной установки и ожидая нужную мне Arduino и другие железки, приступил к первым этапам реализации: «рисованию» схемы подключения и написанию кода. Пришлось немало времени провести под потолком с мультиметром, прозванивая и маркируя проводники, стоя на лесенке! Снимать установку категорически не хотелось =)). Используя Fritzing, сваял «картинку» подключения всех элементов к ардуино (картинка кликабельна):

    Схема подключения вентиляционной установки к Arduino

    Конечно-же, схемой эту картинку не назвать, но, глядя на нее, вполне можно подключить сенсоры и исполняющие модули к микроконтроллеру (плате). А обобщение всего этого материала — хорошая шпаргалка для меня. Соединяем проводники согласно схемы (на фото промежуточный результат):

    ПВВУ NAVEKA и Ардуино

    Места релейной сборке в родном коммутационном отсеке приточно-вытяжной вентиляционной установки не нашлось. Разместил релейный модуль в распаечной коробке. Соединения датчиков также спрятал в отдельной распаечной коробке. Таким образом, избавился от львиной доли «бороды» проводов в основном отсеке.

    Для соединения дисплея и кнопок с платой управления использовал ЭКРАНИРОВАННУЮ витую пару. Длинна линии составила 4 метра. Будет ли работать система при использовании кабеля большей длинны? Не факт, надо проверять. Работать контроллер с обычной витой парой отказался. Если стягивающие резисторы (Pull_down) кнопок на входах микроконтроллера отлично справлялись со своей задачей, то с дисплеем творилось нечто… На экране можно было наблюдать еле заметную, то и дело моргающую чехарду. Но это еще не все. Экран витой пары соединим с GND на плате, пустим по ней ‘-‘, таким образом, все «помехи» будем «сливать» на землю. Ну и лишнее это или нет — витую пару шины дисплея I2C (SCL и SDA) пропустим через ферритовые кольца, как возле дисплея, так и возле контроллера:

    Ферритовое кольцо на шине I2C дисплея LCD (на стороне контроллера) Ферритовое кольцо на шине I2C дисплея LCD (на стороне LCD дисплея)

    Скетч.

    Скетч мы будем заливать в Arduino и в ESP. Каждому чипу свой код. Смысл в том, что данные о работе вентустановки будем передавать в базу данных MySQL и в веб-браузер по запросу клиента. В базу пишем данные для анализа и принятия решения о корректировки работы ПВВУ в случае необходимости. В программировании я не силен, только учусь этому, код далеко не оптимальный, но рабочий, проверял работу на столе на выявление каких-нибудь косяков. «Допиливал» скетч уже по месту (после коммутации платы управления с железом ПВВУ).

    Скетч для Arduino (ATmega328P), версия от 02.02.2020:

    Скетч для чипа ESP8266:

    Алгоритм работы расписывать не буду, комментарии от части должны помочь разобраться, я надеюсь. В скетче для ардуино много закомментированных Serial.print (Serial.println) . Использовал для отладки. Эта функция жрет много оперативной памяти, поэтому после отладки заливаем скетч уже с закомментированным // Serial.print . Если никогда не сталкивались с платой Arduino UNO + Wi-Fi R3 ATmega328P+ESP8266 и не приходилось отправлять с ESP данные в базу MySQL, то будут полезными следующие заметки для прочтения:

    Все соединения выполнены, скетчи отлажены и загружены, скрестили пальцы, запустили… работает =)).

    «Пульт» версии 1.0 =)

    • ПВВУ на Ардуино в работе
    • ПВВУ на Ардуино в работе
    • ПВВУ на Ардуино в работе

    Вентиляционная установка Naveka Node1 обрела вторую жизнь теперь уже с управлением на Arduino! Не очень хорошо настроил PID регулятор калорифера. Получаем изначально перелет от температуры уставки на два 2°C, потом регулятор стабилизируется. Учитывая длительную процедуру запуска и остановки вентиляхи (срабатывание заслонки, включение нагревателя), не стал подбирать коэффициенты до идеальной работы калорифера. То и дело приходилось перезаливать скетч в плату. Оставил так как есть сейчас! Можно посмотреть видео в заметке про PID регулятор: Автоподогрев приточного воздуха в системе вентиляции. PID регулятор на Arduino. А статистика работы вентиляхи доступна на страничке Вентиляха.

    Arduino своими руками: схема, как сделать контроллер

    В этот статье мы расскажем как своими руками собрать Arduino на обычной макетной плате.

    Для этого нам понадобится микроконтроллер ATmega328 — такой же как и в оригинальной Arduino Uno.

    Распиновка ATmega328

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

    Сборка Arduino на макетной плате

    Необходимые компоненты

    Для работы с микроконтроллером понадобятся:

    Схема сборки

    Соберите на макетной плате компоненты по следующей схеме:

    Эксперимент «маячок» из Матрёшки

    Добавьте к схеме светодиод на 13 пине. Для этого повторите первый эксперимент из набора Матрёшка Z — маячок.

    Обратите внимание, 13 пин Arduino, это не 13 ножка микроконтроллера. Чтобы найти нужный пин, воспользуйтесь распиновкой ATmega328

    Схема эксперимента собрана. Осталось прошить нашу Arduino.

    Прошивка ATmega328

    У микроконтроллера нет собственного USB-порта. К компьютеру его можно подключить одним из двух способов:

    Рассмотрим их подробнее.

    Прошивка ATmega328 через USB-UART преобразователь

    Для сборки программатора нам понадобится:

    Соберите следующую схему

    Аппаратная часть готова. Теперь скачайте и установите на компьютер интегрированную среду разработки Arduino — Arduino IDE — и прошейте свой контроллер.

    Прошивка ATmega328 через Arduino Uno

    Для сборки программатора нам понадобится:

    Аппаратная часть готова. Теперь скачайте и установите на компьютер интегрированную среду разработки Arduino — Arduino IDE и прошейте свою Arduino.

    Ссылка на основную публикацию
    Статьи c упоминанием слов:

    Adblock
    detector