以前に、L6470モータードライバをラズベリーパイにてドライブしようと考えたが、ステッピングモーターを駆動できないという問題があった。
今回はこれを解決する。
前回の記事にてMOSI,MISO,SCK,CS各信号をロジックアナライザーにて確認した。
ここで、ストロベリーリナックス製のL6470モジュールと秋月電子で売られているL6470モジュールとでは、ピン配置が違うということに注意すべきである。
↓これはストロベリーリナックスのL6470モジュールのデータシートから引用したものです。
↓これは秋月電子のL6470モジュールのデータシートから引用したものです。
SPIのタイミングですが、MSBを最初に送信し8bitデータを送信します。
L6470は5MHzまでのクロックに対応しています。
自分の場合は1MHzで駆動しました。
CS信号ですが、8bitごとにLOWにします。←1bitごとではありません。(送信時以外はHIGH)
※詳しくはデータシートで確認してください。
今回は秋月電子より発売されているバイポーラ型の2相ステッピングモーターを使用しましたが、ユニポーラ型もドライブできるようです。
ラズベリーパイにはCS信号が初期状態で2つ用意されているので基本SPIデバイス2つを駆動することができますが、CS信号はコマンド送信時にLOWにするだけなので、タイミングを合わせることができれば汎用ポートを使用し、たくさんのSPIデバイスを利用できそうです。
SPIのイメージとしては、マトリクス配線やダイナミック配線のような感じですね。
本題に戻りますが、ステッピングモーターが動作しなかった原因をネット上で色々と探してみましたが、あまり同じような症状の人がおらず、今回使用したステッピングモーター(ST-42BYH1004)の駆動電圧が5VということもありL6470モータードライバへの入力電圧を5Vに設定しており、これ以上では定格を超えてしまうため破損の恐れがあると自分で決めつけていました。
しかしながら、12V入力する必要があったようで12Vにしたところすんなりと動いてくれました。
ただ、ステッピングモーター固定(stop)時は最大で2A以上流れ、それなりに損失も発生するので発熱がひどいです。これは小型のヒートシンクをつけることで解決できそうです。
(12V印可後、8V程度に下げることでこの問題は解決できそうです。)