はじめに
「A4988と同じように配線したのに、L6470がびくともしない…」そんな経験はありませんか?
実は、L6470はA4988のようなシンプルなパルス制御ではなく、「SPI通信」によるコマンド制御を前提とした高機能ドライバーです。今回は、私が実際にハマったポイントをもとに、L6470を動かすために絶対必要な「初期設定」と「制御の違い」を解説します。
私は新品購入したL6470が初期不良だったのではと疑いましたw
原因は――
L6470が“デイジーチェーン前提のSPIデバイス”だったことでした。

デイジーチェーンとは?
複数の電子機器や周辺機器をケーブルで数珠つなぎに接続し、信号を順番に伝達する方式です。この名前は、ヒナギク(デイジー)の花を繋ぎ合わせた花冠に似ていることに由来しているそうです。
メリットとしては
配線の簡素化: 複数の機器を少ないケーブルで接続できます。
コスト削減: 複雑な分配器が不要なため、導入コストを抑えられます。
A4988 と L6470 の根本的な違い
| 項目 | A4988 | L6470 |
|---|
| 制御方式 | STEP/DIRパルス | SPIコマンド制御 |
| 必要信号 | STEP, DIR | MOSI, MISO, SCK, CS |
| 速度制御 | 外部マイコンが生成 | 内蔵モーションエンジン |
| デイジーチェーン | 非対応 | 対応(前提設計) |
| 設定方法 | ピン設定 | レジスタ書き込み |
A4988 の世界
A4988 は非常にシンプルです。
GPIO.output(STEP, HIGH)
GPIO.output(STEP, LOW)
→ パルスを送れば回る
→ 直感的
→ 動かなければ配線ミスの可能性が高い
L6470 の世界
L6470 はまったく思想が違います。
・SPIでレジスタを書き込む
・MOVEコマンドを送ると内部で加減速制御
・さらに「デイジーチェーン前提」
実際にハマったポイント
私はこう書いていました:
spi_write([0x16, 0x07])
正しいはずです。
しかし動かない。
原因は:「L6470は1回のSPI転送を「1デバイス分」として扱う」
つまり、
spi.xfer2([0x16, 0x07])
これは
・1台目に0x16
・2台目に0x07
と解釈される
私は1台しか使っていないのに、内部的には“2台分の転送”になっていた。
正しい書き方
spi_write([0x16])
spi_write([0x07])
コマンドとデータを分ける。
これで動いた瞬間、理解しました。
まとめ(初心者がハマる理由)
A4988経験者ほどハマります。
なぜなら:
・「動くはず」という前提がある
・SPIは“普通のSPI”だと思ってしまう
・デイジーチェーン前提だと気づかない
結論
L6470は悪くない。
自分が思想の違いを理解していなかっただけ。
同じような罠にかかった人に、この記事が届きます様に・・・
XYテーブル製作シリーズはこちらから
- 【第0回】Raspberry PiのOSインストール完全ガイド|初心者向けにゼロから解説
- 【第1回】PythonでLEDを光らせる|GPIOの基本をやさしく解説
- 【第2回】ラズパイ+A4988でステッピングモーターを回す
- 【第3回】ステッピングモーターをmm単位で動かす|ベルト駆動の計算方法まで解説
- 【第1.5回】 A4988のVref調整手順(XYテーブル製作シリーズ)
- 【番外編】L6470が動かない?A4988と同じ感覚で使ってハマった話
- 【第4回】XYテーブル化の第一歩|X軸とY軸を2台動かす
- 【第5回】Pythonでステッピングモーターの加減速制御を実装する
- 【第6回】Pythonでステッピングモーターを2軸同時に動かす
- 【第7回】Raspberry PiでXYテーブル制御|リミットスイッチと原点復帰(Homing)の実装
- 【第8回】【Python × Raspberry Pi】XYテーブルをGUI操作する(Tkinter)
- 【第9回】Python×Raspberry PiでXYテーブルを制御するGUIを作る(原点復帰・位置表示・ソフトリミット実装)


コメント