Arduinoでロボットを作ってみました!【9】落下防止センサ&スコープユニットの組込
測距モジュールを利用した落下防止センサユニットと3自由度の首関節を持つスコープユニットを作っていきます。
落下防止センサユニット
厚紙で図のような3つの部品を作り、木工用ボンドで接着し組み立てます。シャープ測距モジュールGP2Y0A21YK0Fを左右に1個ずつ、十字穴付なべ小ねじと六角ナットで固定します。
外側から見える部品については、組込前に塗装を行いました。
100均のダイソーでアクリル絵の具を見つけましたので、4色ほど購入し適当に混ぜて使いました。
αβステージ
3自由度の首関節の内αβステージには、マイクロサーボ9g SG90を使います。
これも厚紙でマイクロサーボ保持部とテーブルとを作ります。
右側のナットを接着している部品がβステージ用テーブルで、このナットでスコープユニットを取り付けます。左側のナットがないテーブルがαステージ用テーブルです。
マイクロサーボSG90にサーボホーンを固定する前に、SG90を中心位置に動かしておきます。その際使用したスケッチは、
#include <Servo.h> // ライブラリの読み込み<Servo.h>
Servo servo0,servo1,servo2; // Servo型の変数は「servo0」~「servo2」とする
void setup() // 初期設定
{
servo0.attach(4); // Servo型の変数は「servo0」をピン4(θ軸)に割り当てる
servo1.attach(5); // Servo型の変数は「servo1」をピン5(α軸)に割り当てる
servo2.attach(6); // Servo型の変数は「servo2」をピン6(β軸)に割り当てる
}
void loop() // メインの処理
{
servo0.write(90); // サーボ出力。Servo0角度は90°
delay(1000); // タイマ(1秒)
servo1.write(90); // サーボ出力。Servo1角度は90°
delay(1000); // タイマ(1秒)
servo2.write(90); // サーボ出力。Servo2角度は90°
delay(1000); // タイマ(1秒)
}
上記のスケッチでSG90を90°の位置にしてサーボホーンを固定したのですが、
SG90のサーボホーン取付軸のギザギザとサーボホーン取付穴のギザギザの位置関係のためか、SG90が90°の位置でサーボホーンを水平に取り付けることができません。そこで、ここでは、αβ各ステージのテーブルが水平になる位置を中心位置とするように、サーボ指令の角度を調整します。
αステージ:中心位置 80° 可動範囲 55°~105°
βステージ:中心位置 82° 可動範囲 57°~107°
※中心位置±25°を超えて動かすと、テーブルとマイクロサーボ保持部とが干渉しますので、上記の可動範囲を超えて角度設定をしないように注意します。
完成したαステージ(左)、βステージ(右)です。
θαβステージ
θステージにはGWSサーボ S03N/2BBBMG/JRを使い、αステージ、βステージはそれぞれ接着固定します。
θステージの中心位置(90°)は、
αβステージと同じように、サーボを90°にしてサーボホーンを取り付けるとサーボホーンが水平にならないので、こちらはθテーブルの固定穴をずらすことで対応します。
θステージ:中心位置 90° 可動範囲 45°~135°
※θステージについては、中心位置±45°を超えても干渉する箇所はないので、ここでの可動範囲は仮設定として、最終的には動作確認をしながら決めていきます。
スコープユニット
スコープユニットといっても、レンズやカメラを組み込んでいるわけではなく、外観のイメージのみですが、障害物などを検出するための測距モジュールと表情を演出するための白色LEDを組み込みました。このユニットの部品もほとんど、板目表紙で作っていますが、筒については、ラップの芯を利用しています。
θαβステージにスコープユニットを取り付けます。
ここで、αステージテーブルの強度を確認しておきます。αステージ上にβステージおよびスコープユニットが搭載されていますので、これらの荷重によってαステージテーブルがどの程度変形するかを計算します。
材質:板目表紙(縦目)
縦弾性係数:3.89 GPa
密度:749.1 kg/m^3 (*1)
ポアソン比:0.3 (*2)
(*1) 板目表紙 445 x 306 x 0.7 (mm) 1枚の質量実測値:71.4gから計算
(*2) 参考資料見つけられず適当に設定
拘束条件:サーボホーンへの取り付け穴及び回転支点穴を完全拘束
荷重条件:βステージ+スコープユニットの合計質量=60.5gより0.593Nがαステージテーブルのβステージ接着面に負荷されたとして計算
最大変位:0.07mm
荷重条件を3倍の1.799N(181.5g)とした場合
最大変位:0.21mm
以上より、αβステージのテーブルを厚紙1枚から作りましたが、強度は大丈夫そうです。
落下防止センサユニットとスコープユニットとを本体に組み込んでいきます。
落下防止センサユニットとスコープユニットは十字穴付きなべ小ねじと六角ナットでユニバーサルプレートに固定するのですが、ユニバーサルプレートの裏面に六角ナットを保持するのも作業性が悪いので、厚紙に穴を開けてナットを接着したナットプレートを作りました。
タクトスイッチ基板は、スコープユニット固定部品に接着します。
カバーを除いて、機構部、電源、制御基板、配線がほぼ完成です。
配線がごちゃごちゃしていますので、動作試験完了後に整理したいと思います。
Arduinoでロボットを作ってみました!【8】制御基板
回路図
走行用のDCモーター2個、首関節用RCサーボ3個、瞳用の抵抗内蔵白色LED2個、落下防止用の測距モジュール2個、障害物検出用の測距モジュール1個、動作パターンを選択するためのタクトスイッチ2個を制御するための回路図です。
実体配線図
表面の部品配置です。
40Pのピンヘッダから適宜必要なピン数のピンヘッダを切り出して、+4.8V、GND、RCサーボ用コネクタ、タクトスイッチ配線などに使います。
裏面の配線です。主にスズメッキ線を使い、配線がクロスする箇所のみ被覆線を使って配線を行います。
Arduinoに接続するピンにも、40Pのピンヘッダから適宜必要なピン数のピンヘッダを切り出してリード線をハンダ付けし、簡易なコネクタを作りました。
制御基板を搭載するプレートには、ベース板と同様に、TAMIYA 楽しい工作シリーズNo.172 ユニバーサルプレートL (210 x 160)を3分割して、70 x 160の形状にしたものを使います。プラスチックナット+連結(6角ジョイント)スペーサー(10mm)セットを使って、制御基板、Arduinoを固定します。
Arduinoで走行を制御できるところまで完成しました。
Arduinoでロボットを作ってみました!【7】モーターの配線と電源
モーターの配線
今回使用する"楽しい工作シリーズNo.168 ダブルギヤボックス左右独立4速タイプ"にはDCモーターが2個付きます。DCモーターをギヤボックスに組み込む前に2個のモーターに同じように配線(左端子:黒、右端子:赤)を行ったところ、左駆動輪が前進回転、右駆動輪が後進回転というように逆方向に回転してしまいました。
そこで、右駆動輪用モーターの配線を(左端子:赤、右端子:黒)と変更して、赤リード線:+、黒リード線:-で左右の駆動輪が共に前進方向に回転するようにしました。ノイズ除去用のコンデンサ取り付けはスペース的にちょっと厳しそうなので、制御基板側に配置することにします。
電池収納部を作る
電源は、Arduinoに供給する9VとDCモータ、RCサーボ、測距モジュールに供給する4.8Vの2系統を準備します。9Vは積層乾電池006P(9V)を使い、4.8Vは単3形充電式ニッケル水素電池eneloopを4本使います。
まず、厚紙で006P電池収納部を作ります。CADで作成した展開図を厚紙に手書きで作図するのも面倒なので、展開図を印刷して型紙として使おうと思います。
1:1で展開図を作り、プリンターで100%スケールで印刷します。
展開図を切り取り、厚紙を展開図と同じ外寸に切ったものを用意します。
展開図と厚紙を貼り合せるのですが、この際、展開図に軽くのりを付け、30秒ほど乾かしてから貼り付けるようにします。
今回使ったのりはトンボ鉛筆 PiT HI-POWER S
展開図に従って、カット、穴開け、折り目に傷入れを行います。
のりを少し乾かしてから貼り合せたので、加工後に厚紙側にのりが残らず展開図をきれいに剥がすことができました。
折り目に沿って折って完成です。
以上のようにプリンターで印刷した展開図を型紙として使用すると、改めて厚紙に展開図を作図する手間が省けるのですが、印刷した展開図の寸法精度が悪いと、完成した部品の精度も悪くなってしまします。そこで、プリンターで印刷した図面がどの程度正確かを確認してみました。
プリンターはRICOH モノクロレーザープリンター IPSiO SP 6210です。
こんな図面を作って、100%スケールで印刷します。
印刷された図面を実測してみます。
A4縦の図面に対しては、縦寸法の方が寸法精度が良いようです。
レーザープリンターの構造はざっくりこんな感じですが、評価したプリンターでは、感光ドラムの回転方向よりも、軸方向の方が精度が良いという結果です。従って、図面がA4縦なら縦寸法、A4横なら横寸法、A3横なら縦寸法により精度を求めたい寸法がくるように展開図を作図することに注意して設計を進めていきます。
006P電池収納部に電池を収めてみました。収納部を少し拡げるような感じでしっくり収まりました。収納物よりも収納部を少し小さめに作って、収納部を変形させながら収めることができるのは、厚紙で部品を作るメリットでもあります。後で、上に板、背面にカバーが付きますので、006P電池が走行中に脱落するようなことはないと思います。
単3x4本電池収納部を作ります。
電池交換の際には引き出せて、走行中には飛び出さないように考えてみました。
電源のON/OFFスイッチが欲しいので下図のように配線します。
Arduinoでロボットを作ってみました!【6】厚紙で部品を作るPart2
展開図と折り方について
厚紙をカットし折り曲げて立体的な部品を作る際には、折線の箇所にカッターで軽く傷を入れて山折りか谷折りをします。完成品の寸法をできるだけ設計寸法に近づけるためには、展開図と折り方をどうするのが良いでしょうか。
折り曲げた状態が、上図のようになると考えると、完成品寸法から厚紙の板厚の2倍を引いた寸法を折線の位置として、山折りをするのが良さそうですが、完成品寸法と折線位置とを同じにして谷折りしても悪くなさそうです。
ところが、実際に折ってみると、
なかなか、理想的な形状にはならないようです。そこで、展開図と折り方をいろいろ試してみて、どの方法が一番完成品の寸法精度が良くなるかを実際に確認してみました。
より精度の高い完成品を作るための展開図と折り方の検討
7種類のサンプルを準備しました。
サンプルは図に示すような、曲げが4箇所ある形状で、これに対して展開図を4種類準備します。
No.1 完成品の内寸を採用して展開図を作成
No.2 完成品の外寸を採用して展開図を作成
No.3 完成品の(内寸+外寸)/2を採用して展開図を作成
No.4 3D CAD SOLIDWORKSの板金設計にて展開図を作成
3D CADの板金設計では、左図のような板金部品を設計し、板厚、曲げRを指定すると曲げ部での材料の変形も考慮して、いい感じの展開図を自動で作ってくれます。
No.1~No.3の展開図に対して山折り用と谷折り用、No.4の展開図に対しては谷折り用の計7種類のサンプルを準備します。
折線の箇所をカッターで軽く傷を付けて、
山折りは指で簡単に折れます。
谷折りは折線にノミなどを当てながら折ります。
こうして準備したサンプルについて、各々3箇所の寸法をノギスで測定します。
結果は下表のようになりました。
SOLIEWORKSの板金設計による展開図 で作ったサンプルが、完成品の寸法精度が最も良い結果となりました。次に、完成品の(内寸+外寸)/2を採用して展開図を作成し谷折りしたもの、完成品の内寸を採用して展開図を作成し山折りしたものも悪くはなさそうです。完成品の外形寸法(外寸)から展開図を作成すると、設計寸法から大分外れたものができてしまいます。
ちなみに、山折り、谷折りが混在している部品の内寸、外寸の考え方は下図のようになります。
展開図は同じですね。
Arduinoでロボットを作ってみました!【5】厚紙で部品を作るPart1
部品製作用の材料
電池ホルダやRCサーボのホルダなど、専用の部品を作る必要があります。アルミ板で作るのが良さそうですが、板を金ノコで切ってバイスではさんで曲げるなど、結構大変な作業なので、今回は加工が楽な厚紙で部品を作れないか検討してみます。
今回使用した厚紙は、文具店なので売っている
"板目表紙5枚入 厚さ0.65mm"
厚さ0.65mmとありますが、ノギスで実測したら0.70mmでしたので、設計は0.70mmで行います。
材料の縦弾性係数(ヤング率)の測定
先ず、使おうとしている材料がどの程度の曲げ強度を期待できるかを知るために、縦弾性係数を測定してみます。
準備したサンプルは4種類
Sample1:紙の流れ目を横目で切り出し
Sample2:紙の流れ目を縦目で切り出し
Sample3:紙の流れ目を横目で切り出した2枚を木工用ボンドで貼り合せ
Sample4:紙の流れ目を縦目で切り出した2枚を木工用ボンドで貼り合せ
2枚を貼り合せる際には、
木工用ボンドで接着した2枚を平面で上下からはさんで、重しを掛けて24時間放置しました。このようにしないと、接着剤が硬化する過程で反りが発生します。
Sample3,4のような2枚を貼り合せたサンプルを準備した理由は、接着剤の効果で1枚ものよりも縦弾性係数を大きくできないかと期待したためです。
縦弾性係数の測定は曲げ試験で行います。
サンプルの上下をアクリルの板ではさんで、重しで押さえます。先端に糸を掛けて、袋におもりを入れていき、荷重と先端部のたわみとの関係を測定します。たわみは、おもりがない状態を基準として、おもりありの時のサンプル先端部の位置とおもりなしの時の先端部の位置との差を、その荷重でのたわみ量とします。
おもりは、手元にあり質量も安定している硬貨を使います。
1円→1g、5円→3.75g、10円→4.5g、50円→4g、100円→4.8g、500円→7g
実際に測定を始めたら、Sample1(横目1枚)の曲げ試験で、おもりを掛けてから時間と伴にだんだんたわみが変化したり、おもりを外しても0荷重に戻らない現象が見られました。
このように、Sample1は粘弾性体的な挙動を示すので、測定の際には、おもりを掛けたら3秒以内にたわみを測定し、荷重を変化する際には一旦おもりを取り払って、サンプルを0荷重位置に戻してから、荷重を掛けるようにしました。Sample2,3,4はほぼ弾性体と見なせる挙動でした。
測定した荷重-たわみ特性を示します。
次にこのグラフの傾きから縦弾性係数を計算しますが、Sample1については、たわみが大きい領域で線形性が悪くなってきますので、荷重で5.8g(1円1枚+100円1枚)までの測定値を用いて傾きを計算します。
縦弾性係数の計算
縦弾性係数は
で計算します。
当初期待していた、貼り合せることによる縦弾性係数の向上はあまり期待できなさそうな結果となりました。
横目2枚貼り合せでは、横目1枚のときに見られた粘弾性体的挙動を抑制する効果はあり、また、板厚の3乗に比例してたわみ難くなるという式にもほぼ乗ってきそうです。
縦目2枚貼り合せでは、板厚の3乗つまり8倍たわみ難くなるわけではなく、その効果は5倍程度でした。
こうして、測定された縦弾性係数ですが、他の材料と比較すると、アルミ :72GPa、アクリル:2.2~3.2GPa、CDケースや100均で売っている蓋付きケースなどに使われているポリプロピレン(PP):1.1~1.6GPa、ですので、板目表紙も使い方を工夫すれば、プラスチックと同等以上の曲げ強度で使えそうということが分かります。
最後に、荷重を増やしていって、どこまで曲げたら折れるか実験してみました。
ここまで曲げても折れません。予想以上に曲げに強いことが分かりました。
完成品の寸法精度を向上するための展開図と折り方
Arduinoでロボットを作ってみました!【4】走行ユニットを作るPart2
ダブルギヤボックス、キャタピラ、ホイールの配置が決まりましたので、実際に組立を行います。
ホイールを取り付けるために、ユニバーサルプレートに軸受け材を幅70mmで固定します。
ポリキャップに丸シャフトを打ち込んで、
図のように組立ようとしたら、問題が発生しました。
右側のポリキャップを丸シャフトにはめることができません。
原因を探るために、CAD上で寸法関係を確認してみました。
丸シャフトをポリキャップの片方に目一杯打ち込むと、なんと、もう一方に届きません。そこで、両側のポリキャップに丸シャフトが均等に打ち込まれるようにすると、丸シャフトはポリキャップに片側2.5mmしか打ち込めないことが分かります。丸シャフト端面の面取を考えると、ちょっと頼りない接触長です。
さらには、軸受け材取付幅を70mmとすると、駆動輪であるスプロケットホイールの間隔が96mmに対して、ホイールの間隔が97mmと一致しないことも分かりました。
そこで、ユニバーサルプレートの穴をヤスリで削って長穴にし、軸受け材の間隔を69mmで固定できるようにしました。
これで、丸シャフトとポリキャップの接触長が片側0.5mm増え、スプロケットホイールとホイールとの間隔も一致させることができました。
それにしても、TAMIYAさんはどうして、丸シャフトの長さを100mmにしたのでしょうか。106mmくらいあるとうれしいと思うのですが・・・
厚紙の曲げ強度を測定する
Arduinoでロボットを作ってみました!【3】走行ユニットを作るPart1
走行速度を設定する
TAMIYAの楽しい工作シリーズ No.168 ダブルギヤボックスでは、組み合わせるギヤによって、4種類のギヤ比を選べます。
TAMIYAの楽しい工作シリーズNo.100 トラック&ホイールセットでは、駆動輪としてスプロケットホイール(小)とスプロケットホイール(大)の2種類を選ぶことができます。
ギヤ比とスプロケットとの組合せで走行速度を計算してみます。
テーブルの上を緩く走らせたいなと思いますので、
ギヤ比 114.7:1
スプロケットホイール(小)
走行速度 132 mm/s
で製作を進めることにします。
トラックベルトを選ぶ
トラック&ホイールセットには
30コマ 2本
10コマ 4本
8コマ 4本
のトラックベルトが入っています。
これらを組み合わせて、ちょうど良い長さのキャタピラを作り、ホイールの配置を決める必要があります。
そこで、1コマのピッチ長を測定してみました。
図のように、8コマで50.8mmですので、
1コマのピッチ長=6.35mm
となります。この値を基に設計していきます。
ホイールの配置を決める
先ずは、こんな感じでホイールを配置してみました。
ダブルギヤボックスやホイールを固定しているベース板は、TAMIYA 楽しい工作シリーズNo.172 ユニバーサルプレートL (210 x 160)を3分割して、70 x 160の形状にしたものです。
この配置で、キャタピラの周長を計算すると、251.99mmとなります。
トラックベルトの1コマのピッチ長が6.35mmですから、
必要なコマ数は、
251.99 / 6.35 = 39.68(コマ)
トラックベルトの組合せで一番近いのが、30コマと10コマとの組合せで40コマですが、
40コマの長さ=6.35 x 40=254mm
ですので、必要な周長より2.01mm長くなります。
これだと、ホイールにキャタピラを掛けたときにチョット緩い気がします。
そこで、アイドラーホイールを5mm移動してみます。
この配置で、キャタピラの周長を計算すると、261.38mmとなります。
必要なコマ数は、
261.38 / 6.35 = 41.16(コマ)
40コマのキャタピラに対して1.16コマも長いので、これはきつ過ぎです。
ベース板にユニバーサルプレートを使用していますので、横方向は5mmピッチでしか調整ができません。そこで、アイドラーホイールの位置を元に戻して、ダブルギヤボックスを2mm持ち上げてみます。
この配置で、キャタピラの周長を計算すると、254.31mmとなります。
必要なコマ数は、
254.31 / 6.35 = 40.05(コマ)
GOODなようです。
ダブルギヤボックスを2mm持ち上げるために、2mm厚のアクリルの板が手元にありましたので、それをスペーサとして使います。
実際に組み立ててみたらちょっと”う~ん”と思うことが発生