Управление регулятором вентилятора от Arduino

Я пытаюсь управлять своим вентилятором ~230 В от Arduino.

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

, 👍3

Обсуждение

Используйте симисторный циркуль. При этом вы можете контролировать подачу тока к ВЕНТИЛЯТОРУ, @Vaibhav

Сколько реле нужно, чтобы сделать регулятор уровня 5? Я думаю, что это не эффективный дизайн., @Sivamani V

Вам нужен регулятор переменной скорости или односкоростной? А это 3 - фазный двигатель?, @Duncan C

Однофазный двигатель и регулятор переменной скорости для моей домашней автоматизации., @Sivamani V

Реле не контролирует ток, поэтому предлагается СИМИСТОР, @Vaibhav

Я использую модуль Kemo для регулирования нагревателя. Они также могут регулировать индуктивную нагрузку. Для управления MCU они имеют цифровой модуль pot M150, управляемый ШИМ. https://www.kemo-electronic.de/en/Light-Sound/Effects/Modules/M012-Power-Control-110-240-V-AC-1200-VA.php, @Juraj

@Juraj Спасибо. Это более экономичная конструкция, чем 5-ти релейная схема, которая составляет почти 250 рупий. От Amazon более низкая стоимость этого модуля составляет 3800 INR. , @Sivamani V

Я уточнил свой ответ, @Juraj


5 ответов


Лучший ответ:

7

Для управления мощностью переменного тока индуктивной нагрузки (двигателя) используется симистор. Эта концепция называется фазовой резкой. Он работает и для резистивной нагрузки (нагревателя).

Этот модуль предназначен для фазовой резки. Он содержит детектор пересечения нуля и симистор. Управление осуществляется в микроконтроллере. Детектор пересечения нуля подключен к контакту прерывания. Управляющий сигнал симистора подключается к выходному контакту. В функции внешнего прерывания вы устанавливаете прерывание таймера для отправки импульса на симистор через несколько микросекунд. Более длительное время выключения приводит к снижению мощности двигателя.

При переменном токе 50 Гц один импульс составляет 10 миллисекунд. Чтобы отключить часть волны переменного тока, активируйте симисторный затвор на 20 микросекунд через 0-10 миллисекунд. Симистор самостоятельно отключает линию переменного тока при следующем пересечении нуля.

Robotdyn имеет библиотеку для этого модуля.

ПРАВКА:

Я купил модуль диммера переменного тока Robotdyn, чтобы использовать его в своем проекте регулирования нагревателя переменного тока, и протестировал его с помощью лампы накаливания и вентилятора. (видео на YouTube)

Библиотека Robotdyn работает, но она предназначена для управления многими диммерами и использует прерывание таймера каждые 12 микросекунд (да, микро). Библиотека устанавливает прерывания над регистрами MCU.

Я написал скетч arduino fade-in/out, используя библиотеку TimerOne, чтобы продемонстрировать фазовую резку с помощью этого модуля.

#include <TimerOne.h>

const byte INTERRUPT_PIN = 2;
const byte TRIAC_PIN = 4;
const byte TRIAC_PULSE_MICROS = 30;

const int FADE_MAX = 9800;
const int FADE_MIN = 2000;

volatile bool triacOn;
volatile int period = FADE_MIN; // микросекунды, вырезанные из импульса переменного тока

int fadeAmount = 10;

void zeroCrossing() {
  triacOn = false; // симистор отключает себя при пересечении нуля
  Timer1.setPeriod(period); // вызвать triacPulse() после периода выключения
}

void triacPulse() {
  if (triacOn) { // стоп-импульс
    digitalWrite(TRIAC_PIN, LOW);
    Timer1.stop();
  } else { // пусковой импульс
    digitalWrite(TRIAC_PIN, HIGH);
    triacOn = true;
    Timer1.setPeriod(TRIAC_PULSE_MICROS);
  }
}

void setup() {
  pinMode(TRIAC_PIN, OUTPUT);
  attachInterrupt(digitalPinToInterrupt(INTERRUPT_PIN), zeroCrossing, RISING);
  Timer1.initialize();
  Timer1.attachInterrupt(triacPulse);
}

void loop() {
  period = period + fadeAmount;
  if (period <= FADE_MIN || period >= FADE_MAX) {
    fadeAmount = -fadeAmount;
  }
  delay(25);
}

EDIT 2 версия с симистором, активированным выводом "pwm"

const byte TRIAC_PIN = 9;
const byte ZC_EI_PIN = 2;

