Этот портативный регулятор скорости сверления печатных плат дешев, прост в сборке и использует всего несколько компонентов, зато гораздо «продвинутее» обычных транзисторных схем. По сути, это ШИМ-контроллер на базе Arduino Uno, работающий на относительно высокой частоте. Он имеет почти 0-100% регулировку скорости электродвигателя постоянного тока, сохраняя при этом довольно стабильную частоту широтно-импульсной модуляции. А главное, регулятор имеет OLED-дисплей для отображения рабочего цикла ШИМ!

ШИМ-управление здесь работает путем быстрого включения и выключения питания подаваемого на двигатель. Напряжение преобразуется в сигнал прямоугольной формы, чередующийся между полностью включенным и полностью выключенным, что дает двигателю серию импульсов мощности. Регулируя рабочий цикл ШИМ-сигнала (модулируя ширину импульса), можно изменять среднюю мощность и, следовательно, скорость мотора. Обратите внимание, что если частота коммутации достаточно высока, двигатель работает с постоянной скоростью.

Теперь давайте взглянем на скетч Arduino. Этот код передает одноканальный сигнал привода двигателя с широтно-импульсной модуляцией через D5 ШИМ платы Arduino Uno. Рабочий цикл управляющего сигнала можно изменять линейным потенциометром, подключенным к аналоговому входному контакту A0 микроконтроллера.
#include <SPI.h>
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire);
int pwm = 0;
void setup()
{
display.begin(SSD1306_SWITCHCAPVCC, 0x3C); //OLED I2C Address = 0x3C
display.clearDisplay();
display.display();
delay(800);
}
void loop()
{
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(30, 0);
display.clearDisplay();
display.print(“DRIVE”);
display.setTextSize(2);
display.setTextColor(WHITE);
display.setCursor(40, 20);
display.print(pwm);
display.print(“%”);
display.display();
delay(100);
pwm = map(analogRead(A0), 0, 1023,
0, 255); //Trimpot Input = A0analogWrite(5, pwm); //PWM Output
= D5pwm = map(pwm, 0, 255, 0, 100);
//0-100%}
Частота ШИМ приблизительно равна 976 Гц. Точная частота ШИМ для D5 составляет 976,56 Гц (по умолчанию).

Схема регулятора оборотов на Ардуино
В качестве транзистора драйвера двигателя использовался полевой IRL520N. Его легко найти, он недорогой и имеет всего 0,27 Ом RDS(on) при 5 В V-GS, поэтому очень мало теряется от источника питания даже на полной скорости. Подойдет большинство N-канальных мощных полевых МОП-транзисторов «логического уровня», ищите низкий RDS(on) и адекватную способность поддержания тока.
Радиатор не требуется при умеренных нагрузках, так как наша ручная электродрель предназначена для печатных плат.
В приведенной схеме есть обычный выпрямительный диод, антипараллельно индуктивной нагрузке (двигателю постоянного тока). Прототип испытывался с двигателем на 12 В постоянного тока, который работал просто великолепно. Для проверки использовалась батарея 6F22 9 В для Arduino и отдельный источник питания 12 В на 2 А для мощного двигателя.

Однако замечено, что при установке минимальной скорости тестовый двигатель работал нормально, но не стартовал с места. Кроме того, ШИМ-привод на полной мощности будет вращать двигатель на несколько более низкой скорости, чем при подаче питания напрямую.
Также имейте в виду, что мосфеты часто генерируют радиочастотные помехи при переключении, их можно погасить с помощью небольшой ферритовой шайбы, насаженной на вывод резистора затвора, ближайший к MOSFET.
И, наконец, вот принципиальная схема драйвера мотора:
Согласитесь, достойная замена старомодному ШИМ-контроллеру на основе таймера 555 и иже с ними. Небольшое количество деталей, дисплей для отображения уровня ШИМ и пространство для творческих улучшений путем настройки прошивки делают его гораздо лучшей альтернативой. Конечно, управление скоростью электродрели — не единственное применение такого ШИМ-драйвера, так что используйте его для всего что понадобится.








