- Широтно-импульсная модуляция:
- Необходимый материал
- Принципиальная электрическая схема
- Код и объяснение
- Управление скоростью двигателя постоянного тока с помощью Arduino
Двигатель постоянного тока - наиболее часто используемый двигатель в проектах робототехники и электроники. Для управления скоростью двигателя постоянного тока у нас есть различные методы, например, скорость может автоматически регулироваться в зависимости от температуры, но в этом проекте для управления скоростью двигателя постоянного тока будет использоваться метод ШИМ. Здесь, в этом проекте управления скоростью двигателя Arduino, скорость можно контролировать, вращая ручку потенциометра.
Широтно-импульсная модуляция:
Что такое ШИМ? ШИМ - это метод, с помощью которого мы можем контролировать напряжение или мощность. Чтобы понять это проще, если вы подаете 5 вольт для привода двигателя, тогда двигатель будет двигаться с некоторой скоростью, теперь, если мы уменьшим приложенное напряжение на 2, значит, мы приложим 3 вольта к двигателю, тогда скорость двигателя также снизится. Эта концепция используется в проекте для управления напряжением с помощью ШИМ. Мы подробно объяснили ШИМ в этой статье. Также проверьте эту схему, в которой ШИМ используется для управления яркостью светодиода: 1 Вт светодиодный диммер.
% Рабочий цикл = (TON / (TON + TOFF)) * 100 Где, T ON = ВЫСОКОЕ время прямоугольной волны T OFF = НИЗКОЕ время прямоугольной волны
Теперь, если переключатель на рисунке постоянно замкнут в течение определенного периода времени, двигатель будет постоянно включаться в течение этого времени. Если переключатель замкнут на 8 мс и разомкнут на 2 мс в течение цикла 10 мс, то двигатель будет включен только в течение 8 мсек. Теперь среднее значение терминала за период в 10 мс = время включения / (время включения + время выключения), это называется рабочим циклом и составляет 80% (8 / (8 + 2)), поэтому среднее выходное напряжение составит 80% от напряжения аккумулятора. Теперь человеческий глаз не может видеть, что двигатель включен на 8 мс и выключен на 2 мс, поэтому будет выглядеть так, как будто двигатель постоянного тока вращается со скоростью 80%.
Во втором случае переключатель замыкается на 5 мс и размыкается на 5 мс в течение 10 мс, поэтому среднее напряжение на выходе на выходе будет 50% от напряжения батареи. Скажем, если напряжение аккумулятора составляет 5 В, а рабочий цикл составляет 50%, то среднее напряжение на клеммах будет 2,5 В.
В третьем случае рабочий цикл составляет 20%, а среднее напряжение на клеммах составляет 20% от напряжения батареи.
Мы использовали ШИМ с Arduino во многих наших проектах:
- Светодиодный диммер на базе Arduino с использованием ШИМ
- Вентилятор с регулируемой температурой с использованием Arduino
- Управление двигателем постоянного тока с использованием Arduino
- Управление скоростью вентилятора переменного тока с использованием Arduino и TRIAC
Вы можете узнать больше о ШИМ, просмотрев различные проекты, основанные на ШИМ.
Необходимый материал
- Arduino UNO
- Двигатель постоянного тока
- Транзистор 2Н2222
- Потенциометр 100кОм
- Конденсатор 0,1 мкФ
- Макетная плата
- Прыгающие провода
Принципиальная электрическая схема
Принципиальная схема для управления скоростью двигателя постоянного тока Arduino с использованием ШИМ приведена ниже:
Код и объяснение
Полный код для управления двигателем постоянного тока Arduino с помощью потенциометра приведен в конце.
В приведенном ниже коде мы инициализировали переменные c1 и c2 и назначили аналоговый вывод A0 для выхода потенциометра и 12- й вывод для «pwm».
int pwmPin = 12; int pot = A0; int c1 = 0; int c2 = 0;
Теперь, в приведенном ниже коде, устанавливаем вывод A0 в качестве входа и 12 (который является контактом PWM) в качестве выхода.
void setup () { pinMode (pwmPin, ВЫХОД); // объявляет вывод 12 как вывод pinMode (pot, INPUT); // объявляет вывод A0 как вход }
Теперь в void loop () мы читаем аналоговое значение (из A0) с помощью analogRead (pot) и сохраняем его в переменную c2. Затем вычтите значение c2 из 1024 и сохраните результат в c1. Затем сделайте 12- й вывод ШИМ Arduino ВЫСОКИМ, а затем после задержки значения c1 сделайте этот вывод НИЗКИМ. Опять же, после задержки значения c2 цикл продолжается.
Причина вычитания аналогового значения из 1024 заключается в том, что АЦП Arduino Uno имеет 10-битное разрешение (поэтому целые значения от 0 до 2 ^ 10 = 1024 значения). Это означает, что он преобразует входные напряжения от 0 до 5 вольт в целочисленные значения от 0 до 1024. Итак, если мы умножим входное anlogValue на (5/1024), мы получим цифровое значение входного напряжения. Узнайте здесь, как использовать ввод АЦП в Arduino.
void loop () { c2 = analogRead (горшок); c1 = 1024-c2; digitalWrite (pwmPin, HIGH); // устанавливает вывод 12 HIGH delayMicroseconds (c1); // ждет c1 uS (время ожидания ) digitalWrite (pwmPin, LOW); // устанавливает вывод 12 LOW delayMicroseconds (c2); // ждет c2 uS (время ожидания) }
Управление скоростью двигателя постоянного тока с помощью Arduino
В этой схеме для управления скоростью двигателя постоянного тока мы используем потенциометр 100 кОм для изменения рабочего цикла сигнала ШИМ. Потенциометр 100 кОм подключен к аналоговому входному контакту A0 Arduino UNO, а двигатель постоянного тока подключен к 12- му контакту Arduino (который является контактом PWM). Программа Arduino работает очень просто, так как она считывает напряжение с аналогового вывода A0. Напряжение на аналоговом выводе изменяется с помощью потенциометра. После выполнения некоторых необходимых расчетов рабочий цикл корректируется в соответствии с ним.
Например, если мы подадим 256 значений на аналоговый вход, то время ВЫСОКОГО будет 768 мс (1024-256), а время НИЗКОГО будет 256 мс. Следовательно, это просто означает, что рабочий цикл составляет 75%. Наши глаза не могут видеть такие высокочастотные колебания, и похоже, что двигатель постоянно включен со скоростью 75%. Вот как мы можем управлять скоростью двигателя с помощью Arduino.