Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Управление жалюзи (или любым двигателем переменного тока)

Компоненты и расходные материалы

Arduino Nano R3
× 1
ControlEverything.com 4-КАНАЛЬНЫЙ КОНТРОЛЛЕР РЕЛЕ ДЛЯ I2C
× 1
Твердотельная 4-канальная плата
× 1
Слепой двигатель
С помощью одного Arduino можно управлять до 4 двигателей.
× 1
Конденсатор 100 нФ 630 В
Количество на двигатель.
× 1
Резистор 100 Ом (0,5 Вт мин!)
Не используйте прецизионные резисторы (синие)! Количество на двигатель.
× 1
Варистор 275 В переменного тока
Количество на двигатель.
× 1
Стандартный диод
Любой сигнал или диод питания в порядке. Кол-во на блайнд.
× 3
Raspberry Pi 3, модель B
Необязательно для удаленного управления
× 1
Модуль nRF24 (общий)
Необязательно для удаленного управления
× 2

Необходимые инструменты и машины

Паяльник (общий)

Приложения и онлайн-сервисы

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

Об этом проекте

Введение

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

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

Пояснение

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

Путем поиска в Google я понял, что у других людей были проблемы с этим, но они пошли простым, дорогим и объемным способом, они просто получили реле большего размера, по-прежнему нуждаясь в дешевых реле, чтобы активировать более крупные, в то время как контакты все равно пострадают и могут в конце концов потерпят неудачу. Как инженер я не мог позволить себе не получить максимально эффективное решение. :) На схеме, прилагаемой ниже, у вас есть решение сэкономить эти большие реле, просто добавив один резистор, один конденсатор и один варистор.

Варистор защищает симистор от перенапряжения. Резистор плюс конденсатор образуют RC демпферную цепь, которая поглощает энергию во время коммутации отключения.

[ PS: так как я написал руководство прямо из головы спустя долгое время после создания проекта, на днях, внимательно изучив свою плату, я понял, что в реальной схеме я поместил резистор и конденсатор между коричневой и серой линиями (согласно схематические цвета) каждого двигателя вместо контактов симистора. Оба решения работают в этом случае, но преимущество этого второго варианта состоит в том, что демпфер не подключен к сети постоянно. ]

[ PS2: СебДомингес также сделал красивую схему с фактической конфигурацией:

]

Вместо того, чтобы использовать один вывод для команды вверх, а другой - для опускания для каждой шторки, переключатели имеют общую линию, которая указывает, должна ли шторка подниматься или опускаться. Таким образом, мы используем 5 входов вместо 8. Фильтр не требуется, входные данные обрабатываются программно.

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

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

Дома у нас два этажа, а значит, две трассы. Поскольку удаленные команды должны быть уникальными, я сделал код действительным для любого из них, прокомментировав одну строку во время загрузки. Если вы монтируете только одну схему, вам не нужно ничего менять, но если вы построите две, у вас уже есть бесплатное решение. На самом деле я только что солгал вам, у нас три цепи, но всего 8 жалюзи, в одной цепи мы занимаем все четыре двигателя, но остальные четыре жалюзи разделены на две, используя первые три входа в одном Arduino и только номер входа. четыре во втором. Дублированные схемы точно так же реагируют на удаленные команды, но там, где ничего не подключено, активировать нечего. :) Если вы используете версию кода MySensors, то вы можете подключить до 256 узлов с 4 жалюзи каждый, не изменяя ни одной строчки в коде, достаточно честно, если вы живете во дворце.

В целом система выглядит примерно так:

Извините, это не очень нарядно и понятно, но это настоящая установка, сделанная некоторое время назад, а не просто подготовленная схема для этого урока, и я не могу показать ее вам в разобранном виде на столе. Как видите, он умещается в стенной коробке размером 22 x 15 x 5,2 см, но довольно плотно. Я сложил все в открытый деревянный ящик с помощью горячего клея:практично, быстро и легко.

