CNCの自作とCNCで作る工作


超音波自律走行と倒立振子型の複合ロボットを作ってみました。

 マイコン(Arduino)の勉強を始めて約半年、今回は3つの超音波センサーを使い障害物を避けて走行する
ロボットをRCサーボを使い、自動で倒立する複合型のロボットを作りました。             
ハードウエアについて

 駆動用モーターに今回も「タミヤ」のNo.168 4速ダブルギヤボックスを使いました。しかし、倒立ロボットとして
制御し易い回転数と超音波自律走行に適した回転数に大差があります。結局、中を採って114.7:1を採用しましたが、
超音波自律走行ではスピードが早過ぎて制御が難しく駆動モーターのPWM制御を一杯絞って何とか対応しました。   
                       
 また、今回もフレームには3㎜厚のシナべニアをCNCで加工し、簡単なほぞ組で強度を確保しました。   
超音波センサーはNo.25と26で使った首振り式ではなく、正面と左右斜め45度にセットした3個を使い障害物を
感知するよにしました。                                        


 今回の目玉は、超音波自律ロボットを赤外線リモコンを使い、ボタン操作一つで倒立するようにしました。       倒立開始時は先に転倒防止用補助アームを所定位置へ作動、次にメインアームを作動、バランスポイントまで車体を  持ち上げて倒立、数秒の安定時間をおいてスタートさせます。                            倒立終了時も補助アームを先に動かして後への転倒を防ぎ、次にメインアーム伸ばした後ゆっくりと車体を下げます。 両アーム共に其々のRCサーボモーターよって働き、正確にバランスポイントに止まるように設定してます。      
私の使った部品リスト
購入部品
AVRマイコン ATmega328P秋月電子250円
16MHz水晶発振子1個秋月電子30円
DC-DCコンバータMINIMAX MAU102秋月電子500円
ジャイロモジュール MPU6050アマゾン430円
フルブリッジドライバ L298N秋月電子:350円
メインアーム用RCサーボモーターMG995アマゾン:1180円
補助アー用ムRCサーボモーターSG90秋月電子:400円
超音波センサーHC-SR04 3個アマゾン:5個990円
シャープ赤外線受信モジュール GP1UXC4秋月電子:50円
木製車輪のタイヤ用Oリング2個ヨドバシカメラ:696円
前輪自在キャスター1個HSコーナン:98円
手持ち部品
楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ (70168)アマゾン:740円
ユニバーサル基板1枚
ニッケル水素電池単3型4個
単3型電池ボックス4個用1個
ターミナルブロック:2ピン3個
タミヤ3㎜6角シャフト(L60㎜拡幅用)2本
基板用トグルスイッチ3P1個
基板用スペーサー10mm×4個
シナベニヤ公称3㎜(実際は2.8mm前後)300×300(mm)1枚
表示用3mmLED5個
その他CR類及びピンジャックと線材など少々

基板の回路図
ご注意!
1)電源バッテリーには必ず1.2Vのニッケル水素充電池4本を使って下さい。
2)サーボライブラリーを使って何れかのピンが attach() されている場合,D9・D10番ピンからPWM出力が
使えません。これはバグではなく仕様です。回路のピン番号を変更する時には注意が必要です。



動力用モーターのノイズ対策


DCブラシモーター整流子のスパークノイズによって制御回路に影響を与えることが多々あります。
今回も、誤作動対策として左右のモーターにノーマルモードノイズとコモンモードノイズ用に
入力端子両端とモーターケースの間に0.1μFのコンデンサーを追加しました。(上記画像参照)
特にモーターケース間のコモンモードノイズ対策は効果が有ります。

使用する赤外線リモコンについて
赤外線リモコンの送信機には色々ありますが、ここで使用するのに都合が良いリモコンは、
テレビ用のリモコンす。しかし、メーカーや機種によっては使えないものがあります。
下記のsketchをArduinoIDEにコピーして手持ちのリモコン送信機が使えるかCODEの受信テストを行います。
このsketchでは、赤外線受信モジュールの入力ピンを6番としてますが適当に変更が可能です。
押されたボタンに対応した受信CODEがシリアルモニターに表示されます。
尚、ここではボタンが押されてる間、連続して同じCODEが出力するタイプの送信機が必要です。
用意するもの:赤外線リモコン送信機、Arduino uno等、赤外線受信モジュール、ブレッドボードなど

#include <IRremote.h> // use the library
int receiver = 6; // pin 1 of IR receiver to Arduino digital pin 6
IRrecv irrecv(receiver); // create instance of 'irrecv'
decode_results results;
void setup()
{
  Serial.begin(9600); // for serial monitor output
  irrecv.enableIRIn(); // Start the receiver
}
void loop()
{
  if (irrecv.decode(&results)) // have we received an IR signal?
  {
    Serial.println(results.value, HEX); // display it on serial monitor in hexadecimal
    irrecv.resume(); // receive the next value
  }  // Your loop can do other things while waiting for an IR command
}</font>

ソフトウエア(Arduino sketch)について
今回は今までに作った作品の寄せ集め的なスケッチになりましたが、公開の要望がありましたので
注釈を付けて次のページに掲載しました。  sketchのページへ移動します。
何せ、スケッチは素人なので完全ではありません。間違いやアドバイスがあればお知らせ下さい。

ご注意
このスケッチを丸ごとコピーするだけでは再現できません。特に倒立は、フレームの形状や使用部品
及び部品配置によってバランスが異なり、安定させるには機体に合わせた設定値の変更が必要です。


完成した複合ロボットの動画をご覧下さい。



皆様の参考になれば幸いです。

by Paradise


MENUへ戻ります。




inserted by FC2 system