完全に 3D プリントされた戦車:多用途の追跡ロボット プラットフォームを構築する
チュートリアルでは、非常にクールなラジコン無限軌道車両、ロボット プラットフォーム、戦車などをどのように組み立てたかを説明します。私はこれを完全に 3D 印刷できるように最初から設計しました。そのため、すべてを簡単に印刷して自分で構築できるようになります。
次のビデオを見るか、以下のチュートリアルを読むことができます。
概要
このプロジェクトの私の目標は、さまざまな種類の地形を横断でき、さまざまなアプリケーションに使用できる多用途のプラットフォームを作成することでした。そのための最善の策は、連続トラック システムを使用することでした。トラックは車両の重量をより広い表面積に分散するため、優れたグリップ力が得られ、柔らかい地面、泥、雪で立ち往生する可能性が低くなります。
ロボット プラットフォームは泥道でも非常にうまく走行できますが、雪上でテストする機会がなかったのが残念です。今後の動画でロボット アームや砲塔を設置する予定があるといいですね。ロボットアームをプラットフォームの上に置くと、何かをつかんで移動したり、カメラを取り付けて目視検査などに使用したりするなど、さまざまな作業を行うことができます。あるいは、たとえば、NERF ダーツを発射できる砲塔を作成し、このプラットフォームにすでに取り付けられているシンプルだがクールな LED 照明と組み合わせて、かなり楽しく遊ぶことができます。
サスペンションには戦車に長年使用されているクリスティ製サスペンションシステムを採用しました。この設定では、各ロードホイールに個別のサスペンションまたはスプリングとショックアブソーバーが装備されます。
これにより、トラックと地形の間の良好な接触面を維持しながら、車両は平坦でない地形でもスムーズに走行し、障害物を乗り越えることができます。
3D プリントされた戦車の制御には、プラットフォームにコマンドを送信する安価な市販の RC 送信機を使用しています。
プラットフォームには、コマンドを受信してマイクロコントローラーに送信する適切な RC 受信機があります。このプラットフォームの頭脳は Atmega2560 マイクロコントローラー ベースのボードであり、すべてを簡単に接続できるように、ボードの上に簡単に取り付けることができるカスタム PCB を作成しました。
それでも、設計、3D プリント、組み立て、電子コンポーネントの接続、マイクロコントローラーのプログラミングから始まり、このロボット プラットフォームを構築するプロセス全体を説明しますので、ベルトを締めてください。
ロボット プラットフォームを設計する
このロボット プラットフォームは、このビデオのスポンサーでもある SOLIDWORKS を使用して設計しました。
— スポンサー付きセクション —
「ここで注目に値するのは、これらの業界をリードするプロ仕様のデザイン ツールが、年間わずか 99 ドル、月額 9.99 ドルという驚くほど低価格で、すべてのメーカーに利用できるようになったということです。そうです、3D です。 EXPERIENCE SOLIDWORKS for Makers は、業界を学んだり、DIY プロジェクトを作成したりする人にとって最適です。
このオファーには3Dが含まれます SOLIDWORKS Professional を体験してください。これは、オファー内で最も需要の高い CAD ツールであり、PC 上でローカルに実行されます。 3D を使用すると、ファイルをローカルまたはクラウドに保存できます。 体験プラットフォーム。
「xDesign」 はブラウザベースの CAD で、3D で使用できます。 SOLIDWORKS を、または単独で体験してください。いつでも、どこでも、どんなデバイスでもモデリングするのに最適です。
「xShape」は、どのデバイスでもサーフェス モデリングに簡単に使用できる、ブラウザベースのフリーフォーム CAD です。
「Visualize Connected」では、写真品質の画像、アニメーション、インタラクティブな Web コンテンツなどを簡単に作成して、視聴者に感動を与えます。
「NC Shop Floor Programmer」は、使いやすいパッケージで 3 軸フライス加工とワイヤ EDM のインテリジェントな加工戦略を実現する CAM です。
下のリンクをクリックすると、特別 20% オフが適用されます。今すぐ最高のものを使って作り始めることができます。このような教育コンテンツのスポンサーとサポートをしていただいた SOLIDWORKS に多大な感謝を申し上げます。 ”
今すぐ購入:http://www.solidworks.com/makers20
詳細:https://discover.solidworks.com/3d experience-solidworks-makers
— トピックに戻る —
私がロボットプラットフォームの設計に至った経緯を説明しましょう。設計の最初の入力パラメータは、私が所有していた RC ショックアブソーバーとその寸法でした。
私はそれらを 8 つ持っていました。これは両側に 4 つのロードホイールがあることを意味し、11 mm のトラベルで伸ばしたときの長さは 41 mm でした。これらの寸法に従って、ロードホイールの垂直移動距離をもう少し長くしたいと考えたので、ロードホイールの垂直移動距離を 16 mm にするこの機構を思いつきました。
つまり、ショックアブソーバーとロードホイール リンクの接合部をロードホイール リンクのピボット点に近づければ、さらに長い移動距離を得ることができますが、そうするとスプリングの力が失われるか、プラットフォームを適切に保持するためにより強力なスプリングが必要になります。
SOLIDWORKS でいくつかの簡単なシミュレーションを行って、さまざまな機構によるスプリングへの反力を確認したため、全体的に優れたコンパクトさを実現するこの機構を選択しました。
フロントロードホイールをよく見ると、トラックに動的な張力を与えるアイドラーホイールとどのように接続されているかがわかります。ロードホイールが上がると、トラックの円周が小さくなり、張力が緩みます。
ここでこの接続を行うと、その際にアイドラホイールが前方に押し出されて履帯に張力が加わります。この接続により、このボルトと距離ナットを調整することで、静的にトラックに張力を与えることもできます。
裏側にはスプロケットがあり、3つのパーツから構成されています。シャフトカプラーとスプロケットの左右部分が 3 本の M3 ボルトで接続されています。
ここでスプロケットの重要な寸法はピッチです。これはトラックのピッチと一致する必要があるためです。ここではピッチは 11 mm で、歯数が 12 になるスプロケットを選択したため、スプロケットのピッチ直径は約 42 mm になりました。
11mmピッチは、実際にはトラックリンクの設計によって定義されました。線路リンクの目標は、できるだけコンパクトにして、3D プリンターで作成できる十分な強度を備えながら、追加のパーツまたはピンを 1 つ追加するだけで次のリンクに接続できるようにすることでした。
それに加えて、3D プリントの際、パーツにサポート材を一切使用しないようにしたいと考えていましたが、実際にこのデザインでそれを実現することができました。
トラック リンクを相互に接続するには、直径 2 mm のピンを使用する予定だったので、トラック リンクが自由に回転できるように、片側の寸法を 2 mm に設定してしっかりとフィットさせ、もう一方の側は 2.3 mm の緩めにフィットさせました。
ここでは、スプロケットの歯がこの開口部に入ります。ここでは、トラック リンクのピンが直径 8.8 mm で形成されていますが、適切に機能するように緩めにフィットさせるために、スプロケットの直径は 9.1 mm です。
これらのパーツをすべて定義したら、アセンブリ環境でスプロケット、アイドラー ホイール、ロードホイールの周囲に閉じた輪郭を描くスケッチを描きました。
次に、このスケッチを SOLIDWORKS チェーン コンポーネント パターン フィーチャーで使用して、その輪郭に沿ってすべてのトラック リンクを生成しました。
私は、ロボット プラットフォームの残りの部分、すべてが接続されているベース、いくつかの LED を収容する側面、およびトップ カバーを、モダンでクールなスタイルだと思うものでデザインしました。プラットフォームの全体の寸法はほとんどの 3D プリンターよりも大きく、約 400 mm x 300 mm であるため、ほぼすべての 3D プリンターで印刷できるように、すべてのパーツを 2 つのセクションに分割しました。これらはいくつかのブラケットと M3 ボルトで接続されています。
ロボット プラットフォーム全体を組み立てるには、さまざまな M3 および M4 のボルトとナット、いくつかのネジ付きインサートとベアリングが必要です。このプロジェクトに必要なすべてのコンポーネントの完全なリストは、以下のアセンブリ セクションにあります。
3D モデルおよび STL ダウンロード ファイル
この RC 戦車/ロボット プラットフォームの 3D モデルと、Cults3D から 3D プリント用の STL ファイルを入手できます。
3D プリント
3D プリントの際、寸法的に正確な 3D プリント部品を得るには、スライス ソフトウェアの [水平方向の拡張] および [穴の水平方向の拡張] 設定を使用する必要があります。これらの設定をデフォルトのままにすると、通常、プリントの外形寸法と穴は元のモデルよりも小さくなります。
水平方向の拡張を 0.02mm、穴の水平方向の拡張を 0.04mm に設定しました。もちろん、テスト印刷をいくつか行って、どの値が 3D プリンターで最良の結果をもたらすかを確認する必要があります。部品同士を簡単に組み立てたり、ベアリングやボルトなどの他のコンポーネントと簡単に組み立てたりできるように、部品の正確な寸法が必要です。
トラックリンクを 3D プリントするとき、ビルドプレートの接着としてラフトを使用しました。これは、ベッドプレートとの接触面が少し小さく、プリンターのベッドの接着力がそれほど良くない場合、うまく接着しない可能性があるためです。特に大量のバッチを印刷する場合は、ラフトを使用する方が安全です。
3D プリントされた戦車の組み立て - 追跡ロボット プラットフォーム
さて、これでロボット プラットフォーム用の 3D プリント部品がすべて揃いました。正直に言うと、すべてを印刷するのにかなり時間がかかりました。
たとえば、各基本セクションの印刷には約 22 時間かかり、156 のトラック リンクすべての印刷には約 96 時間かかりました。すべてを印刷するには約 200 時間かかります。幸いなことに、私は 3D プリンターを 2 台持っていたので、約 100 時間かかりました。
パーツリスト
以下は、この 3D プリント戦車 - ロボット プラットフォーム プロジェクトの組み立てに必要なコンポーネントのリストです。電子部品のリストは、この記事の回路図セクションの下にあります。
- 8x RC ショックアブソーバー …………………………………….. Amazon / AliExpress
- 8x スプリング…………………………………………………………。 アマゾン / アリエクスプレス
- 40x ボールベアリング 624 – 4x13x5mm ……………… Amazon / AliExpress
- M3 ねじ込みインサート ………………………………………….. Amazon / アリエクスプレス
- M3 および M4 ボルトおよびナット…………………………。 アマゾン / アリエクスプレス
ボルト:
M4x40mm – 8個; M4x35mm – 2個; M4x30mm – 8個; M4x25mm – 2個; M3x25mm – 16個; M3x20mm – 8個; M3x16mm – 10個; M3x12/14mm – 32個; M3x10mm – 8個; M3x8mm – 14個
ナッツ:
M4 – 25個; M3-30本
ワッシャー:
M4 – 30個
開示:これらはアフィリエイト リンクです。 Amazon アソシエイトとして、 私は対象商品を購入することで収入を得ています。
ベースの組み立てから始めました。先ほども言いましたが、これは 2 つのセクションで構成されており、いくつかのブラケットと M3 ボルトとナットを使用して相互に接続します。
サイドブラケットを固定するために、ベースの側壁に挿入する M3、長さ 5 mm のネジ付きインサートを使用しています。このようにして、壁の外側はボルトやナットがなくきれいになり、線路が近くを走ることができるようになります。
次に、ショックアブソーバーを取り付けるためのブラケットを M3 ボルトを使用して固定しました。
次に、ロードホイールアームが回転する部分にベアリングを取り付けます。ベアリングの外径は 13 mm、内径は 4 mm で、ロードホイールごとに 2 つ必要です。
ピンには長さ30mmのM4ボルトを使用しています。ベアリングとアームの間にワッシャーを配置し、内側からセルフロックナットで固定する必要があります。このジョイントをどの程度締めるかに注意する必要があります。きつすぎても緩すぎてもいけません。
次に、ショックアブソーバーを取り付けます。パッケージに同梱されている M1.4 ボルトを使用して所定の位置に固定します。
そんな小さなドライバーを持っていなかったので、ペンチを使ってボルトを締めました。今のところ、このメカニズムは完全に機能しているようです。
次に、アームの下端にロードホイールを取り付けます。ロードホイールは、サポート材による印刷を避けるために 2 つのセクションで構成されています。もしかしたら単体で印刷できるかもしれませんが、どのような仕上がりになるかは試していません。
このようにして 2 つのセクションを接続する必要があります。この目的のために、トラック リンクを接続するために使用するのと同じ 2 mm の鋼棒を使用することにしました。これは溶接に使用される真鍮の棒で、やや柔らかく、ペンチだけで簡単に寸法に合わせて切断できます。
各ホイールに約23mmの長さのロッドを3本挿入し、ホイールの両側に以前使用したものと同じベアリングを2つ取り付けました。ここでも、前と同じように、M4 ボルト、ワッシャー、セルフロック ナットを使用して、ロードホイールを所定の位置に固定しました。
ホイールはシャフトに遊びがなく、自由に回転できる必要があります。
次に、他のロードホイールに対してこのプロセスを繰り返すだけです。フロントロードホイールに関しては、トラックに動的張力を与えるレバーを備えた少し異なるアームを使用していますが、取り付けは同じです。
次に、アイドラーホイールの機構を組み立てます。これは、3 つの 3D プリントされたパーツ、いくつかのボルト、および 1 つのディスタンス ナットで構成されています。
最初のリンクを所定の位置に固定する前に、裏側に M4 セルフロック ナットを追加する必要があります。このナットに後でアイドラー ホイールを取り付けます。
これらのジョイントのピンとして同じ 2 mm の銅棒を使用しています。これで、アイドラー ホイール側の 2 番目のリンクで、M3 ボルトを使用して長さ 15 mm の M3 ディスタンス ナット 1 つを固定できます。
反対側には、長さ 20 mm の M3 ボルトとナットを配置し、距離ナットに挿入します。このセットアップにより、アイドラーホイールとロードホイールアーム間の距離を調整できるようになり、静的および動的の両方でトラックに張力を加えることができます。その後、アイドラー ホイールを M4 ボルトで所定の位置に固定するだけで、この張力システムとサスペンション システム全体が完了します。
さて、次はスプロケットを組み立てます。そのためにはまずモーターを取り付ける必要があります。ベース プラットフォームは、中心軸またはオフセット軸を備えた直径 37 mm のモーターを受け入れるように設計しました。
もちろんロボット プラットフォームの用途に応じて、RPM が 20 ~ 1000 RPM の範囲の 12V DC モーターを取り付けることができますが、それについてはビデオの後半で説明します。モーターは6本のM3ボルトで固定されています。
スプロケットをモーター シャフトに取り付けるには、まずシャフト カプラーを準備するか、それにネジ付きインサートを取り付ける必要があります。
次に、カプラーを所定の位置に挿入し、M3 グラブ ネジで固定します。
次に、スプロケットの 2 つのセクションを挿入し、3 本の M3 ボルトを使用して固定します。
これでプラットフォームのドライブトレインが完成しました。今度は線路の組み立てを楽しんでみましょう。そうです、トラックを組み立てるのはとても楽しかったです。
ここでトラック リンクを詳しく見てみましょう。リンクがいかにシンプルでクリーンであるかがわかります。
3D プリント時にサポートを使用していないため、3D プリンターからすぐに使用できる状態になります。接続には2mmのピンだけが必要です。すでに述べたように、2 mm の真鍮溶接棒から簡単に入手できます。
リンクの外側の穴はしっかりと嵌め込まれているため、挿入するには少し力が必要ですが、外れることはありません。リンクの内側の穴はルーズフィットで、トラックリンク間で自由に回転できます。
あとは、お茶かコーヒーを入れて、数時間組み立てを楽しむだけです。いくつかつなげてみると、カッコいいトラックが出来上がるので、その楽しさがわかります。 1 つの線路を組み立てるには、合計 78 個の線路リンクが必要です。ロッドの長さに関しては、各ピンの長さが約 43 mm である必要があるため、各トラックに約 3.5 m が必要です。
トラックの準備ができたら、それをスプロケット、ロードホイール、アイドラーホイールに巻き付け、現場で別の 2 mm ピンでループを閉じるだけです。ここで、最後のロードホイールが少し上に移動しますが、トラック リンクが 78 あるため、トラックの張力は適切であることがわかります。
実はバネが弱いからそうなるのです。ショックアブソーバーのこのナットを調整することでスプリングの張力を少し調整できますが、これも十分ではありませんでした。そこで、ショックアブソーバーに付属していた純正スプリングをより強力なものに交換することにしました。
スプリングの交換は非常に簡単で、ショックアブソーバーの一端のネジを外し、より強力なスプリングを挿入し、ロッドを再度ネジ込むだけです。私が持っていたスプリングはオリジナルよりも少し幅広だったので、下側にM4ワッシャーを使用する必要がありました。このスプリングには、78 リンクのトラックを取り付けるときにロードホイールを所定の位置に保持するのに十分な力がありました。
結局、すべてのショックアブソーバーのスプリングを交換することになりました。プラットフォーム全体の重量に耐えられるほど強度が足りないことがわかったからです。これでプラットフォームの駆動システム全体が完成し、非常に良い結果になったと思います。
必要に応じて、アイドラーホイールのディスタンスナットを使用してトラックの張力を調整できるようになりました。もちろん、正しく機能するためにトラックが少し緩んでいても大丈夫です。緩んだ履帯の上部はショックアブソーバーブラケットで支持されています。
モーターを電源に接続して動作を確認しました。私にはそれが完璧に思えました。これだけ多くの 3D プリント パーツを使用して作成したものが実際に動作しているのを見るのは、本当に素晴らしい気分です。
当然のことながら、反対側も組み立てるには同じ手順を繰り返す必要があります。これでロボットプラットフォームは80%完成したような感じです。次に、サイド パネルを取り付けます。これは主に見た目を目的としてここにあります。
いくつかのブラケットと M3 ボルトを使用して、所定の位置に固定します。上部でプラットフォームを囲むカバーに移動します。このビデオでは、見た目のためだけにこのようにデザインしました。
前に述べたように、今後のいくつかのビデオでは、このプラットフォームの上にロボット アームまたは砲塔を追加する予定です。つまり、その場合、上部を適切に設計する必要があります。
エレクトロニクス – ロボット プラットフォームの回路図
これで、このプロジェクトの電子機器の作業に進むことができます。先ほども言いましたが、ATmega2560 マイクロコントローラー ベースのボードを使用します。
このプロジェクトに必要なコンポーネントは、以下のリンクから入手できます。
- 2x 12V DC モーター – 50 ~ 500 RPM ………. アマゾン / アリエクスプレス
- DRV8871 DC モータードライバー……………….……。 Amazon / AliExpress
- Arduino MEGA……………………………….…….……..… Amazon / AliExpress
- 3S LiPo バッテリー ……………………..…………..Amazon / AliExpress
- XT60 コネクタ …………………………..………… Amazon / AliExpress
- FLYSKY RC 送信機…………………………。 Amazon / AliExpress
開示:これらはアフィリエイト リンクです。 Amazon アソシエイトとして、 私は対象商品を購入することで収入を得ています。
2 つのモーターを駆動するには、PWM 制御と最大 3.6A のピーク電流をサポートする 2 つの DRV8871 DC モーター ドライバーを使用します。 DC モーターの動作電圧は 12V で、約 12V の 3S LiPo バッテリーを使用してすべてに電力を供給します。また、サーボモーターの接続など、将来の他の用途に専用の 5V 電源を用意するために、5V 電圧レギュレーター LM350 IC も組み込みました。このビデオでは、この 5V を RC 受信機と一部の LED に電力を供給するために使用します。
このプロジェクトに使用している LED は、白と赤のシンプルな 5mm LED です。それらを次のように整理しました。
後部にはテールライトとして両側に 2 つの赤色 LED があり、前部にはヘッドライトとして両側に 3 つの白色 LED があります。さらに、トップカバーにはハイビームライトとして6つのLEDがあります。これらの LED が適切に点灯するには、電流を制限するための抵抗を含む適切な回路が必要です。それらの接続を並列と直列の両方で組み合わせました。
たとえば、フロントヘッドライトの場合、12V の 2 本の平行線を使用して、直列に接続された 6 個の LED (左右に 3 個ずつ) に電力を供給しています。 LED の順方向電圧と電流に従って、各ラインに必要な抵抗値を計算しました。この場合、それは 150 オームでした。 LED をアクティブにするために、定格 200mA の汎用 NPN トランジスタをいくつか使用しています。
最後に、バッテリー電圧の監視に使用する簡単な分圧器を作成しました。簡単に言うと、バッテリーからの 12V が 5V 未満に降下され、マイクロコントローラーのアナログ入力に入力できるようになります。プログラムでは、値を実際の電圧値に変換し、RC レシーバーから RC トランスミッターに送信し、ディスプレイに値を表示できます。
カスタム PCB 設計
実際にはかなり多くの接続が必要になったので、混乱を避けるために、このプロジェクト用にカスタム PCB を設計する必要がありました。
この PCB は、その上に直接取り付けられる ATmega2560 マイクロコントローラ ベースのボードと互換性があります。
モジュールでプラットフォームを制御したい場合に備えて、3.3V 電圧レギュレータと NRF24L01 トランシーバ モジュール用の接続を含めました。また、12V レールと、サーボ モーターを接続するために配置されたデジタル ピン接続を備えた 5V および 6V レールも含めました。 6V レールには、外部降圧コンバータを使用して電力を供給できます。
PCBWay に PCB を注文しました。ここでは、ガーバー ファイルをアップロードし、PCB のプロパティを選択して、手頃な価格で注文するだけです。
PCB の色を白に選択したことを除いて、デフォルトのプロパティは何も変更しませんでした。 PCBWay プロジェクト共有コミュニティからガーバーを見つけてダウンロードでき、そこから PCB を直接注文することもできます。
また、ここからガーバー ファイルをダウンロードできます:
それにもかかわらず、数日後に PCB が到着しました。 PCB の品質は素晴らしく、すべてが設計とまったく同じです。
すべてにラベルが付いているため、PCB の組み立ては非常に簡単です。 ATmega2560接続用にPCBの底部にあるピンヘッダをはんだ付けすることから始めて、次に上面を続けました。便宜上、最初に抵抗器やトランジスタなどの小さなコンポーネントをはんだ付けし、次に LED や電源コネクタなどの大きなコンポーネントをはんだ付けします。
すべての接続にピン ヘッダーを使用しました。ピン ヘッダーを使用すると、何かが正しく動作しない場合に柔軟に変更できるからです。外部降圧コンバータとそのレール、および 3.3V 電圧レギュレータのコネクタは、いずれにせよ今使用するつもりはなかったので、はんだ付けしませんでした。この PCB はこの白色でとても素敵できれいな仕上がりで、とても気に入りました。
3D プリントされたタンク アセンブリの完成
それでは、まずマイクロコントローラー ボードを M3 ボルトで所定の位置に固定し、その上にカスタム PCB を置きます。
今度はLEDを取り付けます。 5mm LED を収容するこれらのホルダーを使用して、サイド パネルに取り付けます。回路図で説明されているように、LED の各行を直列にはんだ付けする必要があります。
カソードには黒色のワイヤが、アノードには赤色のワイヤが接続されます。これらのワイヤを、PCB につながるサイド パネルの小さな開口部に通します。
LEDホルダー部分はサイドパネルに密着するよう設計されており、差し込むと見た目もすっきりと仕上がります。
ハイビーム LED は、上部フロント カバーに直接配置されています。
LED を接続するために、XH2.54mm デュポン オス コネクタを PCB にはんだ付けしたため、適切なデュポン メス コネクタをワイヤに取り付ける必要がありました。その財布には圧着ペンチが必要ですが、このプロジェクトを作成した時点では圧着ペンチを持っていませんでした。
この作業には通常の小さなペンチを使用しましたが、接続は問題なく完了しました。各 LED ラインは、PCB にラベルが貼られている適切なコネクタに接続する必要があります。
モーターに関しては、適切なコネクタがなかったので、ワイヤーを直接はんだ付けしました。モーター接続は DRV8871 ドライバー ボードに接続され、次に PCB に接続されます。
無線通信には、FLYSKY RC トランスミッターとレシーバーを使用しています。これは非常に手頃な価格で、非常にうまく機能します。
受信機をマイクロコントローラーに接続するには、ジャンプワイヤーを使用できます。レシーバーは I-BUS とシリアル ポートを介してマイクロコントローラーと通信するため、必要なワイヤは VCC、GND、信号ピンの 3 本だけです。
受信機から送信機にデータを送り返したい場合、この場合はバッテリー電圧を監視するため、受信機のセンサー I-BUS を別のシリアル ポートに接続する必要もあります。
最後に、LiPo バッテリーを接続します。バッテリーに応じて、適切なコネクタが必要です。これは 12V コネクタに接続され、そのすぐ隣にはプラットフォームの電源をオン/オフするためのスイッチを接続する ON/OFF コネクタがあります。
ここで、ボードに電力を供給する前に、まず RC レシーバーを電源から外し、トリマーを使用して LM350 IC の可変電圧を 5V に調整する必要があることに注意してください。
あとは上部の背面カバーを所定の位置に取り付けるだけで、このプロジェクトは完了です。
ロボット プラットフォームのプログラミング
次に、3D プリントされた戦車/ロボット プラットフォームをプログラムする必要があります。このロボット プラットフォームの Arduino コードは次のとおりです。
/*
3D Printed Tracked Robot Platform - Arduino Code
by Dejan, www.HowToMechatronics.com
Libraries:
IBusBM: https://github.com/bmellink/IBusBM
*/
#include <IBusBM.h>
#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); // Servo iBUS
IBusSensor.begin(Serial2, IBUSBM_NOTIMER); // Sensor iBUS
IBusSensor.addSensor(IBUSS_INTV); // add voltage sensor
// DC motors control - set them stationary
// Left track
digitalWrite(motorLeft_IN1, LOW); // PWM value
digitalWrite(motorLeft_IN2, LOW); // Forward
// Right track
digitalWrite(motorRight_IN1, LOW); // PWM value
digitalWrite(motorRight_IN2, LOW); // Forward
digitalWrite(46, LOW);
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
void loop() {
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beam
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);
// if PWM is lower than 72, set PWM value to 0
if (leftMotorSpeed < 72) {
leftMotorSpeed = 0;
}
if (rightMotorSpeed < 72) {
rightMotorSpeed = 0;
}
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
// if right joystick goes down > move backward
if (ch1 > 1000 && ch1 < 1420) {
digitalWrite(motorLeft_IN1, LOW); // Direction - Backward
analogWrite(motorLeft_IN2, leftMotorSpeed); // PWM input
digitalWrite(motorRight_IN1, LOW); // Direction - Backward
analogWrite(motorRight_IN2, rightMotorSpeed); // PWM input
}
// if right joystick is in the middle, don't move
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);
}
// if right joystick move just left or right, without going up or down, move the tank left or right (only 1 motor move)
else {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}
}
// LEDs control
// Headlights and Taillights LEDs control
if (ch6 > 1500) {
digitalWrite(47, HIGH);
digitalWrite(48, HIGH);
}
else {
digitalWrite(47, LOW);
digitalWrite(48, LOW);
}
// High beam LEDs control
if (ch8 == 1500) {
digitalWrite(46, HIGH);
}
// If rocker switch in position 3 (2ooo value) - flasing with the high beam LEDs
else if (ch8 == 2000) {
if (millis() >= time_now + ledBlinkPeriod) {
time_now += ledBlinkPeriod;
if (isOn == HIGH) {
isOn = LOW;
}
else {
isOn = HIGH;
}
digitalWrite(46, isOn);
}
}
else {
digitalWrite(46, LOW);
}
// Monitor the battery voltage
int sensorValue = analogRead(A0);
float voltage = sensorValue * (5.00 / 1023.00) * 3.02; // Convert the reading values from 5v to suitable 12V
// Send battery voltage value to transmitter
IBusSensor.loop();
IBusSensor.setSensorMeasurement(1, voltage * 100);
}Code language: PHP (php) コードの概要
そこで、IBusBM ライブラリを使用して、RC トランスミッターから受信データを読み取ります。
// Reading the data comming from the RC Transmitter
IBus.loop();
// ch0 - left and right; ch1 - forward and backward;
ch0 = IBus.readChannel(0); // ch0 - left and right;
ch1 = IBus.readChannel(1); // ch1 - forward and backward;
ch6 = IBus.readChannel(6); // ch6 - Headlights
ch8 = IBus.readChannel(8); // ch8 - High beamCode language: JavaScript (javascript) 右ジョイスティック、チャンネル 0 と 1 はプラットフォームの動作の制御に使用され、2 つのロッカー スイッチ、チャンネル 6 と 8 は LED の制御に使用されます。
受信データは、DC モーターの PWM 制御に適した 0 ~ 255 の値に変換されます。
// convert the incoming date into suitable PWM value
steeringValue = map(ch0, 1000, 2000, -185, 185); // 0 to 185 range because then I add +70 in order to avoid low PWM values as to motors won't start if so
motorSpeed = map(ch1, 1000, 2000, -185, 185);
motorSpeed = abs(motorSpeed);
leftMotorSpeed = 70 + motorSpeed + steeringValue; // 70 + (0-185) + (0 - 185 ) = 70 - 255 so this range from 70 to 255 is used as PWM value
rightMotorSpeed = 70 + motorSpeed - steeringValue;
leftMotorSpeed = constrain(leftMotorSpeed, 0, 255); // constrain the PWM value from 0 to 255
rightMotorSpeed = constrain(rightMotorSpeed, 0, 255);Code language: JavaScript (javascript) analogWrite() 関数を適切に使用して、PWM 値をドライバーとモーターに送信します。
// if right joystick goes up > move forward
if (ch1 > 1510 && ch1 < 2000) {
analogWrite(motorLeft_IN1, leftMotorSpeed); // PWM input
digitalWrite(motorLeft_IN2, LOW); // Direction - Forward
analogWrite(motorRight_IN1, rightMotorSpeed); // PWM input
digitalWrite(motorRight_IN2, LOW); // Direction - Forward
}Code language: JavaScript (javascript) ロボット プラットフォーム自体には複雑な機能がないため、全体的にコードはそれほど複雑ではありません。
3D プリント ロボットのテスト – 追跡ロボット プラットフォーム
コードをアップロードしたら、ロボット プラットフォームと RC 送信機の電源を入れてテストすることができます。送信機のディスプレイでは、LiPo バッテリーの電圧、受信機と送信機の電圧を確認できます。
そして、それができました。右のジョイスティックを使用して、プラットフォームの動きを制御できます。左側のロッカー スイッチでヘッドライトとテールライトの LED を制御し、右側の 3 方向ロッカー スイッチでハイビーム LED を制御します。ハイビーム LED には、常時点灯モードと点滅モードの 2 つのモードがあります。
ここで、私が取り付けたモーターは実際にはこのプラットフォームでは少しパワー不足であることに注意してください。
トラックが動き始めるには、ジョイスティックがほぼ最上部にあることがわかります。さらに、手で簡単にトラックを止めることができます。サスペンション システムとトラック自体により、モーターに大きな張力と抵抗が生じます。これらのモーターは 888RPM で、速度の点では問題ありませんが、定格が 500mA 未満の小型モーターです。
そこで、手持ちの他の大きなモーターと交換しましたが、実際にはほぼ同じ結果が得られました。これらはより強力なモーターでしたが、速度低下が小さいか、RPM が 1280 と高かったため、同じ結果が得られました。
実際、それらはそれほど悪くありません。ロボット プラットフォームはそれらと非常にうまく連携します。
正直に言うと、これを運転するのは本当に楽しいです。特に LED が点滅してバーンアウトやドーナツが発生するときはそうです。
しかし、その楽しみはそれほど長くは続かず、外に持ち出すとすぐに動作しなくなりました。問題はモーターの出力不足であることはもちろんですが、トラックリンクの設計にも問題があります。スプロケットの歯が入る部分には汚れがたまりやすくなります。
そこで、反対側に穴を開けて、汚れが通過できるように設計し直しました。また、スプロケットを0.2mmオフセットして少し小さくし、トラックとのフィット感を緩めました。
これらのアップデートを適用してすべてを再組み立てしたところ、プラットフォームは屋外で走行できるようになりました。ただし、パワー不足のモーターが再び問題になりました。ホームは時々積み重なって、上り坂ができなくなりました。したがって、私の提案は、500 RPM 以下のモーターを使用し、少なくとも 1A または 2A の定格電流を備えたより強力なモーターを使用することです。
より強力なモーターを搭載したプラットフォームを実際に試してみました。速度はわずか 20 RPM で、楽しんだりドーナツをしたりするには明らかに遅すぎましたが、プラットフォームはまるで本物の戦車のようでした。文字通りどこにでも行くことができます。
20 RPM モーターは、どんな障害物も乗り越えるのに十分な強力でした。非常に遅かったですが、特定のアプリケーションには問題ないかもしれません。私の提案としては、低速の場合は約 50 RPM、高速の場合は約 500 RPM のモーターを使用する必要があるということです。
このビデオを楽しんでいただき、何か新しいことを学んでいただければ幸いです。下記のコメント セクションでお気軽に質問してください。今後の更新情報を購読し、私の Arduino プロジェクト コレクションをチェックすることを忘れないでください。
製造プロセス