Самодельный шаговый двигатель на 3D-принтере: строим свой precision-привод
Компоненты и материалы
| Arduino UNO | ×1 |
| Неодимовые магниты 1/4" (6 мм) | ×6 |
| Гвозди 8d 2-3/8" (для якорей электромагнитов) | ×8 |
| Транзисторы (PNP или MOSFET по току) | ×4 |
| Подшипник 608ZZ | ×1 |
О проекте
Вдохновленный 3D-печатаемым коллекторным двигателем, автор решил пойти дальше — сделать шаговый двигатель. Конструкция: 8 электромагнитов, 6 неодимовых магнитов на роторе, 3D-печатанные статор и ротор. Это постоянномагнитный шаговый двигатель с шагом 15° (полный шаг) и 7.5° (полушаг). Образовательный демонстратор принципа работы шаговых двигателей. Работает от 5–12 В DC (совместимо с USB-питанием).
Розыгрыш: На YouTube-канале автора разыгрывается Arduino, транзисторы и переключатели. Подробности в последнем шаге.
Шаг 1: Что понадобится
- 6 неодимовых магнитов 1/4"
- Подшипник 608ZZ
- 8 гвоздей 8d 2-3/8" (любые подходящие по размеру)
- МАГнитная проволока (0.315 мм использовано, не критично)
- Arduino Uno
- 4 транзистора (PNP или MOSFET — по даташиту на ток ваших катушек). На 5В потребление ~1 А, на 12В — ~3 А.
- 3D-печатанные ротор (двенадцатиугольник) и статор (восьмиугольник)
- Клей, изолента, компас (для полярности магнитов)



Шаг 2: Печать ротора и статора

STL-файлы доступны на странице проекта (печать через 3D Hubs или свой принтер).
Шаг 3: Установка магнитов на ротор

Компасом определите полюса. Приклейте магниты северными полюсами наружу. Компас в смартфоне тоже подойдет.
Шаг 4: Сборка ротора и статора


Вдавите подшипник в статор (отверстия при печати слегка уменьшаются — автор заранее увеличил их). Затем вдавите ротор в подшипник. Ось вращается свободно.
Шаг 5: Намотка электромагнитов



Отрежьте 9 кусков проволоки по 25 футов (~7.6 м). Намотайте на гвозди с помощью дрели. Компасом и батареей определите, какой конец — южный полюс (он должен смотреть внутрь). Пометьте минусовый вывод маркером или термоусадкой. Изолируйте катушки изолентой в местах контакта со статором — фиксация и теплоизоляция. Пара катушек потребляет ~1 А на 5В, ~3 А на 12В.
Внимание! Проект рассчитан на 5–12 В. При изменении параметров используйте закон Ома: U = I×R. Меньше витков — меньше сопротивление — больше ток. Риск сжечь транзисторы или БП!
Шаг 6: Установка электромагнитов в статор

Вставьте катушки до зазора ~6 мм (1/4") от магнитов ротора. Можно регулировать. Гвозди со временем намагничиваются — эффективность падает. Сварные электроды — лучшая альтернатива, если есть.
Шаг 7: Пайка и подключение к Arduino


Соедините пары катушек последовательно так, чтобы южные полюса всех электромагнитов смотрели внутрь. Резистор 1 кОм на базе транзистора предотвращает «висение» входа в высоком состоянии. Загрузите код в Arduino — двигатель готов!
Шаг 8: Pay It Forward (розыгрыш)

В розыгрыше: Arduino, транзисторы, переключатели, перемычки.
Условия: Подпишитесь на YouTube-канал, поставьте лайк видео, напишите в комментариях, что хотите увидеть следующим. 1 сентября случайный победитель получит призу бесплатно!
Программный код
/* 3D Printed Stepper Motor by Anthony Garofalo (Proto G) */
int Delay;
int reverseSwitch;
void setup() {
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
pinMode(11, OUTPUT);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT); // LED индикатор
pinMode(6, INPUT); // Переключатель направления на пине 6
}
void loop() {
reverseSwitch = digitalRead(6);
if (reverseSwitch == HIGH) {
// Против часовой стрелки
Delay = analogRead(0);
Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(12, HIGH); digitalWrite(13, HIGH); delay(Delay);
digitalWrite(12, LOW); digitalWrite(13, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(11, HIGH); delay(Delay); digitalWrite(11, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(10, HIGH); digitalWrite(13, HIGH); delay(Delay);
digitalWrite(10, LOW); digitalWrite(13, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(9, HIGH); delay(Delay); digitalWrite(9, LOW); delay(5);
} else {
// По часовой стрелке
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(9, HIGH); digitalWrite(13, HIGH); delay(Delay);
digitalWrite(9, LOW); digitalWrite(13, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(10, HIGH); delay(Delay); digitalWrite(10, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(11, HIGH); digitalWrite(13, HIGH); delay(Delay);
digitalWrite(11, LOW); digitalWrite(13, LOW); delay(5);
Delay = analogRead(0); Delay = map(Delay, 0, 1023, 60, 2000);
digitalWrite(12, HIGH); delay(Delay); digitalWrite(12, LOW); delay(5);
}
}
Скорость регулируется потенциометром на аналоговом входе A0. Переключатель на пине 6 меняет направление.
3D-модели
STL-файлы ротора и статора доступны на странице проекта (раздел Custom parts).
Схемы

Производственный процесс
- Двигатели переменного магнитного сопротивления: типы, работа и применение
- Шаговые двигатели: типы, характеристики и практические применения
- Печатные платы: проектирование, производство и будущие тренды
- Интегрированные драйверы упрощают дизайн высокомощных шаговых двигателей
- Raspoulette: Прототип солнечной автономной системы двери курятника
- DIY автономная турель Nerf — умный Nerf-пушка на шаговых двигателях, камере и Arduino
- Полнофункциональная библиотека для управления биполярным шаговым двигателем на Arduino
- Сервоприводы vs Шаговые двигатели: проясняем современную серую зону
- Понимание линейных моторов: от электрической энергии к точному линейному движению
- Серводвигатели: принцип работы и значение