Подключение двигателя HDD к микроконтроллеру

Двигатель HDD
В жестких дисках, как правило, применяются трехфазные бесколлекторные двигатели. Обмотки двигателя соединены звездой, то есть получаем 3 вывода (3 фазы). Некоторые двигатели имеют 4 вывода, в них дополнительно выведена средняя точка соединения всех обмоток.

Чтобы раскрутить бесколлекторный двигатель, нужно в правильном порядке и в определенные моменты времени, в зависимости от положения ротора, подавать напряжение на обмотки. Для определения момента переключения на двигатель устанавливают датчики холла, которые играют роль обратной связи.

В жестких дисках применяется другой способ определения момента переключения, в каждый момент времени к питанию подключены две обмотки, а на третьей измеряется напряжение, исходя из которого, выполняется переключение. В 4-х проводном варианте для этого доступны оба вывода свободной обмотки, а в случае двигателя с 3-мя выводами, дополнительно создается виртуальная средняя точка, при помощи резисторов соединенных звездой и подключенных параллельно обмоткам двигателя. Так как коммутация обмоток выполняется по положению ротора, здесь присутствует синхронность между частотой вращения ротора и магнитного поля созданного обмотками двигателя. Нарушение синхронности может привести к остановке ротора.
Обмотки HDD
Существуют специализированные микросхемы типа TDA5140, TDA5141, 42,43 и другие, предназначенные для управления бесколлекторными трехфазными двигателями, но я не буду здесь их рассматривать.

В общем случае диаграмма коммутаций представляет собой 3 сигнала с импульсами прямоугольной формы, смещенные между собой по фазе на 120 градусов. В простейшем варианте запустить двигатель можно и без обратной связи, просто подавая на него 3 прямоугольных сигнала (меандр), смещенных между собой на 120 градусов, что я и сделал. За один период меандра магнитное поле созданное обмотками совершает один полный оборот вокруг оси двигателя. Скорость вращения ротора при этом зависит от количества магнитных полюсов на нем. Если количество полюсов равно двум (одна пара полюсов), то ротор будет вращаться с той же частотой что и магнитное поле. В моем случае ротор двигателя имеет 8 полюсов (4 пары полюсов), то есть ротор вращается в 4 раза медленнее, чем магнитное поле. У большинства жестких дисков с частотой вращения 7200 об/мин, ротор должен иметь 8 полюсов, но это лишь мое предположение, так как я не проверял кучу винчестеров.
Диаграмма коммутаций
Если на двигатель подать импульсы с требуемой частотой, в соответствии с желаемой скоростью вращения ротора, то он не раскрутится. Здесь необходима процедура разгона, то есть сначала подаем импульсы с малой частотой, затем постепенно увеличиваем до требуемой частоты. Кроме этого процесс разгона зависит от нагрузки на валу.

Для запуска двигателя я применил микроконтроллер PIC16F628A. В силовой части стоит трехфазный мост на биполярных транзисторах, хотя лучше использовать полевые транзисторы для уменьшения тепловыделения. Прямоугольные импульсы формируются в подпрограмме обработчика прерываний. Для получения 3-х сигналов сдвинутых по фазе, выполняется 6 прерываний, при этом получаем один период меандра. В программе микроконтроллера я реализовал плавное увеличение частоты сигнала до заданной величины. Всего 8 режимов с различной заданной частотой сигнала: 40, 80, 120, 160, 200, 240, 280, 320 Гц. При 8-ми полюсах на роторе получаем следующие скорости вращения: 10, 20, 30, 40, 50, 60, 70, 80 об/сек.
Схема запуска двигателя HDD
Прошивка МК и исходник + файл проекта Proteus_7.7

Разгон начинается с 3 Гц в течение 0,5 секунд, это экспериментальное время необходимое для начальной раскрутки ротора в соответствующем направлении, так как бывает, что ротор проворачивается на небольшой угол в обратную сторону, только затем начинает вращаться в соответствующем направлении. При этом теряется момент инерции, и если незамедлительно начать увеличение частоты, происходит рассинхронизация, ротор в своем вращении просто не будет успевать за магнитным полем. Чтобы изменить направление вращения, нужно просто поменять местами любые 2 фазы двигателя.

По истечении 0,5 секунд происходит плавное увеличение частоты сигнала до заданной величины. Частота увеличивается по нелинейному закону, скорость роста частоты увеличивается по ходу разгона. Время разгона ротора до заданных скоростей: 3,8; 7,8; 11,9; 16; 20,2; 26,3; 37,5; 48,2 сек. Вообще без обратной связи двигатель туго разгоняется, необходимое время разгона зависит от нагрузки на валу, я проводил все эксперименты без снятия магнитного диска (“блин”), естественно без него разгон можно ускорить.

