昆虫ロボット

まず、Arduinoエントリーキット(Uno版)をアマゾンさんで購入しました。

本も購入しました。

購入した本のタイトル:

・ Arduinoでロボット工作をたのしもう!

・ 電子工作入門以前

・ 電子工作は失敗から学べ

 

ブレッドボードに電子部品と乾電池を挿して、青色LEDが光るようにしました。

ブレッドボードに並列繋ぎでLEDを2つ(青・赤)光らせる事に成功しました。


Arduinoでロボットを作るには、電池ホルダー(電池2本、4本、9[V]電池)や、ACアダプター 等が必要です。

Arduinoの開発に使う充電器と電池ボックスを実店舗で買いました。
全部で2,003円でした。
・9[V] スイッチング ACアダプター 1[個]
・ 電池ボックス(1.5[V] * 4[本]、1.5[V] * 3[本]、1.5[V] * 2[本]、1.5[V] * 1[本])
・ 9[V]電池スナップ * 2[個]


Arduino IDEを動かそうとしたら、動かないので、下記のようなサイトを見て、

http://www.arduino.org/learning/getting-started/arduino-ide-doesn-t-start
http://windowsreport.com/arduino-problem-windows-10/

色々な策を講じても「Arduino IDEが『一瞬』、起動画面が現れて止まる」という現象が直らないので、Bandicam(というデスクトップ無料録画ソフト)で、

一瞬、現れるエラーメッセージを録画したら、それ以降、何もしていないのにも関わらず、直りました。


Arduinoの基板上のLEDを点滅させました。

200[ms]間隔です。

それから、Arduinoからモールス信号(SOS)を発信させるようにプログラミングしました。

(参照<モールス信号のSOS>: * * * – – – * * *)

すぐに作るためと、Arduinoでプログラムを組むのが2回目というのもあり、

慣れていないので、こうしました。


SOS点滅のソースコード:

void setup() {
// put your setup code here, to run once:
pinMode(13, OUTPUT);
}

void loop() {
// put your main code here, to run repeatedly:

int i;
for(i=0; i<2; i++){
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}

digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(600);

for(i=0; i<3; i++){
digitalWrite(13,HIGH);
delay(900);
digitalWrite(13,LOW);
delay(300);
}

for(i=0; i<2; i++){
digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(300);
}

digitalWrite(13,HIGH);
delay(300);
digitalWrite(13,LOW);
delay(600);

}

Arduinoをプログラミングしたり、ブレッドボードに配線して、2つのLEDを制御し、交互に点滅させました。


http://toshiba.semicon-storage.com/jp/product/linear/motordriver/detail.TA7267BP.html

↑ArduinoでPWM(Pulse Width Modulation)を試しました。 徐々にLEDが光り、徐々にLEDが消えるという変調方法です。
LEDを高速で点滅させて、その間隔を広げたり、縮めたりしました。

モータードライブIC(TA7267BP)買いました。
部品代(3個; 予備のためです): 630円 送料・手数料: 432円 合計: 1,062円(税金: 78円)

参照: TA7267BP(東芝半導体&ストレージさん)
http://toshiba.semicon-storage.com/jp/product/linear/motordriver/detail.TA7267BP.html

サーボモーターです。

モータードライブICの動作を確認しました。

~要点(ポイント)~
・ 昨日の回路に線を付け足すより、逆に楽なので、配線を1から、接続し直しました。
(レゴと同じ発想といいますか、やり方です)


・ ArduinoのスケッチというIDE (Integrated Development Environment)上のプログラムのコンパイルは出来ましたが、スケッチに、容量不足で転送出来ない問題がありました。


1. 「ツール」→「ブートローダーを書き込む」を押す


2. 「ツール」→「シリアルボード: COM’x’を選択」(‘x’は、数字で、多分、USBポートで変わる)を変更する
事により、Arduinoマイコンボードの、SW的な問題は、解決しました。


・HW的に、線を1本、追加する等をした事により、モータードライブICを経由して電源が確保できたためか、動きました。

これが、昆虫ロボットが動く様子の動画です。

テキサスインスツルメンツ(TI)さんの、
モータードライブIC(DRV8835)が届きました。

今までのモータードライブICと比較して、素子が1つで済み、
配線が楽になるというのが、買った目的です。
TIさんの直販サイトで購入いたしました。

素子だけでも仕方がないので、基盤付きの素子を、改めて購入いたしました。

そして、DCモータードライバーモジュール(駆動組込素子)が届きました。

その素子と、抵抗 等をブレッドボードに挿しました。

