工業製造
産業用モノのインターネット | 工業材料 | 機器のメンテナンスと修理 | 産業プログラミング |
home  MfgRobots >> 工業製造 >  >> Manufacturing Technology >> 製造プロセス

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

以前製作したDIY 3DプリントSCARAロボットアームをレーザー彫刻機に改造する方法を紹介します。動画または以下の記事をご覧ください。

プロジェクト概要

このSCARAロボットは4自由度を持ち、4台のNEMA 17ステッピングモーターで駆動、Arduinoで制御します。元の動画ではArduino UNO + CNCシールドを使用しましたが、今回はMarlin 3Dプリンターファームウェアを使用するため、Arduino MEGA + RAMPSボードの組み合わせに変更します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

機械的には、グリッパー機構をレーザーモジュールに交換するだけです。ここでは5.5Wレーザーモジュールを使用し、彫刻に十分な出力です。

このSCARA構成の利点は、Z軸の可動範囲が広く、背の高いワークへの彫刻が可能なことです。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

作業エリアも、ロボットの小さな設置面積に対して驚くほど広く、前方だけでなく左右も使用可能。オープンソースのMarlinファームウェアがレーザー彫刻機能とSCARA設定を備えているため、ほぼ360度全周を作業エリアとして設定できます。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Gコード生成には、Inkscapeとプラグイン「Inkscape-Lasertools」を使用。輪郭のみ、または輪郭+インフィルのGコードをベクトル画像から生成でき、レーザービーム設定、移動速度、インフィル速度、周囲速度、レーザーON/OFFコマンド、PWM制御など多彩なオプションがあります。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

SCARAロボットの設計、Marlinファームウェアのインストール・設定、図面準備とGコード生成まで、全プロセスを解説します。

設計と3Dモデル

SCARAロボットの3Dモデルを簡単に紹介します。元のチュートリアルで詳細を説明していますが、ここでは要点をまとめます。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ほとんどのパーツが3Dプリント可能な設計です。関節はNEMA 17ステッピングモーターで駆動し、GT2ベルトと3Dプリント製GT2プーリーで減速しています。4自由度ありますが、レーザー彫刻では3自由度(2回転で作業エリア内の任意点に到達、1直線でレーザー高さ調整)のみ使用します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

4軸目(エンドエフェクター回転)は使用しませんが、レーザーモジュールはこの軸に取り付けます。レーザービームが4軸目の回転中心に来るようホルダーを設計したため、この軸が回転しても最終位置には影響しません。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

3DモデルはThangsで検索、ダウンロード、ブラウザ探索可能です:

Thangsからアセンブリ3Dモデルをダウンロード。

Thangsにこのチュートリアルのサポートをいただきました。ありがとうございます。

3Dプリント用STLファイル:

スポンサー


このSCARAロボットは3DEXPERIENCE SOLIDWORKS for Makersで設計しました。これが今回の動画スポンサーです。そう、SOLIDWORKSが業界トップクラスの設計ツールを、メーカー向けに驚きの低価格で提供しています。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

メーカーは年間$99で最高のSOLIDWORKS設計ツールにアクセス可能ですが、私の視聴者様には期間限定でさらにお得な特別価格をご用意!

クラウド接続版SOLIDWORKS、ブラウザベースの3D Creator、3D Sculptorがバンドルされ、視聴者限定で20%オフで提供中です(在庫限り)。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

以下のリンクをクリックし、無料の3DEXPERIENCE IDを作成するだけでこの特別オファーにアクセスできます。教育コンテンツを支援してくれたSOLIDWORKSに大感謝。

SOLIDWORKS for makersをチェック

SOLIDWORKS for makers 20%オフ


レーザーモジュールの取り付け

まず、4本のボルトで固定されていたグリッパー機構を取り外します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

グリッパーサーボ制御用の配線を、レーザーモジュール制御用に流用します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

使用するレーザーモジュールは12V動作、PWM信号で制御可能な2線式(GND、VCC)です。付属の3ピンコネクターを使用し、左の黒線がGND、中央の白線がVCCです。これらにオスジャンパーワイヤーをハンダ付けし、エンドエフェクター側の配線と接続しやすくしました。

