ステッピング・モーター コントローラー [L6470] のテスト


 製作依頼の仕事で、ステッピング・モーター[SM-42BYG011-25]とコントローラー[L6470]のセットを預かりました。
 ステッピング・モーターは、これまで用途が無かったので、初めて扱います。

 コントローラー[L6470]には、モーターに対する詳細な動作設定と、簡単な命令で各種の動作を行わせる「運用コマンド」が搭載されており、このコマンドをSPI通信でコントローラーに送るだけで、回転やステッピング動作を行わせる信号が自動的に生成されて、モーターを駆動してくれます。
 マイコンのTimerを駆使して駆動パルスを出すような難しい操作は、すべてコントローラーが行ってくれます。

 ステッピング・モーター自体の知識が乏しいため、テストを行いながら少しずつ理解して行きたいと思います。


L6470の日本語マニュアル(データシート)が見つからないので、私的に翻訳してあります。
 L6470 日本語マニュアル   英文の原本 l6470 
 
個人で使用するために翻訳した物を掲載しておりますので、翻訳間違いや誤字による、
いかなる損害にも責任を負いません。




回転数の測定

コマンドの動作テスト

モーター裏面のコントローラ基板

通過型 フォト・インタラプタ

フォト・センサーの通過

タイミングプーリー
40歯 穴径:5mm

プーリーの下部に0.6mmの
メッキ線を取り付け


L6470 コマンドの動作テスト映像

 1. [Gountil]コマンドで、モーターをHOME位置に移動させる
 2.[Run]コマンドで、正方向に30000の速度で定速回転をさせる。
 3.[Run]コマンドで、逆方向に10000の速度で定速回転をさせる。
 4.[Softstop]コマンドで、減速期間の後にモーターを停止する。 (保持トルクあり)
 5.[Gohome]コマンドで、HOME位置にモーターを持って行く。
 6.[Goto]コマンドで、6400の位置へモーターを動かす。
 7.[Goto]コマンドで、12800の位置へモーターを動かす。
 8.[Goto]コマンドで、19200の位置へモーターを動かす。
 9.[Goto_dir]コマンドで、逆方向に6400の位置へモーターを動かす。
10.[Goto_dir]コマンドで、正方向に41600の位置へモーターを動かす。
11.[Softhiz]コマンドで、減速期間の後にブリッジをハイ・インピーダンス状態にする。 (保持トルクなし)



ステッピング・モーター コントローラー [L6470] 動作テスト・プログラム
 
回 路
回 路 図  PDF版 L6470_Test_Cir.pdf
 
   注意! この図面を使用した、いかなる損害にも責任を負いません。

1.電源
 ・5Vと12VのACアダプターから電源を供給します。
  (5VはAVRマイコンとコントローラ[L6470]用、12Vはステッピング・モーターの駆動用)
  (5Vは1A程度、12Vはモーターの仕様により、3A rms・ピーク 7A)

2.AVRとクロック
 ・AVRマイコンはATmega328P-PUを使用し、クロックは16MHzの水晶発振子で動作します。
 ・ISP端子は、AVRマイコンにプログラムを書き込む際に、書込機を接続するために使用します。
  (通常動作中は、ISP端子を使用しません)

3.LCD表示器
 ・「ACM1602K-NLW-BBW」 白色バックライトの、16文字×2行キャラクター表示モジュールを使用。
 ・液晶のコントラストは、10KΩの半固定抵抗器で文字が見やすい位置に調整します。

4.操作スイッチ
 ・押しボタンスイッチは、現在使用していません。

5.ステッピング・モーター
 ・モーターは、「42mm ステッピングモータ 12V 2相」を使用。
 ・コントローラは、Strawberry Linux製の「L6470 ステッピングモータ・ドライバキット」を使用。
 ・モーターの底面にコントローラ基板が取り付けできるので、とてもシンプルです。
 ・フラットケーブルでマイコンと接続し、モーター電源(12V)は別系統で接続します。
 ・コントローラ基板の[SW]端子に、フォトインタラプタからの信号を入力します。
 
 ・秋月電子の「L6470使用 ステッピングモータードライブキット」でも動作したとの連絡を頂きました。
  (※コネクターのピン配置(番号)が違うので注意して下さい)

6.通過型フォトインタラプタ
 ・通過型フォトインタラプタ「CNZ1023」を、アルミ板とジュラコン・スペーサーでモーターに固定します。
 ・モーター軸に取り付けるプーリーに、0.6mmのメッキ線を取り付けて、光センサーを遮るように
  動作させます。
 ・これにより、電源の起動時や、手でモーターを回してしまっても、確実にHOME位置を認識することが
  できます。

7.シリアル入出力 (USB-シリアル変換) (任意で取り付け)
 ・パソコンに接続して詳細を見る必要がない場合は、このモジュールは不要です。
 ・USBシリアル変換モジュールAE-FT234Xに「USB マイクロ B メス」コネクターがありますから、
  「USB A オス−マイクロ B オス」ケーブルでパソコンに接続します。
 ・通常、USBコネクターにケーブルを差し込むとパソコンにドライバーが自動でインストール
  されますが、動作しない場合はモジュールに付属の説明書にしたがって下さい。

 
プログラム
 
 ・コマンドのテストプログラムです。
プログラム  テキスト形式 ソースファイル  L6470_Test_001.TXT
 BASCOM-AVR用 ソースファイル  L6470_Test_001.bas
  
注意! 著作権は放棄しておりませんので、販売や配布目的での使用は絶対にしないで下さい。
       (記事の無断転載を除き、個人での使用は可能です。 改変、自作品の掲載、リンクもご自由に。)

