Дело было вечером, делать было нечего. Разбирал коробки с разной всячиной, и нашёл древний флопик.
Выкинуть вроде жалко, а применить негде. Решил просто немного поиграться, а именно — запустить мотор от него. Чтобы достать мотор, откручиваем 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».
Прикрепленные файлы:
- Motor_JCM5044_Zlodey.zip (226 Кб)