MJモノづくり工房

安く上がるので3Dプリンタでかわロボを作っている人

小ネタ ネジ入れにルアーケースがとても良い話

ネジ入れって結構、ものづくりQOLに響きますよね

ダイソーなどで適当にそれっぽいものを買っても仕切り数が足りなかったり無駄なスペースが生まれてしまったりとなんやかんや使いにくかったりします

ということで、私は釣りのルアーケースをネジ入れに使ってます

特に浅くて仕切りを多くも少なくも出来て、仕切りの調整がめっちゃ細かく出来て、程よく薄くて、留め具が大きくてしっかりしてて開け閉めがしやすくて…

みたいな、こだわり条件を満たしてくれるのがメイホウのVERSUSです

Amazon | メイホウ(MEIHO) VERSUS VS-3020ND クリアー | 明邦(Meiho) | タックルボックス

仕切りにネジの種類を書いたりすると気分が上がる。ネジ分けが捗る

透明だから空けなくても中身が見えて管理が楽

元々、ルアーフィッシングが趣味で、実際にこのケースもライトゲームのワームやらジグヘッドを入れるのに使っていたのですが、最近はあまり釣りに行かないのと、このケースはサブケースだったので中身を入れ替えてネジ入れにしました

仕切りは、なんか無くしてたので採寸して3Dプリンタで作り足しました。

とってもいいです

おすすめです

700円強してそこそこ高いんですが、いろいろと使い勝手がいいので正直、買いだと思います。

お試しあれ。

微妙だったフィラメントや最後の方、余っちゃったフィラメントの消費の紹介(パーツトレイを作ってる)

本記事はかわロボアドベントカレンダー2025何でもあり向けです

かわロボ(何でもアリ) Advent Calendar 2025 - Adventar

これにて、社会人、新人、何でもアリと全カレンダー制覇しました。

嬉しい。

 

さて、みなさん

3Dプリンタはでモノづくりしてますか?

私はしています

3Dプリンタでモータを使って動くようなロボットのようなものを作る際に、実際に印刷してみて強度が足りなかったり、精度が出なかったり色が気に入らなかったり最後の方使い切れずに余っていたり…

何かと半端なフィラメントを持て余しませんか?

私は良く持て余します

で、ありきたりではあると思うのですが、私はそういったフィラメントを使ってよくパーツトレイなどを印刷しています

パーツトレイたち

データは適当にお手元のCADソフトで書いてもらって。

fusion360で言うところのロフト機能を使ってモデリングして全体にテーパをかければ使わない時に重ねられていいです

スケッチを異なる平面で描く

ロフトでモデリング

シェルでトレイ状にする 大きめのRを付けておくと割れにくい

ツバとか付けていい感じにしたらモデリング終わり お好みでサイズ違いを作っても良き

小さいの、大きいの、深いの、浅いのお好みで数種類用意できているとものづくりQOLが上がります

詳しいモデリングの仕方は各自ググってください

描き方がわかれば30分くらいで描けると思います

 

スライサの設定でいわゆる花瓶モードというのを使うと一筆書きで印刷してくれて早くて、フィラメントの消費を抑えてそれなりの大きさのトレイを作れるので気に入っています(その代わり割れやすい)

ライン幅を普段、ノズルと同じ0.4mmの人が多いと思いますが、ノズルは0.4mmのままでも0.6か0.8mmくらいまで太くしても、まぁ印刷できます

ライン幅を太くすると、ある程度は耐えてくれます

六角なトレイ 普通に印刷すると3時間越え

花瓶モード(滑らかな輪郭)で一筆書きで印刷すると48分

一筆書きになる影響で、モデル通りの形状で印刷されないので、プレビューは必ず見たほうが良いです

左:普通のスライサ設定(重くて時間かかった) 右:花瓶モード(軽い すぐに出来た 余りもののフィラメントで出来た)

 

トレイだと仮に途中でフィラメントがなくなっても浅いトレイが出来上がるだけなので無駄にはならなくていいです

左のは浅くなっちゃったけど、ちょうど浅いのが欲しかったねん。。。


参考になればいいなと思います

 

ではでは。

3Dプリンタで作るかわロボ 2年目

本記事はかわロボアドベントカレンダー2025向けに作成しています

かわロボ(社会人、ベテラン) Advent Calendar 2025 - Adventar

 

結構長いので全文読む必要はないと思います

目次を作ったので、お好みのところだけ召し上がってください

 

 

 

はじめに

去年から、3Dプリンタで作るかわロボというテーマで日頃ブログを書いています

今年も去年に引き続き3Dプリンタでかわロボを作ってました

かわロボ非公式大会(○○杯)にたくさん参加しました(本大会は抽選落ち)

その中で中島杯ベスト8、ヤガボット4位、立命杯ベスト8と、好成績と言っても良さそうな結果を残せました(はい、みんな拍手!!!)

ガボット4位(アドカレ主催、レパード選手に敗退)

立命杯の決勝トーナメント表 右側下にハイランドタージが居る

いや~、一年でここまで戦えるようになるとはあまり考えてなかったので嬉しい限りです。

さておき。

去年のアドベントカレンダーでも「3Dプリンタで作るかわロボ」というテーマで記事を書いています↓

かわロボアドベントカレンダー 3Dプリンタで作るかわロボ - MJモノづくり工房

去年の記事では

  • かわロボをやりたいけどCNCは買えず3Dプリンタなら用意できた
  • 3Dプリンタ機体をとりあえず作ってみたら試合が出来た
  • そこに至るまでに必要だった考え方等の共有

みたいな内容でした

 

今年は主に

  • 2025年に製作した機体の紹介
  • 練習会でもらった質問の回答

を通して3Dプリンタで作るかわロボのノウハウを共有出来たらな。と思っています

何かしらの参考になったら良いな。と思います

 

それでは。

 

今年製作した機体の紹介

時系列順に紹介

今年は3台作りました

ツインミドル

基本スペック

機体分類:ツインミドル

電源:ニッスイ6セルorニッスイ9セルorリフェ3セル(空いてる電池で戦える)

脚:ヘッケン3相 ギア比76.8 モータ380スポチュン1個ずつ計2個

アーム:リンクなし ギア比223.97... モータ380スポチュン3連装

重量:3280g(だったと思う)

その他:フルクロスなし 輪ゴムサス なんか知らんけど山越え出来る 6Vレギュレータで受信機駆動

どんな機体?
  • 初めて小型シールド機以外の機体にチャレンジした機体
  • 練習会でたまに勝てるくらいの性能
  • 狙って山越えアタックが出来た
  • あんまり使わずにバラしちゃった

 

3Dプリンタかわロボ第二段! ツインミドルロッド作ってみた - MJモノづくり工房

詳細は↑の記事に書いてあります

 

素で山越え攻撃が決まったり練習会でたまに勝てるくらいの性能はあるのですが、如何せん遊びで作った機体なので、思い入れがなく2回?くらい練習会で使って飽きて満足して、今は要素を剥ぎ取られ、私の知り合いでかわロボ作ってみたいという人にあげちゃいました

アームの先端がPLA生なので高速回転機とは戦わなかったです

弾けて破片が人にあたると嫌だったので。

去年のアドカレの記事で「大型機だとどうなるかわからない」という内容を上げましたが、大型機でも特段問題は感じませんでした。

 

ハイランドタージVer.4

今年、大活躍した機体

私の今のメイン機体です

先に上げたトーナメント成績は全部この機体

最近、ハイランと略称をつけて呼んでる

ちなみに名前の由来は同名のパイプたばこの葉っぱの銘柄

基本スペック

機体分類:小型シールド機

バッテリ:リフェ3セル 2200mAh 40c

脚:タミヤ380スポチュン1個ずつ計2個 ギア比51.2 半径75mmくらい?(変更無し) 平行リンクサスペンション

アーム:タミヤ380スポチュン4連装 ギア比77.45 リンク無し アーム半径300mm弱(確か) 市販遊星ギアヘッド(ツカサKU→中華ギアヘッド)

重量:フルクロスなし約3100g フルクロス込み約3250g

その他:アーム角度制御アリ 展開式カウンタアーム ウイング搭載

どんな機体?
  • (今のところ)メイン機体
  • 制御が入っててアームがそこそこ強い
  • 去年アドベントカレンダーで紹介したVer.3をより攻撃的にした
  • 非公式大会でそれなりに良い成績を残した

3Dプリンタで作るかわロボ 2025新型小型シールド ハイランドタージver.4機体紹介 - MJモノづくり工房

↑過去に書いた機体紹介ページ

おそらく、私のことを練習会やTwitterで見かけている人はこの機体のイメージが強いと思います(だって、メイン機体だもん)

試合回数は200を越えた辺りからカウントしてないくらいには試合をこなしてます