コネクターを所定位置に収め、ワイヤーをホルダーの開口部から通し、M3ボルト2本でレーザーモジュールを固定。さらにM4ボルト4本でロボット本体に固定します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

前述の通り、Arduino UNOからArduino MEGA + RAMPSボードに変更します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

まずステッピングドライバーのステップ分解能を設定。スムーズな動作のため、各ドライバーにジャンパー3本を挿入し最高分解能にします。A4988は1/16ステップ、DRV8825なら1/32ステップまで対応可能です。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

全配線を接続します。配線にはすべてマーキング済みなので間違いありません。

SCARAロボットレーザー彫刻機 回路図

全接続を示す回路図です。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ステッピングモーターはドライバー上部に、リミットスイッチ(NC接点、2線式)は各軸のエンドストップSと-ピンに接続します。

レーザーモジュール制御にはピンD9を使用。3Dプリンター設定ではファン制御用ピンですが、PWM対応なのでレーザー強度制御に適しています。電源は12V、最低3A以上のものを用意してください。

必要なコンポーネント:

  • ステッピングモーター – NEMA 17………………
  • A4988ステッピングドライバー…………………..…
  • RAMPS 1.6ボード………………………..…
  • Arduino MEGA………………….…..………
  • リミットスイッチ …………………………………. Amazon / Banggood / AliExpress
  • DC電源 ………………………………. Amazon / Banggood / AliExpress
  • レーザーモジュール ………………………………… Amazon / Banggood / AliExpress
  • レーザー安全ゴーグル …………………….. Amazon / Banggod / AliExpress

機械部品については元の記事を参照してください。

すべて接続したら、配線を整理してカバーし、見た目もすっきりさせました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

組み立ての仕上げ

SCARAロボットを正常に動作させるためにもう1つ修正が必要です。第2アームのリミットスイッチが作動する位置を変更します。SCARAロボットを右利き設定で動作させる場合、第2アームのホーミング位置は0度(第1アームと一直線)で、そこから左方向に回転できる必要があります。为此、アームジョイントに小さな部品を接着し、リミットスイッチが所定位置で作動するようにしました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

もう1つ小さな修正:元のリミットスイッチトリガーがアーム底部のナットと干渉し、フル可動を妨げていました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

そのナットを取り外し、インサートナットに交換することで、再固定時に突出しないようにしました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

これでSCARAロボットのハードウェアは完成です。あとはArduinoにファームウェアを書き込めばレーザー彫刻機として動作します。

関連記事:スマホ制御DIY Arduinoロボットアーム

SCARAロボットレーザー彫刻用Marlinファームウェア

Marlinファームウェアを使用します。これは最も広く使われているオープンソース3Dプリンターファームウェアで、レーザー彫刻機能とSCARAロボット設定を備えています。公式サイトまたはGitHubからダウンロード可能です。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Arduino MEGAへの書き込みには、Arduino IDEではなくPlatformIO IDEを使用します。Marlinは大規模で複雑なため、Arduino IDEではコンパイルエラーが出ることがあるからです。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

PlatformIOはVisual Studio Code上に構築された拡張機能です。まずVS Codeをインストールし、拡張マネージャーからPlatformIOをインストールします。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

インストール完了後、「Open Project」をクリックし、ダウンロード・解凍したMarlinフォルダーを選択、「Open Marlin」をクリック。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

全Marlinファイルがエディターに読み込まれます。マシン設定に合わせて編集する主要ファイルはConfiguration.hとConfiguration_adv.hの2つです。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

実はMarlinフォルダーを開く前に、GitHubのConfigurationリポジトリーからプリテスト済み設定ファイルを取得するのが賢明です。「Examples」フォルダー内の「SCARA」フォルダーにある2つの設定ファイルをコピーし、自分のMarlinフォルダーにペーストします。

関連記事:GRBLのセットアップとArduinoでのCNCマシン制御

Marlinファームウェアの設定

SCARA設定ファイルを配置してMarlinフォルダーを再読み込みしたら、Configuration.hを開いてマシンに合わせてパラメータを編集します。まずSCARAロボットのタイプを選択します。

