Подключение и запуск мотора от FDD (JCM5044)

Дело было вечером, делать было нечего. Разбирал коробки с разной всячиной, и нашёл древний флопик.

Выкинуть вроде жалко, а применить негде. Решил просто немного поиграться, а именно — запустить мотор от него. Чтобы достать мотор, откручиваем 4 винта

Добрался до мотора

Мотор бесколлекторный, с датчиками Холла. В качестве драйвера использована микросхема JCM5044, даташит на которую я так и не нашёл.

Так как даташита нет, а флопик был рабочий, я подключу логический анализатор к выводам мотора, и посмотрю как работает управление.

Подпаиваю провода. Для работы мотора используются следующие выводы шлейфа:

  • GND (общий)
  • V (питание)
  • SP
  • CLK
  • I/D
  • MON

Остальные выводы идут на концевики, они меня не интересуют.

Цепляю логический анализатор (обзор Saleae Logic).

Если вставить дискету (или замкнуть концевик), мотор крутится в течении 1…2 секунд. Этого более чем достаточно, чтобы посмотреть на сигналы управления. Приступим.

Здесь видно, что на выводе «SP» постоянно висит 0. Для чего нужен этот вывод — пока не понятно, разберусь позже. На выводе «I/D» присутствуют импульсы — один импульс на один оборот вала. Если мотор крутится — на выводе «MON» висит 0, если не крутится — висит 1. Также когда мотор крутится, на выводе «CLK» присутствует тактовый сигнал частотой 1 МГц.

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

На выводе «I/D» теперь нет импульсов, т.к. вал заблокирован. Вывод «MON» периодически «дёргался», пытаясь растолкать мотор. Синхронно с работой вывода «MON» появлялась генерация тактовых импульсов на ножке «CLK».

Для начала экспериментов информации достаточно. Отпаиваю шлейф, подключаю мотор к макетной плате с микроконтроллером ATmega32.

Так как контроль оборотов вала мне не нужен, вывод «I/D» не подключаю. Получается 2 провода питания и 3 провода управления. Подключение ATmega32 <-> Motor JCM5044:

  • GND <-> G
  • VCC <-> V
  • PB1 <-> SP
  • PB2 <-> MON
  • PB3 <-> CLK

Итак, для работы мотора нужно подать тактовый сингал 1 МГц на вывод CLK, а также прижать на землю вывод «MON». Затем если мотор начнёт крутиться, попробовать поменять состояние вывода «SP». По-быстрому пишу код (его можно скачать в конце статьи), прошиваю микроконтроллер, и вуаля — мотор крутится. Теперь пробую поиграться с выводом «SP». Оказалось, что этот вывод отвечает за скорость вращения вала. Если SP=0, тогда вал вращается со скоростью 300 об/мин. Если SP=1, тогда на валу 360 об/мин. Оно и логично — «SP» означает «Speed». Далее я попробовал разгонять/замедлять мотор, подавая на него различные тактовые частоты. С повышением скорости проблем не было, мотор крутился быстро. А вот с пониженными оборотами не всё так гладко — вращение было не совсем плавным, с небольшими рывками.

Подведу итог. Чтобы включить электронику мотора, нужно установить MON=0, при этом ротор начинает притягиваться катушками, но не вращается. Для того, чтобы мотор начал вращение, нужно подать тактовый сигнал на вывод «CLK». Скорость вращения зависит от подаваемой тактовой частоты, а также немного меняется при помощи вывода «SP».


Прикрепленные файлы:

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

Ваш адрес email не будет опубликован.