昆虫ロボット
まず、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
サーボモーターです。
アマゾンさんで買った、Arduinoを使ったロボット開発用の部品が届きました。
内訳:
1. タミヤ 楽しい工作シリーズ No.111 スポーツタイヤ 56mm径 (70111)
2. タミヤ 楽しい工作シリーズ No.97 ツインモーターギヤーボックス (70097)
3. タミヤ 楽しい工作シリーズ No.157 ユニバーサルプレート 2枚セット (70157)
4. タミヤ 楽しい工作シリーズ No.168 ダブルギヤボックス 左右独立4速タイプ (70168)
5. タミヤ ロボクラフトシリーズ No.7 リモコン インセクト 71107
6. タミヤ 楽しい工作シリーズ No.96 オフロードタイヤセット (70096)
7. COOLBOTANG 120本 ジャンパーワイヤ ジャンパー線 ブレッドボード デュポン ワイヤー 接続ワイヤー 20CM (オス-オス/ オス-メス/ メス-メス 三本セット)
モータードライブ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回でも外せば動きます)が、とりあえず、これでよいという事にして、次に進む事にしました。