2020/10/22

MAK127 focuser Ver.2 (ハードウェア制作編)

ここでは MAK127にステッピングモータを取り付け、モータを動かす ATOMIC ステッピングモータードライバキットを接続する方法を解説します。以下のような物を作ります。



MAK127SP にステーを取り付ける

この工程、一つだけ全工程中最難関の作業があります。他の作業はそれほど大変ではありません。

最難関と言うものの、この工程では以下の写真のようにアリガタプレートの溝を利用して、アルミの中空の棒(アルミチャンネル)を切って、穴を開けてネジで挟んで取り付けるだけ!です(モータは後で取り付けます)。



材料


ここでの材料費は500円以内でしょうか?アルミチャンネルはホームセンターで見つけましたが、モノタロウにもあるようです。リンク張っておきました。

作業

  1. アルミチャンネルをカットして 26cm x2 本作成する
    ホームセンターで500円ぐらいで売っている金鋸などでカットします。
    精度は入りません。5mm ぐらいずれても問題ありません。
    切った後は怪我しないようにヤスリなどでバリを取っておいた方がいいです。

  2. アルミチャンネルに 3mm の穴を開ける
    穴の位置は端から 5mm、逆側は 75mm 程度。写真のようにネジを通します。
    これもそれほど精度は入りません。5mm 程度ずれても大丈夫です。 


    実はこの工程のどうやって穴を開けるだけが最大の難関です。ドリルがあると簡単なんですが(写真は30年モノのマキタ)。ホームセンターとかで穴開けてくれるサービスがあるなら利用してください。ちなみに二本重ねてテープで止めておいて、一度に穴を開けると位置決めが楽です。写真ではラフなやり方してますが、皆さん怪我にはご注意を。


  3. アルミチャンネルをアリガタプレートの溝に入れ、ねじ止めする
    特に難しいことは無いと思います。指定のネジの長さにするとアリガタプレート からはみ出すことなく、望遠鏡を例えば AZ-GTi に取り付ける時にも干渉しません。逆側も同様です。アルミチャンネルの幅と深さはこの溝に収まれば良いので若干サイズが異なっても問題ありません。望遠鏡を取り付ける際にアルミチャンネルも挟み込まれることになるので、アルミチャンネル自身が外れてしまうという心配はあまり無いかと思います。

モータを取り付ける

モータにブラケットとカプラーを取り付け、MAK127SP のフォーカスノブを取り外し、モータを取り付けます。

材料


モータと望遠鏡を繋ぐカプラーを除くと 2000円もしないかと思いますが、カプラーが高い。上記のリンクの部品を合わせると 5000円ぐらいになってしまいます。

ステッピングモーターはバイポーラタイプを選択します。秋月などで見かける四角いタイプで取り付けが楽なブラケットに載るタイプを選ぶと良いと思います。奥行きは邪魔になるのでなるべく薄いものを選んで下さい。またステッピングモーターのケーブルは長めの物が付属しているとケーブルを取り付ける作業が省けます。ただモータドライバキットの脱着を考えるとコネクタタイプを選択しても良いと思います。ここでは200ステップで一周(Step angle 1.8°)の物を選んでいますが、それ以外でも後述する DRV8825 の設定で調整できるので大丈夫だと思います。
カプラーはモータと MAK127SP のフォーカスノブを接続します。大概のステッピングモーターの軸は 5mm で、MAK127SP 側は 12mm になります。先にも書きましたが他の部品と比較し、結構高めですが、サイズに合うカプラーを見つけて下さい。中にはオルダムタイプのようにバラバラになる物もありますが、後述の理由で使えません。写真左がオルダムタイプです。たまたま中古でいただいた物を使っている型番が上記になりますが、他の物でもいいと思います。モータの軸の径と、望遠鏡側の12mm で探してみてください。コチラは試していませんがお安くてサイズ的に使えそうです。

左がオルダムタイプ

ミニ金具フラットですが、後述の通りモータを挟んで取り付けるために使用します。厚みも利用しています。とりあえず3cm以上の長さがあればモータをステーに取り付けられると思います。厚み方向はブラケットで微調整できるので写真程度の厚みぐらいがあれば良いと思います。

