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

完全3Dプリント戦車:多用途履帯ロボットプラットフォームの製作

概要

このチュートリアルでは、無線操縦履帯車両、ロボットプラットフォーム、または戦車と呼べる超クールなマシンをスクラッチから設計・製作し、完全3Dプリント可能にした過程を紹介します。全てプリントして自分で組み立てられます。

目標は、多様な地形を走破し、様々な用途に対応できる汎用プラットフォームを作ること。連続履帯システムが最適解:車体重量を広い面積に分散させ、優れたグリップ力を発揮し、軟地/泥/雪でのスタックリスクを低減します。

泥上での走行性能は良好(雪上テストは未実施、将来動画でロボットアームやタレット搭載時に期待)。ロボットアーム搭載なら把持/移動作業、カメラ搭載で視覚検査、Nerfダーツ発射タレット+既存LED照明で遊び用途など多彩な展開が可能。

サスペンション:クリスティ方式

各ロードホイールに個別のサスペンション(スプリング+ショックアブソーバー)を持つクリスティサスペンションを採用。不整地でも滑らかに走行し、障害物を乗り越えながら履帯と地面の接地面を維持。

制御システム

安価な市販RC送信機で操作。プラットフォーム側のRC受信機がコマンドを受信しマイクロコントローラーへ。頭脳はATmega2560ベース基板、カスタムPCBを基板上にマウントして全接続を整理。

設計プロセス

SOLIDWORKSで設計(本動画のスポンサー)。

— スポンサーセクション —

業界最高峰のプロフェッショナルグレード設計ツールが、メイカー向けに年額$99(月額$9.99)で利用可能。3DEXPERIENCE SOLIDWORKS for Makersは学習、DIYプロジェクトに最適。3DEXPERIENCE SOLIDWORKS Professional(ローカル動作)、クラウド/ローカル保存、「xDesign」ブラウザーCAD、「xShape」フリーフォームCAD、「Visualize Connected」フォトリアルレンダリング、「NC Shop Floor Programmer」CAM機能を含む。特別20%オフリンク:https://www.solidworks.com/makers20 詳細:https://discover.solidworks.com/3dexperience-solidworks-makers

— 本題に戻る —

最初の入力パラメータは手持ちのRCショックアブソーバー(8個、伸長41mm、ストローク11mm)。片側4ロードホイール。ロードホイール垂直ストロークを16mmに拡大する機構を考案。ショックアブソーバー/ロードホイールリンクの接合点をピボット点に近づければストローク拡大可能だが、スプリング力が低下しより強力なスプリングが必要になる。SOLIDWORKSでシンプルなシミュレーションを行い、反力を確認しつつコンパクトさも両立するこの機構を採用。

フロントロードホイールはアイドラーホイールと連結し動的履帯張力を実現。ロードホイール上昇で履帯周長縮小→張力緩和時にアイドラーが前進して張力維持。ボルトと距離ナットで静的張力調整も可能。

リアスプロケットは3パーツ構成(シャフトカプラー、左右スプロケット、M3ボルト3本)。キー寸法はピッチ:履帯リンクと一致させる必要あり。ピッチ11mm、歯数12でピッチ直径約42mm。

履帯リンク設計

可能な限りコンパクトに、追加部品(ピン)1個で次リンク接続、3Dプリントで十分な強度、サポート材不要を目標に設計達成。ピン径2mmに対し片側2mm(タイト)、反対側2.3mm(ルーズ)で自由回転。スプロケット歯はリンクピン形成部(直径8.8mm)に噛み合い、スプロケット側9.1mmでルーズフィット。

スプロケット、アイドラー、ロードホイールを囲む閉ループスケッチをアセンブリ環境で作成し、SOLIDWORKS「チェーンコンポーネントパターン」機能で全履帯リンクを自動生成。

プラットフォーム残り部分(ベース、LED収容サイド、トップカバー)をモダンでクールなスタイルで設計。全長約400×300mmで一般的な3Dプリンターを超えるため、全パーツを2分割(ブラケットとM3ボルトで連結)。

3DモデルとSTLダウンロード

RC戦車/ロボットプラットフォームの3DモデルとSTLファイルはCults3Dからダウンロード。

3Dプリント設定

スライサーの「水平展開」と「穴水平展開」で寸法精度確保。デフォルトでは外形/穴ともに小さくなる傾向。水平展開+0.02mm、穴水平展開+0.04mmを使用(テストプリントで最適値決定)。ベアリング/ボルトとの組み立てには正確な寸法が必須。履帯リンクはベッド接地面小さいためラフト推奨(特に大量プリント時)。

