« M65/M66銀河 | メイン | M83(南の回転花火銀河) »

2018年3月24日 (土)

モーターフォーカサーのプログラム

私のモーターフォーカサーの記事で質問があったので、Ardiunoのプログラムについて説明とコードをアップします。

私のモーターフォーカサーの構成は、

モーター・・・SPG20(ユニポーラステッピングモータ 減速ギア付)

モータードライバー・・・L6470ドライバーキット(秋月電子製)

CPU・・・ATMega328(Arduino uno互換)

表示器・・・16桁×2行 LCDディスプレイ

と言うものです。

hayak001さんがもし私と同じモータードライバーを使っていて、動かないのであれば、たぶんL6470をコントロールするSPI通信かL6470のコンフィグを含めた初期化部分で問題があるのだと思います。

初期設定の部分です。

=============================================

  digitalWrite(RESET_Pin,HIGH);          // L6470リセットピンを通常に設定
  delay(200);                            // 念のための遅延
  digitalWrite(RESET_Pin,LOW);           // L6470リセット信号の送り出し
  delay(200);                            // 念のための遅延
  digitalWrite(RESET_Pin,HIGH);          // L6470リセットピンを通常に設定
  delay(200);                            // 念のための遅延

// L6470 初期設定の書込み
  L6470_RegW_2byte(0x18,L6470_CONFIG);   // L6470 CONFIG reg. set
  L6470_RegW_2byte(0x05,0x008a);         // 回転加速度 → 80rpm/sec2
  L6470_RegW_2byte(0x08,0x1000);         // 最低回転数 → 0 低速回転時最適化 ON
  L6470_RegW_2byte(0x07,FAST_SPD);       // 最大回転数
  L6470_RegW_byte(0x09,0xff);            // 停止時の最大電圧→12.0V
  L6470_RegW_byte(0x0a,0xff);            // 定速時の最大電圧→12.0V
  L6470_RegW_byte(0x0b,0xff);            // 加速時の最大電圧→12.0V
  L6470_RegW_byte(0x0c,0xff);            // 減速時の最大電圧→12.0V
  L6470_RegW_byte(0x13,0x0f);            // 過電流しきい値→ 6A
  L6470_RegW_byte(0x14,0x7f);            // ストール検出のしきい値→4A
  L6470_RegW_byte(0x16,0x05);            // マイクロステップ→1/32

====================================================

ここで、L6470_CONFIG =  0x0fa0としています。

英語のマニュアルに悪戦苦闘した結果で、正しいのかどうかわかりませんが、とにかく支障なく動いています。

参考になるかどうかわかりませんが、プログラム全体をアップしておきます。

SPI通信の方は、下のプログラムを見てください。

Focuser.zipをダウンロード

しろうとのプログラムですので、誤りもあるかもしれませんが、一応コメントもつけていますので、参考になればうれしいです。

トラックバック

このページのトラックバックURL:
http://app.blog.bbiq.jp/t/trackback/562191/34113065

モーターフォーカサーのプログラムを参照しているブログ:

コメント

コメントを投稿

コメントは記事の投稿者が承認するまで表示されません。