Универсальный внешний накопитель для всех 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

Обновленная библиотека для управления реле в ARDUINO – allforproject.ru

Возможности библиотеки:

  • Включить реле
  • Включить реле на время
  • Выключить реле
  • Выключить реле на время
  • Переключить реле в противоположное состояние
  • Мигать по маске в 32 бита с заданным интервалом
  • Мигать звуком по маске в 32 бита с заданным интервалом и заданной частотой при подключении пьезо-электрического источника звука (пищалки)

Извините, в настоящее время нет доступных опросов.

Библиотека для управления реле в ARDUINO

Size: 5 kB

Version: 0.0.3


Файлы библиотеки:
Relay.h
  1. #ifndef Relay_h
  2. #define Relay_h
  3.  
  4. #include "Arduino.h"
  5. #include "Timer.h"
  6. class Relay {
  7. public:
  8. /*constructors*/
  9.     Relay();
  10.     Relay(uint8_t pin, uint8_t initCond);
  11. /*methods*/
  12.     uint8_t on(uint32_t time = 0);                      /*Устанавливает включает реле, если передается не обязательный параметр time то осуществляется включение реле на указанное время в мс*/
  13.     uint8_t off(uint32_t time = 0);                     /*Устанавливает выключает реле, если передается не обязательный параметр time то осуществляется выключение реле на указанное время в мс*/
  14.     void toggle();                                      /*Переключает реле в противоположное состояние*/
  15.     void blink();                                       /*Осуществляет мигание реле по маске в 32 бита. Необходимо задать дополнительные параметры: _blinkPattern (маска), _blinkInterval (временной интервал каждого бита в мс)  */
  16.     void buzzer();                                      /*Осуществляет звкуковое мигание реле по маске в 32 бита, при подключении пьезо-электрического источника звука (пищалки). Необходимо задать дополнительные параметры: _blinkPattern (маска), _blinkInterval (время вкл/выкл каждого бита в мс), _soundFrequency (частота колебаний в Гц)*/
  17.     uint8_t getCond();                                  /*Возвращает состояние реле: 1 - включено, 0 - выключено*/
  18.     void reset();                                       /*Устанавливает реле в исходное состояние, сбрасывая время задержек*/
  19.     void setBlinkPattern(uint32_t blinkPattern);        /*Задает маску мигания _blinkPattern*/
  20.     void setBlinkInterval(uint32_t blinkInterval);      /*Задает временной интервал _blinkInterval*/
  21.     void setSoundFrequency(uint16_t soundFrequency);    /*Задает частоту колебаний _soundFrequency*/
  22.     void setup();                                       /*Устанавливает реле в исходное состояние*/
  23.     void setPin(uint8_t pin);                           /*Задает пин управления реле*/
  24.     void setInitCond(uint8_t initCond);                 /*Задает исходное состояние реле*/
  25. private:
  26.     uint8_t _pin;
  27.     uint8_t _initCond;
  28.     /* [_initCond]
  29.     0 // default relay is off
  30.     1 // default relay is on
  31.     */
  32.  
  33. /*for delay*/
  34.     Timer timer;
  35.     uint8_t time_delay(uint32_t time);
  36. /*for blink*/
  37.     uint32_t _mask = 0x00000001;
  38.     uint32_t _blinkPattern;
  39.     uint32_t _blinkInterval;
  40.     uint32_t _blinkPatternBuff;
  41. /*set relay*/
  42.     void setHigh();
  43.     void setLow();
  44. /*for buzzer*/
  45.     void sound();
  46.     void mute();
  47.     uint16_t _soundFrequency;
  48. };
  49. #endif

Relay.cpp