作業

  1. モータに金具を付ける
    モータにブラケットを軽く取り付け(位置決めの後閉めます)、ブラケットに高さを合わせるための「ミニ金具フラット」を取り付けます。ミニ金具を取り付ける3x20mmのネジは硬く締め付けて下さい。あとでここの先に蝶ナットでモータを押さえつけることになるのですが、3x20mm のネジが回ってしまうと蝶ナットが回しにくくなります。そしてカプラーを取り付けます。カプラーはモータの軸が飛び出ない程度に押し込みます。

  2. MAK127SP のフォーカスノブを外す
    六角レンチを二箇所回すと外れます。オイルが付くので注意。
    金色のフォーカスを調整する棒は MAK127SP の中に押し込めるのですが、入らないようにしっかり引っ張り出しておきます

  3. ブラケットの位置を調整します
    もう一枚のミニ金具フラットを使ってアルミチャンネルを軽く挟み、MAK127SP のフォーカスを調整する棒とカプラーがすんなり入るようにネジをキツく閉めていないブラケットとモータの位置を調整し、位置が決まったらブラケット取り付けネジをしっかり閉めます。ブラケットの位置だけで調整仕切れない場合はスペーサーなどを追加するか、ミニ金具フラット以外のスペーサーで調整します。この時棒が MAK127SP に入り込まないよう注意します。カプラーが多少の取り付け位置のズレを吸収しますが、モータと望遠鏡に負荷がかからないようここはなるべく丁寧に合わせます

  4. フォーカス調整棒とカプラーの固定
    調整棒が中に入り込まないよう何かで押さえながらカプラーを押し込み固定します。

  5. モータを固定する
    モータを引っ張りながら蝶ナットを閉めてモータをアルミチャンネルに固定します。フォーカス調整棒が中に入ってしまうとピントを合わせきれなくなる場合があります。ピントが合わせられなくなったら棒がめり込んでいないか確認すると良いかもしれません。
    ちなみにオルダムタイプのカプラーは動かしている時に分離してしまって棒が中に入ってしまうケースがあるため使えません。

  6. モータのケーブルの処理
    モータケーブルは購入した時はカバーに覆われておらずバラバラになって扱いづらいので、写真にあるように100圴でも売っているようなスパイラルチューブなどでラッピングすると良いです。結構邪魔なので最初にまとめた方がいいかも。


モータードライバの取り付け

電子工作的な作業はここだけです。しかもほぼねじ止め作業。

材料


ATOMIC ステッピングモータードライバキットは今回の主役。これを使うと電子工作がほぼ不要になります。AC アダプターは 12V で、電流は 1A もあれば十分です。ATOMIC ステッピングモータードライバキットとしては 1.2A 流せますがそんなにいらないし、流しすぎるとモータがすごく熱くなります。モータが流す電流は後で調整出来るのでもっと電流値が大きいものでも問題ありません。DC ジャックケーブルは AC アダプターのジャックの径と合わせます。全部で2500円程度です。

ちなみにこれが ATOMIC ステッピングモータドライバキットの箱。小さいですよ。5cm角ぐらい。



作業

  1. ATOMIC ステッピングモータードライバキットをバラす
    カバーは横を押しながら引っ張れば取れます。バラしたらディップスイッチがあるので後で設定変えやすいように、保護のビニールが貼ってあったら剥がします。
  2. DC ジャックケーブルなどの被覆を剥く
    電子工作したことがなければ面倒に感じるかもしれませんが大した本数では無いのでカッターなどで被覆を剥いてしまいましょう。失敗したら切ってまたやり直せばいいですし。ただしワイヤーストリッパがあると凄く楽です。
  3. ケーブルを接続する
    同じモータを入手した場合は写真を参考に繋いでください。ネジを回して締めるだけですね。DCジャックケーブルは秋月のだと白色がついてる方がプラスです。私はたまたま秋月が休みの時に秋葉原に買いに行ってしまいましたが、千石電商にミノムシクリップ付きのDCジャックケーブルがあってバラして使ってます。こちらもプラス側に白いマークありました。

    他のモータを買った場合、配線の色が異なったり、そもそも配線が無い場合があります。そういう場合、配線図を見るなり、端子の記号を頼りに繋いでみてください。コイル二つのペアがあるのでそれぞれを A, B とし、コイルの両端を +/-と思って接続すれば良いです。最悪間違っても動かないだけか、逆に回るだけです。その場合は配線入れ替えてみて下さい。ただしDCジャックケーブルは間違うと壊す可能性があるので慎重に。
以上で工作的な物は終わりです。
送料は別として、全部で8000円、安いカプラーにすれば6000円ぐらいでしょうか。で、計算合ってる?コントローラーに PCを選択すれば追加で長めの USB-C ケーブルが欲しい程度で済みます。

また、コントローラの準備でモジュールの差し替えとかケーブルを挿す作業はありますがこれはコントローラーの選択のところで説明します。

材料と入手先

参考までに部品の入手先について。

