Перейти к содержимому
Обложка сообщества Разное

Автоматические ворота своими руками

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

Обо всем по порядку, но для начала немного информации для непосвященных об Arduino:

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

По сути Arduino представляет собой миникомпьютер, в который через USB-шнур из обычного компьютера записывается программный код, написанный на языке C++. В дальнейшем наш программный код в автономном режиме управляет контактами ардуино, к которым подключаются различные устройства (датчики, реле, моторчики, светодиоды и т.д.)

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

Arduino

Arduino изначально придуман итальянцами, но как и все в этом мире - успешно освоен китайцами.

Заказать можно с Алиэкспресс, стоимость плат варьируется от 2 до 10 долларов за единицу (против 30-100 оригинала). Качество и работоспособность абсолютно идентичные (надпись Made in Italy естественно присутствует). Там же можно заказать кучу датчиков и прочих необходимых прибамбасов. Для начинающих рекомендую приобрести стартовые пакеты: готовый набор с платформой ардуино и большим количеством необходимых устройств (от светодиодов и резисторов до ЖК-дисплеев). Стоит такой набор порядка 25 баксов.

Ну а теперь вернемся к нашему проекту

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

1. Старый советский асинхронный реверсивный двигатель:

2. Старый советский редуктор (непонятно от чего):

3. Старые советские концевые выключатели (от тельфера)

4. Корпус от аптечки автомобильной универсальной

5. Собственно сама платформа ардуино. В данном случае самая простая - UNO

6. Беспроводные дистанционные пульты управления с приемником, работающие на радиочастоте 315 Мгц

7. Электронный реле-переключатель

8. Магнитный пускатель (сразу сфоткать забыл, поэтому выкладываю постскриптум с уже подключенными проводами)

9. Старые советские конденсаторы

10. Ручной пульт управления

11. Блок питания на 9 вольт (у всех такой есть;))

12. Фара от отечественного автопрома

13. Два светодиода и два резистора на 220 Ом

14. Шмоток проводов

15. Ну и наконец сами ворота, куда мы будем все это монтировать

 

Приступаем к изготовлению.

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

 

Теперь переходим к электронике:

Силовую часть нашей системы монтируем в корпус от аптечки:

Как видите из рисунка, здесь я разместил магнитный пускатель, который нужен для того, чтобы менять направление вращения реверсивного двигателя

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

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

Таким образом, в аптечке я разместил все габаритные и высоковольтные механизмы. Все что работает от 220 вольт

Получился отличный герметичный бокс (почти герметичный)

 

Все микросхемы я разместил в автомобильную фару. Ну во первых потому-что они малогабаритные, во-вторых очень чувствительны к влаге (а фара просто идеальный образец герметичности), и наконец, в-третьих они все работают от малого тока 5-9 вольт, поэтому такие устройства нужно держать отдельно от высоковольтных

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

В итоге вот что получилось:

На дне размещен микроконтроллер Ардуино. Это мозг всей системы. В него будет записан управляющий программный код

Сверху размещена микросхема-приемник от дистанционных пультов. Она улавливает кодированный радиосигнал от пультов и посылает импульс в микроконтроллер Ардуино сигнализируя о нажатии той или иной кнопки на пульте

Снизу размещена плата с двумя реле-переключателями, которые нужны для того, чтобы подавать высокое напряжение 220 вольт на магнитные пускатели для последующего запуска двигателя в ту или иную сторону

Светодиоды запаял прямо в крышку фары, соединив через резисторы (чтобы не сгорели. Напряжение 5 вольт для них слишком много). Светодиоды я добавил для визуальной индикации. Ярко желтый светодиод я сделал мигающим (мигание осуществляется программным кодом) для того чтобы из далека (конкретно из окна дома) можно было убедиться в нормальной исправности\работоспособности системы. Красный светодиод загорается во время нажатия кнопки на пульте дистанционного управления. Он как бы информирует о том, что сигнал с пульта получен нормально, и если ворота не открываются, то значит дело не в отсутствии радиосигнала

Этот бокс вышел еще лучше силового:

 

Теперь когда все физические элементы собраны переходим к программированию микроконтроллера

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

