Как запустить моторчик от жесткого диска. Двигатель жёсткого диска и Ардуино

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

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

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


Существуют специализированные микросхемы типа 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 об/сек.


Разгон начинается с 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-х, как показано на схеме ниже.

Двигатель, вращающий шпиндель жесткого диска (или CD/DVD-ROM)- это синхронный трёхфазный мотор постоянного тока.
Раскрутить такой двигатель можно подключив его к трём полумостовым каскадам, которые управляются трёхфазным генератором, частота которого при включении очень мала, а затем плавно повысится до номинальной. Это не лучшее решение задачи, такая схема не имеет обратной связи и следовательно частота генератора будет повышаться в надежде, что двигатель успевает набрать обороты, даже если на самом деле его вал неподвижен. Создание схемы с обратной связью потребовало бы применения датчиков положения ротора и несколько корпусов ИМС не считая выходных транзисторов. CD/DVD-ROM уже содержат датчики холла, по сигналам которых можно определить положение ротора двигателя, но иногда, совсем не важно точное положение и не хочется впустую тянуть "лишние провода".
К счастью, промышленность выпускает готовые однокристальные драйверы управления, которым к тому же им не требуются датчики положения ротора, в роли таких датчиков выступают обмотки двигателя.

Микросхемы управления трёхфазными двигателями постоянного тока, которым не требуются дополнительные датчики (датчиками являются сами обмотки двигателя):
LB11880; TDA5140; TDA5141; TDA5142; TDA5144; TDA5145 .
Есть и некоторые другие, но почему-то их нет в продаже, там, где я искал, а ждать от 2 до 30 недель заказа я не люблю.