ロールアウトから、かなりマイナーチェンジを繰り返していて、未だにマイナーチェンジをちょこちょこしている機体です

過去の紹介ページから大きく変わったのはアームの市販ギアヘッドをツカサ電工KUからアリエクで買った中華製の文鎮みたいなギアヘッドに変えたことですね

ちなみに市販遊星ギアでアーム減速器を作るのはシクロさん(からっ風)譲り?です

からっ風SS 2024年版|制作物|白黒サイクル

ギアヘッドを使ったアーム減速器 デメリットもあるけどメリットもそこそこある

後ろ側にあるウイングや展開型カウンタアーム、機体コンセプトみたいなものはCALPICO ORANGEさんをパクって参考にしています
未だに大きく負け越しています。強くなりたいならあちらを参考にした方がいいです…

 

今後もこのタイプの小型シールド機は作ると思います

 

ミッドタージ

ミッドタージ
基本スペック

機体分類:ツインミドル

バッテリ:リフェ3セル 2200mAh 40c

脚:4ユニット独立で各1つずつ、計4個 ギア比40 平行リンクサスペンション

アーム:タミヤ380スポチュン4連装 ギア比 リンク無し アーム半径 市販遊星ギアヘッド(中華ギアヘッド)

重量:上クロス込み約3300g(たぶん)

その他:アームサーボ制御 脚連動ケツブレード ウイング搭載 上部クロスで横回転対策

どんな機体?
  • ツインミドルの先端をアルミにした(手加工)
  • 最近流行りの脚連動ブレード付き(倒立スタートが早くなったらいいな)
  • RCサーボモータのようなアーム制御
  • 脚モータは4個独立搭載(ギアトレイン無し)

詳細は後日本ブログにて紹介(するつもりはある)

まだ始まったばかりの機体で、発展途上です

ぶっちゃけまだ弱いですね。使いづらい。

ツインミドルに対する理解度が浅いのも影響していると思います

いろいろと改良をしている最中です

11月に出来たばかりの最新機体

PDCAで言うとC→Aくらい

 

去年から機体構成が大きく変わった要素

去年の機体から大きく変わったのは

  • バッテリをニッケル水素→リフェへ
  • 一部、手加工のアルミ部品を使うようになった
  • 市販パーツを使い始めた(ギアヘッドやフランジ)

です

バッテリをニッケル水素→リフェへ

去年までは価格の安さや、出力を抑えて自壊しにくくするという目的でニッケル水素バッテリを使っていました

正直、ニッケル水素でも練習会で3~5割勝率くらいの性能は確保できたのですが、どうしてもアームの出力に不満が大きく残りました

3Dプリンタ機体も慣れてきて出力を上げても自壊ばかりで楽しくない。とはならずに済みそうだなと思ったのでリフェを導入しました

リフェ3セル 9.9V表記がミソ

ただ、皆さんがやっているリフェ2セル2個直列4セル仕様ではなくリフェ3セル1個です

理由はリフェ2個セットを準備するのは高いし管理が面倒だからです。

これでかなりパワーアップ(ワット数的にも戦力的にも)しました

ニッケル水素の8セルも使ったのですが、無負荷の時の電圧はニッケル水素の方が高くても、内部抵抗等で最終的に出せる電流はリフェの方が大きいです

確実にトーナメントでの好成績に貢献している一要素です

やはりリチウム系電池はつよい。

アームの出力に関しては、まだ上げたいので、いずれ4セルになるかもですが、今は3セルで運用しています

一部、手加工のアルミ部品を使うようになった

今まで出力軸やアームの先端なども3Dプリンタパーツだったのですが

さすがに良く壊れるのでアルミにしました

電動ドライバーと金物用ノコギリ使って片手でペンチで押さえて…みたいな根性な手加工です

ミッドタージのアーム先端の加工 固定がちゃんと出来ないので結構大変だった

PLA+製の六角シャフトだと折れまくる(当たり前)のでアルミの六角棒に変えた

せめて、バイスは欲しいですね

市販パーツを使い始めた(ギアヘッドやフランジ)

アームのギアボックスは市販されている遊星ギアヘッドの流用をするようになりました(からっ風の真似)

3連装までなら3DPギアボックスで耐えたのですが4連装にすると難しくなってきたので、採用しました。

重たいですが、強度はあります

それに付随して、遊星ピニオンとドリブンギアとの接合にフランジが欲しくなったのですが、アマゾンやアリエクにフランジが今の時代豊富にそろっているので、そちらも導入しました

Amazonでも売ってるフランジ(凄い時代だぜ)

Amazon | 3.17mm フランジ形軸継手 2個入り リジッドフランジカップリング モーターガイドシャフトカプラー モーターコネクタ DIYパーツ用 内径3.17mm M3六角レンチ付き シルバートーン (3.17MM) | セットスクリューカップリング | 産業・研究開発用品 通販

アルミっぽい写真のくせに鉄製だったり、長さが記載されているのより2mmくらい長くて発狂したりはしましたが、まぁ、使えます

現状、これで重量も入っているのですが、レイアウトの自由度が下がるのがやはり何とも。

最近、なんだか3Dプリンタ遊星ギアでもイケる気がしているのでそのうち試します

一応、メリットとして、効率は市販遊星ギアの方が断然良いと思います

やはり、自作ギアより既製品ギアですよ。

 

今年受けた質問の回答(覚えている範囲)

去年に引き続き、今年も練習会にたくさん参加させていただきました

その際に、技術的な質問をたまに受けます。

参考になりそうで覚えているものを紹介します

Q.プリンタの機種は何ですか?

A.sovol SV06 そこそこ古いモデルのものです

2024年3月に買いました

当時、型落ちで25000円、更に謎割引で結局21000円の殆ど捨て値になっているものを買って今もそれ一台だけです

プリンタの性能は話を聞く限りだと今流行りのバンブー達より大きく劣ると思います

どちらかというとEnderとかに近い性能かなと。

買ってから15㎏以上のフィラメントをこのプリンタで消費しています

結構、しょっちゅう壊れますが騙し騙し使ってます

これから買うよという人はこの機種を買うメリットは全くないので、おとなしくバンブーシリーズ買いましょう。

Q.フィラメントは何を使っていますか?

A.基本的にはPLA+(ぴーえるえーぷらす)と呼ばれているものです

私が普段愛用しているメーカーは一応、伏せているのですが、ぶっちゃけAmazonでパッと調べて出てくるPLA+なら大体似たようなもんです

注意して欲しいのはプラスじゃない無印のPLAはめっちゃ脆いのでかわロボには向いてないと思います

2000~3000円前後のフィラメントを素材違いも含めると10種以上は試したのですが、私のプリンタだとなんやかんやPLA+が強度が出て使いやすいです

PLA+以外の素材も使っています

種類と使い分けは後述

Q.フィラメントは何種類使ってますか?

A.意識して使い分けているのは大体3種類くらい

現在、使い分けを意識しているのは

  • PLA+
  • PETG-GF
  • PLA-CF

になります

PLA+を基準により耐熱性が欲しい箇所にはPETG-GF、多少割れやすくても良いから軽くしたいところにはPLA-CFを使っています

GF添加は無添加と比べて比重が重くなります

GF、CF共に無添加に比べて少しだけ耐熱温度が上がります

GF、CF共に無添加に比べて積層接着力が下がります(割れやすくなる)

GF、CFで耐久応力が上がる(いわゆる強度が上がる)なんて触れ込みが多いですが、正直、積層接着力が下がるので眉唾かなと。

ただ、表面硬さはたぶん上がっているのでGFないしCF添加素材は気持ち雌ネジの耐久性が良いので雌ネジがちゃんとして欲しいステーなんかに使ったりします

PETG-GF使用例:脚モータマウント

写真

モータマウント(アイボリー色)はpetg-gf モータ側にアルミテープを貼って少しでも放熱性を上げている ヒートシンクも付いてる

どうしてもリフェ3セル380スポチュン1個ずつの脚モータの発熱だとPLA系統は熱変形してしまいギアの噛み合わせが最悪になってしまうので使用してます(2個ずつだと発熱はそこまでなく、PLA系統でも耐えてた)

ただのPETGでも耐熱は問題ないと思うが、剛性と強度が低くて気になったのでGF

GFだと重いのでCFにしたい

 

PLA-CF使用例:脚先(脚裏ゴムが接着されてる部分)

チョコレート色の部分がPLA-CF

脚先はなるべく軽くしたいのと、強度を上げても回転シールドの前には皆同じ。って感じなので多少割れやすくても軽いPLA-CFを使っています

これでも自走してここが壊れたことは今のところないですが、良かれと思ってCF配合の物にしたら積層面で剥離して壊れるというのはよくあるので使いどころの見極めが必要です