/** * MORGAN_SCARA was developed by QHARLEY in South Africa in 2012-2013. * Implemented and slightly reworked by JCERNY in June, 2014. */ //#define MORGAN_SCARA /** * Mostly Printed SCARA is an open source design by Tyler Williams. See: * https://www.thingiverse.com/thing:2487048 * https://www.thingiverse.com/thing:1241491 */ #define MP_SCARA #if EITHER(MORGAN_SCARA, MP_SCARA) // If movement is choppy try lowering this value #define SCARA_SEGMENTS_PER_SECOND 100 // Length of inner and outer support arms. Measure arm lengths precisely. #define SCARA_LINKAGE_1 228.15 // Arm 1 lenght - 228(mm) #define SCARA_LINKAGE_2 136.2 // Arm 2 lenght - 136.5(mm) // SCARA tower offset (position of Tower relative to bed zero position) // This needs to be reasonably accurate as it defines the printbed position in the SCARA space. #define SCARA_OFFSET_X 300 // (mm) #define SCARA_OFFSET_Y 150 // (mm)

MORGAN_SCARAはパラレルSCARA、MP_SCARAはシリアルSCARA(今回のタイプ)用です。Tyler Williamsによるオープンソース設計に基づき、直交座標系用Gコードに逆運動学を実装しています。

前回のチュートリアルで逆運動学の仕組みを説明していますが、簡単に言うと、目標X,Y座標に到達するために2つのアームがどの角度になるかを三角関数で計算します。結果は2アームの長さのみに依存します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ここでアーム長を入力します。第1アーム228mm、第2アーム136.5mm。次にワークベッドの零点位置をSCARA_OFFSET_X、SCARA_OFFSET_Yで設定。これはタワー(第1関節)からベッド零点までの距離です。

さらにMANUAL_X_HOME_POS(XとY)を設定。これはホーミング位置におけるエンドエフェクター(レーザー)からベッド零点までのX,Y距離です。これらの値を得るため、SOLIDWORKSで2アームを表す線分のスケッチを作成しました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

希望のベッド零点を設定し、そこからMANUAL_X_HOME_POSの値を算出します。

エンドストップ接続を定義します。各軸に最小位置側エンドストップが1つずつあります。

#define USE_XMIN_PLUG #define USE_YMIN_PLUG #define USE_ZMIN_PLUG

さらにホーミング方向をX_HOME_DIR = -1など最小側に設定。

// Direction of endstops when homing; 1=MAX, -1=MIN // :[-1,1] #define X_HOME_DIR -1 #define Y_HOME_DIR -1 #define Z_HOME_DIR -1

すべての__MIN_ENDSTOP_INVERTINGがFALSEになっているか確認してください。

DEFAULT_AXIS_STEPS_PER_UNITをマシンに合わせて調整します。

#define DEFAULT_AXIS_STEPS_PER_UNIT { 177.7777777, 142.2222222, 400, 93 }

これらはステッピングドライバーに送るステップ数で、モーターを1単位(ここでは関節回転1度)動かすために必要な数です。私のSCARAロボットでの計算方法:

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

NEMA 17は1回転200ステップ、1/16ステップ分解能なら3200ステップで360度。第1関節は20:1減速なので64000ステップで1回転。360で割ると177.777ステップ/度。第2アームは16:1減速で142.222。Z軸は8mmピッチリードスクリューなので、1回転で8mm直線運動。3200/8 = 400ステップ/mm。4番目の値はエクストルーダー用ですが、今回は使用しません。

モーター回転方向は配線次第。間違っていれば配線を入れ替えるか、ソフトウェアでINVERT_X_DIRなどをTRUEにします。

// Invert the stepper direction. Change (or reverse the motor connector) if an axis goes the wrong way. #define INVERT_X_DIR false #define INVERT_Y_DIR false #define INVERT_Z_DIR false

Marlinは本来デカルト式プリンター向けなので、SCARAモードには未解決の小さなバグがあります。私が動作させるために行った変更:

  • scara.cpp行75: MORGAN_SCARAをMP_SCARAに置換
  • motion.cpp行1716、1717をコメントアウト
  • configuration.hでVALIDATE_HOMING_ENDSTOPSをコメントアウト
  • configuration_adv.hでQUICK_HOMEをアンコメント

