スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

L6470で、ステッピングモーターを回す。



ちょこちょこと、秋月Arduinoもどき??を使ってストロベリーリナックスのL6470ステッピングモータードライバ基板で56角のユニポーラタイプのステッピングモーターをバイポーラ接続して回してみています。

プログラミングなんて、遠い過去のもの。
さっぱりわからないところからのスタートです。

Arduinoのスケッチ?は、とても公表出来る代物ではなく、只々SPIにて、8ビットづつ、L6470のコマンドを送っているだけ。。なので、8ビットのデータがずらずらと並ぶみっともないものです。。

ドライバ基板には、LEDなんて気の利いたものはないので、せっかく、オープンドレイン出力として、Busy、とFlagがあるので、取り付けてみました。
参考にしたのは、L6470のEVALボードの回路図です。
STMicroのEval6470Hのページのデザインサポートのタグの中にあります。
LEDがないと、モータードライバの状態がさっぱりわかりません。。

また、スイッチ類も全く無いので、リセットスイッチと、スイッチピンに繋がるスイッチも取り付けてみました。


モーターはかつて秋月電子で販売されていた、中型ステッピングモーター。。


かなり静かに回ります。
動画は無音ではありません。


ところ、で、動画の人形、正面向いてくれませんね。。





2012/11/13追記。

動画での初期設定からの変更してあるパラメーターを記しておきます。