秋月電子、スイッチサイエンス、千石電商、マルツエレック等で入手できるもの
  • バイポーラステッピングモーター
  • ステッピングモーター用ブラケット
  • スイッチングACアダプター12V1A
  • DCジャック付きケーブル
  • ATOMIC ステッピングモータードライバキット
など電子工作に関する物。
ショップによって扱ってる物が違ったりします。

ホームセンター、モノタロウなどで入手できるもの
  • アルミチャンネル
  • M3蝶ナット
  • M3六角ナット 
  • M3ネジ
  • ミニ金具フラット
  • カプラー
モノタロウが個人でも利用出来るようになったので、ホームセンターに行かないと入手しにくかった物が簡単に手に入るようになりましたね。





2020/10/20

MAK127SP focuser Ver.2 (概要)

初代 focuser Ver.1

試作しかけていた初代 focuser はM5Stack のコンテストが開かれるということを知り、急遽適当に完成させて応募しました(コチラ)。強豪のいる中、単純なこの作品は入賞はしませんでしたが、個人的に便利だったので、誰でもなるべく簡単に作れて、入手性が高く、低予算で、使いやすいモノ Ver.2 へと改良してみました。

初代 focuser Ver.1

NO WARRANTY (無保証)ですが、制作方法とソフトを公開していきますのでよかったら試してみてください。MAK127SP 向けとタイトルには書いていますが、モータさえ取り付けられれば他の望遠鏡にも適用できるのではないかと思います。DRV8825 を使用したフォーカサーの作例はボチボチ見かけますね。

使用している様子。サクサク使えてます。



ただ一つ問題があります。モータが出っ張るので、天頂プリズム、カメラアダプター、バローレンズなどを挟む必要があります。こんな風に。普段カメラアダプター 挟んでるのであまり気にはなりませんが。




システム構成

キーとなるデバイスは初代と同じく M5Stack社 の製品を極力使い、電子工作を極力避けるため半田付けなど面倒な作業は一切省きます。初代はモータのマウントに3Dプリンターも使いましたがこれも廃止。

メインのシステム構成は望遠鏡 (MAK127SP) + ステッピングモータ + ATOMIC ステッピングモータードライバキット+コントローラです。ATOMIC ステッピングモータードライバキットは、M5Stack 社の ATOM lite に TI 社の DRV8825 が付いたモジュールで、ATOM lite にステップパルスの生成とコマンド受信を担ってもらっています。

生成パルス数と方向のコマンドを受信すると、ステッピングモータを動作させるという仕組みです。

コマンドは Grove 端子の I2C Slave 接続と USB ケーブルからの USB-serial の二系統をサポートします。

電源電圧は 12V。このキットのモジュールは電源 12V を与えると 5V を生成するので、Grove 端子に接続したコントローラの M5Stack 等に電源を供給できるので単電源でOKです。

余談ですが初代ではその時の手持ちの ON Semiconductor 社の LV8548MC で Full step, Half step のみ実現していましたが、新たに購入した ATOMIC キットの DRV8825 だと Full step ~ 1/32 までのマイクロステップ動作が可能で、それを任意に選択できるようにしました。



ATOMIC ステッピングモータードライバキットとステッピングモータ

コントローラはエンコーダーでグリグリとフォーカス制御したかったので、これが実現できる PC (エンコーダーは無いのでマウスで)、M5Stack + PLUS エンコーダモジュールM5Stack + FacesボトムベースFaces 用エンコーダパネルの3種類が選択できます。

M5Stack や Faces を選ぶときには更に複数の選択がありますが、好みや予算に応じて選ぶと良いと思います。3種類の違いは価格と操作感です。GUI としてはほぼ同じです。価格が高い方が操作感は良いと思いますが、予算に応じてステップアップもアリでしょう。元々は Faces 用エンコーダで作っていたのですが、他に安い実現方法もあるなと手を広げてしまった次第です。

もちろんお好きなコントローラを Grove 接続したり、シリアルコマンドを他のソフトで送り込んで制御することも可能なので他のコントローラをご用意していただいても結構だと思います。

左からPLUSエンコーダ、Facesエンコーダ、PC


ではハードウェア制作編コントローラ選択編そしてソフトウェア編を順次アップして行きます。

2020/08/29

SynScan USB を作ってみた

AZ-GTi が ASCOM でコントロールできるらしいので、Windows PC に有線でつなげるようケーブル自作してみました。

Windows10 の SynScan pro で操作しているところ

最近はコンパクトにしました

作成自身はとっても簡単です。

3.3V インターフェース (TX, RX が 3.3V と言う意味)の USB シリアル変換モジュールと電話のモジュラージャックのコネクタを接続するだけ。

