スポンサーサイト

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

MONOistさん連載の「Arduinoで学ぶ基礎からのモーター制御」とゆう連載記事

MONOistとゆう、モノづくりスペシャリストのための情報ポータルとゆうサイトで「Arduinoで学ぶ基礎からのモーター制御」とゆうシリーズが連載されています。

さてさて、前回11回目、「基礎からのマイコンモーター制御(11):オープンソースのCAMソフトGrblでステッピングモーターを回してみる 」今回12回目「基礎からのマイコンモーター制御(12):PC上の「Grbl Controller」からステッピングモーターを操る」としてこのページで幾度となく取り上げているGRBLが取り上げられ、GRBLを使って実際にステッピングモーターを駆動させる所までが日本語で解説されています。

この連載、今回の12回目で一区切りとさせて、、、と書いてあるので、もうチョットGコードを使ったNCコントロールな事を書いていただきたかったのですが、とても残念です。



スポンサーサイト

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

中華NanoとCMOSカメラOV7670(FIFO無し)と小型液晶パネルST7735Rで、、ライブカメラ。



ebayやAliで安価に手に入る、ArduinoNanoクローンと、CMOSカメラのOV7670(FIFO無し)、そして、小型TFT液晶パネルののST7735Rを使ってのライブカメラを作りました。

実は元ネタが有り、この動画を見て、この動画のコメント欄のソースコードを利用させていただきました。


ソースコードはGithub上に有り、ソース内に有る回路図通りの配線をしました。

結構なフレームレート(動画では10fpsと、、)での液晶画面へ表示されています。

ソースコードの使い方は元動画コメント欄のリンク先のGithubに行くと表示されるReadmeに書いてあります。


カメラ自体の最大速度は30fpsのようで、更に最大解像度は640x480ですが、液晶パネル自体の解像度が160x128となっており、カメラからの取り込み解像度もソレに合わせて160x120となっているご様子。
更に、ATmegaの作動速度もネックとなり10fpsとなってます。

ただ、この描画速度、割とパラパラとした画像ではなく、ちゃんと動画として見れるので、用途によっては実用だと思います。
このOV7670(FIFO無し)のモジュールとして販売されているもの、M12とゆう規格(Sマウント?)のレンズが付いている物が大半なので、防犯カメラ用の広角レンズ等々も使えるようです。

私個人としては、レーザー加工時に直接レーザーの光を見ないでレーザーが射出されているのを確認する用途として、、。
もちろん、カメラのレンズの前に、光の強さを調整するようなフィルタを取り付けなければなりませんが、視力を失う事を考えれば、カメラ代替が効きますから、、。。


ちなみに、作例どおり作っても上記の通り動きますが、カメラのOV7670からのデータ線とタイミング用のクロック線は3.3V出力のため、5V駆動のATMegaの入力Highのスレッシュホールド(High入力とする電圧の下限値)電圧との差が少ないので、5Vロジックでの入力時よりも誤動作する確率が高いです。
また、カメラ設定用のI2C互換のSCCB(Serial Camera Control Bus)とゆうインタフェースも、一応Nanoからの送信Onlyなようなのでアレですが、相互通信用のレベルシフタ(信号線2本なので、N-chFETを使っても)でレベル変換しておくと良いでしょう。
ですので、余裕をもたせた安定的な作動を、、となると、3.3V→5Vのレベル変換ICを噛まして置いたほうが安心です。

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

GrblとUniversalGcodeSenderとの通信内容。

PSoC5LPにてUARTの送信内容を表示出来るものを作ってみたので、GrblとUniversalGcodeSender間の通信内容を表示してみました。
使用した液晶パネルは320x480でLCDパネルコントローラーはILI9481、16bitパラレル通信なもの。ebay等でArduinoMega用として、とても安価に販売されています。
通常このようなTFTLCDパネルの場合、3.3V電源で信号線も3.3Vの物が多いのですが、Arduinoでの使用を前提としているものは5V電源5V信号で、パネルの取り付いている基板上に、レベル変換用のバッファICが載っています。

こんなふうにせずとも、USBUARTをPCに複数繋ぎ、別ターミナルソフトウエアから、通信内容を読むことも可能だと思います。


通信内容についてですが、UniversalGcodeSender側からの?とゆう、CurrentStatusコマンドをじゅしんしたGrblは現在のGrblの状態を返しています。
Gコードを受信すると、okと返し、CurrentStatusがIdleからRunに変わり実行し始めます。

全てがUARTのアスキーコードによる文字列での通信です。







ですので、Grbl v0.9の場合、ボーレートを119200に設定したTeraTermなどの通信コンソールを使用して(もちろんArduinoIDEのシリアルモニタでも)単命令でのコントロールが可能です。

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

久々にGRBLを。。

少し思う所があり、久々にGRBLを触ってみました。

GRBLを入れたのは最近数百円程度で、購入できる中華ArduinoNano互換の小さな基板。
もう、ATMega328とUSBシリアルICを購入してユニバーサル基板で組むことすら、、ってくらいの価格で今、ebayやAliで出回っています。
この基板にGRBLのファームウエアをインストールするのですが、多分、他サイト、ブログでも記事となっていると思いますが、、、


Flashing Grbl to an Arduino
上記リンクページに各種環境からの書き込み方法が記載されてます。

今回私はWin環境から作業を行いました。
上記ページ内リンクにてXLoderをダウンロード、解凍。

