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

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

部品と材料

ステッピングモーター 28BYJ-48 + ドライバモジュール ULN2003×1
Arduino UNO×1
サーボモーター TowerPro MG955×1
I2C シリアル LCD 1602 モジュール×1
ステップダウンモジュール×1
OpenBuilds NEMA 17 ステッピングモーター×1

必要な工具と機械

レーザーカッター(汎用)
ロータリーツール カッティングビットキット(Dremel用)

アプリとオンラインサービス

Arduino IDE
Microsoft Visual Studio 2015

このプロジェクトについて

イントロ

このプロジェクトのアイデアは、ロボットアームのさまざまな能力を調べているときに偶然浮かびました。自動溶接・はんだ付けロボットアームを扱ったプロジェクトは少ないことに気づきました。

実は以前に似たプロジェクトの経験がありますが、今回は非常に実用的で効果的なものになりました。

形状を決める前に、産業分野のアプリケーションやオープンソースプロジェクトなど多くの事例を参考にしました。これらは人間の視覚認識の科学に基づいて設計されています。

ステップ1:設計

最初に多くのプロフェッショナルなプロジェクトを見ましたが、複雑すぎて実装困難でした。そこで、それらを参考に独自製品を設計することにし、Google SketchUp 2017 Proを使用。各パーツは特定の順序で組み立てられるよう設計しました(次図参照)。

組み立て前にパーツをテストし、適切なはんだごてを選定するため、完成イメージをバーチャルに描いてガイドとしました。これらの図は実物大の完成形と各パーツの正確な寸法を示し、適切なはんだごて選びの指針となりました。

ステップ2:動作と設置

作業中にいくつかの障害に直面したので共有します。

1. アームが重すぎて小型ステッピングモーターで保持できませんでした。次版のレーザーカット設計で修正。

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

2. プラスチック製のため回転ベースの摩擦が大きく、動きがスムーズではありませんでした。

最初の解決策:より大型のステッピングモーターを購入し、ベースを再設計して収めました。しかし問題は解決せず。プラスチック同士の摩擦が原因で、ポテンショメータによる電流調整もメーカー推奨の方法(電圧測定しながらポテンショメータ調整)ではうまくいきませんでした。

最終的にベース設計を全面変更し、ギア機構の代わりにメタルギアサーボモーターを採用しました。

3. 電圧

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

Arduinoボードへの給電は、DCジャック(7-12V)、USBコネクタ(5V)、VINピン(7-12V)のいずれかから可能。5Vや3.3Vピンから給電するとレギュレーターをバイパスすることになるため、PCや電源から5Vを供給できる特別なUSBケーブルを購入しました。

ステッピングモーターなどすべてのコンポーネントが5Vのみで正常動作するため、部品保護のためステップダウンモジュールを追加しました。ステップダウンモジュール(降圧コンバーター)は、入力電圧から出力電圧へ降圧し(電流は昇圧)、電圧を安定化するDC-DCコンバーターです。

ステップ3:改良

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド
自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

アームサイズを縮小し、サーボモーターギア用の適切な穴を開けるなど設計を変更。

サーボモーターは高トルク(重い負荷を扱える)のため、180度正常に回転できるようになりました。トルクは設計要因(電源電圧、軸回転速度等)により決定されます。

I2C通信を採用したのは、2ピンのみで複数のI2Cデバイスを同一バスに接続できるため(例:LCDバックパック+LCDを最大8台まで2ピンで制御可能)。デメリットは「ハードウェア」I2Cピンを使用しなければならない点です。

ステップ4:はんだごてホルダー/グリッパー

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

グリッパーはメタルギアサーボで固定し、はんだごての重量を支えます。

servo.attach(9, 1000, 2000);
servo.write(constrain(angle, 10, 160));

最初はモーターが震えて振動する問題がありましたが、角度制限を設けるコードで解決。

すべてのサーボがフル180度動くわけではありません。多くは動きません。

機械的な限界を特定するテストを作成。servo.writeMicroseconds() を servo.write() 代わりに使用(1000-2000を基本レンジとして使えるため)。多くのサーボはこの範囲外(600-2400)もサポートします。