最初試した時には手持ちの部品と、モジュラージャックコネクタを持ってなかったので、電話線をぶっちぎって USB シリアル変換モジュールに繋げてましたが、ちゃんとした部品揃えて半田付けしました。

部品は秋月電子の通販で揃えました。送料500円かかるけど電車代(うちからだと往復でIC754円)考えると、まぁどっちでもと言う感じです。ちなみにコロナの今だと秋月の開いている時間が短いので平日は無理。

部品表

  • 6極6芯モジュラージャックDIP化キット ... 100円
  • FT234X 超小型USBシリアル変換モジュール ... 600円
  • 片面ガラスコンポジットユニバーサル基板 ... 60円
これだけ!

ケーブル類除くと上記だけ(内税)。SkyWatcher の正規品?市販品が実売 1800円 ほど(外税)。安そうに見えるけど、ケース無し、工作の手間がかかることを考えると普通の方は市販品で良いのではないかと。工作好きなら作ってください。

ちなみに USB シリアル変換モジュールは FT234X を選びましたが、Windows 用のドライバーがある(大概あるでしょ?)3.3V インターフェースならなんでもいいんじゃないかなと思います。安くて小型なのでこれ選びました。

モジュラーケーブル(電話の)は4線または6線のストレートケーブルを選ぶこと。ケーブルを間違うと FT234X が死にます。家に転がってるケーブルで十分なのですが、2線のケーブルがあったりするのでちゃんと確認しよう。最初にモジュラージャックの端子の並び調べようとテスター当てて値が変だったのでケーブルみたら2線でした orz

4線ストレート

コネクタをよーく見るとケーブルが4本出ていることと、配線の色の並びが同じなのでストレートだと言うことがわかります。

ちなみに DIP 化キットのモジュラージャックの端子の並びは AZ-GTi の取説と同じです。

取説にこんなことまで書いてある?!

基板に実装するとちょうど良い具合に線を真っ直ぐ接続することができますので楽チンですね。

接続は以下の通り。写真裏面から見たときの並びで書いてます。

  • モジュラージャック 2 pin (TX) - FT234X モジュール 4 pin (RX)
  • モジュラージャック 4 pin (RX) - FT234X モジュール 3 pin (TX)
  • モジュラージャック 5 pin (GND) - FT234X モジュール 2 pin (GND)

です。GND は基準電位を合わせるためにちゃんとつなぎましょう。TX、RX はクロス接続です。互いに送信 TX を RX で受信すると。シリアルそのものは 9600bps 8bit パリティ無しのようです。

メモ:Vpp+ はバッテリー電圧(外部入力電圧)そのもの ~12V


寂しいけどこれだけでOK

モジュラージャック側の中ほどの開いているピン (3pin) は 12V が出ているので間違って他の線に接続したりしないように。IC 壊れます。あとクロスケーブルも刺さないように。Synscan communication protocol って公開されてるんですね。アライメント時などの最後のちょこっと修正にスマホやPCのソフトインターフェースはやり辛いんですよね。物理的なコントローラーで操作したい。あ、しまった、モジュラージャック DIP 化キットもう一つ買っとけばよかった。。

あ、一応、表面載せときます。


コンパクト版の裏面


補足

USB micro のコネクターがもげる事態が発生しました!スズメッキ線で補強したので、ほぼほぼ基板側のコネクタは大丈夫だと思います。ケーブル側のコネクタも補強しておきたいので、そのうち3Dプリンタで筐体作ろうかと目論んでます。製品版はType-B のごっついコネクタなんで、こういうことは起こりにくいんだろうなと思います。

も、もげた。。
端子はいきてるっぽかったので、半田しなおして、瞬間接着剤で固定。
小さく作ろうと思えばここまで小さくできます。

スズメッキ線強化!


FT232RL でもオッケーでした


おまけ

AZ-GTi の外部電源は 12V/1A 程度が丁度良さそうです。秋月のを使ってます (なんか新しくなってる。600円)。電圧は 12V が良いと思いますが、電流は 0.75A 以上ならなんでも良いと思います。









2020/08/14

Sky-Watcher MAK127 + AZ-GTi を買ってみた話

ついに買ってしまいました。望遠鏡。

望遠鏡は小学生の頃に祖父が買ってくれたビクセンのイカルス-6M以来。イカルス-6Mは微動ハンドルすら無い経緯台なので月、太陽、木星とハレー彗星をチラッと見た程度。中学の頃に望遠鏡とカメラを所有する友達が2人もいたので、多少の机上の知識はあるものの、観測技術もないままにいい年こいての購入になります(ちなみにイカルス-6Mは未だに所有してます。まだ使えるよ。使えないけど🙄)。