unsigned long topMicroseconds = 9700; // 10000 микросекунд находится между пересечениями нуля
int prescaler = 8;
byte prescalerBits = _BV(CS11); // 8

void zeroCrossing() {
  TCNT1 = 0; // сброс счетчика таймера
}

void setup() {
  Serial.begin(115200);
  Serial.println("START");

  attachInterrupt(digitalPinToInterrupt(ZC_EI_PIN), zeroCrossing, RISING);

  pinMode(TRIAC_PIN, OUTPUT);
  uint32_t topPeriod = ((F_CPU / 1000000)* topMicroseconds) / prescaler ;
  ICR1 = topPeriod;
  OCR1A = topPeriod + 1; // полностью выкл.
  // WGM mode 14 - Fast PWM w/TOP=ICR1 
  TCCR1A = _BV(WGM11) | _BV(COM1A0) | _BV(COM1A1);
  TCCR1B = _BV(WGM13) | _BV(WGM12) | prescalerBits;
}

void loop() {
  if (Serial.available()) {
    unsigned long microseconds = Serial.parseInt();
    Serial.find("\n");
    uint32_t period = ((F_CPU / 1000000)* microseconds) / prescaler ;
    OCR1A = period;
  }
}

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

ПРАВКА 3:

Библиотека TriacDimmer версии 1.1.0 для AVR ардуино, доступная в Library Manager, хорошо работает с этим диммером. Забавный факт: он использует входной захват timer1 на выводе 8 вместо внешнего прерывания на выводе 2 или 3.

,

модули и компоненты, которые я связал в комментариях, используют этот метод. они работают как "адаптеры шим - фазовой резки"., @Juraj

Анимированная графика имеет выпрямленный переменный ток, действительно ли он доходит до пересечения нуля, чтобы сделать отключение?, @Dave X

@DaveX, не для точного пересечения нуля, но в масштабе анимация правильная, @Juraj

Форма волны в анимации не подходит для переменного тока-есть резкая буква " V " на длине/2, она выглядит выпрямленной, поэтому вместо 50 Гц 230 В переменного тока она показывает 100 Гц (10 мс) импульсного постоянного тока. Модуль robotdyn использует симистор, который не будет выпрямляться, как на этой диаграмме. Он должен иметь вторую половину верхней диаграммы, перевернутую вокруг оси X и вдвое большую высоту., @Dave X

@DaveX, негативная часть отражена в зеркале. Лучшего я не нашел. Я связал анимацию со страницы Википедии о фазовой резке. теперь я вижу, что SE скопировал анимацию, @Juraj

но экономически не правильное решение., @Sivamani V

@SivamaniV, 3,50$ - это слишком много? https://robotdyn.com/ac-light-dimmer-module-1-channel-3-3v-5v-logic-ac-50-60hz-220v-110v.html, @Juraj

Ответ зависит от идеи и технологии(основанной на времени). Каждый не мог заплатить такую сумму. "Вы можете" сделать этот ответ еще лучше. :-), @Sivamani V

@juray Вы правильно говорите, что библиотека RobotDyn вызывает прерывание каждые 12 мкс для управления несколькими диммерами. Но это всего лишь неоптимизированная реализация, поскольку я реализовал эту библиотеку https://g ithub.com/fabianoriccardi/dimmable-light, которая запускает только 2 прерывания за полупериод., @fabiuz7


1

Это не совсем то, что вы ищете, но это поможет Arduino-controlled-light-dimmer-The-circuit.

Вот пример проекта, в котором СИМИСТОР используется с arduino для управления потоком тока к свету. В вашем случае Свет или лучше мы можем сказать, что нагрузка-это ВЕНТИЛЯТОР. Это поможет вам контролировать скорость вращения вентилятора. Реле действует только как переключатель и не контролирует скорость вентилятора.

,