Если вы используете веб-среду IDE для скетча Arduino, она должна автоматически найти все необходимые библиотеки.

Пульт дистанционного управления (необязательно)

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

Предоставленный код включает два способа дистанционного управления через радиомодуль nrf24l01 +:с помощью MySensors (рекомендуется) или путем отправки целого числа с числом слепых и команды 0 или 1 для увеличения или уменьшения.

В обоих случаях я использую RPi в качестве мастера с напрямую подключенным к нему модулем nRF24L01 + и установленным контроллером (Domoticz).

Для первого варианта с использованием MySensors необходимо установить шлюз MySensors MQTT. (https://www.mysensors.org/build/raspberry). В моей реализации я настраиваю его как Ethernet на локальном хосте. Следуйте инструкциям по ссылке, и здесь у вас есть мои параметры конфигурации, которые могут вам помочь (проверьте, нужно ли вам то же самое):

sudo ./configure --my-gateway =mqtt --my-controller-ip-address =127.0.0.1 --my-mqtt-publish-topic-prefix =domoticz / in / MyMQTT --my-mqtt-subscribe-topic -prefix =domoticz / out / MyMQTT --my-mqtt-client-id =mygateway1 --my-transport =rf24 --my-port =1883 --my-rf24-irq-pin =15

После завершения его интеграция в Domoticz становится очень простой:добавьте шлюз HW MySensors MQTT, включите узел, и при настройке вашего нового оборудования вы найдете его напрямую.

Для второго варианта, используя непосредственно пользовательское приложение, а не MySensors, виртуальный коммутатор выполняет консольную команду:

  ./remote -m XY  

(X:слепой #, Y:действие).

В заголовке сценария Arduino вы можете найти более подробную информацию.

Код этой удаленной команды описан в http://hack.lenotta.com/arduino-raspberry-pi-switching-light-with-nrf24l01/ Забудьте о разделе Node.js и скетче Arduino, нам не нужно их, и в этом скетче действительно есть ошибка. Здесь нам нужен только раздел «Приложение выключателя лампы». Раздел оборудования также может быть полезен для радиосвязи. Кстати, на выводы питания радиомодуля обязательно ставьте конденсатор 10 мкФ. Также подумайте о приобретении радиомодуля с внешней антенной, если у вас есть место. В помещении радиус действия антенны на печатной плате может быть очень ограничен (менее 10 м), особенно если модули заключены в стены, как в этом проекте.

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

Окончательный код для Raspberry будет выглядеть так:

  #include  #include  #include  #include  #include  #include  #include  с использованием namespace std; // Радио RF24 ("/ dev / spidev0.0", 8000000, 25); // RF24 радио (RPI_V2_GPIO_P1_15, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); RF24 радио (RPI_V2_GPIO_P1_22, RPI_V2_GPIO_P1_24, BCM2835_SPI_SPEED_8MHZ); // Const INT role_pin =7; константные uint64_t трубы [2] ={0xF0F0F0F0E1LL, 0xF0F0F0F0D2LL}; // константные uint8_t трубы [] [6] ={"1Node", "2Node"}; // взломать, чтобы избежать SEG FAULT, проблема № 46 на github RF24 https://github.com/TMRh20/RF24.gitunsigned long got_message; void setup (void) { // Подготавливаем радиомодуль printf ("\ nПодготовка интерфейса \ n"); radio.begin (); radio.setRetries (15, 15); radio.setChannel (0x70); radio.setDataRate (RF24_250KBPS); radio.setPALevel (RF24_PA_MAX); radio.printDetails (); radio.openWritingPipe (трубы [0]); radio.openReadingPipe (1, трубы [1]); // radio.startListening ();} bool sendMessage (int action) {// Эта функция отправляет сообщение, 'действие', на arduino и ждет ответа // Возвращает истину, если получен пакет ACK // Прекращение прослушивания радио .stopListening (); длинное сообщение без знака =действие; printf ("Сейчас отправляем% lu ...", сообщение); // Отправляем сообщение bool ok =radio.write (&message, sizeof (unsigned long)); если (! ок) {printf ("не удалось ... \ п \ г"); } else {printf ("ок! \ п \ г"); } // Слушаем ACK radio.startListening (); // Давайте послушаем, пока мы слушаем unsigned long start_waiting_at =millis (); bool timeout =false; while (! radio.available () &&! timeout) {// printf ("% d",! radio.available ()); если (millis () - start_waiting_at> 1000) {timeout =true; }} if (timeout) {// Если мы ждали слишком долго, передача не удалась printf ("Puta mierda, no me response nadie ... \ n \ r"); вернуть ложь; } else {// Если мы получили сообщение вовремя, давайте прочитаем его и распечатаем radio.read (&got_message, sizeof (unsigned long)); printf ("Да, мне ответить>% lu. \ n \ r", got_message); вернуть истину; }} int main (int argc, char ** argv) {выбор символа; настраивать(); bool Switched =false; int counter =0; // Определяем параметры while ((choice =getopt (argc, argv, "m:"))! =-1) {if (choice =='m') {printf ("\ n Говорю с моими NRF24l01 + друзьями там .... \ n "); while (Switched ==false &&counter <1) {// Количество попыток отправить сообщение switch =sendMessage (atoi (optarg)); счетчик ++; сон (1); }} else {// Небольшая помощь:printf ("\ n \ rПора сделать выбор ... \ n"); printf ("\ n \ rTIP:используйте -m idAction для отправки сообщения."); printf ("\ n \ rПример (номер идентификатора 12, номер действия 1):"); printf ("\ nsudo ./remote -m 121 \ n"); } // возвращаем 0, если все прошло хорошо, 2 в противном случае if (counter <5) return 0; иначе верните 2; }}  

Поскольку требуется компиляция и так далее, я упростил вам задачу и поместил все необходимое (только для стороны Raspberry, эскиз Arduino ниже) в zip-файле с измененным исходным кодом, библиотеками и скомпилированным кодом для Raspberry Pi 3:

https://goo.gl/ocCwk3

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

Результат

Здесь вы можете увидеть, как я все реализовал.

Три пары переключателей на стене управляют тремя жалюзи. Табличка на стене показывает интерфейс Domoticz с виртуальными переключателями. За планшетом находится Raspberry, на котором, между прочим, установлен контроллер. Ардуино здесь нет, он близко к жалюзи на изображении, показанном ранее; RPi и Arduino связаны по беспроводной сети через радиомодуль.

Здесь вы также можете увидеть Google Home, который с помощью IFTTT с сервисом Webhooks и Domoticz помогает мне делать любые голосовые команды возможными, например «Окей, Google, ослепляет». Если вы дошли до этого момента, наверняка у вас не будет проблем с тем, чтобы заставить работать голосовые команды.

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

Дайте мне знать, помогло ли вам это руководство!

С уважением,

гомецин

P.S. В качестве дополнения из любопытства или из-за того, что вы действительно ненавидите компьютеры, программирование или что-то еще, сначала я попытался сделать решение дискретным, без какого-либо интеллекта. Вот результат:

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

Код

Эскиз Arduino

Схема

Arduino управляет 4-мя слепыми моторами

Производственный процесс

  1. Разрешающие схемы и схемы блокировки
  2. Цепи управления двигателем
  3. Расчет мощности
  4. Бульдозер
  5. Алгоритмы и повышение мощности аппаратного обеспечения голосового управления
  6. Infineon запускает серию встроенных систем питания TLE985x для автомобильных приложений
  7. Контроль качества - первый шаг к надежности двигателя
  8. Основы электрических панелей управления
  9. Электроснабжение и климат-контроль
  10. Как вы управляете скоростью гидравлического двигателя?