という背景もあり、以前よりうっすらと望遠鏡を所有したい欲を持ってはいたのだけど、いいお値段するし、望遠鏡置く場所も、観測する場所も、観測にホイホイと出かけられる家族の了解を得るのも難しく、、、と気付いたら随分と年月が経ってました。

そして数年前、偶然ポタ赤の存在を知り、東京近郊の悪条件でもそれなりの写真が撮れるらしいということを知りました。しかし都内に住んでいるので当然光害が酷く、北極星なんて。。な感じ。赤道儀なんて自宅ではとんでも無理。そしてしばらく悶々とする日々を過ごしていると、Twitter で偶然 AZ-GTi の存在を知ったのが今年2020年の5月頃。

AZ-GTi 経緯台は基準となる明るい星から1~3選んでアライメントをすると、自動で見たい星を導入できるようになるという優れもの。北極星に頼る必要もないし、しかも自分にとっては大口径の MAK127 とセットで安い!

7万円程度の破格の値段ということで、失敗してもいいやと気付いたら Amazon でポチッと買ってしまいました(販売元が日本の総代理店というのもあって安心して)。あとファームをアップデートすると赤道儀にもなるというおまけもついているところも魅力でした(赤道儀化はそのうち試してみる)。

買ったのは梅雨の直前だったので、結局本格的に稼働し始めたのは梅雨の開けたここ二週間ほど。AZ-GTi のアライメントや準備や撤収(と言っても自宅バルコニーなので楽)にも慣れてきて、いざ写真撮影にトライし始めたところです。あ、梅雨と言えば結局ネオワイズ彗星にはお目にかかれませんでした。


ところで自動導入いいね。またターゲットを常に追いかけてくれるので、見ているうちに視界から対象がずれないというのはとても楽です。

あと木星、土星もちゃんと見えたのには感動。だってイカルス-6Mでは木星の縞も土星のカッシーニの間隙も見えなかったからね。しかも都会の光害激しいところで。まだまだわからないことだらけなので、望遠鏡の使い方や、写真の撮り方に関しては目下天文ガイドやらWebでの情報収集に勤しんでます。



2019/09/11

MIDI 機器(リズムマシン R-8MK II)をコントロールしてみた

ギターの練習のお供にリズムマシンを使う時に、例えば8ビート1小節のパターンを延々と流しながら、というのは良くあるんではないかと思います。ただ、曲によってはAメロとBメロではパターンが違ったりするのに同じパターンで続けてしまったりするのですけど。

もちろんリズムマシンでパターンをいろいろ用意して、それを繋げて1つの曲に仕立ててカラオケがわりにそのパターンを流せば気持ちよく練習ができるとは思うんですが、まず曲を準備するのが面倒臭い。

とりあえず Aメロの基本パターン1小節、Bメロの基本パターン1小節がスイッチ1つで切り替えられるなら、まぁいいんじゃない?ということで、あまりお金をかけずにこれを実現する MIDI OUT 機器を作ってみます。

1. 簡単仕様


  • リズムマシンのターゲット Roland R-8MK II (手持ちがこれなので)
  • MIDI OUT コントローラのマイコンは micro:bit (手持ちのパーツを流用)
  • リズムマシンには A, B の2つのパターンを準備
  • リズムマシンはパターンプレイモードでパターンをあらかじめ実行
  • ボタンを押すと A, B のパターンを切り替える
もう少し機能をつけたいのですが、とりあえず最低限のやりたいことを実現します。
最初は Arduino で作ってたのですが、モーター回すのに micro:bit 使っていて、ボタンも備えられていることから micro:bit で実装してみました。

2. 実装イメージ

3.3V 電源の構成。本当に簡単簡単。4番ピンを 33ohm を通して 3.3V にプルアップ。5番ピンは 10ohm を通して UART の TX に。ここでは micro:bit の P2 を割り当てています。丁寧にやるなら 2番ピンとシールドの外側は GND に。ただし、それをやっていいのは MIDI OUT のみ。

ちなみに5V 系のマイコン例えば Arduino だったら 220ohm の抵抗を両方に使えばいいですね。


3. プログラム

シリアルの端子の送信を P2 に割り当てます。P1 はおまけ。

ボタンを押したらプログラムチェンジを送ります。プログラムチェンジは 2byte 構成。

最初の1バイトでプログラムチェンジのコード 0xC0 に CH 番号 - 1 を加えたもの。続いて、プログラム番号は 1バイトを送ります。