あとは、構造的か形状的に剛性が確保できる場所に使ったりもしますが、チクチクするし高いのでなるべくなら使いたくない

Q.色が違うところは何か意味があるのですか?

A.あるところとないところがあります。ぶっちゃけほぼないです

先に上げたようにフィラメントの種類の使い分けで色が違うこともあるのですが、大抵はその時安かった色のフィラメントだったりします

機体を作る前に機体のイメージカラーだけ決めて(ハイラン→灰色、ミッド→赤(赤い機体は強い))、その後の改良などでは色のこだわりを無視してることが多いです

フィラメントの価格は人気色程高くて、不人気色は安くなっていることが多いので、比較的見えにく箇所の色はバラバラだったりします

一応、時期によって、なるべく違う色を買うようにして、印刷した時期がわかりやすくなることもありますが、まぁ管理は殆ど出来てないです。突っ込まないで。ぼろが出る。

Q.380の先のギアはどうしていますか?

A.RCバギー用で380向けM0.8のピニオンギアがあるのでM0.8で初段から3Dプリンタギアになっています

地味に多い質問です

それくらい、皆さん苦労する箇所なんですね。

かわロボ勢の多くは380ピニオンと相手のドリブンギアはKHK製M0.5のピニオンとLSギアSSギアなどの既製品のボスにガッツで追加工して多段ギアにしていると聞きます

中には血反吐を吐きながらM0.5のドリブンギアを切削して作っている人もいますね

どちらにしても金属でギアを作るには最低でもCNCが必要なので私には出来ない手法です

とはいっても積層式3DPでM0.5のギアの製作も、細かすぎてなかなか難しいです(積層式は細かい造形は苦手)

ということで、大人しくモジュールを上げてM0.8を使っています

M0.8ならば0.4mmのノズルでも印刷出来ます

ピニオンはタミヤのラジコンでグラスホッパーやホーネットという機種が380モータでM0.8を使っているようで、そちらを使っています

左M0.8t10 右KHKのSS0.5-8A(みなさんお馴染み)

あるいは、スポチュンについてくる真鍮製の丸パイプがΦ3.17とΦ2.3の変換になっているので、540用でM0.8のピニオンを使ったりもします

一般的なラジコン用ピニオンの内径は3.17mmだが金色のパイプを使うと2.3mmに変換できる

いずれにしてもモジュールが大きい分、ピニオンやドリブン直径が大きいので初段の減速量的にギアの段数が増えてしまって省スペース設計が難しくなったりします

そこは腕の見せ所だと思います。頑張って。

 

また、最近流行りのバンブー製品だとM0.5のギアが、そこそこすんなり印刷できるみたいです。

かわロボ界隈だとAlice-K氏がバンブープリンタでM0.5ギアを印刷して使用しているようです

tom3reimu.exblog.jp

私も最新機のミッドタージには3Dプリンタ製のM0.5ギアを採用してみているのですが、かなり苦戦しています

最近ようやく、うちのプリンタでもそこそこM0.5ギアを印刷できるようになった

そもそもM0.5だとギアの組付け精度にかなりうるさくなるので、樹脂フレームには不向きなのでは?と思うのと、樹脂ギアで金属ギアに比べて、より歯の強度がシビアなのも尚更組付け精度にうるさくなる要因なので

まずはM0.8で作る方が苦労は少ない気がします(アルミでも同じかも)

Q.3Dプリンタのギアで耐えますか?

A.まぁ、なんとか…

3Dプリンタ製歯車をふんだんに使っているわけですが、モジュールが極端に小さい(M0.5は極端に小さいと思う)もしくは極端に歯数が小さい(歯数10以下等)だと壊れることが圧倒的に多くなりますが、一般的な歯車の歯幅、歯数、モジュールだとそれなりに耐えます。

基準はKHKのPSギアのラインナップでしょうか。(かわロボだとあそこまでゴツくするのは難しいけど)

POM切削よりちょい弱いという認識で設計をしたら、大きく外すことはないと思いますが、アルミと同じモジュールや歯幅だと泣きを見ます

私の場合は初段以外はモジュール2歯幅5mmを基準にモジュールと歯幅を決定しています

とりあえず、何となく決定して実際に作ってみて割れたら歯幅を増やしたりプラス転位を割れなくなるまで繰り返しています

ギア以外の要素でもそうですが、大切なのは、強度が心配なところはなるべくスペースを確保するなどして、壊れまくるようならあとからの設計変更で剛性を上げられるようにすること。だと思います

また、3Dプリンタならでは、の手法として、”はすば”や”やまば”歯車にして強度確保も可能です

同じ歯幅歯数モジュールだと3Dプリンタ製でもちゃんと平歯車より強くなります(実体験済み)

ただ、やまば等で強度が上がることを前提にすると失敗しやすいです(軸間距離が変わったり)

また、ギアの場合はイレギュラ的な負荷、例えばアームの上げすぎによるロック等は上記の工夫でどんなに頑張っても耐えませんでした(アルミでも耐えないと思う)

私は、リミットスイッチやアームの制御などでロックしない対策しました

今は専ら制御です

Q.ケミカルクラックは大丈夫ですか(ネジロック等)
A.ケミカルクラックはしてると思うけど、意外と大丈夫

脚のクランク周りや、メンテナンスしにくい部分など、かなり多くの場所にいわゆるネジロックを使っています

ケミカルクラックして困るというシチュエーションは記憶にないです

もちろん、3Dプリンタパーツになるべく付かないようにネジに薄く塗布する程度、等出来る限りの気遣いはしています

定量的な検証はしていませんが、おそらくポリカのケミカルクラック度合い?よりPLA系統のケミカルクラックの方がマシなんじゃないかな?と思っています

足裏ベースにポリカ切削パーツにPPXでシリコンゴム。みたいな構成をPLA系統に置き換えると作りやすいし、PPXの食いつきが良いし、ケミカルクラックが少ないかもしれないので置き換えしやすそうだな。と思っていたりもします。

どちらかというと濡れたしする方が強度が落ちる気がします

雨の日はキャリーの中で更にゴミ袋二重で機体をくるんで運搬しています

 

Q.スペーサってどうしてますか?

A.3Dプリンタで作っちゃってます

スペーサというといろんなものがありますね。円筒状の物に雌ネジがあるのや、単に円筒なだけの物や、六角軸とベアリングの間に入れるものなど

今あげたもの、全て3Dプリンタパーツで賄っています

”スペーサ”達

 

3Dプリンタ製スペーサは弱いのは弱いのですが、使えないこともないです

雌ネジがあって長いスペーサは相手の片側と一体成型パーツにしてしまうことです

一体パーツ 印刷時間は掛かるが、強度は上がるし組立が楽になる

こうすると、組立が楽ですし分割するより耐えます

ネジをちょっと長めのを使うと強度が更に上がっていい感じです

細かいスペーサやシムみたいなものを一体成型化出来るのは3Dプリンタ部品のいい所かなと思います

また、スペーサの形状に特にこだわりがないのなら四角くして寝かせて印刷すると、かなり耐えます

円柱、六角柱形状だと寝かせて印刷すると反ってしまって上手く印刷できないことが多いですが、四角だと比較的何とかなる

スペーサの幅?直径?は8mmを基準にしています
スペーサの雌ネジをどうしているかは後述の回答にて。

人によってはスペーサを自作するのは時間の無駄。買った方が良いという人もいます。

その通りだと思います(笑)

ただ、3DPスペーサならさほど苦労せずに買うよりも、そこそこ安価に製作可能なので、そんなに悪い選択肢ではないと思います

自作スペーサは設計変更に強いのも3DP機体との親和性が高いです

 

Q.雌ネジ加工はどうしていますか?

A.締結によって3つ使い分けています

  • セルフタッピングネジ
  • 熱圧入ナット
  • 六角ナット埋め込み

締結力がさして必要ない箇所にはセルフタッピングネジや熱圧入ナットを使っています

セルフタッピングネジと 熱圧入ネジと 普通のナット

セルフタッピングネジとは木ネジみたいな奴のことです

木ネジと比べると少しだけピッチが狭くなっています

色んなタイプがあり、3Dプリンタに対しては2条ネジの方が良いらしいのですが、単価がとても上がるので私は安価な1条ネジを使っています

ネジ種類参考↓

樹脂用セルフタッピンねじ|オオサカ精機株式会社

下穴は呼び径の直径でモデリングすると、印刷の際にどうせ穴がつぶれるので、いい感じの下穴径になります(M3ならΦ3でモデリングすると実寸法がΦ2.8とかになる)

熱圧入ナットは真鍮製のインサートナットのことで、印刷後に、はんだごてを使って母材を熱変形させながら挿入します

