Підключення двигуна hdd до мікроконтролеру, програмування мікроконтролерів pic

Підключення двигуна hdd до мікроконтролеру, програмування мікроконтролерів pic

У жорстких дисках, як правило, застосовуються трифазні безколекторні двигуни. Обмотки двигуна з'єднані зіркою, тобто отримуємо 3 виведення (3 фази). Деякі двигуни мають 4 виведення, в них додатково виведена середня точка з'єднання всіх обмоток.

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

У жорстких дисках застосовується інший спосіб визначення моменту перемикання, в кожен момент часу до харчування підключені дві обмотки, а на третій вимірюється напруга, виходячи з якого, виконується перемикання. У 4-х дротовому варіанті для цього доступні обидва виведення вільної обмотки, а в разі двигуна з 3-ма висновками, додатково створюється віртуальна середня точка, за допомогою резисторів з'єднаних зіркою і підключених паралельно обмоток двигуна. Так як комутація обмоток виконується за матеріальним становищем ротора, тут присутній синхронність між частотою обертання ротора і магнітного поля створеного обмотками двигуна. Порушення синхронності може привести до зупинки ротора.

Підключення двигуна hdd до мікроконтролеру, програмування мікроконтролерів pic

Існують спеціалізовані мікросхеми типу TDA5140, TDA5141, 42,43 і інші, призначені для управління безколекторними трифазними двигунами, але я не буду тут їх розглядати.

У загальному випадку діаграма комутацій є 3 сигналу з імпульсами прямокутної форми, зміщені між собою по фазі на 120 градусів. У найпростішому варіанті запустити двигун можна і без зворотного зв'язку, просто подаючи на нього 3 прямокутних сигналу (меандр), зміщених між собою на 120 градусів, що я і зробив. За один період меандру магнітне поле створене обмотками робить один повний оберт навколо осі двигуна. Швидкість обертання ротора при цьому залежить від кількості магнітних полюсів на ньому. Якщо кількість полюсів дорівнює двом (одна пара полюсів), то ротор буде обертатися з тією ж частотою що і магнітне поле. У моєму випадку ротор двигуна має 8 полюсів (4 пари полюсів), тобто ротор обертається в 4 рази повільніше, ніж магнітне поле. У більшості жорстких дисків з частотою обертання 7200 об / хв, ротор повинен мати 8 полюсів, але це лише моє припущення, так як я не перевіряв купу вінчестерів.

Підключення двигуна hdd до мікроконтролеру, програмування мікроконтролерів pic

Якщо на двигун подати імпульси з необхідною частотою, відповідно до бажаної швидкістю обертання ротора, то він не розкрутиться. Тут необхідна процедура розгону, тобто спочатку подаємо імпульси з малою частотою, потім поступово збільшуємо до необхідної частоти. Крім цього процес розгону залежить від навантаження на валу.

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

Підключення двигуна hdd до мікроконтролеру, програмування мікроконтролерів pic

Прошивка МК і исходник + файл проекту 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 до мікроконтролеру, програмування мікроконтролерів pic

Прошивка МК і исходник + файл проекту Proteus_7.7

Останні записи:

Так все вірно запуск не стійкий, так як немає зворотного зв'язку, я проводив усі експерименти з магнітним диском, а це додає момент інерції до системи, відповідно у вас запуск може відрізнятися.

Застосування елементів з номіналами як у вас не впливає на роботу схеми.

Різниці між схемами з шістьма і трьома лініями контролера немає, при переході від однієї схеми до іншої нічого не зміниться.

Я намагався якось розкрутити двигун до 7200 об / хв, але наскільки пам'ятаю не вийшло у мене, можливо причина криється на програмному рівні.

Дана схема не розрахована на підключення двигуна з середньою точкою, середня точка потрібна лише для зручного вимірювання напруги на обмотці для зворотного зв'язку, а у мене немає взагалі зворотного зв'язку.

Якщо ви хочете стабільності спробуйте краще використовувати спеціалізовані драйвери типу TDA5140, TDA5141