こんばんは。
今回は「Arduinoを使ってぶつからない車を自作~2代目~」ということで前回、惜しくもぶつかってしまった車を改良した記事です。
サーボモーター固定用のパーツを3Dプリンタで何度も作り直したりと、手間がすごくかかってしまったため投稿が遅くなってしまいましたm(__)m
前回の結果↓
前回作った車にサーボモーターを使った“首振り機能”を実装することで衝突は回避することができるようになるのか、楽しみです♪
この車を作るために必要な知識としては“DCモーターの制御方法”、“サーボモーターの制御方法”、“超音波センサの使い方”です。
今回で使用する技術についての過去の記事↓
①アナログローパス・フィルタとデジタルローパス・フィルタの比較
それでは~
シュワッチ!
①作るもの:
②用意するもの:
・絶縁ラジアルリード型積層セラミックコンデンサー0.1μF 50V 2.54mm(10個入)
・電池ケース 単3×2 スイッチ・カバー付 KIT-UM32SK
・パナソニック 単3形アルカリ乾電池 12本パック LR6XJ/12SW
・モバイルバッテリー
・【ツインモーターギヤーボックス】タミヤ 楽しい工作シリーズ tk097
・【ユニバーサルプレートセット】 タミヤ 楽しい工作シリーズ TK098
・タミヤ 楽しい工作シリーズ No.101 トラックタイヤ 36mm(70101)
③回路:
ポイント:
1)超音波センサとArduinoの途中にはアナログローパス・フィルタを作っています
*アナログローパス・フィルタについての昔の記事↓
アナログローパス・フィルタとデジタルローパス・フィルタの比較
2)TA7291Pのデータシートを見ると、左から4番目の端子が制御電源端子となっています。この端子に対応するArduinoのピンはpwm(~が数字の後についているピン)にして下さい
④プログラム:
ポイント:
1)Arduinoの開発環境では関数のプロトタイプ宣言はいりませんが、他の言語では必要なので一応、記載しています
2)関数の記述順番は“超音波で障害物との距離測定”・“前進”・“後退”・“斜め左に進行方向を変えながら前進”
3)プログラムでデジタルローパス・フィルタを作ることも考えましたが、distanceの値を更新するのがif文の関係で毎度というわけではないので今回はアナログローパス・フィルタを採用しました
⑤完成画像:
・正面図:
ポイント:
1)ジャンパ線をテープで固めているのは超音波センサにかぶって誤った距離を算出することがあったからです
2)サーボモーターと超音波センサの支持部はそれぞれ3Dプリンタで制作したものです。
*僕が使っている3Dプリンタ:ALUNAR 【工場直販】 3Dプリンター Reprap Prusa i3 DIY未組立キット 組立ビデオSDカードが付属
・右側面図:
ポイント:
1)6角オネジ・メネジ MB3-30を使うことで、ブレッドボードに接続されたジャンパ線の高さを確保しています。(少し斜めっていますが・・・)
2)サーボモーターの線も走行の邪魔になったので、ガムテープでまとめます
⑥完成動画:
惜しくも障害物にぶつかってしまいました・・・
悔しいです😢
原因としてはサーボモーターの回転角の関係で障害物との距離が十分とれていないにも関わらず、一部の傾き角を超音波センサが向いた時に“distance”の値が40[cm]を超えてしまったがために“if (flag == false)”のif文を抜けてしまい、十分に後退できていないためだということを考えました。少しわかりにくいので下の図で補足を↓
ということで、今回も失敗してしまったのでこの“Arduinoを使ってぶつからない車を自作編”はまだまだ続きます(笑)
とはいっても、ハード面はこれ以上は工夫のしようがなさげなのでプログラムだけを変更するだけでうまくいきそうですが・・・また、完成しましたらその記事を書きたいと思います。
いかがでしたでしょうか?
今回も完成版をお届けすることが出来ず、申し訳ありませんm(__)m
次回は必ず、完成させます(フラグ🚩(笑))!
どうか、最後までお付き合いください🙇
最後にクリスタの練習状況です↓
▲▲▲アリガ島▲▲▲
「未定」