https://github.com/grbl/grblにて、ファームウエア(現在のMasterBranchはGrbl v0.9j Atmega328p 16mhz 115200baud with generic defaults (2016-03-17))をダウンロード。ソースコードから、ATMega328用にコンパイルして、生成されたバイナリファイルで、HEXファイルです。

XLoderを起動し、ダウンロードしたHEXファイルを指定し、デバイスはDuemilanove/Nano(ATmega328)を指定。中華NanoのUSBCOMポート番号を指定しUploadボタンを押すだけです。
ボーレートはテキトウに。。


とりあえず作動確認が出来ればOKなので、Universal-G-Code-Senderのページを開き、1.0.9をダウンロード。
ダウンロードされたファイルを解凍して開き、Javaで書かれているようなので、.UniversalGcodeSender.jarのファイルをダブルクリックで起動。

中華Nanoを繋ぎ、USB seialのCOMポートを指定し、ボーレート(Baud:)115200に指定しOpenボタンを押すとPCとのシリアル通信が始まります。

かなり前に触ったときに比べて、GRBLもUniversalGcodeSenderも安定している印象。

さてさて、今回GRBLを触ってみているのは、最近秋月電子で取扱の始まった東芝製フォトカプラTLP2361を使ってステッピングモーターへの司令用の信号、Step/Dir EnableをGRBLがインストールされたNano基板と絶縁したかったから。

USB接続なGRBLがインストールされたNano基板、電気的にPCと繋がっています。
今回使用したフォトカプラTLP2361、リンクした商品ページを見れば解ると思いますが最大データ転送速度15MBdとなっており、フォトカプラの類では結構高速。高速タイプでよく使われる6N137と同程度のデータ転送速度で、データ自体の遅延も、同程度。

入力LED側のアノードにGrblをインストールしたNanoの出力を1kΩの抵抗を介してつなぎカソードはNano側のGND。別電源を用意して、出力側に5VとGNDを。コレで出力側出力ピンにて、絶縁された出力がロジック反転で出てきます。
反転したロジックは、Grbl側の設定で、InvertMaskとゆうのがあったので、ここのbitを立てて設定し反転すると、元々出力される理論値と同じとなるはずです。

上記5V1kΩの入力で、ほぼ、データシート記載の標準値、H/Lの遅延50ns、L/Hの遅延40nsをオシロスコープにて確認出来ました。

このフォトカプラ、オープンコレクタ、オープンドレイン出力と違い、インバートロジック出力なので、出力側に電源と、電源にパスコン(セラミックの0.1μF程度)を取り付けるだけで、絶対最大定格10mA迄(実際の使用は半分程度?)取り出すことが出来るので、ロジック入力な、モータードライバ等々、USBの電源電圧以上の物をUSB接続された機器にぶら下げるときに、USBポート、PCの安全確保の為に使うのにとても便利です。秋月電子などで取り扱って頂けるのはホントに有り難いです。

あと、この手の物でUSB接続な物で気になっていた所なのですが、PCから電源を取っている、とゆうことは、PCからモーター迄グランドが繋がるって所。
電気の回路として、+から-への電流のループ(カレントループ)はノイズ等々の視点から見ても、短い方が良いので、電流のループを一旦Grbl迄として、フォトカプラにて絶縁、信号のみの転送として、モータードライバ以降は別の電流ループとしたいと。。

もちろん、モータードライバをコネコネ触っていると解るのですが、モーター自体コイルなので、モーターに急峻な動きをさせるときに、電源電流と逆向きに、電流を流そうとする、逆起電力によるサージのように見えるモーターから電源に戻る回路に載る電圧の立ち上がり等々、モータードライバIC自体にモータードライバICに掛けている電圧以上の電圧が電源に戻っている事もしばしば。

このブログで主に取り上げているステッピングモーター自体、構造としてモーターとしての効率が悪い部類でなので、逆起電力で発生するサージのようなものの電圧自体は、効率の良いDCブラシモーター、ブラシレスモーターのソレに較べて低いと思いますが、それでも、モーター電源電圧以上となりうる場合が有るので、用心に越したことは無いと思うのです。

モータードライバやマイコン、その他電子部品。安価に入手できて、Web上に作例が沢山ありますが、動けば良いと、過電流保護や電源の逆接続等々の安全装置部分を端折った作例が多いのもまた事実で、何が足りてて何が足りてないかを見極めることができるだけの力が必要なのかも。
今回作ってみた物、どう考えても中華Nano基板よりも、数個のフォトカプラの方が入手した価格は上な訳で、アレなのですが、安定作動を保証する産業用の電子回路等々は沢山の試験と安全に振った回路の為に、あのお値段になるのだなぁ、と。

もちろん、コレは回路図のみならず、公開されているMCU等のソースコードとかも、時と場合によりけりで、???となる物もあります。

何事も見極める目を養うのは大事ですね。。


ところでGrbl、Reprapとかのファームウエアと違い、SDカードやMMCカードからあGコードを読み込み、Gコードをモーションに、、とゆう、スタンドアロン的な使い方が出来ません、が、Grbl自体、PC上に有るGコードのファイルの文字をアスキーコードでUSB UARTに載せて送信しているだけ(フロー制御はしてると思いますが)なので、別マイコンにて、SD/MMCカード内に置いたファイルを読取り、随時UARTにフロー制御しながら送信する物を作れば、PCレスでの作動も可能になると思います。



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

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

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

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

メールフォーム

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

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