そこそこ使えるのですが、PLA+だと母材が弱いのでナットの外側が舐めてしまったり、締結していくとナットが浮き出てきてしまったりと、本気で絞めてしまうとトラブルが起きたりします

セルフタッピングでも並目ネジでも少し長めのネジで深く入れると舐めにくいです

最初はセルフタッピングで組んで、メンテや設計変更をするうちに舐めてきたら熱圧入に変える。というのが多いです

最近はヘリサートも覚えたので使っていますが、こちらは結局母材に並目程度のピッチのタップの耐久性依存なのでやはりそこまで締結トルクは出せないです(ヘリサートの外側のタップが舐める)

ただ、はんだごてを使わずに済むので、練習会などでセルフタッピングが舐めた時に使ったりは良さそうだなと思います

あと、穴の位置がヘリサートの方がズレなくていいですね

テーパ型のインサート(専用ポンチで広げるやつ)はまだ試してないです。

 

締結力がとても欲しい所には普通の六角ナットをモデル上で埋め込めるようにして使っています(脚のクランクの締結等)

ナット埋め込みの様子 ナット版ザグリのイメージ

六角ナット埋め込みは、一般的なナットで締結するイメージで考えます

ナット版ザグリ、みたいな認識です

このやり方だと六角ナットの締結力とネジの曲げ剛性と強度もPLA積層方向にプラスになるので結構強く締結出来ます。PLAが割れるのが先です。これでダメならネジ径を上げるなり金属にするなりが必要だと思います(イモネジ固定用のフランジなどを作らずにわざわざ買っているのはこの辺りが理由)

ただ、ナットを埋め込むので板状のパーツだとある程度厚みが必要になってしまうので、使用できる箇所はそれなりに限定的です。

私はトラスコで売られている薄型ナットを使っているのでt-3くらいならナット埋め込みを使っています

また、純粋な雌ネジというより反対側にナットがあるだけなので円筒状スペーサのような形状には使えません

外周が六角で真ん中が熱圧入みたいにくびれてる熱圧入用のナットがあれば最強な気がしますが、あるんですかね?(ありそう)

 

Q.3Dプリンタでかわロボをやってみたいのだけど、何からしたらいいですか?

A.とにかく作りまくりましょう

尋ねられ方は色々ですが、このような質問を良く受けます(特に学生さんから)

たぶん、かわロボに限らず、ものづくり系の趣味、全般に言えることだと思うのですが

ある程度自由に使える環境があるのなら、まずはガンガン作ってください

最初は笑われたりディスられたりするかもしれません。気にしなくていいです。(ディスって来た奴は実力で黙らせましょう。)

先に上げた細かいテクニックやノウハウや考え方はその先にあります。

作りたいと思っているだけですと、私からアドバイス出来ることはかなり限定的で、それこそググれば出てくることしか言えません。

ですが、一度「こういうのを作ったんだけどここが…」となると私もそうですが、それ以外の人からも(聞いてもいないのに)より具体的で建設的なアドバイスが聞けると思います

 

ちなみにハイランドタージシリーズは今ので5機体目です(ver.0が居たので)

5機体も作ってようやく戦略を真剣に考えられるレベルになったくらいなので、どうせ最初は失敗すると気楽にとりあえず作っちゃいましょう。

エンジニアリングとしては口だけでなく手も動かしたいところかなと。

アルミでも、その辺はたぶん同じです

PDCAサイクルを雑でもいいから爆速で回しましょう

スローガンは”ちっちゃいことは気にするな”(ワカチコワカチコ)で、いきましょう。

 

さいごに

私がブログ、Twitter、練習会(現物)で3Dプリンタ機体でも戦えるよ!というのを示した影響もあったのか?今年は3Dプリンタ機体がとても増えたと思います。

他の方のTwitterやブログでも3Dプリンタ機体の製作記録が綴られていますね。

今は学生だけどそのうちCNCが使えなくなる。でもかわロボは続けたい!という人が3Dプリンタ機体が気になる人が多いかなと思います

学校の環境でかわロボを作って遊べていた人ならば、能力的にはCNCレス、3Dプリンタでかわロボを作って遊べるかなと思います

3Dプリンタ機体で満足出来なかった場合、結局CNCを買うことになっても現在の環境でものづくりを趣味にするなら3Dプリンタが家にあるのは、それだけでアドだと思うので、あまり難しいことを考えずに3Dプリンタを買って挑戦してみても良いのかなと思います

私はしばらくCNCレスでかわロボを楽しむつもりです

何かありましたらTwitterや本ブログや練習会などで質問して頂ければ可能な限り答えます(なんでもは知らないわ。知ってることだけ)

 

今後ともよろしくお願いします

 

立命杯集合写真にて左ミッドタージ 右ハイランドタージ

 

 

p.s.社会人で新人(かわロボ歴5年未満)なのでどっちにでも(たぶん)書いて良いという特性を存分に使います(笑)

新人枠で書いた記事↓

ホビーウイングより安くてたぶん強いアンプ紹介 Surpass Hobby BDC80 - MJモノづくり工房

新米社会人の人だと安く上げたいですよね。

安く作るのはたぶん、私は得意なので参考にしてください。

ホビーウイングより安くてたぶん強いアンプ紹介 Surpass Hobby BDC80

本記事はかわロボアドベントカレンダー2025の新人枠のものになります

https://adventar.org/calendars/11521

かわロボ歴1年8ヶ月なので新人です

ということで学生、”新人”枠にお邪魔します

 

今回は私がクイックランから乗り換えたアンプの紹介になるのですが、

私はリフェ3セルで運用しています

リフェ4セルだと、どうなるかは試していないので、最悪、皆さんの環境だと使えないかもしれないのでご理解下さい(リポ3Sまでの仕様なのでクイックランと同じで満充電直後だと使えないとかだとは思いますが…)

 

また、本ブログで紹介する内容はメーカーが想定していないであろう使い方の為、故障や発煙発火のリスクがあります。自己責任でお願いします(かわロボだと日常ですが…)

 

 

はじめに

さて、皆さん

アンプは何を使ってますか?

色々あると思いますが私のような新規組はホビーウイングのQuickRun1060を使っている人が多いかなと思います

みなさんお馴染み

最低限使えるアンプではありますが、かわロボのようなハードな使い方では耐えずに良く発煙してますよね

そもそも定格電圧を越えて使っているから焼けてると思っていたのですが、私はリフェ3セルで焼けたので、そもそも弱いっちゃ弱いんだと思います(たぶん並列にアンプを接続することが苦手なんだと思う)

少し前に安物アンプ探しの旅の報告記事を書いたのですが、しばらく使っていい感じなので再紹介+設定方法や実績等、より詳しく今回は書きます

↓前の記事

かわロボに使えるアンプについて 2025年時点で アンプが悪いのではなくかわロボのワット数が悪い - MJモノづくり工房

 

ということで安くて焼けない!?アンプを見つけた?ので紹介します

 

アンプ紹介

SurpassHobby(サーパスホビー)の80Aアンプ BDC80です

https://ja.aliexpress.com/item/1005006939640650.html?channel=twinner

アリエクで現時点2047円

僕が買った時は2000円切ってました

ショップを厳選したらもう少し安いのは出てくるかも?

とはいえ2000円

クイックランはアリエクだと2700円、アマゾンやラジコン屋のオンラインショップとかだと3700円とか

こちらの方が安いですね

浮いたお金でベアリングでも買いましょう

クイックラン1060とBDC80を並べて置いてみる

型番はたぶんBDC80

私は「サーパスホビーの黒い奴」と呼んでます(笑)

かわロボで使えるようにするには別途プログラムカードを購入し設定の変更が必要です(初回だけ)

最近のラジコンアンプの主流がこのプログラムカードを使った設定変更みたいです

MC402のパソコンでやってたのが今では専用のサムシングでやるって感じです

設定方法は後述

 

主なスペック

  • 定常80A/バースト360A
  • BEC 7.4Vか6.4Vをジャンパピンで選択可能(5A)
  • 抵抗0.0014Ω
  • リポ2~3セル用
  • 重量47.26g(クイックランは同じコネクタで33.67g)
  • サイズ35*42*27mm(縦横高さ全てクイックランより一回り大きい)

結構強そうなスペックです

特にBECが強いですね

ハイトルクサーボとかを使ってる人は当然恩恵がありますが、そうでなくてもBECの耐電流が高いのでBEC由来のなんか知らんけど焼けるリスクは一応、減ります

ちなみにクイックランのBECは6V3Aです

必要十分なハズですがBEC由来っぽい焼けがクイックランだとそれなりにあります

BDC80では今のところないです

 

パワー系の80A定常も心強いですね