ACC(加速係数)0x220
DEC (減速係数)0x220
MAX_SPEED(最大回転スピード)0x24
KVAL_HOLD(モーター停止中の電圧設定 0xB
KVAL_RUN(モーター低速回転中の電圧設定) 0x40
KVAL_ACC(加速中の電圧設定) 0x6c
KVAL_DEC(減速中の電圧設定) 0x6a
INT_SPD(補間を開始する回転数)0X3e8
ST_SLP(補間の傾き)0XBC
FN_SLP_ACC(加速最終時の傾き) 0xFF
FN_SLP_DEC(減速最終時の傾き) 0X28
OCD_TH(オーバーカレントスレッショルド)0xF
STALL_TH(ストール電流スレッショルド) 0X7F
FS_SPD(フルステップ駆動に切り替える回転数) 0X3FF

です。

ストロベリーリナックスの説明書の数値はストロベリーリナックスで販売されているモーターの数値です。
電圧設定のKVAL値は、モーターの抵抗値によって違うので気をつけてください。

このドライバIC、使いこなせれれば相当なことができそうなのですが、チップ自体が小さいのでとても熱を持ちやすいです。
私は画像のような電源を使い、電流値を見ながら、チップの温度を確認しながら数値を上げてます。
最大回転スピードを出そうとか、あんまり考えてない設定数値です。


今のところ、CNCマシンでの使用はちょっと難しそうなので、今後出るL6480の為のDSPINコマンドの練習のつもりで作動させてます。

ようやく、STMicroから放熱しやすいパッケージのL6470PDRが出荷され始めたようなので、ストロベリーリナックスさんがL6470PDR搭載のステッピングモータードライブ基板を発売してくれることを勝手に期待しています。。
また、L6480マイクロステッピングFETドライバICのブレイクアウトボードの発売も勝手に期待してますぅ。。



私が参考としているのは、基本的にはL6470のデータシートです。
あとは、SparkfunのL6470ドライバ基板のページにあるExample Sketchです。
プログラミング上のハードウエアの抽象化ってのに、なかなか馴染めなく、ライブラリ自体を追ってコマンドそのものを見つけて直接書き込んでます^^;


また、BEMF補間の傾き (ST_SLP、FN_SLP_ACC、FN_SLP_DEC)はいい加減な数値です。。

CNCマシン駆動用であれば、現状、このL6470ステッピングモータードライバICよりも、サンケン電気のSLA7078とか、東芝のTB6560AHQを使ったほうが、簡単で安いです。



11/14追記。。
STMicroのL6470のページのdSPINFirmware_LibraryにはSTM32_VL_Discovery用のFirmwareもはいっているようです。
私自身、STM32は上手に使えないので試していませんが、Arduinoを使うよりも安く済むかも。。








スポンサーサイト

テーマ : 自作・改造
ジャンル : コンピュータ

コメントの投稿

非公開コメント

高速回転するにはどうしたら?

はじめまして、まっちゃんと言います。
L6470とL6480で60角のステッピングモーター(ミネベアGT0100)を回そうとしているのですが、
L6470では回るようになったのですが、20rpm(モーター側では200rpm)以上の回転数で回すと
脱調します(TT)
パラメーター設定以外で脱調の原因となるところはありましたでしょうか?

また、L6480ではモーターはうんともすんともいいません。
波形と見てみると出力がされておらず、ステータス情報を見たところ、エラーフラグが出ています。
(STEP_LOSS_A,B、OCD、ADC_UVLO)
エラーが出る原因が分からず、行き詰っております。
ADCについてはADC_INには1.7Vを入力していますが、ADC_OUTは0になっています。

参考となる見解がありましたら、ご教授いただけませんでしょうか。
宜しくお願いしますm(__)m

Re: 高速回転するにはどうしたら?

書き込み有り難うございます。
メールアドレスが記載されていたので、直接メールさせていただきました。
よろしくお願い致します。

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

管理人のみ閲覧できます

このコメントは管理人のみ閲覧できます

L6480のストール検出機能について

はじめて書き込みさせていただきます。

このHPはCNCリューターを製作する際、大変参考にさせていただきました。

CNCリューターも無事完成し、次なる目標がステッピングをサーボの様に動かしたいのです。
具体的には、位置制御させるよりも、YOUTUBEで視聴できる『TRINAMIC - stallGuard - Demo』の様な動きをさせたい。
そこで、ストロベリーリナックスのドライバがストール検出可能と知り、色々と調べては見たのですが、
中々、知りたい情報にはたどり着けず・・・。

実際に動かされている方に、直接聞いた方が早いと思った次第です。

構想としては、ストールをアラーム出力させ、アラームを受け取ったPICが、速度を落とす信号を返し、トルクを上げる。これを一定時間ごとに繰り返す事で、止まらず回転し続けるのでは?と考えているのですが、実際には難しいのでしょうか?

不躾な質問でありますが、ご返答頂けたら幸いです。

Re: L6480のストール検出機能について


アシリン様
書き込み有難うございます。

L6470を回してみてますが、結論からゆうとL64x0でのCNCコントロールを諦めました。

理由としては

STEP/DIRインターフェースで使おうとすると、間に設定用のマイコンが必要になる→IC自体は秋月等で安価に入手できるけどマイコン込となると他にもSTEP/DIRで動く1/128マイクロステップのICがある。→あんまりメリットない。

また、モーターの品番が変わるたびに設定パラメーターを「探らなければ」ならないので有り物のモーターを使う私としてはとても使いづらい。

SPI通信のコマンド送信にての制御では、一定の作動をさせるには動作をマイコンにプログラムすれば良いのですが、NCコントロールとして使おうとすると、モーションコントローラーのモーションコントロール部分を作成せねばならず(要するにCNCコントロールソフトウエア自体を作成)私の力量では無理。。

とゆうことです。

リアルタイムな制御に使用するには、なかなかにひねりを効かせたプログラムが必要になるのではないか?と思います。

ソレを前提として。。



> CNCリューターも無事完成し、次なる目標がステッピングをサーボの様に動かしたいのです。
> 具体的には、位置制御させるよりも、YOUTUBEで視聴できる『TRINAMIC - stallGuard - Demo』の様な動きをさせたい。
> そこで、ストロベリーリナックスのドライバがストール検出可能と知り、色々と調べては見たのですが、
> 中々、知りたい情報にはたどり着けず・・・。

マイコンの自体にモーションをプログラムするのであれば、あのような動きはL64x0でも出来ないことはないと思います。ただ、LinuxCNCやMachなどモーションコントローラーからのNC制御中に、となるとなかなかむずかしいのでは?と思います。


Reprap系の方でL6470を使えないかと頑張られてる方も見えますが、コマンドキューイングが、、と言っておられました。。



TrinamicのIC、入手してますが、まだ試してません。
StallGuard自体もⅡとなり、更に1チップで3A程度まで流せる物も出ています。
また、設定自体はSPI通信で、となりますが、直接Step/Dirの入力が可能でL64x0よりも使いやすいのではないか、と思っております。
Digikey等で入手可能です。


> 構想としては、ストールをアラーム出力させ、アラームを受け取ったPICが、速度を落とす信号を返し、トルクを上げる。これを一定時間ごとに繰り返す事で、止まらず回転し続けるのでは?と考えているのですが、実際には難しいのでしょうか?


反応するのにどれくらいの時間が必要か、によります。
もしかしたらサーボモーターの様にロータリーエンコーダーを使用した位置制御、脱調検出の方が簡単なのかもしれません。

上記のようにLinuxCNC等CNCコントロールソフト(ハード)を使用しての場合、モータードライバ自体がパルスを受け取って作動しているのでストール検出してその作動をしている間のパルスをカウント、バッファリングしてその分遅延させての作動となるような気がします。その際、1軸分ではなく、3軸(又は4軸)分同じだけ、遅延させないと、、、、。。

CNCコントローラーじゃなく、マイコンにて同じ作動を繰り返しさせるような用途では、この限りではありません。。



> 不躾な質問でありますが、ご返答頂けたら幸いです。
> このHPはCNCリューターを製作する際、大変参考にさせていただきました。


いえいえ、書き込みありがとうございます。
またこのブログ、閲覧数は多いのですがリアクションがほぼ皆無なので、このようにご連絡頂けると、とても励みになります。

私自身、オープンソースなものを利用したら、先人達への感謝の意を込めて更に先へ、と、このブログを書いております。
問題がないのであれば、作成されたCNCマシンをインターネット上に公開してみてはいかがでしょう。。




では。
あきらひとし。

早速の返答ありがとうございます

稚拙な質問に、詳細かつ明瞭にお答え頂き感謝します。

基本的にステッピングモーターでサーボの様に動作させる事自体がナンセンスなのは承知の上ですが、
なんとか、チャレンジしてみようと思います。

また、製作したCNCリューターは、恥ずかしながら『卓上CNCリューター』で動画をUPしております。
一応、各軸50μm程度の再現性を持たせているので、手加工よりマシな程度ですが、機能しております。

また、お邪魔させていただきます。

Re: 早速の返答ありがとうございます

> 稚拙な質問に、詳細かつ明瞭にお答え頂き感謝します。

いえいえ。

> 基本的にステッピングモーターでサーボの様に動作させる事自体がナンセンスなのは承知の上ですが、
> なんとか、チャレンジしてみようと思います。

そんな事ゆったら、材木でCNCルーターを構築するこのブログ自体がナンセンスです(笑)

そもそも、駆動方式が違うだけで、サーボモーターもステッピングモーターも基本正弦波な電流を使用する同じモーターだと考えてます。

ステッピングモーターでリニアエンコーダ-を使ったフィードバックした記事もこのブログにありますが、ある意味、オープンループでも結構な正確度で制御できるステッピングモーターをあのように使うのは、、。。

ステッピングモーターの駆動自体、超アナログなんだけど、見た目上デジタル的(あくまで、的)に制御できるので、通常のモーター制御よりもプログラムからコントロールするのには解りやすいかも、しれません。



私はマイコン系とゆうかプログラム自体が苦手なので、正しいことを言っているわけではないと思いますのでがんばってみてください。


> また、製作したCNCリューターは、恥ずかしながら『卓上CNCリューター』で動画をUPしております。
> 一応、各軸50μm程度の再現性を持たせているので、手加工よりマシな程度ですが、機能しております。


この動画でしょうか?
http://youtu.be/HocfaOMFjS0

このブログのどこをどう参考にしたらこんな立派なマシンの構築に繋がるか理解に苦しみます(笑)
そのうちに、このブログにて紹介させていただいて宜しいでしょうか?




> また、お邪魔させていただきます。

よろしくお願い致します。。

では。

ストール検知できました

以前、ストール検知の件でお世話になりました。

あの後、直ぐ購入し、色々実験した結果、ようやくストール検知まで辿り着けました。

かなりシビアな設定が必要になりますが、思った様に動いてくれています。

現状のパラメータを残します。
ACC 0x05 0x00 0x50
DEC 0x06 0x00 0x50
MAX_SPEED 0x07 0x00 0x50
MIN_SPEED 0x08 0x00 0x00
KVAL_HOLD 0x09 0x20
KAL_RUN 0x0A 0x20
KVAL_ACC 0x0B 0x20
KVAL_DEC 0x0C 0x20
INT_SPEED 0x0D 0x00 0x00
ST_SLP 0x0E 0x35
FN_SLP_ACC 0x0F 0x40
FN_SLP_DEC 0x10 0x70
OCD_TH 0x13 0x15
STALL_TH 0x14 0x02
FS_SPD 0x15 0x00 0x35
STEPMODE 0x16 0x01
ALARM_EN 0x17 0xFF
GATECFG1 0x18 0x00 0x57
GATECFG2 0x19 0x89
CONFIG 0x1A 0x1E 0x81

ハード内訳
ストロベリーリナックス製L6480ドライバ
FET STD25NF10L
モータ ST-57BYG076-3004D(3A1Ω)

同じ機器を使用しても、モータの抵抗や巻線数で微妙に変わる様なので、他ではストール検知出来ない場合もあるかも知れませんが、脱調して空回りするような事はなくなりました。
回転数が上げれないのが残念ですが(350rpm程度)、駆動電圧の調整で、思いの他パワーが出るので満足しています。

あと、動画の件はまさにそれです。
宣伝の様な気がしてアドレスは載せませんでした。

近い内にストール検知の動画もUPしようと思います。

以上、報告まで。

Re: ストール検知できました

アリシンさんこんばんは。
報告有難うございます。L64x0にて検索で訪問される事も多いようなので、参考になるのでは?と思います。

私は設定を詰める前に、早々と諦めてしまいましたが時間ができたら再度挑戦してみようと思います。


> 同じ機器を使用しても、モータの抵抗や巻線数で微妙に変わる様なので、他ではストール検知出来ない場合もあるかも知れませんが、脱調して空回りするような事はなくなりました。
> 回転数が上げれないのが残念ですが(350rpm程度)、駆動電圧の調整で、思いの他パワーが出るので満足しています。

バイポーラ駆動の低回転域は結構なトルクが発生しますよね。
その代わり、モーターコイルからの発電された電流を電源に戻しているので電源電圧、電流等々お気をつけください。。

金工加工用のフライス用途であれば、低回転数でも十分に使えるのでよいかもしれませんね。


> あと、動画の件はまさにそれです。
> 宣伝の様な気がしてアドレスは載せませんでした。

切削用の冷却ノズル良いですね!切削油ダバダバできない環境下ではとても有用だと思います。
また、ノズルからの少量の送り等々は、プラスチック成型以外の3Dプリンタに使用できるのでは??


> 近い内にストール検知の動画もUPしようと思います。

拝見させていただきました。。
凄いっす!!

ブログの記事にさせていただきますね。。
ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。