2023年7月30日日曜日

自作CPUで遊ぶ 3

ZUMI32でHDD用のスピンドルモータを制御してみた。使用したモーターはジャンクのHDDから抽出したやつで電極が4つある。各電極間の電気抵抗を測ると1つの電極に対して他の3つの抵抗値が同じになるのでコイルはスター型の接続になっているようだ。 FPGAの出力でモーターのコイルを直接ドライブ出来ないので、Power FETを介してドライブした。ちょうど手持ちにSanKenのFKI10531というFETがあった。このFETはVGS(th)が2.0V (typ)なのでFPGAで制御するのに都合が良い。
3相モーターなので駆動は2つのコイルを同時にONにしその状態を順繰りに切り替えていく方式にした。CPUからの制御はタイマー割り込みを使用して割り込みハンドラ内で行うようにした。 何発のパルスでモーターが1回転するのか不明だったので割り込み周期を1秒にしてパルス数と回転の関係を見たところ12個のパルスでモーターが1回転することが判った。 市販のHDDの回転数は5400rpm〜7200rpm位のようだが、今回使用するモーターが載っていたHDDの回転数は不明だ。仮に5400rpmとすると1秒で 5400÷60 = 90 回転 (90Hz、11.1ms)となる。 このモーターを5400rpmで回すには 90Hz × 12 = 1080Hz 、ほぼ 1ms 周期でパルスを発生させる必要がある。つまり、割り込み周期は1msだ。 実際に、その周期でモーターを駆動してみると脱調して回らなかった。パルスモーターと同じように台形駆動(最初は低速で駆動し徐々に回転数を上げていく)が必要なようだ。 色々試してみたところ、パルス周期を30msecから初めて徐々に周期を短くしていくやり方で2.1msecまでは駆動できた。しかし、それ以下にすると脱調してしまう。 円板の有無でも変わるのかも知れない。
CPUの方はまったく問題無い。普通に使えている。

0 件のコメント:

コメントを投稿

自作CPUで遊ぶ 25

まだ制御ソフトが完成していないので今まではスピンドルを移動するために一々簡単なプログラムを書いて移動させていたのだが、非常に面倒なのでCNCペンダント的なものを作ることにした。 右側の縦に2つ並んでいるスイッチ...