ホビーウイングだと1060ではなく1080が定常80Aなので、そちらの廉価版と考えるとかなり安いです

1060は60Aでバックは30Aなのでかわロボで脚とかに使っていると発熱し、そのままFETが焼けます(オーバーヒート)(クイックランの取説を見るとオーバーヒート保護は入ってるっぽいけど…)

たまにFETなのかキャパシタなのかが爆裂してる音が聞こえたり、派手に白煙を上げている人を見かけますね

そういう人を見に行くとことごとくホビーウイング製のアンプだったりします

1060もそうですが1080でも焼いてる人は見たことがあります

焼けたクイックラン1060をバラした私の先輩曰く、どうやら熱設計が甘いみたいです

BDC80はさすがにバラしていないので設計がどうかはわかりませんが見た感じヒートシンクがクイックランより一回り大きいので、放熱性能はそれだけで上がっているハズなのでクイックランよりかは、たぶんマシ(アンプの耐電流はどれくらい冷やせるか依存な為)

 

で、皆さん気になるのはサイズと重量ですよね

みんな大好き?ホビーウイング1060

クイックランと比べると約14g重い 3個で42g…

かわロボだとちょっと無視できないくらいデカくて重くなりますよね…

それ言い出すと高い金だしてサイドワインダー買えよってなってきちゃうので、頑張ってください!(笑)

私はこのアンプでフルクロス、ウイング付きで3.3kg入ってるから、たぶんみんなもイケるって。大丈夫。

川崎振興会館の重量計にて。 入ってるでしょ?()

 

設定方法

プログラムカードを使った設定

お手元にプログラムカードをご用意ください

他のメーカのものとの互換性はないっぽいのでサーパスホビーのものを用意してください

↓私が使っているプログラムカード

Amazon | RCカーLEDプログラムカード 軽量ブラシレス防水ESC ロケットV2用プログラまブルアクセサリー レーシング トリック 日常使用向け | ラジコン・ドローン 通販

私はプログラムカードはアマゾンで買いました

理由は私が参考にした海外の動画がこれっぽいプログラムカードを使ってたから

https://youtu.be/ynNmiTyQAXk

これでもいいのですが、もっと色々弄る項目があるアンプ用な為、無駄に高いです(2000円強)

おまけに設定をするためにはアンプの取説見ながらです

 

アリエクの商品ページだと商品のモデルを切り替えるとBDC80に使う本物っぽいプログラムカードも出てくるので初回のみ合わせて購入とかでいいと思います

一個あればいいですし、箱だしの初回しか使わないので部やチーム内で使い回せます

 

デフォルトだとリバースが弱いのと、デフォルトがリポモードで電圧降下するとノロノロ走行になったりするのでその辺りをプログラムカードでかわロボ仕様に書き換えます

 

プログラムカードの接続方法

プログラムカードへ接続した時の写真

写真のようにアンプのシグナル線をプログラムカードへ

アンプのバッテリーを繋ぐところにバッテリーを繋ぐとプログラムカードが起動します

接続してから電源を入れないとエラーを吐くっぽいです

 

プログラムカードの設定

アンプの取扱書の裏面に設定項目がいろいろ書いてあるので照らし合わせながら設定します

BDC80の取説裏 上の方に書いてあるプログラムカードの絵をみて”感じて”設定している

BDC80には6個設定項目があるみたいです

私のプログラムカードだと取説のアイテム番号(ITEM)と値(VALUE)を使います

プログラムカードに書いてあるアイテム番号と値はたぶん別のアンプの奴なので合いません

 

BDC80の取説を見るにアイテム番号と内容は以下の通り

ITEM 1:Intial Start Force

ITEM 2:Low Voltage Cut-Off

ITEM 3:Intial Drag Brake Force

ITEM 4:Max Brake Force

ITEM 5:Maximum Reverse Force

ITEM 6:3 Start Modes

 

それぞれ

ITEM 1:1

ITEM 2:4

ITEM 3:1

ITEM 4:3

ITEM 5:3

ITEM 6:1

で私は設定しています

 

解説としては

ITEM 1:Intial Start Force→何、これ?わかんないから”1"

ITEM 2:Low Voltage Cut-Off→"1"~"3"がリポモード、"4"がニッスイモード(かわロボなら"4")

ITEM 3:Intial Drag Brake Force→ニュートラルになった時のブレーキの強さ好みによるけど私は100%がいいので"4"

ITEM 4:Max Brake Force→クローラONだと関係ない(かわロボだと基本関係ないけどなんか"3"になってるな)

ITEM 5:Maximum Reverse Force→バック入力の強さ設定 なんか”3”だけどフルパワーにしたいなら”4”

ITEM 6:3 Start Modes→いわゆるパンチなんだけどなんか違いがわからなくてとりあえず"1"

 

mustで変えるべきはITEM2とITEM5ですかね

あとは好みの問題かなと

 

ジャンパピンの設定

クイックランと同じでジャンパピンで設定が変わります

F/R(クローラON)モードはお馴染みかと思います

BECは私は6.4Vで使ってます

それぞれ↓の写真のようにジャンパピンはなります

ここで注意

クローラONモードのジャンパピンが抜けるないし接触不良になるとクローラOFF、つまり普通のラジコンアンプみたいにバック入力を二回入れないと入力が入らないモードになります

これになるとなんか知らんけど片脚だけ動きが変。みたいになります

私は今年の電大杯で突然これになって試合を後回しにしてもらいました

ジャンパピンをぎゅっと押しつぶして無理矢理接触させて対処しました

可能であればこのジャンパピンは、はんだ付けに置き換えたいですね

 

信号線の赤線は一本だけにしろ!!

クイックランでも共通ですがたぶん重要な内容です

どうもスイッチングレギュレータの並列がダメみたい

ということで受信機へ伸びている赤線は一本だけにして他のは抜きましょう

コネクタの信頼性的には抜かない方がいいとは思いますが…()

ピンセットとかを使って抜いてます

バッテリは必ず抜いてからやりましょう

爪の横から先が細いものを入れるイメージ

赤線が抜けました

抜いたら絶縁していい感じにまとめておいてます

受信機に4つアンプが繋がっている
でも、赤線は1つだけ

可能なら外付けBEC、もっと言えば強くて軽いDCDCコンバータで受信機への給電をして、アンプのBECは使いたくないところですが、私はそこまではしていません。

どこまで対策するかはその人の思想次第ですが、赤線を抜くのは一応、やり得かなと思うので私はやっています
基本的な接続や電装系トラブル対策はトンちゃんさんのブログを参考にしてください(私はめっちゃした)

かわロボの暴走について|トンチャン

 

BDC80の使用実績

脚でずっと使ってますが黒いアンプが焼けたことは今のところないです

モータから発煙が新型のツインミドルでありましたが、その時もアンプは大丈夫そうでした

このアンプで中島杯ベスト8、ヤガボット4位、先日の立命杯でベスト8だったので、実用に耐えると評価できるかなと思います

ガボットで4位の時の写真

 

さいごに

5種類程、2000円以下のアンプを試したのですが、BDC80が一番しっくり来たので紹介しました。

これと同等ぐらいの価格と性能のアンプがあれば是非とも教えて欲しいです

また、設定や細かいところがブログを読んだけどイマイチわからなかったということがあれば、大抵の練習会には顔を出しているので声をかけて頂ければ、わかる範囲で答えます

さぁ、君も低予算でかわロボを作ろう!

 

ありがとうございました

かわロボのアームの制御(大枠の話とかソースコード)

 

 

かわロボのアームは大抵の人はプロポの入力まんまで目で見て入力してると思います

故に入力し続けるとアームがロックして壊れたりします

ということでアームの角度を制御して自動化しました

 

かわロボをやってる人は制御を入れるとなると身構えてしまうと思うのですが

最近のマイコンって本当に便利でめっちゃ簡単に実装できました(PID制御やったことない状態で1ヵ月で終わりました)

ということで僕がやったことのログなり、僕なりのアーム制御の考え方なりを残して皆さんの参考になればな。と思います

 

私は制御、回路はド素人な為、間違って理解しているところもあると思います

ご了承ください

なので御託は話半分で聞いてください

 

 

アームの角度制御をする意味

私の中で制御を入れる意味は

・(本番でも)常にマックスな攻撃力を出したい

・ロックして壊れるリスクを回避したい

・アームの操作はデジタル的なオルタネイト(ボタンに置換出来るようなイメージ)にしたい

・禁止入力(アームを上げ続けると壊れる等)をなくしたい

等です

アンプ直だと機械的なロックを恐れて入力が甘かったり、スロットルの入れ具合で攻撃が浅くなったり、アームを下げ過ぎて前足が持ち上がっちゃって直そうと思うとアームが少し持ち上がってしまって隙が出来たりしませんか?