電源がおかしいためか、抵抗値が違うためか、配線が間違っているためか、動作がありませんでした。

回路とかモーターがダメになっても困るので、止めました。

配線をやり直したところ、片方のモーターは動くようになりました。
もう片方のモーターの配線が、ブレッドボードに挿すところが逆なのかもしれません。

プログラミングされた昆虫ロボが歩く様子です。
(左右の脚が動きます)


1. モーターとブレッドボードを接続する部分を、予め、半田付けして、抜けないようにした (ブレッドボードに直接、半田付けして固定してはいない)
2. 通電している音がして、動かない場合、軽く衝撃を加えた
(叩いた)
事により、左右の脚が動きました。

センサーを物理的に取り付けたので、とりあえず、効くかどうかを試しました。

Arduinoにセンサーを取り付けましたが、5秒ごとに、
センサーに懐中電灯を点けたり消したりしても、PCに送られてくる値が、恐らく、変わらなくなりました。

センサーが上手く動作した動画です。
センサーに懐中電灯を当てるのではなく、天井の蛍光灯に向けながら、衝撃を加えると、数値が変わる事が判明しました。






上手く動きませんが…

・電力不足
・モーターのギヤの油分不足
・センサーの感度
・閾値が適当でない

事が考えられました。

組み込み制御の難しいところは、これです…
プログラムとしては、「相当」、単純ですが…

プログラムとして、改良が必要そうな部分は、分かりますが、
恐らくは、ハードウェアが原因だと思われました。




センサーを7個、秋月電子通商さんで購入しました。
全て3ピンです。 (ピン数が多いと、もっと精度がよくなります)
全部で、4,550円でした。

左: 精度が高いですが、価格が高いです。 (1個800円)
右: 精度が低いですが、価格が安いです。 (1個450円)

精度が高いセンサーが動いている事は、確認出来ましたが、その値を、どう利用すればよいのか、あまり分かりません。
0と1023が、常に交互に出ていて、その間の値が変動している「ような」気もしています。

今、見たら、センサーの値は、こういう感じでした。つまり、1023と0を無視して、約400以上で動くという風にすればよいのかもしれません。

期待した動きが出来そうな、通電音がします。
(センサーを明るくすると、通電し、塞ぐと止まります)
後は、機械的動作の方です。

モーターの先のギヤは、チタンか何かで、外れないモノです

古いモーターから半田を融かして、新しいモーターに線を半田付けしました。

精度が高いセンサーが動いている事は、確認出来ましたが、その値を、どう利用すればよいのか、あまり分かりません。

0と1023が、常に交互に出ていて、その間の値が変動している「ような」気もしていました…

センサーの値は、こういう感じでした。

つまり、1023と0を無視して、約400以上で動くという風にすればよいのかもしれないと思いました。

モーターに通電音がするのは変わらないですし、最初、歯車を動かしたりすると、動きますが、
電圧の影響なのか、歯車がガタついているのか、両方なのか、どれか分からなかったです。
ちなみに、電源をモーターに直で入れると、すぐに動きます。
ギヤボックスに入っているモーターに電源を直で入れて、動くか確かめるという事を思いつきました。

両方、動くので電圧でしょう。

テスターで計ったら、0.01[V]しか、電圧がありませんでした。
(上手く、当たらないので、接触が悪いのかもしれませんが)

電圧降下は、接触不良か、線が細いのが原因なのかと思いました。

線の先端を切って、半田付けし直したら、電圧が、2倍になりましたが、元が低いです…
線を全部、繋ぎ直しましたし、

各々の線の通電は、一々、確認しましたが、モーターに通電音すらしなくなりました…

プログラムを、部分的に書き換えたら、何故か、両方のモーターを片方ずつ、動かす事は出来ましたが、怖くなりました。

モータードライブICがおかしい事を疑い、今、新しいモノを半田付けして、冷ましていました。

モータードライブICを入れ替えても、同様に動くので、
Arduino本体が悪いのでかもしれませんけど、それは、非常に考えづらいですが、よく考えてから、交換した方がよいと思いました。

真理値表を見て、確認しましたが、片方ずつ、左回転と右回転共にさせる事が出来ますが、両方、同時には、どちらの回転も、出来ませんでした…

Arduino本体の、+5[V]の電極?から、線を外すと、普通に2個同時に動く事が確認出来ました…

ロジック電源無しで駆動する理屈が謎です(1回でも外せば動きます)が、とりあえず、これでよいという事にして、次に進む事にしました。

センサーを搭載した、昆虫ロボットが出来ました。
(衝突回避 機能付き)