ブロックエディタだとバイナリーのデータを送るブロックがないので、この部分のみブロックエディタから JavaScript エディターに切り替えて入力します。ついでに関数にしてしまいます。

pins.createBuffer(2) で 2バイトの配列を準備。setNumber(変数, インデックス, 値) で配列の要素に値を設定。serial.writeBuffer() で準備した配列を送信します。


4. 実行
4.1 R-8MK II の設定

必要な設定は

MIDI -> TX CH -> 10CH

MIDI -> FUNCTION -> PGM CHANGE = ON
のみ。
パターンを二つ用意して、パターンプレイモードで START しておきます。


4.2 Play

A/B ボタンを押せばそれぞれにアサインされたパターンに切り替わります。

本当はフットスイッチを付けたいところ。デモなんで、お手軽に micro:bit のスイッチを使ってます。

CASIOPEA の Street Performer より


5. 次のステップ


  • フィルイン機能1
    A または B メロパターンを実行中にフィルインボタンを押すと、AまたはB用のフィルインパターンを1小節実行して、また元のパターンに戻る
  • フィルイン機能2
    A/B 切り替えボタンを押した時に、A->B 切り替え時フィルインまたは B->A フィルインパターンを自動的に1小節挟む
  • スタート、ストップトグルボタンの追加
  • テンポの自動取得
    フィルイン機能を入れるのにはテンポがわからないと適切なタイミングで次のパターンが入れられないと予想されます
  • 筐体とボタンの強度を上げる
    今のでは足で踏むとすぐ壊れます

というのをボチボチ実装していければいーなと思います。が、やるんだろうか。

6. 解説
ハマったところをメモがわりに解説しておきます。

6.1 MIDI 端子のピン配置

まずMIDI 規格書はこちら。CA-033 が電気的規格を理解するのに丁度いいです。
これがすごくハマりました。使う端子はたったの2つ。4番と5番。これがどちらかわからない!制作記事をみても多くが MIDI IN の回路だったりして。テスターのダイオードチェック機能を使えば MIDI IN 回路のフォトカプラの入力の極性から4番、5番端子が特定できそうなものだけれど、サージなどからの保護用のダイオードがパラレルに逆極性で入っているので、どちらもダイオードのアノード、カソードに見えてしまう。あと、MIDI IN - MIDI OUT はストレートケーブルで繋がるので、MIDI IN の 4 は MIDI OUT の 4 というように同じ番号同士がケーブルで接続されます。

結局こちらのブログの記事が助かりました。

CA-033 の規格書はどっちから見たんだ?オスコネクタ目線?? ちなみに IN 側も OUT 側も端子配置は同じ。正しくは OUT 側は 4番、5番の間に挟まれた 2番とシールドの外側は GND に落としますが、ここではサボっています。写真だと手前の空いている二つのピンがシールドで、奥の半田付けされたジャンパーピンの間のピンが2番です。ノイジーなステージでの使用を考えるならちゃんと GND に落とすべきですね。ただし IN 側はこれらのピンを GND に直接は落としません。浮かせるか、0.1uF のコンデンサを介して GND に落とします。折角フォトカプラで分離してるのに GND を直接ショートしたら意味ないということかなと思います。



6.2 MIDI OUT の回路と抵抗値

ここも最初は理解できませんでした。電流ループとか書かれてもねぇ。
結局、MIDI OUT 側の回路は、H 出力時、MIDI IN のフォトカプラ入力に 5mA 程度の電流を流し、L 出力時には電流を流さないという回路を考えればいいようです。電源電圧は 5V である必要はなく、3.3V でも良いのです。なぜならフォトカプラの入力に繋がる回路は発光ダイオードなので、そのダイオードが光る電流を流せばいいからですね。
ちなみに OUT 側の MIDI 端子 4番が電源電圧側(5V or 3.3V)と覚えれば良いです。フォトカプラのアノード側が繋がるので。

ところで抵抗はフォトカプラを動かす回路の電流制限という意味とショートした時の保護という意味で入れるようです。



VTX=5.5V RA=RC=220ohm
VTX=3.3V RA=33ohm, RC=10ohm


6.3 MIDI データフォーマットと R-8MK II


もう少し研究する必要があります。とりあえずプログラムチェンジだけ使いました。
0xC0 + (CH - 1), Pattern No. の 2byte 構成。

電池切れました。おしまい。

2019/09/08

micro:bit + LV8548MC (ステッピング モーター編)

責任感ゼロ、いじり放題の趣味のプログラミングやブログの書き込みは気楽でイイですよ。

さて、お待たせしました!ステッピング(ステッパ)モーター編です。micro:bit と LV8548MC を使って回してみます。ほとんど新しくなった LV8548MC のパッケージの解説となります。