1.初期設定
 ・AVRのポート設定、SPI通信の設定、LCDの設定、そして各種モーターの仕様に合わせて、
  モーターの特性をコントローラー[L6470]に設定します。
 
 ・テストプログラムでは、モーターを3台まで接続できるようにしてあります。
  (注.モーターを1台しか所有していないため、複数台のテストは行っておりません)
 ・/CS1、/CS2、/CS3信号を、それぞれのモーターの/CS端子に接続します。
 ・/CS以外の信号は、3台のモーター共、並列に接続します。
 ・プログラム内の変数「Mselect」に、1〜3の値を入れてから各コマンドを実行します。

2.メイン処理
 ・動作テストのためのプログラムです。
   1. [Gountil]コマンドで、モーターをHOME位置に移動させる
   2.[Run]コマンドで、正方向に30000の速度で定速回転をさせる。
   3.[Run]コマンドで、逆方向に10000の速度で定速回転をさせる。
   4.[Softstop]コマンドで、減速期間の後にモーターを停止する。 (保持トルクあり)
   5.[Gohome]コマンドで、HOME位置にモーターを持って行く。
   6.[Goto]コマンドで、6400の位置へモーターを動かす。
   7.[Goto]コマンドで、12800の位置へモーターを動かす。
   8.[Goto]コマンドで、19200の位置へモーターを動かす。
   9.[Goto_dir]コマンドで、逆方向に6400の位置へモーターを動かす。
  10.[Goto_dir]コマンドで、正方向に41600の位置へモーターを動かす。
  11.[Softhiz]コマンドで、減速期間の後にブリッジをハイ・インピーダンス状態にする。 (保持トルクなし)
 ・それぞれのコマンドは、日本語マニュアルと、下記ライブラリの記述を参照して下さい。
 ・各自で自由に変更して、動作のテストを行って下さい。
 
 ・テスト・プログラムでは、[Gountil]コマンドを[Softstop]で終了させているため、センサーが
  HOME位置の検出後に、モーターが少しオーバーランします。
  (CONFIGレジスターの[SW_MODE]を[1]にしないと、HOME位置で割り込みが発生して、定速回転が
   できなくなるため)
 ・その後、[Gohome]コマンドで正確なHOME位置に戻しています。
 ・[Gountil]コマンドを[Hardstop]で停止させるには、下記のように[SW_MODE]ビットを制御して下さい。
Hardhiz
Setparam &H18 , &H2E88
Gountil 0 , 0 , 10000
Cls : Lcd "Gountil(0,0,10000)"
Busycheck
Wait 2
Hardhiz
Setparam &H18 , &H2E98
'直ちにブリッジをハイ・インピーダンス状態にする。 (保持トルクなし)
'レジスター[18h] CONFIGレジスターの[SW_MODE]を[0]にする。
'SWがオンになるまで(Spd)の速度で(DIR)方向に動作を実行。
'
'モーターがコマンドで指定した動作状態に至るまで待つ。
'LCD表示用の待ち時間。(設置は任意です)
'直ちにブリッジをハイ・インピーダンス状態にする。 (保持トルクなし)
'レジスター[18h] CONFIGレジスターの[SW_MODE]を[1]にする。
   注.CONFIGレジスターは、ブリッジがハイ・インピーダンス状態でないと書き込みができません。

3.コマンド・ライブラリ
 ・「* L6470の運用コマンド サブルーチン *」以下の行が、コマンドを制御するライブラリのブロックです。
 ・通常のプログラムでは、これ以下の行の削除や変更をしないで下さい。

コ マ ン ド 実 行 内 容
Mnop 何も実行されません。
Setparam [ADR , Value] アドレス(ADR)のレジスターに(Value)の値を書き込みます。
Getparam [ADR] アドレス(ADR)のレジスターに格納された値を返します。
  (Value = 読み出し値)
Run [DIR , Spd] 目標速度(Spd)とモーターの方向(DIR)を指定して、
定速回転をさせます。   ([1]=正方向 , [0]=逆方向)
Stepclock [DIR] デバイスをステップ・クロック・モードにして、方向(DIR)を指定します。
  (外部クロックで駆動)
Move [DIR , N_Step] (DIR)方向に(N_Step)のマイクロ・ステップを行います。
  (モーターが動いているときには実行されません)
Mgoto [ABS_POS] 最短経路で(ABS_POS)の位置へモーターを動かします。
Mgoto_dir [DIR, ABS_POS] DIR方向を指定して(ABS_POS)の位置へモーターを動かします。
Gountil [ACT , DIR , Spd] SWがオンになるまで(Spd)の速度で(DIR)方向に動作を実行し、
SWオンで(ACT)ビットの動作が実行されSoftStopが起きます。
Relesesw [ACT , DIR] SWがオフになるまで最低速度で(DIR)方向に動作を実行し、
SWオフで(ACT)ビットの動作が実行されHardStopが起きます。
Gohome HOME位置にモーターを持って行きます。
Gomark MARK位置にモーターを持って行きます。
Resetpos ABS_POSレジスタをリセットします。 (HOME位置を決めます)
Resetdevice デバイスを電源投入時の状態にリセットします。
Softstop 減速期間の後にモーターを停止します。 (保持トルクあり)
Hardstop 直ちにモーターを停止します。 (保持トルクあり)
Softhiz 減速期間の後にブリッジをハイ・インピーダンス状態にします。
(保持トルクなし)
Hardhiz 直ちにブリッジをハイ・インピーダンス状態にします。 (保持トルクなし)
Getstatus STATUSレジスターの値を返します。 (Status = レジスター値)
Busycheck モーターがコマンドで指定した動作状態に至るまで待ちます。




   電子工作の部屋 Top へ 前のページへ戻る