私はします

そういった要素は右スティックのアナログ要素のせいかなと思います

私の機体、というかロッドでもシールド機でも持ち上げる系のアームの殆どではアームは決められた3ポジションくらいしか使わない。

となると操縦者側のアナログ入力ってない方がよいなという発想に行きつくかなと思います

その3ポジションぐらいにピッタリいつも止めるのを練習量で賄うのがかわロボの常かと思いますが、私の機体は強度的にもシビアですし、本番でも同じスロットル入力が出来る自信が全くもってないので制御を導入しました

人によってはロッド機だと相手に刺さった時に微妙に上げながら押し出すというテクニックを使っている人もいるので一概に今回の制御が使えるとも言い切れませんが、基本的には角度制御はプラスに働くと思います

 

実際の動き

実際にどういう動きをするのか見てください

脚はVテールなのでアームは右側スティックで操作

右スティックの

↑:アーム下げポジションへ移動

↓:アーム上げポジションへ移動

←:アーム振り上げのみ

→:アーム振り上げと下げポジションへの移動(攻撃モーション)

となっています

これを実現するために何をしたのか書いていきます

 

システム

通常は受信機から直接アンプへと繋がっていると思いますが、その間にマイコンを入れてプロポの入力があるとセンサの値をもとに自動でアームの上げ下げをやってくれる。みたいな感じです

制御なしのシステム概要図

制御ありのシステム概要図(ブログ主の仕様)

アームをあげるタイミングはプロポ入力

 

ということでマイコンの仕事は

・受信機の信号を読む(パルス信号入力)

・アンプへの信号供給(パルス信号出力)

ポテンショメータ読み込み(電圧読み取り)

辺りになると思います

 

ロータリーエンコーダを使おうとなるとエンコーダの信号処理が必要になりますが今回は有限回転なので見送り

 

今回のシステムでは

受信機1ch→xiaoD3

受信機3ch→xiaoD2

受信機5ch→xiaoD1

ポテンショメータVout:A0

マイコンへの電源供給はアンプのBEC(5V)

てな感じの結線してます

 

使用マイコン

https://akizukidenshi.com/catalog/g/g117044/

xiaoというボードシリーズ

それのチップがRP2040版のものです

これにした理由は

・小さい

・安い

・無線がない(旧ルールだとマイコンに無線機能が付いてるとダメだった為)

・チップの性能が高い(デュアルコア)

arduino環境で開発出来る

・高輝度LED搭載

です

前にかわロボとは関係なく遊びで使うマイコンを調べた時は7年くらい前で、arduino nanoの互換ボードをずっと使っていて、かわロボの制御もarduino nanoの互換ボードで試行錯誤していたのですがarduino語かつATMEGA328Pだとプロポシステム特有のパルスを読んだり出力したりするには何かと不都合が多い上に、今新たに買おうと思うと大体同じ価格でもっと小さくて高性能の物があるのでは?ってことで乗り換えました

結果として、これがかなり功を奏しました。

 

そして、このマイコンを使ってarduino環境で開発したら秒で実装が終わったというのがこのブログで言いたいことの8割です(笑)

 

Arduinoってなんだよ?

かわロボゴリゴリ機械勢だと、ここからスタートの方もいるような気がするのでとてもざっくりというとここ10年以上ずっと流行ってるマイコンボードや周辺の開発環境などをひっくるめてArduinoです(たぶん)

読み方はアルドゥイーノ。「あれでいいの?」を早口で言う感じで発音してます。

arduino以前のマイコン環境はマイコンを買ってきても開発環境を別途用意する必要がありました。しかもやれライターだ、やれエディタだのいろんな選択肢がある中からユーザーが探して入れて、やっとこさ環境を揃えてもやれI/Oピンを使うにはこのレジスタを云々とか抜かしてLED一つ付けるのも一苦労。

おそらくかわロボを長年やってらっしゃる方だと、制御というと上記のようなイメージかもしれません。

そんな状態だったのをarduino買って無料で公開している開発環境を入れたらすぐに使えるよ(統合開発環境)で売り出して大ヒットして今やスタンダードになってるのがarduinoです。

arduinoIDEというと無料で公開されていてダウンロードして使うアプリみたいな認識でいいと思います(エディタとかコンパイラとか全部まとめた奴)

更によく使いそうな動作をC言語風に書いたらそれで動いてくれる状態だったりします

そういうのを「arduino語」と私は呼んでいます。

arduino環境で開発できる」とはarduinoIDEを使ってプログラミング出来るという意味で私は使っています

 

マイコンの初期設定

arduino UNO とかの基板だと何もせずに繋ぐだけで書き込めるのですが、こいつはあくまでもいろいろな開発環境がある中でarduino統合開発環境でもいけるよ。的な物なので初期設定が必要です

これが微妙にめんどくさかったですが、ググればいくらでも懇切丁寧なやり方が出てくるし、最初だけなのでそこまで大きな問題にはならないかなと思います

私が参考にしたURL↓

Seeed Studio XIAO RP2040を試してみました【Arduino使用】 | あろしーど

 

実装で躓いたこと

①パルス信号の取り扱い

Arduinoの環境だとサーボモータを動かすためのライブラリがあったり、パルス信号入力を読む関数が用意されていたりするのですが、それらの中身の処理的にリアルタイム性に欠けます

端的にいうとラグくなります

1ch入力ならまだしも2ch以上になると目に見えてラグくなります

で、攻撃モーション、上げ、下げと3つは入力が欲しいので2ch欲しいです(1chで2入力出来るので)

ということで割り込み処理でパルス信号を取り扱っています

プロポの受信機システムを使って制御となるとS.BUSとか使わないならほぼ必ず困りそうな箇所ですが、情報が殆どありません(めっちゃ不思議)

なので苦労しました。

 

②PIDってどうやってプログラムで書けば良いの?

PIDの役割とか概要の説明は調べるとたくさん出てきますが、じゃあ実際にプログラムで書くにはどうしたらいいの?というのは出てくるけど自分のシステムに落とし込むのは大変でした

私がプログラム経験がかなり浅いせいもあると思いますが。

 

ソースコード

このコードを使用した際に生じた不都合の責任は負いません。

参考にしてもらえたら。

<code>

#include <Adafruit_NeoPixel.h> //フルカラーLEDを使うためにインクルード

//フルカラーLEDの設定(ボードが同じなら変更の必要はなし) 
#define NUMPIXELS 1
#define NEO_PWR 11 //GPIO11
#define NEOPIX 12 //GPIO12

//フルカラー
Adafruit_NeoPixel pixels(NUMPIXELS, NEOPIX, NEO_GRB + NEO_KHZ800);


//PID制御のゲイン(頑張って調整する数値)
#define Kp 0.8
#define Ki 0.003
#define Kd 10

//優しく動かしたい時のPID制御のゲイン
#define Kps 0.25
#define Kis 0.007
#define Kds 7

//センサの位置設定 必要に応じて変更
const int Up_sensorValue = 3400;
const int Down_sensorValue = 1850;
const int Up2_sensorValue = 2500;
const int Down2_sensorValue = 1850;
const int Up3_sensorValue = 3400;
const int Down3_sensorValue = 1950;


//使用するGPIOピンの定義
const int ch3 = D2;  //アームちょい上げちょい下げのピン
const int ch1 = D3;  //アーム攻撃モーションのピン
const int ch5 = D1;  //ループを抜ける為のピン
const int pwm_pin = D5;  //アンプに繋がるピン
const int sensor_pin = A0; //センサのピン

const int threshold_plus = 1470;  //プロポの閾値設定 使い勝手によっては要変更 現在辛め プロポでリバース設定
const int threshold_minus = 1580;    //プロポの閾値設定 現在辛め プロポでリバース設定
const int threshold_n = 1520;  //プロポニュートラル
const int offset_pulse = 350;   //プロポの閾値 特別変える必要はないはず
const int ESC_U = 910;  //アンプのマックスパルス(逆転)
const int ESC_D = 2080;  //アンプのマックスパルス(正転)
int ESC_N = 1505;  //アンプのニュートラルパルス

const int redled = 17; //GPIO17 //    //RX_LED
const int greenled = 16; //GPIO16 //    //TX_LED
const int blueled = 25; //GPIO25 //LED_BUILTIN //YELLOW_LED


