Найти в Дзене
DIGANN.RU | Linux & IT

Сервопривод из старого флоппи-диска своими руками. Часть 1: Схема драйвера и первый запуск

В прошлой статье мы разобрались, что такое BLDC-двигатель и как работает шестиступенчатая коммутация. Теперь пришло время перейти к практике! Писать буду коротко, так как если всё подробно описывать, текст получается очень объёмный. Сделал в KiCad принципиальную схему одной фазы, для других фаз всё собирается аналогично. Ссылка на проект внизу статьи. Компоненты: Управление: Как работает: Важно: Собрал на макетной плате, для тестов, но это, конечно, очень не удобно. Контакты отваливаются и двигатель останавливается, а это плохо - можно сжечь ключи. У меня двигатель с такой схемой разгоняется до 4000 оборотов в минуту, если я правильно всё посчитал. Работает примерно 1 минуту и нижние ключи начинают греться, после разгона можно снизить напряжение. У меня при разгоне pwm 240, почти максимум, а после разгона можно снизить. Алгоритм работы: Этапы разгона: Особенности: Код прошивки: https://gitflic.ru/project/ruslanr/bldc-servo-floppy Что получилось: Проблемы: Что будет дальше: Следите за
Оглавление

В прошлой статье мы разобрались, что такое BLDC-двигатель и как работает шестиступенчатая коммутация. Теперь пришло время перейти к практике! Писать буду коротко, так как если всё подробно описывать, текст получается очень объёмный.

Сделал в KiCad принципиальную схему одной фазы, для других фаз всё собирается аналогично. Ссылка на проект внизу статьи.

Компоненты:

  • Q1 (IRF4905) — P-канальный MOSFET (верхний ключ)
  • Q3 (IRLZ44N) — N-канальный MOSFET (нижний ключ)
  • Q2 (2SC1815) — NPN транзистор (управление верхним ключом)
  • R1 (1K), R3 (220Ω) — ограничительные резисторы
  • R2 (10K), R4 (15K) — подтягивающие резисторы

Управление:

  • AH — верхний ключ (к выводу Arduino)
  • AL — нижний ключ (к выводу Arduino)
  • Фаза_A — подключение к двигателю

Как работает:

  1. AH = HIGH > Q2 открыт > затвор Q1 на GND > Q1 открыт (+12В на фазе)
  2. AH = LOW > Q2 закрыт > затвор Q1 подтянут к +12В > Q1 закрыт
  3. AL = HIGH > затвор Q3 на +5В > Q3 открыт (GND на фазе)
  4. AL = LOW > затвор Q3 подтянут к GND > Q3 закрыт

Важно:

  • Для защиты от обратных выбросов нужно добавить диоды Шоттки параллельно MOSFET

Собрал на макетной плате, для тестов, но это, конечно, очень не удобно. Контакты отваливаются и двигатель останавливается, а это плохо - можно сжечь ключи. У меня двигатель с такой схемой разгоняется до 4000 оборотов в минуту, если я правильно всё посчитал. Работает примерно 1 минуту и нижние ключи начинают греться, после разгона можно снизить напряжение. У меня при разгоне pwm 240, почти максимум, а после разгона можно снизить.

-2
-3

Прошивка

Алгоритм работы:

  1. Инициализация — настройка выводов и таймеров (PWM 15.6 кГц)
  2. Разгон — 3 этапа (плавное увеличение скорости)
  3. Работа — вращение на фиксированной скорости (4000 об/мин)

Этапы разгона:

  1. 20000 → 4000 мкс | 200 → 1000 об/мин | ~3.8 сек
  2. 4000 → 2000 мкс | 1000 → 2000 об/мин | ~1.2 сек
  3. 2000 → 1000 мкс | 2000 → 4000 об/мин | ~1.5 сек

Особенности:

  • Шестиступенчатая коммутация (6 шагов на электрический оборот)
  • DeadTime 5 мкс (защита от сквозных токов)
  • PWM для верхних ключей (плавное регулирование скорости не реализовал)
  • Цифровое управление для нижних ключей
  • Частота PWM: 15.6 кГц (Timer1 и Timer3)

Код прошивки: https://gitflic.ru/project/ruslanr/bldc-servo-floppy

Итог первой части

Что получилось:

  • Разобрал 3 флоппи-дисковода
  • Собрал трёхфазный полумост
  • Запустил двигатель без обратной связи
  • Разогнал до 4000 об/мин

Проблемы:

  • ⚠️ Нижние ключи греются через 1 минуту работы
  • ⚠️ Макетная плата ненадёжна (контакты отваливаются)

Что будет дальше:

  • ⏳ Добавить энкодер (1000 PPR)
  • ⏳ Реализовать обратную связь по положению
  • ⏳ Настроить PID-регулятор
  • ⏳ Сделать редуктор 1:10
  • ⏳ Развести нормальную плату (не макетку)

Следите за серией! Следующая статья: «Часть 2: Подключение энкодера и обратная связь»