Ссылка только на ответ? Мы ищем исчерпывающие ответы, которые дают некоторое объяснение и контекст. Очень короткие ответы не могут этого сделать, поэтому, пожалуйста, отредактируйте свой ответ, чтобы объяснить, почему он правильный. Кроме того, мы предпочитаем, чтобы ответы были самодостаточными, где это возможно. [*только ссылка*](https://meta.stackexchange.com/questions/8231/) ответы не одобряются (так как ссылки [имеют тенденцию гнить](https://en.wikipedia.org/wiki/Link_rot)) & будет бесполезен,если связанный контент исчезнет. Если вы добавите больше контекста и деталей из ссылки, то, скорее всего, люди найдут ваш ответ полезным., @Greenonline

Спасибо Vaibhav, моя мысль заключается в том, что фаза переменного тока симистора может повлиять на плату arduino, что повлияет на мои показания аналогового датчика в arduino, и у них тоже есть шанс умереть :-/., @Sivamani V

Теперь я думаю, что лучше понимаю, что хочу сказать., @Vaibhav


-1

Все зависит от мотора.

Процитируем Маркта из этого поста:

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

Процитируем dc42 из этого поста:

Какие двигатели есть у вентиляторов? Если они используют асинхронные двигатели, то вы не сможете сильно контролировать скорость с помощью переключения фазового угла - скорость привязана к частоте питания. Если это двигатели с последовательным заводом и щетками, то переключение фазового угла должно работать.

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


Для получения дополнительной информации читайте:

  • Как контролировать скорость вентилятора AC 220V с помощью PWM-выхода arduino..?? и;
  • Изменения в схеме затемнения! и;
  • Узнайте о пересечении нуля. Это может помочь понять, как все работает - переключатель диммера.
  • Управление скоростью вентилятора переменного тока с помощью Arduino
,

Спасибо Greenonline. Но как это делают регуляторы вентиляторов? Из блога, если я закончу с ШИМ-сигналом с обычной схемой регулятора вентилятора, выходной импульсный сигнал будет влиять на 50 Гц (индийская стандартная частота переменного тока) как на домашнюю основную коробку питания, так и на подключенные устройства., @Sivamani V

Блог? Какой блог? Линк?, @Greenonline

это форум arduino https://forum.arduino.cc/index.php?topic=100899.0 из радостного ответа, @Sivamani V

Как [этот ответ](https://forum.arduino.cc/index.php?topic=100899.msg756971#msg756971) в посте Джой говорится, что вам нужно использовать обнаружение пересечения нуля, которое Juraj answer правильно демонстрирует., @Greenonline


1

Наконец я нашел его в качестве продукта, доступного здесь с тиристорной схемой и бесконтактным сервоприводом (ШИМ или аналоговый вход) двигатель ( для управления входом) поможет управлять выходом от 0 до 220 В. плавный регулятор вентилятора также может сделать это с серводвигателем и без каких-либо внешних требований к электрическим компонентам . Если это не эффективный способ с низкой стоимостью дизайна команды или ответить на ваш путь. :-).

,

Если ваш дизайн более эффективен, чем мой, ваш дизайн считается ответом. :-). Заранее спасибо., @Sivamani V

это для ручного регулирования. ты хочешь перевернуть этот горшок с помощью мотора?, @Juraj

@Juraj Спасибо. Это можно сделать с помощью ШИМ - входа arduino. Так что нам не нужно для этого работать., @Sivamani V

Плата, которую я связал в своем комментарии AliExpress, выглядит лучше. метки и описание поменялись местами вход/выход (как у вас: ШИМ-вход ?!), Но электроника должна работать, @Juraj

Ты прав, Юрай. Это будет идеально соответствовать этой схеме ♥. Но в вопросе я попросил привести его в недорогой дизайн. Ваш ответ в высшей степени приемлем, а не затратен. Вот почему я не упомянул, что мой дизайн тоже правильный., @Sivamani V

@SivamaniV : Если горшок управляется вручную, то какова цель arduino здесь?, @Learner

@Learner pot здесь не управляется вручную. Серводвигатель управляет горшком. Arduino запускает серводвигатель., @Sivamani V

@SivamaniV, прочтите мой ответ, если вы снова посетите Stack Exchange, @Juraj


1

Здесь также существует проблема изоляции, чтобы сторона контроллера не была подключена к сети по соображениям шума и безопасности. Комментарии предыдущих плакатов о том, как это сделать с помощью симисторов или МОП-транзисторов, а также управления фазовым углом, верны. Практически невозможно контролировать скорость однофазного асинхронного двигателя. Во всяком случае, самое элегантное решение-получить 3-фазный двигатель вентилятора и частотно-регулируемый привод с низковольтным входом управления постоянным током. Запустите шим-выход от Arduino через оптоизолятор (управляйте внутренним светодиодом). Используйте ссылку постоянного тока на регуляторе скорости для питания выходного сигнала оптоизолятора. Запустите его через rc-фильтр нижних частот на вход напряжения управления скоростью. Я думаю, что вы могли бы выйти из этого примерно за 200 долларов. Проверить surpluscenter.com. там много моторов и приводов. -Хью

,