//出力パルス生成に使う変数たち
volatile unsigned long CH3_pulseStart = 0;  //パルスの開始時間を記録 インデックスにピン番号が対応する
volatile unsigned long CH3_pulse = 0;       //パルス幅を記録 インデックスにピン番号が対応する
volatile unsigned long CH5_pulseStart = 0;  //パルスの開始時間を記録 インデックスにピン番号が対応する
volatile unsigned long CH5_pulse = 0;       //パルス幅を記録 インデックスにピン番号が対応する
volatile unsigned long CH1_pulseStart = 0;  //パルスの開始時間を記録 インデックスにピン番号が対応する
volatile unsigned long CH1_pulse = 0;       //パルス幅を記録 インデックスにピン番号が対応する
unsigned long loopTimer = 0;
unsigned long currentTime = 0;
unsigned long PWMLoopTimer = 0;
unsigned long PWM1_timer = 0;
unsigned long PWM2_timer = 0;
unsigned long PWM3_timer = 0;
unsigned long PWM4_timer = 0;

//センサの値
unsigned long sensorValue = 0;

//制御に使う変数たち
long motorValue = 0;
int P = 0;
int I = 0;
int D = 0;
int preP = 0;
int omega = 0;
int preomega = 0;
int dt = 0;
int pretime = 0;
int nowtime = 0;





//PID制御をする関数
void swing_arm(long target_sensorValue) {
  int count = 1;
  int i = 0;
  unsigned long nowtime_start = 0;


  preP = 0;
  I = 0;
  P = 0;
  D = 0;
  preomega = 0;
  omega = 0;
  motorValue = 0;
  nowtime_start = millis();
  nowtime = 0;


//PIDループ
  while (CH5_pulse > 1400 && count < 10 && nowtime < 1500) {
    nowtime = millis() - nowtime_start;
    dt = nowtime - pretime;
    P =   (target_sensorValue - sensorValue) ; //現在の偏差

//機械的ガタを丸める
    if (sensorValue > target_sensorValue - 110 && sensorValue < target_sensorValue + 110) {
      I = 0;
      P = 0;
    }
    else {
      I = I +  P  ; //偏差の積算
    }

    omega = preP  - P ;
    D = omega;
    motorValue = Kp * P + Ki * I - Kd * D;  //出力の計算
    
    motorValue = ESC_N + motorValue;  //アンプとモータの結線が色通りなら+、逆なら‐

//計算結果がアンプのパルス以上になった時に丸める
    if (motorValue < ESC_U) {
      motorValue = ESC_U; pwm_out(ESC_U);
    }
    else if (motorValue > ESC_D) {
      motorValue = ESC_D;
      pwm_out(motorValue);
    }
    else {
      pwm_out(motorValue);
    }

//出力が0っぽくなったらループを抜ける
    if (motorValue < ESC_N + 50 && motorValue > ESC_N - 50) {
      count = count + 1;
    }
    print_plot();
    // print_status();

    pretime = nowtime;
    preP = P;//前回の偏差
    preomega = omega;
  }
  pwm_out(ESC_N);  //アンプブレーキ
}




//優しいPID
void slow_swing_arm(long target_sensorValue) {
  int count = 1;
  int i = 0;
  unsigned long nowtime_start = 0;


  preP = 0;
  I = 0;
  P = 0;
  D = 0;
  preomega = 0;
  omega = 0;
  motorValue = 0;
  nowtime_start = millis();
  nowtime = 0;

  while (CH5_pulse > 1400 && count < 10 && nowtime < 1500) {
    nowtime = millis() - nowtime_start;
    dt = nowtime - pretime;
    //  sensorValue = analogRead(sensor_pin);
    P =   (target_sensorValue - sensorValue) ; //現在の偏差

    if (sensorValue > target_sensorValue - 110 && sensorValue < target_sensorValue + 110) {
      I = 0;
      P = 0;
    }
    else {
      I = I +  P  ; //偏差の積算
    }

    omega = preP  - P ;
    //    D = preomega - omega;
    D = omega;
    motorValue = Kps * P + Kis * I - Kds * D;
    motorValue = ESC_N + motorValue;
    if (motorValue < ESC_U) {
      motorValue = ESC_U; pwm_out(ESC_U);
    }
    else if (motorValue > ESC_D) {
      motorValue = ESC_D;
      pwm_out(motorValue);
    }
    else {
      pwm_out(motorValue);
    }

    if (motorValue < ESC_N + 50 && motorValue > ESC_N - 50) {
      count = count + 1;
    }
    print_plot();
    // print_status();

    pretime = nowtime;
    preP = P;//前回の偏差
    preomega = omega;
  }
  pwm_out(ESC_N);
}



void setup() {

  //初期設定達
  int set_count_start = 0;
  int set_count = 0;

  pinMode(redled , OUTPUT);  pinMode(greenled , OUTPUT);  pinMode(blueled , OUTPUT);
  digitalWrite(redled, HIGH);  digitalWrite(greenled, HIGH);  digitalWrite(blueled, HIGH);
  pinMode(pwm_pin, OUTPUT);
  analogReadResolution(12);
  pinMode(sensor_pin, INPUT);
  Serial.begin(115200);

  pixels.begin();
  pinMode(NEO_PWR, OUTPUT);  digitalWrite(NEO_PWR, HIGH);
  delay(200);


  while (CH3_pulse < threshold_plus || CH1_pulse < threshold_plus) {
    digitalWrite(pwm_pin, LOW);
  }
  set_count_start = millis();
  while (set_count < 1000) {
    set_count = millis() - set_count_start;

    pwm_out(ESC_N);
  }
}



//メインループ(core0)
void loop() {
  while (CH3_pulse == 0 || CH1_pulse == 0) {
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
    pwm_out(ESC_N);
  }

  pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
  pixels.setPixelColor(0, pixels.Color(0, 255, 0));  pixels.show();  //常時緑点灯
  pwm_out(ESC_N);

  //ちょい上げ
  if (CH3_pulse < threshold_plus && CH3_pulse > threshold_plus - offset_pulse) {
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
    pixels.setPixelColor(0, pixels.Color(255, 0, 0));  pixels.show();
    slow_swing_arm(Up2_sensorValue);
  }

  //ちょい下げ
  else if (CH3_pulse > threshold_minus && CH3_pulse < threshold_minus + offset_pulse) {
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
    pixels.setPixelColor(0, pixels.Color(0, 0, 255));  pixels.show();
    slow_swing_arm(Down2_sensorValue);
  }

  //攻撃モーション
  else if (CH1_pulse < threshold_plus && CH1_pulse > threshold_plus - offset_pulse) {
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
    pixels.setPixelColor(0, pixels.Color(255, 0, 255));  pixels.show();
    swing_arm(Up_sensorValue);
    slow_swing_arm(Down3_sensorValue);
  }

  //振りきりまでアームを上げるだけ
  else if (CH1_pulse > threshold_minus && CH1_pulse < threshold_minus + offset_pulse) {
    pixels.setPixelColor(0, pixels.Color(0, 0, 0));  pixels.show();
    pixels.setPixelColor(0, pixels.Color(255, 255, 0));  pixels.show();
    swing_arm(Up3_sensorValue);
  }

  else {}
  print_status();
}






//core1 初期設定 プロポの入力の監視とセンサの監視はこちらのコアで
void setup1() {
  pinMode(ch3, INPUT);
  pinMode(ch5, INPUT);
  pinMode(ch1, INPUT);

//割り込みでプロポの入力を監視
  attachInterrupt(digitalPinToInterrupt(ch5), interruptCh5, CHANGE);
  attachInterrupt(digitalPinToInterrupt(ch3), interruptCh3, CHANGE);
  attachInterrupt(digitalPinToInterrupt(ch1), interruptCh1, CHANGE);

}


void loop1() {

  //センサの値を取得
  sensorValue = analogRead(sensor_pin);
}





/*
  割り込み時に実行される関数(プロポの入力を得るための関数たち)
*/
void interruptCh3() {
  if (digitalRead(ch3) == HIGH) CH3_pulseStart = micros();                   //パルスの開始時間を記録
  else if (digitalRead(ch3) == LOW) CH3_pulse = micros() - CH3_pulseStart;  //終了時間(現在の時間)からパルスの開始時間を減算することでパルス幅を求めて記録
}
void interruptCh1() {
  if (digitalRead(ch1) == HIGH) CH1_pulseStart = micros();                   //パルスの開始時間を記録
  else if (digitalRead(ch1) == LOW) CH1_pulse = micros() - CH1_pulseStart;  //終了時間(現在の時間)からパルスの開始時間を減算することでパルス幅を求めて記録
}
void interruptCh5() {
  if (digitalRead(ch5) == HIGH) CH5_pulseStart = micros();                   //パルスの開始時間を記録
  else if (digitalRead(ch5) == LOW) CH5_pulse = micros() - CH5_pulseStart;  //終了時間(現在の時間)からパルスの開始時間を減算することでパルス幅を求めて記録
}