それでもホーミングが100%完璧ではありませんでしたが、ワークアラウンドで対処します(後述)。

エディター左下の「Upload」ボタンをクリックすればMarlinが書き込まれます。私が修正済みのMarlinファームウェアを以下からダウンロード可能です。もちろん、GitHubからオリジナルを取得して自分で修正することもできます。

制御ソフトウェア – Repetier-Host

Marlin書き込み後、ロボットを制御してGコードを送信するPCソフトが必要です。選択肢は多数ありますが、人気の3DプリントソフトRepetier-Hostを使用します。無料でダウンロード・使用可能です。インストール後、Config > Printer Settingsでいくつか設定します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Arduino接続のCOMポートと、Marlinで設定したボーレートを選択。Printer ShapeタブでX/Y最大値とプリンターエリアを設定。

設定適用後、Connectボタンで接続。Manual Controlタブから動作テストできます。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

X/Y矢印を押すと、逆運動学が即座に働くため、片方のみ押しても両アームが動くなど、一見奇妙な動きをします。

まずホーミングを実行。ホーミングボタンを押す前に、手動で各関節をリミットスイッチ付近まで移動させておきます。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ホーミングボタンを押すと、第2アーム(Y軸)がリミットスイッチに向かい、それが作動したら第1アーム(X軸)が動き、最後にZ軸へ移動します。

ホーミング完後、すぐに彫刻や手動移動をしようとすると、不思議な動作をします。これを避けるには、ホーミング後にソフトウェアから切断し、再接続するだけで正常動作します。

これはMarlinファームウェアのバグと思われ、SCARAモードが十分にメンテナンスされていないためです。

この状態でG00 X0 Y0を送信すると、MarlinのConfiguration.hで設定した零点位置に移動します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

レーザーを点灯させるにはM106 S10を送信。S値は0〜255でPWM制御(0〜100%)。S10なら焼けずに位置確認とフォーカス調整が可能です。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

フォーカスはレンズ下部を回転させて手動調整。ワークピースとの距離は約5cmが推奨で、最小スポットになるまで調整します。

SCARAロボットでのレーザー彫刻

キャリブレーションにはシンプルな正方形彫刻から始めるのが良いでしょう。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

最初の試みでは正方形の位置と向きがずれていました。MANUAL_X_HOME_POSの値が間違っていたためです。修正後はほぼ正しい形状になりました。

ロゴ彫刻をテスト。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

SCARAロボットがレーザー彫刻する様子は非常にクールですが、必ずレーザー安全ゴーグルを着用してください。紫外線は目を傷つけます。また、防塵マスク着用と換気の良い場所での作業も必須です。レーザー彫刻の煙も健康に有害です。

ロゴ彫刻はうまくいきましたが、完全な正方形ではありませんでした。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

原因究明のため再び正方形彫刻でテスト。ロボットの剛性不足により、アーム伸長時に自重で前方に傾き、実効的なアーム長がわずかに変化していることが判明。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

数十回のテストの末、第1アームを228→228.15mm、第2アームを136.5→136.2mmに微調整することで最も正確な結果が得られました。ただし、アームがフル伸長かどうかによって精度は変動します。

レーザー彫刻用Gコード生成

最後に、図面準備とGコード生成の手順を紹介。オープンソースベクターグラフィックソフトInkscapeを使用します。

まずページサイズを作業エリアサイズに設定。例としてArduinoロゴの彫刻準備を示します。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Arduinoロゴ画像をダウンロードしInkscapeにインポート。Trace Bitmap機能でベクトル化。ベクトル形状からのみGコード生成可能です。プラグインInkscape-Lasertoolsを使用します。GitHubからダウンロードし、zip内のファイルをInkscapeのextensionsディレクトリにコピーしてインストール。

プラグインインストール後、Extensions > Lasertoolsから起動しGコード生成。レーザーをD9ピン(ファン制御用)に接続しているため、レーザーONはM106コマンドで行います。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

輪郭のみ、または閉ループへのインフィル込みを選択可能。レーザー移動速度、インフィル速度、周囲速度を設定。