組み立て

プリント時間:ベース各セクション約22時間、全156履帯リンク約96時間、総計約200時間。2台のプリンターで約100時間。

機械部品表

注: アフィリエイトリンクを含みます。

組み立て手順

  1. ベース組み立て: 2分割ベースをブラケットとM3ボルト/ナットで連結。サイドブラケットはM3×5mmスレッドインサート(ベース側壁に埋め込み)で固定し、外壁をフラットに(履帯が近接通過するため)。ショックアブソーバーブラケットをM3ボルトで固定。
  2. ロードホイールピボット: ベアリング(外径13mm、内径4mm)を各ロードホイールに2個使用。ピンはM4×30mmボルト。ベアリングとアームの間にワッシャー、内側からナイロンナットで固定。締め付けは適度に(きつすぎ/緩すぎ注意)。
  3. ショックアブソーバー取り付け: 付属M1.4ボルトで固定(小型ドライバーがない場合ペンチで代用)。機構は完璧に動作。
  4. ロードホイール取り付け: ロードホイールはサポート材回避で2分割。2mmスチールロッド(履帯リンクピンと共用、真鍮溶接ロッドで柔らかくニッパーで切断容易)3本(約23mm)で連結。同ベアリングを両側に、M4ボルト/ワッシャー/ナイロンナットで固定。ホイールは自由回転かつシャフトガタなしが理想。
  5. 他ロードホイールも同様。フロントのみ動的張力用レバー付きアームだが取り付け同一。
  6. アイドラー機構: 3Dプリント3パーツ、ボルト、距離ナットで構成。第1リンク固定前に背面にM4ナイロンナット設置(後でアイドラーホイール取り付け用)。2mm銅ロッドでピン接続。第2リンク(アイドラー側)にM3×15mm距離ナットをM3ボルトで固定。反対側にM3×20mmボルト+ナットで距離ナットへ挿入。この構成でアイドラーとロードホイールアーム距離を調整し、静的/動的履帯張力を両立。M4ボルトでアイドラーホイール固定。
  7. スプロケット組み立て: モーター取り付け先行。ベースは37mm径モーター(センター/オフセット軸両対応)受け入れ可能。12V DCモーター(20-1000RPM、用途により選択)をM3ボルト6本で固定。シャフトカプラーにスレッドインサート設置、挿入しM3グリブネジ固定。スプロケット左右2セクションをM3ボルト3本で連結。駆動系完成。
  8. 履帯組み立て(意外と楽しい): サポート材なしで即使用可能な履帯リンク。2mmピン(真鍮溶接ロッド)で連結。外側穴はタイトフィット(力要するが脱落防止)、内側穴はルーズフィット(自由回転)。コーヒーでも飲みながら数時間かけて連結(片側78リンク、ロッド約3.5m/ピン長約43mm)。スプロケット、ロードホイール、アイドラーに巻き付け、最後のピンでループ閉合。78リンクで張力は適切(最後のロードホイールがわずかに上昇)。スプリング弱いためショックアブソーバーナットで調整試みるも不十分→全ショックアブソーバーのスプリングを強化版に交換(分解→強力スプリング挿入→再組み立て。スプリングが純正より太いためM4ワッシャー併用)。全ロードホイールが位置保持可能に。駆動系完成。
  9. 距離ナットで履帯張力微調整可能。トップ緩み部分はショックアブソーバーブラケットで支持。モーター通電テスト:完璧な動作。多数の3Dプリントパーツが一体となって動く感動。
  10. 反対側も同様に組み立て。プラットフォーム80%完成。サイドパネル(主に見た目用)をブラケット/M3ボルトで取り付け。トップカバーで覆う(今回は見た目優先設計。将来ロボットアーム/タレット搭載時にトップ再設計予定)。

電子回路図

電子部品表

注: アフィリエイトリンクを含みます。

2モーター駆動にDRV8871×2(PWM制御、ピーク3.6A対応)。モーター12V駆動、3S LiPo(約12V)で全系給電。LM350 5Vレギュレーター搭載(将来サーボ接続用等、今回はRC受信機と一部LED給電に使用)。LED:5mm白色/赤色。後部:片側赤色2個(テールライト)、前部:片側白色3個(ヘッドライト)、トップカバー前部:白色6個(ハイビーム)。直列/並列組み合わせで配線、順方向電圧/電流から抵抗値計算(ヘッドライト:左右各3直列×2並列、各ライン150Ω)。汎用NPNトランジスター(200mA定格)でLED点灯制御。バッテリー電圧監視用簡易分圧回路(12V→5V未満→マイコンアナログ入力)。プログラムで実電圧換算し、受信機経由で送信機ディスプレイ表示。