//アンプへの出力を行う関数
void pwm_out(int pwmValue) {
  while (1) {
    currentTime = micros();
    if (currentTime - loopTimer >= 4000)break; //250Hz(4000us)
  }
  loopTimer = currentTime; //PWM 3,5,6,7pin => HIGH

  digitalWrite(pwm_pin, HIGH);

  PWMLoopTimer = micros();
  PWM2_timer = pwmValue + PWMLoopTimer;//5pin
  //PWM 3,5,6,9pin => LOW
  while (digitalRead(pwm_pin) > 0) {
    PWMLoopTimer = micros();
    if (PWM2_timer <= PWMLoopTimer)digitalWrite(pwm_pin, LOW);
  }
}


//デバッグ用シリアルプリント PIDのゲイン調整でシリアルプロットで見る為のやつ
void print_plot() {
  Serial.print(sensorValue);
  Serial.print(",");
  Serial.print(motorValue);
  Serial.print("\n");
}

//デバッグ用のシリアルプリント 変な動作してないか確認するやつ
void print_status() {
  Serial.print("sensor");
  Serial.print(sensorValue);
  Serial.print("\t P= ");
  Serial.print(P);
  Serial.print("\t prep ");
  Serial.print(preP);
  Serial.print("\t I ");
  Serial.print(I);
  Serial.print("\t preomega ");
  Serial.print(preomega);
  Serial.print("\t omega ");
  Serial.print(omega);

  Serial.print("\t D ");
  Serial.print(D);
  Serial.print("\t motorValue= ");
  Serial.print(motorValue);
  Serial.print("\n ");
}

</code>

KHK杯2025に参加してきました 3Dプリンタで作るかわロボ

KHK杯2025に参加してきました

去年は参加申請していましたが流行り病で機体はあるのに出場は断念という悲しいことがあったのですが、今年は無事に参加できました

 

シード枠で2回戦からで、1戦目はvs,辻斬

https://youtube.com/clip/Ugkx70JqFGmN953GHTJra7Ozl9R2Y33nR2tz?si=t6wu8rORW5vc0h90

相手はヤガボットでも対戦経験があり、どんな機体かは事前にある程度わかっていました

ガボットでは私が勝利しています

相手の機体はアームが一本ショートロッド型で脚の機動力はバツグンな機体ですが、反面アームの攻撃力は控えめなので堅実に戦えば勝てるかなと思ったので様子見からしました

実際対戦して真ん中でお互い刺し合いしてみると、思ったよりリングが広く距離感が掴めなかったので、むやみに相手に近い側で攻撃しても良いこと無さそうだなと思って、自分で距離感がわかる辺りまで下がったら相手のロッドが私のシールドの脇を捉えました

「あ、ヤガボットの時より上手くなってる」と「まぁ、下がって中心に回りながら食らったし大丈夫か」と思っていたら相手がリングアウト

私の良いとこなしで勝ちました

相手の攻撃モーションに迷いがなかったので長期戦になったら厄介だったと思います

とりあえずほっとひと安心

 

2戦目はvs,AtractA;Zero

https://youtube.com/clip/UgkxykWrr5wq2UrxZ5-vrOew5tgq6lY5xoG8?si=F0D51HeGl1qpQ00J

KHK杯では前々回、前回と2連覇中で、本大会でも今年は3位と文句無しの強豪、且つ圧倒的格上相手

勝ったは良いけど、俺、あれと戦うの?。と(笑)

とはいえ横回転対策はロボット面ではフルクロス、試合面ではKHKの中の人にたくさん相手してもらっていたので勝機はないこともないと入念にフルクロスの固定と個体値の良いバッテリーの選択をしました

バッテリーも前日充電ではパンチがでないので当日、会場の試走場である程度放電して再充電したので万全

作戦はとにかく鎌の内側に入るのと内側に入ったらとにかく離れない

鎌の内側に入るタイミングは相手が突っ込んできた時と決めて

これでダメならしゃーない。と思える状態で迎えました

真ん中で様子を見合って

相手が前進するのをこちらもフェイントを掛けながら誘って、今だ!というタイミングで突っ込めましたがアームが下がっておらず相手の機体に乗り上げちゃいました...

あのポジションならアームを下げて待機で良かったな。と悔やまれます

ただ、内側に入れているので追う

しかしまた乗り上げる

その間に相手はケツを狙う機体の向きに変更

私はウィリーしてしまい反応が遅れる

そして、デスロールだ!!!

しかし私は案外冷静

私の機体はアームのハンド速度が早いのでアームをバタバタさせたら案外デスロールから逃れられるのは事前に知っていた為、良さげなタイミングで攻撃モーションを入れる

映像を見ると何回か外れてはまた絡められ、また外しては、を2回程してようやく復帰

ここで私はヒップドロップを選択

ひたすら鬼バック

リング際まで追い詰めた!!

このまま押せば落ちる!と思いましたが

サイドポールがちゃんと邪魔!!

決めきれず...

 

そして真ん中で仕切り直しで再びデスロール

横倒しにされたが、その為にシールドを調整したんや!いけ!復帰モーション!と入力するが入らない

ん?と思ってみると電装が見えてる!!

我輩、完全なる沈黙で降参

相手はたぶん電装ぶちぎったのが見えてたっぽい

追撃はしてないし、映像を見ると鎌に絡んだ電装が吹き飛んでる(笑)

ということで負けました

 

電装を引きずり出されたのは、1回目のデスロールで電装カバーを留めているリピートタイが外れたのが原因です。

配線の断線(物理)とピンが曲がりました

一応、会場内で直りました

https://x.com/magicutkawarobo/status/1974375336856207591?s=19

 

そんなこんなで自慢のアームでの攻撃は1度も見せられずに終わってしまいました

でも、楽しかったです。

いやぁ、あそこまで派手にやられたら逆に面白い(笑)

 

 

で、3Dプリンタでかわロボを作りはじめて1年半程経って、

本大会も観戦して思ったのですが、3Dプリンタ機体、増えましたねぇ。

どうやら私のブログやXを見てる人がそこそこいて、3Dプリンタ機体で十分戦えるというのがかわロボ界隈で急速に認知されたようです。

いろんな人が3Dプリンタパーツを積極的に取り入れているので、このブログの当初の目的である

「作れるってログを残せばそのうち誰か作るやろ」は達成しました

ただ、CNCなしで実戦向け(判断基準は迷うけど)は、まだまだ発展途上なのかな。と。

私は今後もCNCなしの環境だし限界ボンビーなのも変わらない見込みなので引き続き低予算で作るかわロボの情報なのかログなのかなんなのかを書くと思います。

3Dプリンタパーツじゃない金属パーツの話とかはした方が良い気がするとは思いますが、みんな何が気になるんやろか...

 

では、またなんかしらで。

 

 

おまけ

慶應義塾矢上祭、ヤガボットで4位になりました

 

3Dプリンタで作るかわロボ 練習走行会に参加してきました(2025/08/16)

かわロボ本大会の練習走行会に参加してきました

私は本大会へ応募しましたが抽選落ちしてしまったので今年は出場出来ないのですが

練習走行会は本大会出ない人も自由に参加できるとのことでいってきました

 

↓動画

youtu.be

38戦18勝でギリ5割行かなかったですが中島杯では3割ちょっとの勝率だったのでだいぶ強くなったと思います

↓前回ブログ

中島杯のトーナメントで1勝出来ました! 3Dプリンタで作るかわロボ写真多数 - MJモノづくり工房

3Dプリンタで作るかわロボ 2025新型小型シールド ハイランドタージver.4機体紹介 - MJモノづくり工房

変更点は脚周りの強化をしました

やはり純粋に脚が早いと相手にとっては脅威かなってことで速度向上とポジショニング精度向上を目指してチューニングしていました

脚のグリップ材を安い硬度指定のないシリコンゴムを使っていましたが、ちゃんと硬度指定のあるシリコンゴムを採用しました

触った感じだとちょっと柔らかいくらいで大差ないかな?という感じだったのですが、実際に履かせてみるとかなりグリップ力が上がって驚きました

 

モータをフルで回すと足回りがあちこち壊れるのでプロポでエンドポイントを絞っていたのですが、なんやかんや太くして耐えるようにして殆どフルで回せるようになりました。

3DPパーツより先に50試合くらいするとアイドラギアの内径6外径8のベアリングが先に参っているようです

ベアリングが壊れても直ちに行動不能になるわけでもないし、アリエクで安く買っている奴なので消耗品と割り切って随時交換でもよいのかなと思っています

 

あとはフルクロス取り付けをネジ止めからベルクロに変えました

楽ですね

 

実はこの前日にKHKに武者修行にいってきたのですが、それは後日

2日合わせて120試合程したのでさすがに機体が悲鳴を上げているのでメンテして今度の日曜日にもう一度ある練習走行会に備えたいですね

 

ではでは