Yvision.kz
kk
Разное
Разное
399 773 постов42 подписчика
Всяко-разно
1
14:38, 22 апреля 2016

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

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

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

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

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

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

Arduino

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

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

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

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

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

Blog post image

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

Blog post image

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

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

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

Blog post image

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

 

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

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

Blog post image

 

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

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

Blog post image

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

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

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

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

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

Blog post image

 

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

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

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

Blog post image

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

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

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

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

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

Blog post image

 

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

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

Blog post image

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

   
  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. }
 

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

 

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

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

 

Blog post image

Blog post image

Blog post image

Blog post image

 

 

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

 

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

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

Количество

Цена

Сумма

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
7874
4