Amalgam Blog

圧着工具届いたのでケーブルどんどん作ります。


P_20200212_210859_vHDR_On_HP

意外と難しい
長さとかは追々調整するとして、これで必要なものは一通り揃った気がするので、いい加減リポを電源にしてステピを回していきます。

・二つのステピの独立制御
・電流の測定
・バッテリー電圧の測定

あたりを目標にします。

3つ目が重要で、モーターの状態によらずバッテリーの電圧降下が激しくないのであれば、電源は統一しちゃいたいなと思います。
したい




第二の期末試験シーズンが迫ってきているので開発は減速
こんな感じの与太話でお茶を濁していきます
(もう結構濁っているけど)

歯車といえば、加減速だったりトルクの増減だったり
回転するテコとも言えます。
歯数が20:40であれば速度は半分に、トルクは倍になるなんてことは気の利いた小学生なら知っているようなことです。

さて、クイズです。
実用される歯車では、速度比を1:1にする場合、歯数を40:40と丁度にするのではなく、39:41と微妙にずらします。なぜでしょうか?
①摩擦などで失われるトルクを補うため
②歯車の摩耗を抑えるため
③大きさが違うほうが噛み合いが良いため



答えはです。(反転すれば多分見れます)
例えば歯数が同じだった場合、一回転毎に全く同じ組み合わせの歯同士が衝突します。
歯車の製造技術は素晴らしいものですが、所詮人が作るものなので全ての歯が均等とは言えません。そこに差があるというのは絶対の事実です。

例えば、40枚のうち一つだけやたら強い歯が一つあるとします。
対面も歯が40枚の歯車であれば、毎回同じ歯が強い歯の相手をすることになり、一方的にかつ集中的に傷んでいきます。

これでは困るので、歯はできるだけ均等に相手をさせたい...ということで、上のように歯数をずらすわけです。数学的に言えば互いに素の組み合わせにすることで、全ての歯が均等に組み合わさります。

例えば上記の39:41であれば、強い歯は対面の歯車の歯を全て均等にしばき倒しながら回ります。
こっちの方が問題のように聞こえるかもしれないですけど、集中的に負荷がかかるよりは結果的に寿命が長いというわけです。
単純計算で1/40程度の速度で傷んでいくわけですから。

というわけで答えは②です。

今回の説明では先天的な歯の強さを例にしましたが、使用中の後天的な破損ないしは傷などについても同様です。(というか実運上はこっちのほうが多いのかな。知らない)
傷のついた歯面は同様に他の歯も傷つけるので、集中して傷つけるよりは分散したほうが致命傷を先延ばしにできる、という考え方です。

ちなみに、ギア比が1:2やその他の場合も同様です。歯数を20:41とします。
この場合、小歯車の歯は大歯車のそれの倍ほど酷使されることになります。こればかりは歯数の調整ではどうしようもないため、少し強い素材を用いたりと工夫するわけです。

長くなりそうなので設計の話を後ほど...

そろそろピン配置を考えないといけないのですが、そもそもどんなピンがあるのかというの確認せねばならない
ArduinoMicroはピンが34あり、うち入出力が20ピン
ただし一部のピンは他の機能と兼用している?みたいなので、機能の拡張性やらを考えるならそういったピンは避けないといけない...
というわけで、とりあえずピン一覧と機能をまとめます

画像はSwitchScienceより
image-1491288572748

ただの数字はデジタル入出力
Aが付いてるのはアナログ入力
(PWM)が付いてるのはPWM出力可

他は
MOSI, MISO, SS, SCK:マイコン同士を繋ぐSPI通信用のピン
TX, RX:シリアル通信用のピン
SCL, SDA:I2C通信用のピン
AREF:アナログ入力の基準電圧を指定するピン

こんなところでしょうか。
通常の入出力と被ってるのが少しあるので、そこは避けておいたほうが吉ですかね

一方使う予定のピンが
・ステッピングモータ制御
デジタル*2(方向指定)
PWM*2(周波数指定)

・サーボモータ制御
PWM*3

・カラーセンサ
デジタル*2(モード指定)
デジタル*2(センサ入力)

・フォトリフレクタ
アナログ*5

・ジャイロセンサ
アナログ*2

ここまでで
デジタル*4
アナログ*7
PWM*5
という具合
まぁどうにかなりそうですね。

あとはマイクロスイッチと測距モジュールなどを適宜追加する形になると思います。


この土台なんですが、実際にホイールを付けて見たところやはり4点接地ができません。
元の設計には問題なし
一度バラして部品を一つ一つ確認すると、やはり全てが少しづつ反っています。

そもそもなんで反ってしまうんだ、という話です。
出力直後の温度差で反ってしまったり、というのは分かるのですが、それにしては局所的に反っていたり法則がよくわからないです。

この辺りが解明できるまでは中々進めなさそうです。


そろそろ圧着工具が届く予定なので、回路の方を進めます


ステッピングモータを任意の速度で回すには、それに応じた周波数の信号を送る必要があります。

愚直に回すだけなら
int dt = 5;

void loop() {
  digitalWrite(5, HIGH);
  delay(dt/2);
  digitalWrite(5, LOW);
  delay(dt/2);
}
しかし二つのすてぴを独立した速度で制御しようとすると、この方法は使えません。
律儀に内部タイマーを引き算して「5ms経つ毎にON/OFF」とかやるのも悪くないですが、とにかく面倒くさい

と思って調べていたら、このサイトを見つけました。
PWM信号の周波数を任意のものに変えるという趣旨のもの

何やら複雑な事が書いてはありますが、頑張って実装していきたいとおもいます。

そろそろピンの配置を考えないとな...

このページのトップヘ