Принципиальная схема подключения двигателя к микросхеме LB11880
Изначально, эта микросхема предназначена для управления двигателем БВГ видеомагнитофонов, так что она старенькая, в ключевых каскадах у неё биполярные транзисторы а не MOSFET`ы.
В своих конструкциях, я использовал именно эту микросхему, она во-первых, оказалась в наличии в ближайшем магазине, во-вторых, её стоимость была ниже, чем у прочих микросхем из списка выше.
Собственно, схема включения двигателя:

Если ваш двигатель имеет не 3 а 4 вывода, то подключать его следует согласно схеме:
Немного дополнительной информации об LB11880 и не только
Двигатель, подключенный по указанным схемам будет разгоняться до тех пор, пока либо не наступит предел по частоте генерации VCO микросхемы, которая определяется номиналами конденсатора подключенного к выводу 27 (чем его ёмкость меньше, тем выше частота), либо двигатель не будет разрушен механически.
Не следует слишком уменьшать ёмкость конденсатора подключенного к выводу 27, так как это может затруднить пуск двигателя.

Как регулировать скорость вращения?
Регулировка скорости вращения производится изменением напряжения на выводе 2 микросхемы, соответственно: Vпит - максимальная скорость; 0 - двигатель остановлен.
Однако, необходимо отметить, что плавно регулировать частоту просто применив переменный резистор не удастся, так как регулировка не линейна и происходит в меньших пределах чем Vпит - 0, по этому лучшим вариантом будет подключение к этому выводу конденсатора на который через резистор, например от микроконтроллера подаётся ШИМ сигнал.
Для определения текущей частоты вращения следует использовать вывод 8 микросхемы, на котором при вращении вала двигателя присутствуют импульсы, по 3 импульса на 1 оборот вала.

Как задать максимальный ток в обмотках?
Известно, что трёхфазные двигатели постоянного тока потребляют значительный ток вне своих рабочих режимов (при питании их обмоток импульсами заниженный частоты).
Для выставления максимального тока в данной схеме служит резистор R1.
Как только падение напряжения на R1 и следовательно на выводе 20 станет более 0.95 вольта, то выходной драйвер микросхемы прерывает импульс.
Выбирая значение R1, учитывайте, что для данной микросхемы максимальный ток не более 1.2 ампера, номинальный 0.4 ампера.

Параметры микросхемы LB11880
Напряжение питания выходного каскада (вывод 21): 8 ... 13 вольт (максимально 14.5);
Напряжение питания ядра (вывод 3): 4 ... 6 вольт (максимально 7);
Максимальная рассеиваемая микросхемой мощность: 2.8 ватта;
Диапазон рабочих температур: -20 ... +75 градусов.

А вот собственно, для чего я применил двигатель от HDD в совокупности с указанной микросхемой:


Вот этот диск (правда когда на нём ещё не было медных болтов), казалось бы мелкий и чахлый двигатель от старенького винчестера Seagate Barracuda, на 40Гб, рассчитанный на 7200 оборотов/мин (RPM) умудрялся разгонять до 15000 ... 17000 оборотов/мин, если я не ограничивал его скорость. Так что область применения двигателей от завалящих винчестеров, думаю весьма обширна. Точило/дрель/болгарку конечно не сделать, даже не думайте, но без особой нагрузки, двигатели способны на многое, например если с их помощью вращать барабан с зеркалами, для механической развёртки лазерного луча и т.п.

Давно пылился у меня такой вот небольшой двигатель, который я выкорчевал из какого-то жёсткого диска. Диск, кстати, от него тоже сохранился! Если соберусь - прикручу его на следующем этапе. А пока решил просто попробовать его реанимировать. Интересен этот двигатель тем, что по идее, (как понял я - человек ничего не знавший доселе о двигателях) он является вентильным. И как нам повествует Википедия: "вентильные двигатели призваны объединить в себе лучшие качества двигателей переменного тока и двигателей постоянного тока". А за счёт отсутствия скользящих электрических контактов (так как щёточный узел заменён там на бесконтактный полупроводниковый коммутатор) такие двигатели обладают высокой надёжностью и высоким сроком службы. Далее я не стану перечислять все прочие достоинства этих двигателей и тем самым пересказывать Википедию, а просто скажу, что применение таких штуковин довольно широкое, в том числе в робототехнике, а потому захотелось узнать побольше о принципах их работы.

Принцип работы двигателя HDD.


В двигателе три обмотки, сооединённые по принципу "звезда". Общая точка обмоток выводится на плюс. +5V для работы подходит отлично. Управляется двигатель ШИМ-сигналом, который должен подаваться на его обмотки со сдвигом фазы 120°. Однако, не получается подать нужную частоту на двигатель сразу, предварительно его нужно разогнать. Простейший способ подключить три обмотки через транзисторы, подавая ШИМ сигнал им на базу от микроконтроллера. Сразу оговорюсь по транзисторам: лучше брать полевики, потому что ток через них, похоже, идёт приличный, и биполярные сильно греются. Сначала взял 2N2222a. Нагревались за секунды, временно решил проблему установкой рядом кулера, но потом решил, что надо что-то понадёжнее, то есть побольше ☺ В результате поставил наши КТ817Г. Третьего не оказалось, вместо него у меня КТ815Г. В данной схеме их можно заменять, но КТ815 рассчитаны на постоянный коллекторный ток 1,5 ампера, а КТ817 - 3A. Замечу, что 2N2222a вообще - до 0,8A. Буква КТ81... тоже не играет роли, так как у нас всего 5 вольт. В теории, частота смены сигнала не быстрее 1 миллисекунды, реально ещё медленнее, так что высокочастотность транзисторов тоже роли не играет. В общем, подозреваю, что в данной схеме поэкспериментировать можно почти с любыми транзисторами n-p-n типа, с током коллектора хотя бы 1 ампер.

Схему прилагаю, резисторы подбирались тоже экспериментально, на 1 килоом - вполне годно работают. Ставил ещё 4,7k - это много, двигатель глох.

У двигателя 4 вывода. В начале выясняем, какой из них общий. Для этого мультиметром измеряем сопротивление между всеми выводами. Сопротивление между концами обмоток в два раза больше, чем между концом одной обмотки и общей средней точкой. Условно 4 ома против 2. Какую обмотку куда подключать - не имеет значения, они всё равно идут друг за другом.

Текст программы:

// Программа запуска двигателя жёсткого диска
#define P 9100 // Начальная задержка для разгона двигателя
#define x 9 // Номер пина к обмотке x
#define y 10 // Номер пина к обмотке y
#define z 11 // Номер пина к обмотке z
unsigned int p; // Переменная задержки для разгона
long time_pass; // Таймер
byte i = 0; // Счётчик цикла управления фазами двигателя
void setup()
{
p = P;// Присваиваем начальное значение задержки для разгона

//Serial.begin(9600); // Открываем COM порт для дебага
pinMode (x, OUTPUT ); // Установили пины, работающие с двигателем на вывод данных
pinMode (y, OUTPUT );
pinMode (z, OUTPUT );
digitalWrite (x, LOW ); // Установили начальную фазу двигателя, можно начать с любой из 6 фаз
digitalWrite (y, HIGH );
digitalWrite (z, LOW );
time_pass = micros(); // Обнуление таймера

void loop()
{

if ((i < 7) && (micros () - time_pass >= p)) // Если счётчик имеет номер от 0 до 6, и время ожидания смены фазы прошло
{
time_pass = micros (); // Обнуляем таймер
if (i == 0) { digitalWrite (z, HIGH ); } // Устанавливаем 0 или 1 в зависимости от номера фазы на нужном пине
if (i == 2) { digitalWrite (y, LOW ); }
if (i == 3) { digitalWrite (x, HIGH ); }
if (i == 4) { digitalWrite (z, LOW ); }
if (i == 5) { digitalWrite (y, HIGH ); }
if (i == 6) { digitalWrite (x, LOW ); }

I++; // Плюсуем счётчик фазы
}
if (i >= 7) // Если счётчик переполнен
{
i = 0; // Обнуляем счётчик
if (p > 1350) {p = p - 50;} // Если двигатель ещё не вошёл в максимальную скорость - сокращаем время смены фазы
//Serial.println(p); Дебаг времени ожидания
}

Что в результате?

В результате имеем двигатель, который разгоняется за несколько секунд. Иногда разгон разбалансируется, и двигатель останавливается, но чаще всё работает. Как стабилизировать - пока не знаю. Если рукой остановить двигатель, снова он уже не запустится - нужен перезапуск программы. Пока это максимум, который удалось из него выжать. При опускании p ниже 1350 двигатель вылетает из разгона. 9100 в начале тоже подбиралась экспериментально, можно попробовать поменять, посмотреть, что будет. Вероятно, для другого двигателя числа будут другими - мне пришлось подбирать для своего. С нагрузкой (оригинальный диск) двигатель перестаёт запускаться, так что установка на него чего-либо потребует калибровки прошивки заново. Крутится он сравнительно быстро, так что рекомендую при запуске надевать очки, особенно если на нём чего-то будет висеть в этот момент. Надеюсь продолжить с ним эксперименты. Пока это всё, всем удачи!

Как-то давно попалась мне на обозрение схема драйвера шагового двигателя на микросхеме LB11880, но поскольку такой микросхемы у меня не было, а двигателей валялось несколько штук, отложил интересный проект с запуском моторчика в долгий ящик. Прошло время, и вот сейчас с освоением Китая с деталями проблем нет, так что заказал МС, и решил собрать и протестировать подключение скоростных моторов от HDD. Схема драйвера взята стандартная:

Схема драйвера мотора

Далее идёт сокращённое описание статьи, полное читайте . Двигатель, вращающий шпиндель жесткого диска (или CD/DVD-ROM) - это обычный синхронный трёхфазный мотор постоянного тока. Промышленность выпускает готовые однокристальные драйверы управления, которым к тому же не требуются датчики положения ротора, ведь в роли таких датчиков выступают обмотки двигателя. Микросхемы управления трёхфазными двигателями постоянного тока, которым не требуются дополнительные датчики, являются TDA5140; TDA5141; TDA5142; TDA5144; TDA5145 и конечно же LB11880 .

Двигатель, подключенный по указанным схемам, будет разгоняться до тех пор, пока либо не наступит предел по частоте генерации VCO микросхемы, которая определяется номиналами конденсатора подключенного к выводу 27 (чем его ёмкость меньше, тем выше частота), либо двигатель не будет разрушен механически. Не следует слишком уменьшать ёмкость конденсатора подключенного к выводу 27, так как это может затруднить пуск двигателя. Регулировка скорости вращения производится изменением напряжения на выводе 2 микросхемы, соответственно: Vпит - максимальная скорость; 0 - двигатель остановлен. От автора имеется и печатка, но я развёл свой вариант, как более компактный.

Позже пришли заказанные мной микросхемы LB11880, запаял в две готовые платки и провёл тест одной из них. Всё прекрасно работает: скорость регулируется переменником, обороты определить трудно но думаю до 10000 есть точно, так как двигатель гудит прилично.

В общем, начало положено, буду думать куда применить. Есть мысль сделать из него такой же точильный диск как у автора. А сейчас тестировал на куске пластика, сделал типа вентилятора, дует просто зверски хоть на фото даже не видно как он крутится.

Поднять обороты выше 20000 можно переключением ёмкостей конденсатора С10 и подачей питания МС до 18 В (18,5 В предел). На этом напряжении у меня мотор свистел капитально! Вот видео с питанием в 12 вольт:

Видео подключения мотора HDD

Подключил ещё двигатель от CD, погонял при питании 18 В, поскольку в моём внутри шарики, разгоняется так, что прыгает всё вокруг! Жаль не отследить обороты, но если судить по звуку то она очень большая, до тонкого свиста. Куда применять такие скорости, вот вопрос? Приходит на ум мини болгарка, настольная дрель, точильный станок... Применений много - думайте сами. Собирайте, тестируйте, делитесь впечатлениями. В интернете есть множество обзоров с применением данных двигателей в интересных самодельных конструкциях. В интернете видео видел, там кулибины с этими моторами помпы мастерят, супер вентиляторы, точилки, покумекать можно куда такие скоростя применить, мотор тут разгоняется свыше 27000 оборотов. С вами был Igoran .

Обсудить статью КАК ПОДКЛЮЧИТЬ МОТОР ОТ DVD ИЛИ HDD

. Тема безусловна интересная особенно для начинающих радио-"мучителей", но на мой взгляд раскрыта далеко не полностью. Нет логического завершения, а именно какую схему использовал много уважаемый, TwIsTeR для своего решения, предложенную ли (моим коллегой по журналистскому труду) S anyaav на М/С TDA5145, МК или какую то другую. Этой статьёй я хочу дополнить некоторые пробелы форума и расскажу, на мой взгляд, о вполне достойной хоть по современным меркам и старенькой микросхеме LB 11880. И так приступим и начнём с общих сведений, что же такое двигатель от HDD, CD-ROM, DVD-ROM

Двигатель, вращающий шпиндель жесткого диска (или CD/DVD-ROM)- это синхронный трёхфазный мотор постоянного тока.

Раскрутить такой двигатель можно подключив его к трём полу мостовым каскадам, которые управляются трёхфазным генератором, частота которого при включении очень мала, а затем плавно повысится до номинальной. Это не лучшее решение задачи, такая схема не имеет обратной связи и следовательно частота генератора будет повышаться в надежде, что двигатель успевает набрать обороты, даже если на самом деле его вал неподвижен. Создание схемы с обратной связью потребовало бы применения датчиков положения ротора и несколько корпусов ИМС не считая выходных транзисторов. CD/DVD-ROM уже содержат датчики холла, по сигналам которых можно определить положение ротора двигателя, но иногда, совсем не важно точное положение и не хочется впустую тянуть "лишние провода".

К счастью, промышленность выпускает готовые однокристальные драйверы управления, которым к тому же им не требуются датчики положения ротора, в роли таких датчиков выступают обмотки двигателя. Микросхемы управления трёхфазными двигателями постоянного тока, которым не требуются дополнительные датчики (датчиками являются сами обмотки двигателя): TDA 5140; TDA 5141; TDA 5142; TDA 5144; TDA 5145 и конечно же LB 11880. (Есть и некоторые другие, но в другой раз.)

Принципиальная схема подключения двигателя к микросхеме LB11880.

Изначально, эта микросхема предназначена для управления двигателем БВГ видеомагнитофонов, в ключевых каскадах у неё биполярные транзисторы а не MOSFET. В своих конструкциях, я использовал именно эту микросхему, она во-первых, оказалась в наличии в ближайшем магазине, во-вторых, её стоимость была ниже (хоть и не на много), чем у прочих микросхем из выше приведенного списка.

Собственно, схема включения двигателя:

Если ваш двигатель вдруг имеет не 3 а 4 вывода, то подключать его следует согласно схеме:

И ещё одна более наглядная схема, адаптированная для использования в автомобиле.

Немного дополнительной информации об LB11880 и не только

Двигатель, подключенный по указанным схемам будет разгоняться до тех пор, пока либо не наступит предел по частоте генерации VCO микросхемы, которая определяется номиналами конденсатора подключенного к выводу 27 (чем его ёмкость меньше, тем выше частота), либо двигатель не будет разрушен механически. Не следует слишком уменьшать ёмкость конденсатора подключенного к выводу 27, так как это может затруднить пуск двигателя.

Как регулировать скорость вращения?

Регулировка скорости вращения производится изменением напряжения на выводе 2 микросхемы, соответственно: Vпит - максимальная скорость; 0 - двигатель остановлен.

Однако, необходимо отметить, что плавно регулировать частоту просто применив переменный резистор не удастся, так как регулировка не линейна и происходит в меньших пределах чем Vпит - 0, по этому лучшим вариантом будет подключение к этому выводу конденсатора на который через резистор, например от микроконтроллера подаётся ШИМ сигнал ну или ШИМ регулятор на всемирно известном таймере NE 555(таких схем в инете полно)

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

Как задать максимальный ток в обмотках?

Известно, что трёхфазные двигатели постоянного тока потребляют значительный ток вне своих рабочих режимов (при питании их обмоток импульсами заниженный частоты). Для выставления максимального тока в данной схеме служит резистор R1. Как только падение напряжения на R1 и следовательно на выводе 20 станет более 0.95 вольта, то выходной драйвер микросхемы прерывает импульс. Выбирая значение R1, учитывайте, что для данной микросхемы максимальный ток не более 1.2 ампера, номинальный 0.4 ампера.

Параметры микросхемы LB11880

Напряжение питания выходного каскада (вывод 21): 8 ... 13 вольт (максимально 14.5);

Напряжение питания ядра (вывод 3): 4 ... 6 вольт (максимально 7);

Максимальная рассеиваемая микросхемой мощность: 2.8 ватта;

Диапазон рабочих температур: -20 ... +75 градусов.


Вот этот диск (правда когда на нём ещё не было медных болтов), казалось бы мелкий и чахлый двигатель от старенького винчестера на 40Гб, рассчитанный на 7200 оборотов/мин (RPM) умудрялся разгоняться примерно до 15000 ... 17000 оборотов/мин, если не ограничивать его скорость. Так что область применения двигателей от завалящих винчестеров, думаю весьма обширна. Точило/дрель/болгарку конечно не сделать, даже не думайте, но без особой нагрузки, двигатели способны на многое.

Ф айловый архив для самостоятельной сборка качаем

УДАЧИ!!