ハードウェアの準備

モーターを除けば DC モーターと同じです。まずは前の記事を。

モーターはバイポーラ型ステッピングモーター MDP-35A を使いました。ググると仕様書が見つかると思いますが、4端子 A, A(上の線つき), B, B(上の線つき)で、A, B 二つのコイルそれぞれブレッドボードに刺さるようにピンヘッダを半田しました。


これを DC ブラシモーターのときに組んだブレッドボードに刺します。


LV8548MC の OUT1, OUT2, OUT3, OUT4 に先程のピンヘッダを刺します。
ハードの準備はこれでおしまいです。

ソフトウェアの準備

これも DC のソフトウェアで説明した通り。同じパッケージにステッピングモーターのブロックを追加しました。以下の GitHub の URL を拡張機能の追加で指定してください。詳しくは前回の記事で。

https://github.com/ttrsato/pxt-lv8548mc.git

ステッピングモーターブロックの説明

DC からいっぱい追加したので迷うかもしれませんが、最低限必要なものは STEP カテゴリーの最初の三つだけです。


ちなみに DC 用と混在できません。間違わないよう先頭に S: と書かれているのがステッピングモーター用。D: が DC モーター用です。

設定

set stepper で IN1〜IN4 の設定をすれば準備完了です。どのピンでもそれぞれが被らなければ構いません。プルダウンメニューから選んでください。全部のピンが見当たらない場合はマウスのスクロールで残りが見えると思います。
回したいモーターの仕様書をみて、A, B コイルの端子を調べて、それぞれのコイルの両端を A-A', B-B' に割り振れば良いです。

あと、Excitation(励磁)方法を選びますが、よくわからなければ 1/1(Full step, 2相励磁) を選んでおけば良いです。1/2 は(Half step, 1-2相励磁)。LV8548MC はこの2種類の励磁方法のみ選べます。マイクロステップをしたい方は別な IC を選んだ方がいいです。オンセミの Solution Kit なら、LV8702 か LV8714 ですね。
ちなみに 1/1 の場合、48ステップで軸が一回転するステッピングモーターの場合、48ステップで一周。1/2 の場合は倍の 96ステップで軸が一周します。

初めてのステッピングモータープログラム


3つのブロックを使っただけの簡単なプログラム。
ボタン A を押したら Forward 方向に48ステップ回って、Reverse(反対方向)に48ステップ回って、Forward に 24ステップ、Reverse に24ステップ回って終了します。


こんな感じ。


この run stepper ブロックは回転する方向 (Forward/Reverse) と動かすステップ数、速度を指定することができます。ms/step は 1ステップを動かす時間です。ms (1秒の1/1000) で指定します。最短は 1ms/step です。ただこの速度で動くかどうかはモーターと負荷次第です。プログラムの処理速度もどうだか。ちなみに負荷が重いなど期待した速度で回らなくなることを脱調と言います。


最後に指定しているのが stop stepper。ここでは Free(励磁無し) と Hold(励磁保持) を選択できます。run stepper では回し終わった後に Hold(励磁保持)状態になっています。電流が流れたままなので、コイルは磁力を持ち、軸は弱い力では動きません。Free ではコイルの磁力は無くなるので、軸は弱い力で回すことが出来るようになります。Hold 状態は電流を消費しますし、モーターがとても熱くなるので、位置を保持する必要がなければ Free しておいた方が良いかもしれません。

とりあえずこれらを組み合わせれば大体好きなことは出来るのではないかと思います。

残りの基本ブロック


run stepper accel と run stepper trap の二つがあります。

run stepper accel
加速、減速を実現するブロック。start の速度から stop の速度まで、段階的に steps で指定したステップ数回転します。

run accel デモ

run stepper trap
台形駆動します。台形駆動は、だんだん速く回転し、一定速度で回った後、止まる前に徐々に速度を遅くする機能です。グラフを書くと台形なのでそんな名前です。

run trap デモ

変換ブロック

残りは変換ブロックです。回す単位や、速度の単位を変えたい時に使います。物によっては STEPPER units ブロックで初期設定を入れる必要があります。
おまじないというわけではないのですが、


set steps/round を設定しておきましょう。今回使用した MDP-35A はステップ数 48 なので、48を設定します。ステップ角は 7.5° (360/48) なので、


set deg/step で設定しても同じです。これらを指定することによって、回転を角度や回転数で指定したり、速度を rpm で指定すると期待通りに動くようになります。つまり以下のブロックがようやく使えるようになるわけです。もちろん 1ステップ以下の動作は出来ないので丸められます。