さまざまな値を試し、ブザー音(リミット到達音)がするポイントを見つけ、その範囲内でのみ制御するようにします。servo.attach(pin, min, max) で制限を設定可能。実際の可動範囲を特定し、コードがエンドストップを超えて押し出さないよう constrain() 関数で制限するのが有効です。

ステップ5:コーディング

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド
自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

Arduinoはライブラリを通じて機能拡張可能。ライブラリはハードウェア制御やデータ操作など、スケッチで使用する追加機能を提供します。スケッチでライブラリを使うには:

#include <AccelStepper.h>
#include <MultiStepper.h>
#include <Servo.h>
#include <Wire.h>
#include <LiquidCrystal_I2C.h>

コード

ステッパー X Y Z 制御コード Arduino
#include "AccelStepper.h"
// AccelStepper Setup
AccelStepper stepperX(1, 2, 3); // 1 = Easy Driverインターフェース
// UNO Pin 2 -> STEP, Pin 3 -> DIR
AccelStepper stepperZ(1, 5, 6); // 1 = Easy Driverインターフェース
// UNO Pin 5 -> STEP, Pin 6 -> DIR
AccelStepper stepperY(7, 8, 9); // 1 = Easy Driverインターフェース
// UNO Pin 5 -> STEP, Pin 6 -> DIR

// ステッパー移動変数
long TravelX;
long TravelZ;
long TravelY;
int move_finished = 1;

void setup() {
  Serial.begin(9600);
  Serial.println("Enter Travel distance seperated by a comma: X,Z ");
  Serial.print("Enter Move Values Now: ");
  stepperX.setMaxSpeed(500.0);
  stepperX.setAcceleration(500.0);
  stepperZ.setMaxSpeed(250.0);
  stepperZ.setAcceleration(250.0);
  stepperY.setMaxSpeed(250.0);
  stepperY.setAcceleration(250.0);
}

void loop() {
  while (Serial.available() > 0) {
    move_finished = 0;
    TravelX = Serial.parseInt();
    Serial.print(TravelX); Serial.print(" X Travel , ");
    TravelZ = Serial.parseInt();
    Serial.print(TravelZ); Serial.print(" Z Travel , ");
    TravelY = Serial.parseInt();
    Serial.print(TravelY); Serial.println(" Y Travel ");
    stepperX.moveTo(TravelX);
    stepperZ.moveTo(TravelZ);
    stepperY.moveTo(TravelY);
    delay(1000);
    Serial.print("Moving Steppers into position...");
  }
  if ((stepperX.distanceToGo() != 0) || (stepperZ.distanceToGo() != 0) || (stepperY.distanceToGo() != 0)) {
    stepperX.run();
    stepperZ.run();
    stepperY.run();
  }
  if ((move_finished == 0) && (stepperX.distanceToGo() == 0) && (stepperZ.distanceToGo() == 0) && (stepperY.distanceToGo() == 0)) {
    Serial.println("COMPLETED!");
    Serial.println("");
    Serial.println("Enter Next Move Values (0,0,0 for reset): ");
    move_finished = 1;
  }
}

回路図

自動はんだ付けロボットアーム:高精度・高速・DIY構築ガイド

製造プロセス

  1. IoTで遠隔操作する自作ロボットアーム:Arduino MKR1000とSimulink、ThingSpeak活用
  2. 産業用ロボットアーム:製造革命を牽引する自動化の核心
  3. ABB FlexLoaderセル、部品テンディング自動化で効率向上とコスト削減
  4. SCARAロボット市場、2026年に147.8億ドル到達予測、自動化成長を牽引
  5. ロボットアームの構造と機能:設計から組み立てまで完全解説
  6. 産業用ロボットアームが製造業を変える:導入メリットと主要メーカー完全ガイド
  7. ロボットアーム用サーボモーター完全解説:機能・メリット・未来展望
  8. Makerarm:メイカーのためのオールインワン デスクトップ ロボットアーム
  9. 先進ロボットシステム向け精密モーター制御のエンジニアリング
  10. Infineon、Arm Cortex-M0統合のIMC300モーターコントローラー発表——柔軟性を強化
  11. TrinamicとMaxim Integrated、産業用ロボットのエンドオブアームツーリング開発を加速するリファレンスデザインを発表