Для работы библиотеки для управления реле в ARDUINO используется вспомогательная библиотека Timer для реализации задержек.
Скетч для проверки:
  1. #include <Relay.h>
  2. Relay rele1(7, 0);
  3.  
  4.  
  5. uint8_t flag1 = 0;
  6. uint8_t flag2 = 0;
  7. uint8_t flag3 = 0;
  8.  
  9. void setup() {
  10.   Serial.begin(9600);
  11. }
  12.  
  13. void loop() {
  14.   if (flag1 == 1){
  15.     if (!rele1.on(5000)) flag1=0;
  16.     }
  17.   if (flag2 == 1){
  18.     if (rele1.off(5000)) flag2=0;
  19.     }
  20.   if (flag3 == 1) rele1.buzzer();
  21.   test();
  22. }
  23. void test() {
  24.   if (Serial.available()) {
  25.     byte symbol = Serial.read();
  26.     if (symbol == '0') {
  27.       Serial.println(F("0 pressed"));
  28.       rele1.on();
  29.     }
  30.     else  if (symbol == '1') {
  31.       Serial.println(F("1 pressed"));
  32.       rele1.off();
  33.     }
  34.     else  if (symbol == '2') {
  35.       Serial.println(F("2 pressed"));
  36.       flag1=1; // set ON time
  37.     }
  38.     else  if (symbol == '3') {
  39.       Serial.println(F("3 pressed"));
  40.       flag2=1; // set OFF time
  41.     }
  42.     else  if (symbol == '4') {
  43.       Serial.println(F("4 pressed"));
  44.       flag3 = 1; // start blink
  45.     }

allforproject.ru

УРОК 13. ARDUINO И РЕЛЕ

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

На тот случай, если у вас в наборе идет не просто реле, а именно модуль, т.е уже собранная схема на печатной плате, Вам не нужно собирать схему (см. ниже), а нужно правильно подключить модуль к плате Arduino.

Реле и Электронный модуль Реле для Arduino на 5V.

VCC — питание +5 Вольт

GND — общий (земля) — минус.

IN1 — управление

NO — нормально разомкнутый (Normally Open)

NC — нормально замкнутый (Normally Closed)

COM — обший (Common)

К контактам NC и NO подключаются светодиоды, общий COM подключается к + питания (+5V), GND к земле (-), VCC к +5 Вольт, IN1 (управление, обозначение может быть другим) к порту ардуино Pin 2.

Когда реле выключено, общий контакт «COM» (common) будет подключен к нормально замкнутому контакту «NC» (Normally Closed). Когда же реле сработает «общий» контакт COM соединится с «нормально разомкнутым» контактом «NO» (Normally Open).

Принципиальная схема Arduino и Реле. Урок 13

Выше, вы видите саму принципиальную схему к уроку 13, думаю сложностей возникнуть не должно, при правильном соединении, т.е соблюдая указания маркировки и «полюсность», все должно получиться.

Для этого опыта вам понадобится:

1. Arduino UNO — 1 шт.

2. Реле или «Электронный модуль Реле» — 1 шт.

3. Транзистор 2N222A — 1 шт.

4. Диод 1N4148 — 1 шт.

5. Резистор 330 Ом.

6. Светодиоды различных цветов — 2 шт.

7. Соединительные провода.

8. Макетная плата.

Далее идет схема электрических соединений к уроку 13.

Cхема электрических соединений макетной платы и Arduino. Уроку 13. Arduino и Реле

Скачать код к опыту 13. Скетч и подробное описание (Обязательно прочтите весь скетч!):

Набор для экспериментов ArduinoKit
Код программы для опыта №13: sketch 13

Вид созданного урока на макетной схеме:

Arduino и Реле. Урок 13

В результате проделанного опыта Вы должны увидеть…

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

Возможные трудности:

Светодиоды не светятся
Дважды проверьте правильность установки светодиодов, — длинный вывод является плюсовым контактом..

Не слышны щелчки реле
Проверьте правильность подключение реле и транзистора.

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

Всем удачи! Ждём ваши комментарии к ARDUINO УРОК 13 — ARDUINO УПРАВЛЯЕТ РЕЛЕ.

arduinokit.ru

Библиотека для управления реле на Ардуино. 7 программ работы реле без delay().

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

  • включить реле
  • выключить реле
  • включить реле на время
  • выключить реле на время
  • мигать по маске с заданной длительностью импульса
  • пищать при использовании пьезоэлектрического источника звука по маске с заданной длительностью импульса и частотой
  • переключить реле

Все программы использующие временные задержки реализованы с помощью моей библиотеки Timer без использования функции delay(), ссылка нее будет внизу страницы.

Скачать библиотеку для управления реле на Ардуино.

Size: 7 KB

Version: 0.0.4

Published: 09.09.2019


При подключении библиотеки в скетче появляется возможность создавать объекты класса Relay. Каждый созданный объект по-сути является самостоятельным реле. Номера программ для управления реле следующие:
  1. /** [relayProgram]
  2.     * 0 - выключить реле
  3.     * 1 - выключить реле на время, затем включить
  4.     * 2 - включить реле
  5.     * 3 - включить реле на время, затем выключить
  6.     * 4 - мигать по маске
  7.     * 5 - пищать по маске
  8.     * 6 - переключить реле
  9.     */

Для создания экземпляров класса используется 4 конструктора.
Самый простой принимает всего 2 аргумента:

  1. Relay(uint8_t pin, uint8_t relayProgram);
  2. // pin - номер пина, которым мы будем управлять
  3. // relayProgram - номер программы

Данный конструктор подходит для программ 0, 2 и 6.
Конструктор для программ 1 и 3 имеет следующий вид:

  1. Relay(uint8_t pin, uint8_t relayProgram, uint32_t time);
  2. // pin - номер пина, которым мы будем управлять
  3. // relayProgram - номер программы
  4. // time - время в мс на которое включается или выключается реле

Для мигания по маске, программа 4, используем следующий конструктор:

  1. Relay(uint8_t pin, uint8_t relayProgram, uint32_t pattern, uint32_t interval);
  2. // pin - номер пина, которым мы будем управлять
  3. // relayProgram - номер программы
  4. // pattern - маска мигания
  5. // interval- время длительности 1 импульса в маске.

Для того чтобы извлекать звуки из пассивной пьезопищалки с помощью программы 5, используем конструктор с самым большим числом параметров:

  1. Relay(uint8_t pin, uint8_t relayProgram, uint32_t pattern, uint32_t interval, uint16_t frequency);
  2. // pin - номер пина, которым мы будем управлять
  3. // relayProgram - номер программы
  4. // pattern - маска мигания
  5. // interval- время длительности 1 импульса в маске
  6. // frequency - частота сигнала

В принципе, можно использовать только первый конструктор, а остальные свойства добить сеттерами.

Не считая сеттеров и геттеров класс содержит следующие доступные методы:

  1. void start();  /*Запускает программу реле. Для остановки выполнения программ 4 и 5 испльзуется метод stop()*/
  2. void stop();   /*Останавливает любую запущенную программу реле и устанавливает реле в исходное состояние*/
  3. void loop();   /*Данный метод должен крутиться в цикле loop{} скетча*/
  4. relayState getState(); /*Возвращает состояние реле, см. relayState*/

Обратите внимание, что тип возвращаемого значения метода getState() – тип данных ENUM, с именем relayState. Я использовал его для того, чтобы код был более читабельным.

  1. enum relayState {
  2. ON,//реле включено
  3. OFF,//реле выключено 
  4. ON_TIME,//реле включено на время 
  5. ON_TIME_END,//время включения реле истекло, реле выключено 
  6. OFF_TIME,//реле выключено на время 
  7. OFF_TIME_END,//время выключения реле истекло, реле включено 
  8. BLINK,//мигание реле 
  9. BUZZER//баззер реле
  10. };

Обратиться к данным значениям из скетча можно через оператор доступа ::
Пример:

  1. #include <Relay.h> // подключаем библиотеку
  2. Relay rele(4, 0); // создаем реле на 4м пине с программой 0
  3. void setup() {
  4.   Serial.begin(9600);
  5.   if (rele.getState() == Relay::relayState::OFF) Serial.println(F("OFF"));
  6.   else Serial.println(F("ON"));
  7. }
  8. void loop() {}

Сеттеры-геттеры:

  1. void setPin(uint8_t pin);            /*Устанавливает пин управления реле*/
  2. void setTime(uint32_t time);         /*Устанавливает время управления реле для программ 1 и 3*/
  3. void setPattern(uint32_t pattern);   /*Устанавливает маску мигания для программ 4 и 5*/
  4. void setInterval(uint32_t interval); /*Устанавливает время длительности 1 импульса в маске мигания для программ 4 и 5*/
  5. void setFrequency (uint16_t frequency); /*Устанавливает частоту сигнала для программы 5*/
  6. void setRelayProgram (uint8_t relayProgram);  /*Устанавливает тип программы управления реле*/

Теперь о том, как создавать маску для мигания реле или для баззера.


ВНИМАНИЕ! “воспроизведение” идет справа налево и крайним левым значением в вашей маске должна быть единица!
Для примера будем использовать сигнал “SOS”. Как известно, данный сигнал передается следующим образом “…—…”. Методом setInterval() или через конструктор мы задаем длительность одного импульса. Сделаем так, чтобы точки и паузы были по 1 импульсу, а тире и паузы между буквами по 2. Получаем в бинарной последовательности следующую строку: 1010100110110110010101. Теперь добавим паузу в 4 импульса для паузы в передаче. Вот что получилось: 10101001101101100101010000. Далее, не забывая что у нас длина маски 32 разряда (т.е. все что до левой единицы забывается нулями), делим на квартеты и переводим в 16тиричную систему:
0000.0010.1010.0110.1101.1001.0101.0000 = 0x02A6D950
Если у вас возникают сложности – воспользуйтесь конвертером, коих в сети достаточно.
Вот, собственно мы и получили маску для сигнала SOS, которую мы передаем в конструкторе или устанавливаем с помощью метода setPattern().
Ниже приведен тестовый скетч для управления реле в ардуино. В нем мы создаем 4 реле под разные программы и управляем ими через интерфейс RS-232 (com port).
Внимание! С программой 5 (баззер) одновременно может работать только одно реле (один пин). Если вы создадите несколько таких реле – запускайте их по очереди. Так же для ардуино УНО лучше не использовать для этих целей ШИМ выходы : 3 и 11 пины.
  1. #include <Relay.h> //подключаем библиотеку
  2. Relay rele1(4, 0); // создаем реле 1 с программой 0 на 4 пине
  3. Relay rele2(5, 1, 2000); // создаем реле 2 с программой 1 и временем управления 2 сек на 5 пине
  4. Relay rele3(6, 4, 0x02A6D950, 150); // создаем реле 3 с программой 4, маской SOS и длительностью импульса 150 мс на 6 пине 
  5. Relay rele4(7, 5, 0x02A6D950, 120, 2000); // создаем реле 4 с программой 5, маской SOS, длительностью импульса 150 мс и частотой 2кГц на 7 пине.
  6. void setup() {
  7.   Serial.begin(9600); // инициализируем соединение по RS-232
  8. }
  9. void loop() {
  10.   rele1.loop(); // обработчик реле 1
  11.   rele2.loop(); // обработчик реле 2
  12.   rele3.loop(); // обработчик реле 3
  13.   rele4.loop(); // обработчик реле 4
  14.   test();  
  15. }
  16. void test() {
  17.   if (Serial.available()) {
  18.     byte symbol = Serial.read();
  19.     switch (symbol){
  20.       case '0' : // если пришел символ 0
  21.         rele1.setRelayProgram(0); // устанавливаем для реле 1 программу 0
  22.       break;
  23.       case '1' : // если пришел символ 1
  24.         rele1.setRelayProgram(2); // устанавливаем для реле 1 программу 2
  25.       break;
  26.       case '2' : // если пришел символ 2
  27.         rele1.setRelayProgram(6); // устанавливаем для реле 1 программу 6
  28.       break;
  29.       case '3' : // если пришел символ 3
  30.         rele2.setRelayProgram(1); // устанавливаем для реле 2 программу 1
  31.       break;
  32.       case '4' : // если пришел символ 4
  33.         rele2.setRelayProgram(3); // устанавливаем для реле 2 программу 3
  34.       break;
  35.       case '5' : // если пришел символ 5
  36.         rele1.start(); // запускаем 1 реле
  37.       break;
  38.       case '6' : // если пришел символ 6
  39.         rele2.start(); // запускаем 2 реле
  40.       break;
  41.       case '7' : // если пришел символ 7
  42.         rele3.start(); // запускаем 3 реле
  43.       break;
  44.       case '8' : // если пришел символ 8
  45.         rele4.start(); // запускаем 4 реле
  46.       break;
  47.       case '9' : // если пришел символ 9
  48.         rele1.stop(); // останавливаем и возвращаем в исходное состояние реле 1
  49.         rele2.stop(); // останавливаем и возвращаем в исходное состояние реле 2
  50.         rele3.stop(); // останавливаем и возвращаем в исходное состояние реле 3
  51.         rele4.stop(); // останавливаем и возвращаем в исходное состояние реле 4
  52.       break;
  53.       default :
  54.       break;
  55.     }
  56.   }
  57. }

На этом все. Пользуйтесь на здоровье.
Извините, в настоящее время нет доступных опросов.
Связанные статьи:
Ардуино. Задержка без delay() с помощью millis(). Библиотека Timer.

allforproject.ru

Relay Shield [Амперка / Вики]

Для управления электроприборами которые питаются от бытовой электросети, люди пользуются различными клавишными выключателями и тумблерами. Чтобы управлять такими электроприборами с помощью микроконтроллера существует специальный тип выключателей — электромеханические реле. Relay Shield содержит четыре таких реле и позволяет Arduino управлять четырьмя электроприборами.

Внимание!

Работа с высоким напряжением опасна для вашего здоровья и жизни. На плате существуют области, прикосновение к которым приведёт к поражению электрическим током. Это винты контактных колодок и места пайки выводов контактных колодок и реле. Не работайте с платой, если она подключена к бытовой сети. Для готового устройства используйте изолированный корпус.

Если вы сомневаетесь как подключить к реле электроприбор, работающий от общей сети 220 В и у вас есть сомнения, вопросы на тему того как это делается, остановитесь: вы можете устроить пожар или убить себя. Убедитесь, что у вас в голове — кристальное понимание принципа работы устройства и опасностей, которые связаны с высоким напряжением.

Элементы платы

Реле

На Relay Shield установлены 4 электромеханических реле, имеющих нормально замкнутый (normal closed, NC) и нормально разомкнутый (normal open, NO) контакты. Если на управляющей обмотке реле отсутствует напряжение, то между нормально замкнутым и коммутируемым контактами есть электрическая связь, а между нормально разомкнутым и коммутируемым — нет. При подаче напряжения на управляющую обмотку нормально разомкнутый контакт замыкается, а нормально замкнутый — размыкается.

Характеристики используемых реле

  • Ток обмотки: 80 мА

  • Максимальное коммутируемое напряжение: 30 В постоянного тока; 250 В переменного тока

  • Максимальный коммутируемый ток: 5 А (NO), 3 А (NC)

  • Рекомендованная частота переключения: до 1 Гц

  • Время жизни: не менее 50000 переключений

Нагрузка

Нагрузка к реле подключается через колодки под винт. Контакт от источника напряжения подключается к выводу COM, а нагрузка — к контакту NO или NC, в зависимости от задачи которую должно выполнять реле. Чаще всего реле используется для замыкания внешней цепи при подаче напряжения на управляющую обмотку. При таком способе даже если напряжение на Arduino по какой-то причине пропадёт, управляемая нагрузка будет автоматически отключена. Схема подключения нагрузки к колодкам при этом будет следующей:

Используемые пины

Для управлением реле используются контакты 4, 5, 6 и 7 Arduino.

Реле Контакт Arduino
Реле 1 7
Реле 2 6
Реле 3 5
Реле 4 4

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

Контакты выбора управляющих пинов

Контакты 4, 5, 6 и 7, используемые для управления реле, подключены к вспомогательной логике управления реле через джамперы. Если в вашем устройстве какие-то из этих пинов уже заняты (например эти же пины используются для управления motor-shield), вы можете использовать любой свободный цифровой пин для управления реле. Для этого необходимо снять джампер напротив занятого пина, и припаять проводок между луженым отверстием рядом со снятым джампером и луженым отверстием рядом с нужным пином. На этой картинке мы перекинули управление первым реле с контакта 7 на контакт 9, а управление четвёртым реле с контакта 4 на контакт 2.

Индикатор состояния и обвязка реле

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

Ограничения питания логической части

Отдельное реле в замкнутом состоянии потребляет 80 мА из логической цепи в 5 вольт. Все 4 реле при одновременном включении потребляют 320 мА. Если этот сценарий возможен в вашем проекте, необходимо удостовериться, что необходимый ток доступен.

Иными словами, все реле одновременно могут не работать в одном из следующих случаев.

  • Вы питаете Arduino от USB-порта с пределом по току в 200 мА, например, от разветвителя в клавиатуре. Используйте полноценный USB 2.0 или USB 3.0, чтобы обеспечить стабильное питание от USB

  • Вы питаете Arduino внешним источником питания с высоким входным напряжением. Несмотря на то, что линейный регулятор напряжения на плате Arduino выдаёт до 800 мА, их можно получить только, если обеспечена температура регулятора в 25 °C. Излишек напряжения линейный регулятор превращает в рассеиваемое тепло, компонент нагревается, предельный ток снижается. В этом случае используйте либо источник питания на 7–8 вольт вместо 8+, либо установите радиатор на регулятор напряжения, либо подавайте ровные 5 вольт непосредственно на пины 5V и GND или в порт USB.

Пример использования

relayClick.ino
//Определяем на каких пинах находятся реле
#define RELAY_1 7
#define RELAY_2 6
#define RELAY_3 5
#define RELAY_4 4
 
void setup() {
  // Конфигурируем нужные пины на выход
  for (int i = 4; i <= 7; ++i)
  {
    pinMode(i, OUTPUT);
  }
}
 
void loop() {
 
  //Включаем реле 1 на 5 секунд
  digitalWrite(RELAY_1, HIGH);
  delay(5000);
  //Отключаем реле 1
  digitalWrite(RELAY_1, LOW);
 
  //через секунду включаем реле 2 на 5 секунд
  delay(1000);
 
  digitalWrite(RELAY_2, HIGH);
  delay(5000);
  digitalWrite(RELAY_2, LOW);
 
  //Повторим с оставшимися реле то же самое
  delay(1000);
 
  digitalWrite(RELAY_3, HIGH);
  delay(5000);
  digitalWrite(RELAY_3, LOW);
 
  delay(1000);
 
  digitalWrite(RELAY_4, HIGH);
  delay(5000);
  digitalWrite(RELAY_4, LOW);
 
  delay(1000);
}

Характеристики

  • Ток обмотки: 80 мА

  • Максимальное коммутируемое напряжение: 30 В постоянного тока; 250 В переменного тока

  • Максимальный коммутируемый ток: 5 А (NO), 3 А (NC)

  • Рекомендованная частота переключения: до 1 Гц

  • Время жизни: не менее 50 000 переключений

  • Габариты: 69×53×18 мм

Ресурсы

wiki.amperka.ru

Реле включения нагрузки по времени на arduino – ARDUINO.MD

Итак, задача. Нужно включать-выключать некоторую нагрузку, скажем, насос для полива растений на улице, и делать это в автоматическом режиме с гибко настраиваемыми интервалами.

Для решения этой задачи нам понадобится

  • Arduino Uno – плата, которую мы программируем
  • Sensor shield (или плата прототипирования) – для облегчения соединения датчиков с платой
  • Провода мама-мама
  • Дисплей на 2 строки по 16 символов LCD1602
  • Реле переключения нагрузки
  • Датчик угла поворота с кнопкой
  • Блок питания 9V 1А (для тестирования можно питать устройство и по USB кабелю самой Arduino)

Принцип действия

К реле подключается полезная нагрузка, скажем, двигатель на 12 вольт или насос. Реле выступает в качестве включателя/выключателя, который управляется программно, т.е. мы в коде говорим, когда нам замкнуть контакты в реле (включить насос) или разомкнуть (выключить насос). Датчиком угла поворота мы настраиваем через какой промежуток времени (минут) нам нужно включить реле (ON) и через какой – выключить (OFF). Сколько осталось минут до окончания текущего режима, сколько минут продлится режим включения и выключения – все это мы видим на экране LCD.

Подключение

 

Arduino UNOLCD1602РелеДатчик угла
 VCC 5V VCC + +
 GND GND – GND
 Analog 4 SDA
 Analog 5 SCL
 Digital 5 SW
 Digital 8 S
 Digital 11 CLK
 Digital 12 DT

 

Полный код программы: relay-timer-project.zip

Вот и видео того, что получилось.

Комментарий к видео.

На дисплее строка Active OFF 1 говорит, что активен режим OFF – реле выключено и это продлится еще 1 минуту. Строка ON: 4 OFF: 1 говорит что устройство настроено на периодическое включение реле на 4 минуты, затем выключение на 1 минуту. Крутим датчик угла поворота, регулируя сколько осталось до смены режима (ON/OFF). Нажав кнопку переходим в режим редактирования значения ON, далее по кнопке переходим в режим редактирования OFF, далее по кнопке возвращаемся в основной режим. Спустя минуту после щелчка загорается светодиод на реле (реле включено) и на дисплее видим смену режима на ON, который продлится 2 минуты. Отключаем питание устройства и включаем снова, видим, что настройки ON2 и OFF1 сохранились – при загрузке arduino прочла их из энергонезависимой памяти eeprom. Также режим изменился на OFF.

Заключение

Если все-таки хочется сделать готовое устройство:

  • Плату arduino uno лучше заменить на arduino pro mini – она значительно меньше, дешевле и припаивать провода легче
  • Все соединительные провода между платой и остальными устройствами нужно припаять – ржавчина теперь не повлияет на долговечность соединительных контактов
  • Собрать все в корпус – на вид приличнее будет, да и защита от всяких воздействий (случайно задетого провода)
  • Добавить выключатель – при покидании жилища на длительное время (при том что в этом устройстве нет необходимости в отсутствии хозяев) лучше все-таки обесточивать девайс, и делать это выключателем удобнее, чем выдергивать блок питания из розетки

Удачных экспериментов!

Возможно, вам потребуются файлы:

Понравилось это:

Нравится Загрузка…

Похожее

www.arduino.md

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

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