Переключение режимов осуществляется кнопкой SB1, при этом индикация режимов выполнена на светодиодах HL1-HL3, информация отображается в двоичном коде, HL3 – нулевой бит, HL2 – первый бит, HL1 – третий бит. Когда все светодиоды погашены, получаем число ноль, это соответствует первому режиму (40 Гц, 10 об/сек), если например горит светодиод HL1, получаем число 4, что соответствует пятому режиму (200 Гц, 50 об/сек). Переключателем SA1 запускаем или останавливаем двигатель, замкнутому состоянию контактов соответствует команда “Пуск”.

Выбранный режим скорости можно записать в EEPROM микроконтроллера, для этого надо удерживать кнопку SB1 в течение 1 секунды, при этом все светодиоды вспыхнут, тем самым подтверждая запись. По умолчанию при отсутствии записи в EEPROM, микроконтроллер переходит в первый режим. Таким образом, записав режим в память и установив переключатель SA1 в положение “Пуск”, можно запустить двигатель просто подав питание на устройство.

Крутящий момент у двигателя мал, что и не требуется при работе в жестком диске. При увеличении нагрузки на вал, происходит рассинхронизация и ротор останавливается. В принципе, если необходимо можно приделать датчик оборотов, и в случае отсутствия сигнала отключить питание и заново раскрутить двигатель.

Добавив 3 транзистора в трехфазный мост, можно уменьшить количество управляющих линий микроконтроллера до 3-х, как показано на схеме ниже.
Запуск двигателя HDD (3 фазы)
Прошивка МК и исходник + файл проекта Proteus_7.7

В качестве питания я использовал нестабилизированный трансформаторный блок питания, с напряжением 11,7 В. Ток потребления в зависимости от скорости вращения колеблется в пределах 0,75 – 0,9 А. Транзисторы необходимо установить на теплоотвод.
На видео можно увидеть процесс запуска на разных скоростях, а также оптический датчик оборотов, который я приделал для измерения скорости вращения.
Внешний вид монтажа

У этой записи 6 комментариев

  1. А с датчиками можете переделать схему? Датчики я имею ввиду Холла или индуктивные как в голове видика Электроника ВМ-12.

    1. В ближайшее время нет возможности переделывать схему

  2. Здравствуйте, собрал я данное устройство по схеме “hdd_3_phase_proteus” (с тремя управляющими линиями контроллера. Запуск двигателя очень не устойчивый. Не всегда заускается с первого включения питания. На самых малых оборотах (светодиоды не горят) вообще не стартует. На самых больших оборотах (горят все три светодиода) уходит в разнос и потом останавливаетя. Может это быть связано с тем что я немного отошёл от номиналов компонентов в схеме: R10, 14, 20 вместо 680 Ом у меня 750 Ом
    КТ361, КТ814 и КТ815 с другими буквами.
    Как подсоединить двигатель со средней точкой (четыре провода) к данной схеме? Будет ли запуск двигателя стабильнее по схеме с шестью линиями контроллера?
    Можно ли раскрутить двигатель до 7200 об/мин и более?
    Двигатель буду использовать для развёртки лазерного луча в строительном уровне.
    Фотографии в альбоме «hdd_3» на Яндекс.Фотках
    https://img-fotki.yandex.ru/get/16121/81318978.0/0_19640d_a7cd8ea5_L.jpg
    https://img-fotki.yandex.ru/get/4400/81318978.0/0_19640e_d862bc61_L.jpg

    1. Да все верно запуск не устойчивый, так как нет обратной связи, я проводил все эксперименты с магнитным диском, а это добавляет момент инерции к системе, соответственно у вас запуск может отличаться.

      Применение элементов с номиналами как у вас не влияет на работу схемы.

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

      Я пытался как-то раскрутить двигатель до 7200 об/мин, но насколько помню не получилось у меня, возможно причина кроется на программном уровне.

      Данная схема не рассчитана на подключение двигателя со средней точкой, средняя точка нужна лишь для удобного измерения напряжения на обмотке для обратной связи, а у меня нет вообще обратной связи.

      Если вы хотите стабильности попробуйте лучше использовать специализированные драйверы типа TDA5140, TDA5141

  3. Уважаемый Руслан! сделайте 1) модуль управления для инвертора микроволновки……………………….2) модуль управления для холодильника ноу фрост, с программным таймером оттайки от датчика температуры испарителя и музыкальным сигналом при забытой открытой двери холодильника…………………….желаю удачи и счастья!

Имя (обязательно)Email (обязательно)Веб-сайт

Добавить комментарий