これらのうち、STEPPER to steps 使うと最初のプログラムはこういう風に書き直せるわけです。


2周、1周、180°、90°など、直感的に値を設定することが出来るようになります。
応用編として、回転するステージがギアを介してステッピングモーターに繋がっていて、1 ステップで 0.1° 動くシステムなら、set 0.1 deg/step を設定すればステージの回転角度を与えて動かすことが出来ます。ちなみに set mm/step を設定しておくと、mm to steps を使えるようになります。これはスライダーなどのボールネジを使った直線駆動する機構に対する設定で、1ステップで移動する距離を mm でセットすると、mm to steps で移動したい距離を与えるとステップ数を返すようになり、上記の角度指定のように直感的な指定が可能になります。

STEPPER to ms/step は、速度の単位を変換するブロックです。
Hz や、rpm でステップの変化速度を与えたい場合はこれらを使ってください。

速度を周波数 Hz で与える

ちなみに上記のコードを実行すると、あれ?となりませんか。1Hz は 1秒間に回転する回数なので、1Hz だったら 1秒で 1回転するはずじゃんと。残念ながら 1ステップ移動する速度が 1Hz(1秒) です。一周するのに 48ステップなので遅いんです。rpm 指定も同様です。仕様です。いやいや、一周単位での Hz やら rpm で設定したいという方は Hz または rpm で与える数を rounds to steps で囲ってから Hz/rpm to ms/step に与えてください。


rounds to steps は一周のステップ数を掛けた答えを返すので、辻褄が合うんですね。

以上、で LV8548MC を使ったステッピングモーター駆動のためのブロックの説明はおしまいです。残念ながら micro:bit が一生懸命駆動パルスを生成しているので、モーターを回している最中は何も出来ませんので悪しからず。

おまけ

あっているかどうかわからないけど、台形駆動のパラメータの計算に苦労したので晒しておきます。面倒臭いのでバグがあると言われないと見直したくないです。間違いがあったら教えてね。

台形駆動は、トータルカウント(ステップ)数 Ca と、トータル時間 Ta、加減速時間 T1 と初期スピード S1 のみを与えて、残りは計算で求めています。

加速期間は速度 S1(ms/step) から S2(ms/step) まで徐々に1ステップの時間が短く(長く)なります。この時間を全部足したのが T1 になります(8)。また、T2 の時間をその時の1ステップ速度 S2 で割ったのが T2 という二つの方程式を解けばいい(4)。なんだけど意外に面倒臭い。答えは (10)。

台形駆動

余談。ステップ時間で見ると、台形じゃなく、上記のように台形の逆さま。じゃぁと速度に直すと 1/S1 とか逆数になるので、直線じゃないです。ただ周波数に変換すると S1 は実際は時間です。1/t=f なので周波数にすると台形になって、しかも直線になります。そういうこと?

今回から数式を埋め込めるように TeX のコード解釈できるようにした。TeX なんて学生の頃以来ですよ。でも数式書くならいまだに TeX いいよね。最高です!クヌース先生。

\begin{align}
T_{ams}=2 T1_{ms}+T2_{ms}
\end{align}
\begin{align}
C_{asteps}=2 C1_{steps}+C2_{steps}
\end{align}
\begin{align}
\Delta s=\dfrac {S1_{msps}-S2_{msps}}{C1_{steps}}
\end{align}
\begin{align}
C2_{steps}=\dfrac {T2_{ms}}{S2_{msps}}
\end{align}
\begin{align}
T1_{ms}&=(S2_{msps}+\Delta s)+(S2_{msps}+2\Delta s)+\cdots +(S2_{msps}+C_{asteps}\Delta s)\\
&= \sum^{C_{asteps}}_{i=1} (S2_{msps} + i \Delta s)\\
&= C_{asteps}S2_{msps} + (1 + 2 + \cdots + C_{asteps})\Delta s\\
&= C_{asteps}S2_{msps} + \dfrac {C_{asteps}(C_{asteps} + 1)}{2} \Delta s
\end{align}
\begin{align}
(C_{asteps} - 2)S2_{msps}^{2} + (C_{asteps}S1_{msps} - 4T1_{ms} - T2_{ms})S2_{msps} - T2_{ms}S1_{msps}
\end{align}
\begin{align}
S2_{msps} = \dfrac{-(C_{asteps}S1_{msps} - 4T1_{ms} - T2_{ms}) \pm \sqrt{(C_{asteps}S1_{msps} - 4T1_{ms} - T2_{ms})^{2} +4(C_{asteps} - 2)T2_{ms}S1_{msps}}}{2(C_{asteps} - 2)}
\end{align}