インフィル選択時、インフィル領域でレーザー強度を下げたい場合はPWM値を追加(例:M106 S128で50%)。あるいはレーザー出力100%のまま移動速度を上げる方法もあります。これらは試行錯誤で最適値を見つけてください。

Preferencesタブで「Remove tiny infill paths」を選択。Bounding Boxタブで「Generate G-Code for bounding box preview」を有効化。これは彫刻範囲のプレビューGコードを生成し、ワークピースの正確な位置合わせに役立ちます。

Gコード生成後、Repetier-Hostに読み込み。3Dプリントではないため「Show Travel Moves」にチェックを入れてプレビュー。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

「Print」ボタンでSCARAロボットがレーザー彫刻を開始。この動作を見るのは非常に満足感があり、様々なものを彫刻できます。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Z軸調整可能なため、背の高い物も彫刻可能。例えばフォアシュタービット収納箱の前面にロゴ、背面に「Forstner bits」の文字を彫刻しました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

同じベクトル形状(バットマンシルエット)を輪郭のみ、輪郭+インフィルで彫刻した比較例。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

インフィルありは時間がかかりますが、仕上がりは格段に良くなります。

最後に、このSCARAロボットで600×450mmの大型図面を彫刻した例を紹介。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ロボットをワークピース上に配置し、前方と両側に届くように設置。手動でロボットとワークピースを中央に、平行になるよう調整。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Marlinで零点をワークピース左下隅に設定(ロボットからX方向300mm、Y方向150mm)。符号に注意して設定し、MANUAL_X/Y_HOME_POSも合わせて変更。

ファームウェア書き込み後、ホーミング実行しレーザーを零点へ移動。レーザー点灯でさらに位置微調整。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

G01コマンド(直線移動)でワークピース位置を確認・調整。

この配置用にInkscapeでテンプレートを作成。ロボットの到達範囲が見えるため、それに合わせて図面を編集。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

画像をダウンロードしTrace Bitmapでベクトル化。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

リサイズ・配置し、ロボット本体の位置と到達範囲外の領域を消しゴムツールで削除。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

Gコード生成して実行。彫刻完了まで4時間かかりました。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

彫刻完後、ロボットがいた空白部分を埋めるため、ロボットとワークピースを再配置し、Marlinパラメータを変更して新しい作業エリアを空白部分に設定。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

セットアップに手間はかかりますが、うまく機能します。仕上がりには大満足です。

まとめ

ファームウェアの問題はありましたが、ワークアラウンドでSCARAロボットをレーザー彫刻機として動作させることに成功。ただし彫刻をよく見ると完璧とは言えません。

DIY SCARAロボットを高精度レーザー彫刻機に改造 – Arduino制御

ロボットの剛性不足とバックラッシュにより、精密で滑らかな動作は困難です。しかし、ここで学んだことはあらゆるSCARAロボットに応用可能で、より良い結果が得られるでしょう。

このチュートリアルがお役に立てば幸いです。質問はコメント欄で、Arduinoプロジェクト集もご覧ください。


製造プロセス

  1. Arduinoで作るレトロNumitron管時計:シンプル、信頼性高く、省エネ
  2. ArduinoとHC-SR04で作るサーボ駆動障害物回避ロボット
  3. ArduinoとAndroidでRoomba Create 2をリモコン操作 ─ Bluetooth経由のステップバイステップガイド
  4. ArduinoとNokia 5110ディスプレイで自作電圧計:ステップバイステップガイド
  5. MobBob:Arduino製ロボットをAndroidスマホでシームレスに制御
  6. Arduino Nanoとロータリーエンコーダーで作る高精度測定ホイール
  7. シャープGP2Y1010AU0Fセンサーで作る高精度空気質モニター
  8. Arduino NanoとWS2812 LEDストリップで作る1次元ポンゲーム - 完全DIYガイド
  9. DIY ハンドジェスチャー制御 Arduino ロボットアーム - ステップバイステップ構築ガイド
  10. Arduinoロボットアーム「LittleArm」をAndroidアプリでBluetooth制御
  11. Arduino Nanoで作る「食べさせロボット」:超音波センサーで食べ物検知し口を開閉