Пишем программный код. В моем случае он таков:

   
  1. #define DIGITAL_IN1 8
  2. #define DIGITAL_IN2 9
  3. #define DIGITAL_IN3 10
  4. #define DIGITAL_IN4 11
  5. #define OUT_PIN1 12
  6. #define OUT_PIN2 13
  7. #define WORK_INDICATOR 6
  8. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  9. const int ledPin = 7; // номер выхода, подключенного к светодиоду
  10. // Variables will change:
  11. int ledState = LOW; // этой переменной устанавливаем состояние светодиода
  12. long previousMillis = 0; // храним время последнего переключения светодиода
  13. long interval = 1000; // интервал между включение/выключением светодиода (1 секунда)
  14. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  15. void setup () {
  16. // Настраиваем пины
  17. pinMode (DIGITAL_IN1, INPUT);
  18. pinMode (DIGITAL_IN2, INPUT);
  19. pinMode (DIGITAL_IN3, INPUT);
  20. pinMode (DIGITAL_IN4, INPUT);
  21. pinMode (OUT_PIN1, OUTPUT);
  22. pinMode (OUT_PIN2, OUTPUT);
  23. pinMode (WORK_INDICATOR, OUTPUT);
  24. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  25. // задаем режим выхода для порта, подключенного к светодиоду
  26. pinMode(ledPin, OUTPUT);
  27. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  28. }
  29. void loop() {
  30. int InputSignal_1 = digitalRead(DIGITAL_IN1);
  31. int InputSignal_2 = digitalRead(DIGITAL_IN2);
  32. int InputSignal_3 = digitalRead(DIGITAL_IN3);
  33. int InputSignal_4 = digitalRead(DIGITAL_IN4);
  34. digitalWrite(OUT_PIN1, HIGH);
  35. digitalWrite(OUT_PIN2, HIGH);
  36. // Временное вращение. Кнопки A,B,C,D
  37. if (InputSignal_1 == HIGH) {
  38. digitalWrite(OUT_PIN2, LOW);
  39. digitalWrite(WORK_INDICATOR, HIGH); // активируем красный индикатор
  40. delay(400);
  41. digitalWrite(OUT_PIN2, HIGH);
  42. digitalWrite(WORK_INDICATOR, LOW); // гасим красный индикатор
  43. }
  44. if (InputSignal_3 == HIGH) {
  45. digitalWrite(OUT_PIN1, LOW);
  46. digitalWrite(WORK_INDICATOR, HIGH);
  47. delay(400);
  48. digitalWrite(OUT_PIN1, HIGH);
  49. digitalWrite(WORK_INDICATOR, LOW);
  50. }
  51. if (InputSignal_2 == HIGH) {
  52. digitalWrite(OUT_PIN2, LOW);
  53. digitalWrite(WORK_INDICATOR, HIGH);
  54. delay(400);
  55. digitalWrite(OUT_PIN2, HIGH);
  56. digitalWrite(WORK_INDICATOR, LOW);
  57. }
  58. if (InputSignal_4 == HIGH) {
  59. digitalWrite(OUT_PIN1, LOW);
  60. digitalWrite(WORK_INDICATOR, HIGH);
  61. delay(400);
  62. digitalWrite(OUT_PIN1, HIGH);
  63. digitalWrite(WORK_INDICATOR, LOW);
  64. }
  65. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  66. // здесь код, который будет работать постоянно
  67. // и который не должен останавливаться на время между переключениями светодиода
  68. unsigned long currentMillis = millis();
  69. //проверяем не прошел ли нужный интервал, если прошел то
  70. if(currentMillis - previousMillis > interval) {
  71. // сохраняем время последнего переключения
  72. previousMillis = currentMillis;
  73. // если светодиод не горит, то зажигаем, и наоборот
  74. if (ledState == LOW)
  75. ledState = HIGH;
  76. else
  77. ledState = LOW;
  78. // устанавливаем состояния выхода, чтобы включить или выключить светодиод
  79. digitalWrite(ledPin, ledState);
  80. }
  81. // +++++++++++++++++++++++ИНДИКАТОР НОРМАЛЬНОЙ РАБОТЫ++++++++++++++++++++++++++++++++++++++
  82. //Finish
  83. }
 

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

 

Теперь осталось самое малое и приятное: установить все это на ворота и проверить результат.

Вот что получилось в итоге:

 

 

 

Скорость вышла медленной. Но это легко устраняется путем замены диаметра одного из шкивов (в большую или меньшую сторону, смотря какой шкив менять)

 

Итак подобьем бабки подведем итоги, тенге:

Наименование

Количество

Цена

Сумма

1.Реверсивный двигатель

1

3 000

3 000

2.Редуктор

1

2 000

2 000

3.Концевые выключатели

2

200

400

4.Аптечка универсальная

1

0

0

5.Микроконтроллер Arduino

1

800

800

6.Пульты дистанционного управления

1

750

750

7.Релейный модуль

1

600

600

8.Магнитный пускатель

1

5 500

5 500

9.Конденсаторы

2

100

200

10.Ручной пульт управления

1

1 350

1 350

11.Блок питания 9v

1

0

0

12.Фара автомобильная

1

0

0

13.Светодиоды

2

5

10

14.Резисторы 220 Ом

2

5

10

ИТОГО

14 620

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

1
4
9258

Еще по теме

Автоматические ворота своими руками - Yvision.kz