カスタムPCB設計

配線量多いためカスタムPCB設計。ATmega2560基板に直接マウント可能。3.3VレギュレーターとNRF24L01接続用ランド(将来用)、12V/5V/6Vレール、サーボ接続用デジタルピン配置(6Vレールは外部バックコンバーター給電想定)。PCBWay発注(色ホワイトのみ変更)。ガーバーファイルはPCBWayプロジェクト共有から。到着品質良好、設計通り。組み立てはラベル通りで簡単。底面ピンヘッダー(ATmega2560接続)から開始、上面へ。小型部品(抵抗、トランジスター)→大型部品(LED、電源コネクター)順。全接続ピンヘッダー化で変更柔軟に対応。外部バックコンバーター/3.3Vレギュレーター接続は未実装(今回不使用)。白基板で美しくクリーンな仕上がり。

最終組み立て

  1. マイコン基板をM3ボルトで固定、カスタムPCBを上面にマウント。
  2. LED設置:サイドパネルに5mm LEDホルダーで固定。回路図通り各ライン直列ハンダ付け(カソード黒線、アノード赤線)。サイドパネル小穴からPCBへ配線。ホルダーはタイトフィットでクリーンな外観。
  3. ハイビームLEDはトップフロントカバー直付け。
  4. PCBにXH2.54mmデュポンメスコネクター実装(圧着ペンチ必要だが未所持でラジオペンチで代用、問題なし)。各LEDラインをラベル通りコネクター接続。
  5. モーターはコネクター不備で直ハンダ。DRV8871ドライバーボード経由でPCB接続。
  6. 無線通信:FLYSKY RC送受信機(安価・高性能)。受信機-マイコンはジャンパーワイヤー3本(VCC、GND、Signal、I-BUSシリアル通信)。バッテリー電圧送信用にセンサーI-BUSを別シリアルポートへ接続。
  7. LiPoバッテリー接続(適切なコネクターで12V端子へ。隣のON/OFF端子にスイッチ接続)。
  8. 重要: 電源投入前、RC受信機を外し、LM350トリマーで5Vに調整してから接続。
  9. トップバックカバー装着で完成。

プログラミング

/* 3D Printed Tracked Robot Platform - Arduino Code by Dejan, www.HowToMechatronics.com
Libraries: IBusBM: https://github.com/bmellink/IBusBM */
#include 
#define motorLeft_IN1 4
#define motorLeft_IN2 5
#define motorRight_IN1 6
#define motorRight_IN2 7
IBusBM IBus;
IBusBM IBusSensor;
int ch0, ch1, ch6, ch8 = 0;
int motorSpeed, steeringValue, leftMotorSpeed, rightMotorSpeed = 0;
int ledBlinkPeriod = 50;
int isOn = LOW;
unsigned long time_now = 0;

void setup() {
  Serial.begin(115200);
  IBus.begin(Serial1, IBUSBM_NOTIMER); // サーボI-BUS
  IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // センサーI-BUS
  IBusSensor.addSensor(IBUSS_INTV); // 電圧センサー追加
  // DCモーター制御 - 初期停止
  digitalWrite(motorLeft_IN1, LOW);  // PWM
  digitalWrite(motorLeft_IN2, LOW);  // 前進
  digitalWrite(motorRight_IN1, LOW); // PWM
  digitalWrite(motorRight_IN2, LOW); // 前進
  digitalWrite(46, LOW);
  digitalWrite(47, LOW);
  digitalWrite(48, LOW);
}

