2017年1月11日水曜日

RSS実験機「Aries」製作記⑦

機関部がお亡くなりになりました。


それは何度目かの試射の時・・・。平ゴム4本を「ぐぎぎぎぃぃ」と言いながら装填し、的に向けた瞬間、暴発しました。
写真からわかるようにパーツの回転の軸となっていた釘が「く」の字型に曲がってしまい、その後はゴムがかかってもすぐ外れるようになってしまいました。パーツを交換しても数回で同じようになります。

私の機関部は
このような仕組みなのですが(赤い点が回転軸の釘)

ゴムによって矢印のような力がかかって耐え切れず曲がってしまったようです。
これは釘を太くするほかに解決策がないように思ったのですが、図で省略したバネが干渉したり、そもそもいつ曲がるかわからない機関部を使い続けるのはどうかと思うので、新しい方法を考えることにしました。

まず、機構が単純なこと、加工が少ないこと、ゴムの強さに関わらず動作すること、万一壊れても使用者に危険が及ばないことなどを考え、下のようなデザインになりました(シア付けたかった・・・泣)。とりあえずこれで作ってみます。


試射の結果ですがこちらの画像になります。
ゴムはユタカメイク22mm×折径160mm平ゴム、加速距離40cm、パチ玉、一枚目は水缶、二枚目は空です。
アルミビール缶は両面貫通、アルミ蓋付きコーヒー缶は少し切れ目ができた程度です。
おそらく25~27m/sくらいでしょうか・・・。
この後は玉受けとレールを作り直すつもりです。

最後に現在の状態です。



部活で始めるArduino② 「サーボモータ入門編」

サーボモータ入門編

今回はarduinoでサーボモータを動かしてみましょう。

arduinoは単体だとLEDを光らせることくらいしかできないのですが、ピンを使って様々なものと接続することで多くのことができるようになります。

今回はロボットを作ったり動く工作をするのに使われるサーボモータをarduinoで制御してみましょう。



今回はとりあえず動かすことが目的なので
・小さいサーボモータ
・3ピン制御
・簡単プログラム
で行きたいと思います。

まずサーボモータを入手します。
今回私が使用したサーボモータはSG90(¥420)です。一番小さいお手頃なやつです。アマゾンで2日
で届きました。



arduinoとサーボモータのほかに前回使ったUSBケーブルB型、サーボモータと接続するためのジャンパ線(針金でも可)を用意します。


あと前回の投稿を参考にarduinoとPCを接続してプログラムが書き込める状態にしておいてください。PCによっては繋ぐたびにドライバの更新が必要になる場合があります(私の学校のPCがそうでした)。

作業を始めるまえに注意です。サーボモータは普通のモータとちょっと違うので以下のことに気を付けてください。

・手で無理に回さないこと
・製品ごとに決められている角度以上に回さないこと(できれば±3°180°なら3°~177°で運用する)

では早速作業を始めましょう。
まずarduinoとサーボモータを接続します。サーボモータはコードの色ごとに役割が決まっています。

こげ茶→GND(電池でいうマイナス)
→IN(電源、電池でいうプラス)
→制御(デジタル信号で角度の指示を出す)

今回はこげ茶はarduinoのGNDに、赤は5Vに、黄はデジタル出力の9番(プログラムによってはほかの場所でも可)に接続します。
ジャンパ線を互いの端子の穴に深く差し込みます。



接続している間はサーボモータからキュイキュイという音が聞こえるかもしれませんがサーボモータが現在の角度を保とうと微妙に動かしているためで問題はありません。

次は実際にサーボモータを45°から135°に動かしてみます。
以下のプログラムをPCのarduinoIDEに入力して書き込んでください。
(ちなみに//と入れた場所は「その場所からその行の終わりまで無効」ということを表す文法です。無効になるのでそのままコピーして貼り付けてもらって大丈夫です。)

#include<Servo.h>       //サーボモータのライブラリをインクルード
Servo servo1;            //servo1というServoオブジェクトを作る

//最初に一度だけ実行
void setup() {
    servo1.attach(9);   //servo1が刺さっているのは9番ピン
}

//setupの後無限ループ
void loop() {
    servo1.write(45);    //servo1を45°にする信号を出す
    delay(1000);          //1000ms(ミリ秒)=1秒待つ
    servo1.write(135);  //servo1を135°にする信号を出す
    delay(2000);         //2000ms(ミリ秒)=2秒待つ
                             //「{」のところに戻る
}


サーボモータが45°から135°の間を往復しましたか?
失敗した方はこれまでの手順をよく読んで再挑戦してみてください。

arduinoのプログラムはスケッチと呼ばれ、C言語とほぼ同じ文法で書くことができます。
が、ちょっと使うためだけにプログラミング勉強するのは…。という方もいると思います。
そのうち「当てはめるだけでスケッチが書ける表」みたいなのを作るかもしれません。

次回は「サーボモータ応用編」か「シリアル通信編」になります。
この記事がArduinoに挑む方の助けになれば幸いです。