void loop() {
  IBus.loop(); // RC送信機データ読み取り
  ch0 = IBus.readChannel(0); // ch0 - 左右
  ch1 = IBus.readChannel(1); // ch1 - 前進/後進
  ch6 = IBus.readChannel(6); // ch6 - ヘッドライト
  ch8 = IBus.readChannel(8); // ch8 - ハイビーム
  // PWM値変換
  steeringValue = map(ch0, 1000, 2000, -185, 185); // 0-185範囲(+70でモーター始動PWM確保)
  motorSpeed = map(ch1, 1000, 2000, -185, 185);
  motorSpeed = abs(motorSpeed);
  leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70-255範囲
  rightMotorSpeed = 70 + motorSpeed - steeringValue;
  leftMotorSpeed = constrain(leftMotorSpeed, 0, 255);
  rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
  if (leftMotorSpeed < 72) leftMotorSpeed = 0;
  if (rightMotorSpeed < 72) rightMotorSpeed = 0;
  // 前進
  if (ch1 > 1510 && ch1 < 2000) {
    analogWrite(motorLeft_IN1, leftMotorSpeed);
    digitalWrite(motorLeft_IN2, LOW);
    analogWrite(motorRight_IN1, rightMotorSpeed);
    digitalWrite(motorRight_IN2, LOW);
  }
  // 後進
  if (ch1 > 1000 && ch1 < 1420) {
    digitalWrite(motorLeft_IN1, LOW);
    analogWrite(motorLeft_IN2, leftMotorSpeed);
    digitalWrite(motorRight_IN1, LOW);
    analogWrite(motorRight_IN2, rightMotorSpeed);
  }
  // 中立
  if (ch1 > 1420 && ch1 < 1520) {
    if (leftMotorSpeed < 75 && rightMotorSpeed < 75) {
      digitalWrite(motorLeft_IN1, LOW);
      digitalWrite(motorLeft_IN2, LOW);
      digitalWrite(motorRight_IN1, LOW);
      digitalWrite(motorRight_IN2, LOW);
    } else {
      // その場旋回
      analogWrite(motorLeft_IN1, leftMotorSpeed);
      digitalWrite(motorLeft_IN2, LOW);
      analogWrite(motorRight_IN1, rightMotorSpeed);
      digitalWrite(motorRight_IN2, LOW);
    }
  }
  // LED制御
  if (ch6 > 1500) { digitalWrite(47, HIGH); digitalWrite(48, HIGH); }
  else { digitalWrite(47, LOW); digitalWrite(48, LOW); }
  if (ch8 == 1500) { digitalWrite(46, HIGH); }
  else if (ch8 == 2000) {
    if (millis() >= time_now + ledBlinkPeriod) {
      time_now += ledBlinkPeriod;
      isOn = (isOn == HIGH) ? LOW : HIGH;
      digitalWrite(46, isOn);
    }
  } else { digitalWrite(46, LOW); }
  // バッテリー電圧監視・送信
  int sensorValue = analogRead(A0);
  float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // 5V読み取り値を12V換算
  IBusSensor.loop();
  IBusSensor.setSensorMeasurement(1, voltage * 100);
}

コード概要

IBusBMライブラリでRC送信機データ読み取り。右ジョイスティック(ch0, ch1)で移動、ロッカースイッチch6, ch8でLED制御。入力を0-255 PWM値へ変換。analogWrite()でドライバー/モーターへ出力。コードはプラットフォーム機能がシンプルなため複雑ではありません。

テスト走行

コード書き込み後、電源投入テスト。送信機ディスプレイにLiPo電圧、受信機/送信機電圧表示。右ジョイスティックで移動制御。左ロッカースイッチでヘッド/テールライト、右3wayロッカースイッチでハイビーム(常時点灯/点滅の2モード)。

課題と改善点:

お楽しみいただけたら幸いです。質問はコメント欄へ。購読とArduinoプロジェクトコレクションもチェックしてください。

製造プロセス

  1. Mubeaアイアンワーカーマシン向けプレミアムパンチ、ダイ、ブレード - メルボルンの信頼サプライヤー
  2. CNC工作機械:現代産業における精密加工とカスタマイズ
  3. カーボンキャプチャー&ストレージ(CCS)技術:地球を守りエネルギー効率を高める
  4. 熱間圧延炭素鋼ストリップの酸化スケール除去:効率的なピックリング技術
  5. 精密部品加工の精度を保証する:エキスパートのヒントとベストプラクティス
  6. スタートアップのための適切な製造業者選び:大手より中小が重要な理由
  7. 農業・養鶏向けプレミアム六角ワイヤーネット機械
  8. AFSウィスコンシン地域学生鋳造コンペティション:2月開催の大学チーム招待大会
  9. 管理者・スタッフ必読:倉庫安全ガイドライン完全版
  10. 電動ウォーターポンプが信頼できる給水に果たす必須の役割
  11. ハンマーの種類完全ガイド:DIY・作業用途別18種類+機械駆動3種類