あえて賢かれ

自分用の備忘録

吸引ファンの設計

 この記事はMicro Mouse Advent Calendar 2019の23日目の記事です.

 昨日は,なぽまるさんの「誕生日のおはなし」でした.お誕生日おめでとうございます!
からくり工房I.Sys と同い年で,記念すべき20周年目の部長を務めるとは運命めいたものがありますね.

 はたして幣サークル,東京理科大学 Miceは20周年を迎えることができるのでしょうか.遅くなりましたが,はじめましての方は初めまして.Miceの前部長でしたmakotoです.

 今日の話はマイクロマウスの吸引ファンの設計についてですが,たいした中身はありません.

 読んでいただける方がいるならば,しばしおつきあいください.(明日のアドベントカレンダーの紹介までスキップ!)


 マイクロマウスを速く走らせるためには,吸引ファンがあると嬉しいです.吸引ファンの有無で目標速度や目標角速度への追従性が違ったり,急激な加減速時のスリップによる距離ずれが少なくなったりします.でも吸引ファンの作り方について述べているブログは意外に少ないです.なので,少しでも技術的なことが書ければいいなと思ってこのタイトルにしました.流体力学に基づく何か定量的なことを書こうといろいろ考えましたが,無理でした.なので主観で書きます...

[参考]吸引ファンについて述べている先行ブログ
http://hidejr1053.web.fc2.com/vq2.html

吸引ファンとはそもそも

 吸引ファンは掃除機のノズルを地面に向けるようにしてダウンフォースをえるためのものです.遠心ファンを取り付けて,モータの軸トルクを流体(空気)に与え圧力差を生み出します.一般に遠心ファンのような流体機械の性能は以下のような性能曲線で表します.流量(横軸)が変化したときに,圧力差(ポンプなら揚程)や効率がどのように変化するかを示したものです.流量Qを決めるとその時の圧力差Pや効率ηがわかりますね.しかし,この曲線は回転数が(ほぼ)一定で実験されるものです.同期モータを使って一定回転数で運用する機械ならこれで十分ですが,マイクロマウスのファンは回転数が不定の変数なので,独立変数が2つ(例えば回転数N,流量Q)あることになりますね.

f:id:staytus:20191219162628p:plain
性能曲線の例

 ファンには遠心式,斜流式,遠心式があります.後ろに向かって流量が大きくなるのですが,マイクロマウスのように流量が小さく,圧力差や揚程を生み出すことを目的とする場合,効率のよい遠心式を使用します.

オープン型,クローズド型

 側板があるかどうかで羽根車は以下に分類されます.

f:id:staytus:20191221220330p:plain

 製作しやすいのがオープン型で,3Dプリンタで製作するならクローズド型も可能ですね.オープン型の場合,基板を側板として使っていますが,クローズド型なら羽根車を基板から離すことができるので十分に離せば,ファンの下にも部品が置けるという利点があります.羽根車をかなり高回転で回転させるので,軟らかい素材では遠心力でファンが横に広がります.強度についても側板のあるクローズド型の方が強いです.

羽根の出口角度

 出口のファンの周方向との角度で3つに分類されます.

f:id:staytus:20191221234856p:plain

 損失を考えなければ流体の角運動量変化大きいほどファンは仕事をするはずなので,前向き羽根の方が羽根から受けるエネルギーは大きいはずです.流体のエネルギーは動圧(流速)と静圧(圧力)のどちらかになりますが,後向き羽根の方が静圧に変換されるエネルギーの割合が大きく,圧力差に寄与するエネルギーを考えれば後向き羽根の方が効率がよいです.一般のポンプ・送風機は後向き羽根を使用し,送風機の場合,30°~50°の例が多いらしいです.

羽根枚数

 (理論的には無限大が理想ですが)5~8枚くらいで,たぶんそんなに差異は生じない気がします(主観).

ファンの揚程・流量と回転数,大きさの関係(相似則)

 揚程(圧力差)は大きさの2乗,回転数の2乗に比例
 流量は大きさの3乗,回転数の1乗に比例
 軸動力(Tω)は上の2つの積で大きさの5乗,回転数の3乗に比例

 圧力差を大きくするためには,大きさ,回転数を上げればよく,大きさはマイクロマウスの設計上の制約が大きいので,高回転のモータに高電圧をかけて圧力差を得る方が簡単です.下手に羽根車の径を大きくすると,必要なトルクが大きくなることで回転数が落ちてしまう可能性があります.

結局どう設計すれば最適なのか

→分からない.

 先に述べましたが,吸引ファンの独立変数は2つ(例えば回転数N,流量Q)です.運転しているときはほぼ定常な状態に落ち着いているわけですが,その作動点は,スカートを含めた管路の抵抗曲線(流量と圧力損失の関係),DCモータの特性曲線との関係性の中で決まるはずです.

しかし,管路系の抵抗曲線,DCモータの特性曲線がわからないので,結局作動点は実験しないとわからないと思います.

なので,方針としては,
・最適なファン形状ははわからないので無難なファンを作る.
・回転数を上げる
・スカートの気密性をよくする
という結論になるんだと思います.

 小型のモータは発熱が著しく,そのためにdutyをあまり上げられないので,duty=1で使うためにモータの発熱をどう抑えるか考えた方がいいかもです.

スカートの例

f:id:staytus:20191221230510p:plain

 これがよいというものではないです...
 スカートは1次スカート(黒い部分)と2次スカート(半透明な部分)から構成されます.1次スカートは適当な厚めのテープを,2次スカートは適当な袋にPTFEテープを貼ったもので作りました.1次スカートは床面と2次スカートを擦らない程度に近づける.2次スカートは管路に抵抗をもたせて,密閉する役割があると思っています.

スカートはあささんなど強い人のブログにによく書かれているので参考にしてみてください.あささんも書かれていますが,スカートをつける場合は車高を考えて設計しましょう.僕は僕は一週間前にスカートが擦るようになってしまいやむなくタイヤを交換する羽目になりました.

最後に

 非常にまとまりのないブログとなってしまいました.申し訳ありません.有用そうなサイトのリンクを貼っておきます.
遠心ファン設計計算 | 学べる探せる設計技術

リンク先は遠心ファンの設計についてのものですが,このような設計をする場合,通常は回転数Nと流量Qとモータ出力L等があらかじめわかっている場合を想定しています.
(計算内容の詳細な説明はこちら)

回転数はモータのKV値とdutyから大体の値を入れれば設計できるかもしれません.現実的な流量Qが確保される範囲内でオイラーヘッド(全圧力P=ρ*g*オイラーヘッドHth)が最大化されるようなパラメータがファン単体の性能としてはよさそうです.

再設計する方はもとのファンの回転数を実測するのがいいかもしれませんね.

もし,何かよい設計法があればおしえてください!(丸投げ)

明日のアドベントカレンダー

もすさんの「壁センサについて」です.ちょうど今,Miceの新入生むけステッパーマウスを設計しているので参考にさせてもらおうと思います.

参考文献

ターボ機械協会編.ターボ機械入門編.新改訂版,日本工業出版,2005.

全日本の反省とこれから

この記事はMice Advent Calendar 2019の21日目の記事です.

昨日は, taniho_0707先輩のQuadSPIを使った話でした.マイコンには様々な機能がありますが,自分で機能を試して使いこなしているのがすごいですね.僕も,DACで正弦波作って音楽を鳴らしたりしたいなと思っています.

結果のご報告

 いまさらですが第40回全日本大会お疲れさまでした.工芸大の方はじめ運営をしてくれた方々本当にありがとうございました.製図の最終提出が終わってからブログ書こうと思っていたので,今更ですが結果のご報告です.

クラシック競技第12位でした.

初めてのDCマウスとしては順位はまあまあな結果な気もしますが,内容はボロボロでした.全面探索最後に経路導出ができないとFlashに保存しない仕様なのですが,バグか読み間違いかで経路導出ができず,結果,片道探索分のデータで最短を走るという愚行をしました.そのうえ調整した1.5 m/sのパラメータでは走ることができず...迷路データを保存しなかったのでデバックもできていません.

Kinemaの仕様

全日本の交流会でDCマウスについて聞いてくれた方がいたので,回路図等を載せようと思います.だらだら書いても興味ないと思うので外観図のせて後は別記事にのせときます.
Kinema data - あえて賢かれ



色がビビッドで気持ち悪いですね.

特徴は,

・1717の前配置
・吸引を車軸中心に配置している
・センサ6個仕様

くらいです.

よくある1717モータを車軸中心に据えて前後に4輪を配置するのは,つまらないと思ったのでモータを思い切って前に配置しました.が,吸引力の作用する範囲はスカートで調整できるので,無理に真ん中にする必要はないと今は思っています.センサについても,4つで事足りたような気もします...

dutyの使い方について

 DC機のボトルネックの一つは電圧不足で,高速域で加速度が高い時など常にdutyが1になってました.対策としては,S字加速のように高速域で徐々に加速度を落としていくような曲線加速の導入があります.今年度はS字加速を導入してみました.一般にはあらかじめsinのテーブルをもっておいてその値に基づいてsin加速のようなことをしているようですが,少し独自で考えてやってみました.

台形加速のやり方も人それぞれだと思いますが,加速度一定なので,

\frac{dv} {dt}=a(一定)

これを数値積分して目標速度は
v_{n}=v_{n-1}+adt

とすると思います.このように離散的に計算したいと思ったので,ロジスティック関数とかシグモイド関数をつかって,

\frac{dv} {dt}=av(1-v)

を数値積分して,

v_{n}=v_{n-1}+av(1-v_{n-1})dt

とすれば,この関数の一般解は,

v=\frac{1} {(1-e^{-t})}

なので指数関数的な加速が期待できると思いました.

導関数
\frac{dv}{dt}=av(1-v)
逆関数
t=\frac{1} {a}log\frac{v}{1-v}
原始関数
x=\frac{-1}{a}log(1-v) +C

などの関係から加速に必要な距離,時間の計算,フィードフォワードに必要な加速度の計算などが比較的容易にできると思いました.が,シグモイド関数をそのまま加速曲線に使うことはできないのでいろいろ式をいじることになりました.何とか実装しましたがよいのか悪いのかよくわからないままです.


MATLABで実験 入力変数をかえれば疑似的に台形加速を作ったり,S字にしたりできた

f:id:staytus:20191221100029p:plain
S字にしてもduty=1となり加速が不安定になっています

その他,並進方向に関してはずっとduty=1でいいんじゃないかと思って,ジャイロによる姿勢フィードバックのみ残し他は左右どちらかがduty=1となるように加速するなんてプログラムを全日本数日前に入れてみました.時々バグったのでS字に戻しました.

来年の話

今の機体は横幅がでかく,かつ吸引モータがすぐ壊れるので,その部分を改善しないと現行の機体でやり続けるのは厳しいかなと思っています.もう一年クラシックをやって,いい成績をとってみたいという気持ちはありますが,正直調整につかれました.クラシックマウスは入門用という近年の風潮もあるので,これでクラシックマウスからは引退しようかなとも考えてます.今は,来シーズン2か年計画でマイクロマウスを作っていきたいと考えています.名前はたぶんAnimaです.来シーズンもまたよろしくお願いします!!

と全日本大会直後は思っていましたが,
今のKinemaの改良すべき点は
・吸引力が少したりない(現状最大220 gfくらい)→300 gfくらい吸いたい
・吸引ファン(とFET)がよく燃える
・壁切れが不安定
くらいで,思ったより機体の横幅は大きくなく他はそんなに問題ないようにも思えました.なので来年は吸引ファンの変更・センサ値の取り方・壁切れ等のソフト修正をして(はんだ付けめんどくさいので)現行の基板をそのまま使ってクラシック競技に参加したいと思います.

ハーフの方は新規設計したいと思っています.来年度中に走れるようになるかは不明です.別に走らなくてもいいかなとも思っています.大会に来なくなったら研究の闇にのまれたんだと察してください.

明日は

tendergorilla先輩の大会に出られなかったマウスの話です.先輩方の代は強い方たくさんで,ロステクするまえにしっかりとお話を聞いときたいですね.

Kinema data

2019年製作の機体Kinemaのデータ集です.

ハードのスペック表



機体名 Kinema
操舵方式 左右速度差(4輪)
全長 [mm] 100
車幅 [mm] 71
重量 [g] 120
マイコン STM32F405RG
IMU ICM-20602
壁センサ ST-1KL3A+SFH4550
モータ FAULHABER 1717T003SR
エンコーダ IEH2-4096(付属)
モータドライバ TB6614
ピニオンギア 0.5M 9T (真鍮)
スパーギア 0.5M 40T (POM)
ギア比 4.44
アイドルギア 0.5M 9T (POM)
タイヤ LMハイグリップタイヤ (20゚/4pcs)ミニッツレーサー
吸引モータ 千石の安いやつ(Φ12)
吸引ファン 3Dプリント(DMM:アクリルウルトラ)Φ30
最大吸引力[gf] 230
モータマウント 3Dプリント(DMM:MJF)
Li-po Hyperion 240mAh 2S

走行性能

↓最短走行

探索速度[m/s] 0.55
最大速度[m/s] 4
最大加速度(台形)[m/s2] 15
最大瞬間加速度(S字)[m/s2] 30
最大平均加速度(S字)[m/s2] 20くらい
ターン重心速度[m/s] 1.5くらい


 

回路図

※僕は機械科なので回路わかりません.吸引モータのところにダイオードをつけないとFETが発熱しました.以下の回路図は未修正です.また,吸引モータのドライブ用のFETは電流の絶対定格がより大きいものを使うことをお勧めします.一部,コンデンサ等は配線の都合上回路図から削除しています.

f:id:staytus:20191202002449p:plain

 

全体外観


 

吸引ファン

 吸引ファンの設計に関してそのうちブログを書くと思います.

 

 

 

Special Thanks

・回路図を読んで修正点の指摘くれたTwitterの方々 ,Miceの先輩方
・ICM-20602,エンコーダーの設定でお世話になったsoraさん https://garberas.com/
・その他マウサーの方々

ありがとうございました(_ _;)


 

 

 

 

 

 

 

 

 

 

 

 

Miceで主流な壁情報の記録方法

壁情報の記録方法の記事が少ないということで書きます.

以下の記事の方法の話です.
壁情報の記録 - hantas's blog

マイクロマウスを完走させるうえで一番初めにビット演算などが関わってくるのが壁情報です.ビット演算と聞いて機械工でプログラム初心者の僕はすごく嫌な気分になりました.同じような人に少しでも助けになればと思います.お酒入れているので間違ってたらすいません....

壁の数

クラシック競技の迷路は16×16区画で,壁は2×16×17枚あります.すべての壁の有無を記憶するためには, 2×16×17bit必要です.
f:id:staytus:20190913232340p:plain
4×4の迷路を考えると,水平(Horizontal)な壁が4枚×5行分,垂直(Vertical)な壁が4枚×5行分,計2×4×5枚分あるのがわかる思います.

縦壁と横壁で記録する

f:id:staytus:20190913232641p:plain

言葉で説明するのもつらいので,図を見てください.垂直な壁と水平な壁に分けて考えて,壁がないことを0,壁があることを1と表し,各ビットを一枚の壁に対応させます.

任意の座標の任意の方向の壁はどこの配列のどこのビットに対応するのか考える

f:id:staytus:20190913233026p:plain

まず注意として,以下では最上位ビットから数えて何bit目かという表現をします.2進数で1000という数があったとすると,1は最上位ビットから数えて0bit目,0100という数があったとすると,1は最上位ビットから数えて1bit目という調子です.上図を見てください.座標(3,2)の東西南北の壁はどの配列の何bit目に対応しているでしょうか...北壁はwallH[3]上位から3bit目,西壁はwallV[3]上位から2bit目,南壁はwallH[2]上位から3bit目,東壁wallV[4]上位から2bit目に対応してますね?(間違えてたらすみません...お酒のせいです)

さてこれを一般化して,座標(x,y)であったら,どうでしょうか.

f:id:staytus:20190913233746p:plain

少し考えると上図のようになりますね?(間違えてたらすみません...お酒のせいです)

ということで,任意の座標の任意の方向の壁はどこの配列のどこのビットに対応するのかわかりました.あとは実装するのみです.頑張って.

16×16区画だと必要な配列数は?

4×4の迷路であれば,wallHとwallVという2進数4桁の配列は[0]から[4]の5個必要でした.ということは16×16の迷路なら17個の2進数16桁の配列があればよさそうです.まずはそのようにして実装すればよいと思います.マイクロマウスの競技の規定上一番外の壁は必ずあります.そのように事前にあることが確定している壁については壁情報用の配列を用意しなくてよいので,本当は垂直と水平それぞれで15個の配列があれば十分かもしれません.しかし,今後,(x,y)座標における北壁があるのか確かめる関数等を実装する必要があります.そのような関数を作る際,例外処理が必要になるので,まずは17個の配列を用意して壁情報に関わる関数の動作を一通り確認し終えたら,不必要な情報は持たないようにしていけばいいんじゃないかと個人的には思います.(僕はいまだに未実装...)

実装の方法

16×16マスであれば,17個の2進数16桁の配列があればよさそうなので,uint16_tの配列を垂直と水平方向で2つ用意します.最上位ビットだけが1で他が0の16桁の2進数を16進数で表すと0x80です.南壁を例にとると,wallH[y]上位からxbit目の数を1としたいです.uint 16_t one=0x80;として,このoneを右にxだけビットシフトして,0で初期化したwallH[y]と(one>>x)をor演算すればいいんじゃないでしょうか.それでは,壁を入れることしかできませんが,その辺は自分の宗教によるところだと思います.(僕は壁を入れることしかできません.入れ間違えたら終わりです.)

完走に必要な壁情報に関わる関数

⓪ 壁の初期化関数(外壁とスタートの横の壁は1,他は0に初期化)
① 座標と方位を与えたらその場の壁の配列に壁を入れる関数
② ある座標と向きにおいて左と前と右センサの値が閾値を超えていたら,その方向の壁に壁を入れる関数
③ 座標と向きを与えたらその場の壁があるかどうか判定する関数
④ すべての壁情報を吐き出す関数

...ここまでが足立法実装に必要な関数だと思います.この後は,完走から先に必要になるもの.
⑤ 既知壁の記録,判定,出力の関数→最短走行,既知区間加速,未知区間優先探索に
⑥ 未知壁をすべてあるものとして壁を入れる関数→最短走行に
⑦ 入れた未知壁を取り除く関数→最短走行後の探索に

いっぱいありますね...一発ですべてを理解して,実装するのは厳しいので,一つ一つ作っていきましょう...
お酒もまわってきたので,この辺で...

MIDI音源を編集してスピーカで鳴らすまでの話

マイコンでスピーカを鳴らしてみました.

くそ雑魚なので,偉大な先輩方の技術を学ばせていただいています.このブログより以下のブログの方が役立つと思います.

音楽的な知識がないので多分適当なこと書いていると思います.その点もご了承ください...

 

 

<参考記事>

[1]STMのPWMでスピーカを鳴らす&スピーカに必要な関数について

umuoumu.blog.fc2.com

[2]スピーカ周辺の回路

ayatakaworks.wixsite.com

[3]MIDI音源を使ったスピーカ用音源の作り方について

 ayatakaworks.wixsite.com

 

スピーカで音を鳴らす際に必要となる要素は,

  • 音の高さ(周波数)
  • 音の長さ(待ち時間)

です.マイコンで音源を鳴らすためには,最低この二つの情報を配列か何かで事前に持っている必要があります.音の大きさについてはDuty比をいじることで変えることはできると思いますが,Duty比は基本的に1/2で固定するので大きさについては変更しません.

 

音の高さと音階について

音の高さは周波数です.ISOによって制定された?基準周波数はA4の440 Hzです.音階というのは感覚的なもののように感じますが,一オクターブ上がるごとに周波数は2倍になり,その間の音は12等分されています.

 

すなわち,1音上がることに,周波数は2^{1/12}倍されて,

1オクターブ上がって倍音となると,周波数は2倍となります.

 

プログラムで実装する際は,計算誤差と計算時間を考えなければ,事前に音の周波数をすべて書き込まなくても,for文を回して2^{1/12}\approx1.0594631を基準周波数からの音階番号の差の分だけ掛ける(または割る)ことで得ることはできます.

 

音の長さについて

音楽を鳴らす速度についてbpm(beat per minute)というものがあります.一分間に鳴らすビート(拍)の数というのはいいんですが,拍がどのくらいの長さなのか決まっていないっぽい?ということで,僕はよくわからないので四分音符♪を1拍分としました.MIDIでは音の長さをtickという単位で記録しますが,四分音符が何tickかは決めなければなりません.僕は,480tickを四分音符の長さとしています.

60 bpmの場合,一分間に四分音符が60回なります.だから,四分音符の長さは 1 sです.

一般化して,

四分音符の長さ =\frac {1000×60} {bpm} ms

1tickの長さ=\frac {1000×60} {480×bpm} ms

 

となります.

 

MIDI音源を配列化する

あやたかさんのブログを参照してください.

 

ネット上のMIDI音源を配列化するためには,MIDI音源から音の高さと音の長さの情報を得る必要があります.加えて多くの音源は複数の楽器を用いているので,トラックが分かれていて,同時に複数の音が鳴ります.1つのスピーカーでかつ簡単な矩形波では単音しかならせないので,音源を適当な形に編集する必要があります.

 

需要があるかは知りませんが僕がした方法を載せておきます.

 

MIDI編集ソフト世界樹のインストール

フリーでオープンソースのMIDIシーケンサー・MIDI編集ソフト『世界樹』

 

②単音のみになるように音源の編集

f:id:staytus:20190519222051p:plain一つのトラックに主旋律を拾い集める.

 

③イベントリスト(ノートオンのみにチェック)をCSVでエクスポート

f:id:staytus:20190519222527p:plain

右側のチェックの欄でノートオンのみにして,CSVで吐き出し.

 

④エクセル上で配列としてコピペできる状態にする.

f:id:staytus:20190519225856p:plain

 

R列に{音階番号,音を鳴らす時間[tick],全体の時間(音を鳴らす時間+その後の待ち時間)[tick]}をまとめて,コピペできるようにした.

 

四分音符の長さを480tickとすると,1拍は480tick,1小節は4×480tickになるはずです.

 

⑤配列の初期化の部分にコピペで実装.

 

クオリティを求めるとブログを公開しなくなりそうなので,適当な記事でお許しください...そのうち気が向いたら割り込みで実装する話とか具体的なプログラムの話とかを書こうと思います().

 

 

 

 

Kinema発注しました

新作マウスKinema(キネマ),やっと大体の部品の発注できました.(3/28)

2代目のマウスはDC吸引4輪マウスです.まあ定番のやつです.普通と違うのは,センサの数,吸引ファンと1717の配置,遊び歯車の存在くらいです.

 

参考までに(というより備忘録として)使用したソフト,サービス,部品購入先と注意事項等を並べておきます.

  

  • 使用ソフト

・3DCAD Fusion360

・回路CAD Eagle

 

  • 発注先

・3Dプリントサービス DMM (ナイロンと光造形樹脂)

・PCBサービス Elecrow

 

・モノタロウ ベアリング・スパーギア

・ネオヘリ ピニオンギア 

・ウィルコ ねじ部品・シャフト

・エアクラフト 吸引モータ・リポ

・デジキー 電子部品

秋月電子 電子部品(LED・スピーカー・スライドスイッチ)

・RT フォトトランジスタ

・双葉産業 ナイロンナット・シムリング・タイヤ

 

①足回りの設計

外部リンク:DC初心者のための足回り設計に関して - ゴール座標は(7,7)に!

外部リンク:1717使用マウスの足回り制作 - ぱわぷろ活動日誌

  1. ギアのバックラッシ(モジュール0.5の場合は0.1mm程度)を考慮する.
  2. ギアがタイヤのゴムと接触しないように緩衝地帯を設ける.
  3. ギアの歯先円がタイヤの外径より大きくならないように気を付ける.
  4. タイヤのゴムの厚みを考えて設計する.

②回路設計

・Eagle

 ・Schematic

  1. 回路はデータシートの応用例やほかのマウサーの回路を参考にして作る.コンデンサの容量とかもしっかりデータシートを読み込めば書いてある.
  2. 部品の情報はRSコンポーネンツのサイトからPCB part Library を利用するとフットプリントとかを自作しなくて済む.

    参考サイト:EAGLEとFusion360の連携(AUTODESKの犬になろう) - nacarの独り言

  3. 例えば,本来5Vの線であるはずなのに誤ってGNDとNameをつけてしまった場合.Nameで5Vの名前をGNDに変更すると,5VとGNDが短絡してしまうことになるので注意する.→その配線を消去して配線しなおした.そんなことはなかったです.ごめんなさい!!

 ・Board

  1. BoardとSchematicの連携は切らないように気を付ける.
  2. Fusion360から基板外形を取り込み,回路の情報をプッシュできる.(位置決め用の線とかはEagleで自分で書き込む必要あり)

    外部リンク:EAGLEとFusion360の連携(AUTODESKの犬になろう) - nacarの独り言

  3. シルクの印刷されるレイヤーを確認しておく.

    外部リンク:Eagleで使用するレイヤ

  4. 位置決め用の線は例えばtDocuなどのレイヤーに書く(この場合シルクで印刷されない)
  5. 基板発注先(例えばElecrow)のデザインルール等をダウンロードする.

    外部リンク:EAGLEとFusion360の連携(AUTODESKの犬になろう) - nacarの独り言

  6. コマンドに例えばC14と打てば,該当のコンデンサが飛んでくるので探さなくて済んで便利.
  7. 自動配線はGND等の大電流の流れる線を先に手配線して,信号線のみを自動配線した.
  8. 自動配線する前の状況に戻したいことが多々あったので,自動配線する前に名前を変えて保存していた.
  9. 1Aの電流に対して1mm以上の太さを基本として,信号線は0.2mmとした.
  10. はんだ付けしやすいよう必要に応じてパッドを大きくする.
  11. ビアやベタGNDについてはネットの情報を参考にした.

    外部リンク:ノイズ対策.COM|プリント基板の回路設計者・開発者のための技術サイト

  12. 大電流の流れるところのビアは大きくかつ複数に.

    外部リンク:電源配線のビア数は電流容量に合わせて設定する | ノイズ対策.com

  13. ベタGNDのクリアランスは設定した方がよい.

    外部リンク:http://blog.livedoor.jp/yz333/archives/45891935.html

③基板発注

・Elecrow

  1. EagleのtValue,bValueはシルク印刷されないので,印刷したい場合はレイヤーを移動.
  2. ガーバデータをeagleで作成し,必要なものだけ取り出して,zipにしてアップロード.(難しそうに感じるが,わかればかなり簡単)

    f:id:staytus:20190329171044p:plain

    必要なガーバデータ(elecrowの発注画面)



  3. fusionPCBにアップロードすれば簡単にデータをプレビューして,穴やシルクの位置を確認できる.

    f:id:staytus:20190329171022p:plain

  4. 発注の選択例(詳しくはわかりませんし正しいかもわかりません).配送方法:小心者はOCS/ANAを選択.

    f:id:staytus:20190329171358p:plain

支払いはクレジットカードとペイパルが必須だと思いました.なんとか春休み中の発注が間に合って一安心です.これで基板出走ができます.新入生教育もあって見通しが立ちませんが,土日で作業して6月のプチ大会に...と思っています.

 

【Meister振り返り①】任意の速度,距離での台形加速

※この記事は自分向けの備忘録です.台形加速についてなかなか簡単にプログラムがかけたと思っていたので,資料を残そうとMeisterのプログラムを見直したら,台形加速が間違っていたことに気づいてしまいました.記事を信用しないでください.

 

任意の速度,加速度,距離で台形加速できること,任意の角速度,角加速度でスラロームできることは,様々な動作を必要とする斜め走行には必要となってきます.スラロームは角加速度を台形加速してあげればよく,かつはじめと終わりの角速度はともに0でより簡単なので,初期の速度と終端速度が異なる台形加速ができることが難所となると思います.

 

引数

初期速度: v_{start} 

最高速度: v_{max} 

終端速度: v_{end}

加速度: a 

重心の進行距離: x

目標距離: x_{target} 

 

言葉の定義

台形加速の加速終了時点での進んだ距離: x_{accelend}

台形加速の減速開始時点での進んだ距離: x_{decelstart}

三角加速の最高速度: v_{max}'

三角加速の最高速度到達時点の進んだ距離: x_{judge}

 

なお,今回の記事内では初期の距離は0から始まるものとしています.

f:id:staytus:20190329143627p:plain



  • まず台形加速を考える 

 ①加速

初期速度から最高速度に達するまで加速すればよいです.

制御周期ごとに速度を加速度×制御周期だけ加算します.

加速の終わりの時点の進んだ距離x_{accelend}を記録します.

 ②速度維持

減速開始距離まで速度を維持します.

ただ,減速開始距離は計算で求める必要があり,

今回は加減速ともに同じ加速度(減速度)ということに着目して,

 減速開始距離=x_{target}-減速に要する距離=x_{target}-加速に要する距離× \frac{減速に要する距離l_{decel}}{加速に要する距離l_{accel}}

 

すなわち,

 x _ {decelstart}=x_{target}-x_{accelend} \frac{v_{max}^2-v_{end}^2}{v_{max}^2-v_{start}^2}

となります.

 

(∵等加速度直線運動の式:v^2-v_0^2=2alより,

\frac{減速に要する距離l_{decel}}{加速に要する距離l_{accel}}=\frac{v_{max}^2-v_{end}^2}{v_{max}^2-v_{start}^2})

 

v_{max}^2=v_{start}^2では発散するので例外処理します.

 ③減速

減速開始距離から目標距離x_{target}に到達するまで減速します.

 

  • 三角加速について

 ①加速

 三角加速の最高速度到達時点の進んだ距離まで加速します.

これは,計算して求める必要があり,

x_{judge}= \frac{1}{2}x_{target}+ \frac{1}{4a}(v_{end}^2-v_{start}^2)

です.

 (∵

v_{max}'^2-v_{start}^2=2al_{accel}

v_{max}'^2-v_{end}^2=2al_{decel}

l_{accel}+l_{decel}=x_{target}

以上3式より,

x_{decelstart}=x_{accelend}=l_{accel}について解く.)

②減速

減速開始距離から目標距離x_{target}に到達するまで減速します.

 

  • 台形加速と三角加速を一つにまとめる

0⃣初期化

すすんだ距離x,減速開始距離x_{decelstart}を初期化し,判定点x_{judge}を計算する.

1⃣x_{judge}より距離が小さい時,

①最高速v_{max} 以下なら加速する

②最高速v_{max} に達したなら速度を維持する.

 ②になったとき加速終了時点の距離x_{accelend}を記録し,

 上記の計算式より減速開始距離x_{decelstart}を求める.

2⃣x_{judge}より距離が大きい時,

③減速開始距離x_{decelstart}までは速度を維持する.

④減速開始距離x_{decelstart}以降は,減速する.

 

※三角加速のとき減速開始距離x_{decelstart}は計算されない(1⃣の②の条件に入らないため).しっかりと0で初期化しておく必要がある.

※負の加速度,正の減速度には対応していない.加速だけしたいときは,v_{end}=v_{max},減速だけしたいときは[v_{start}=v_{max}]とする.

 

こんな感じで4つの場合分けによって台形加速と三角加速のプログラムが書くことができると思います.台形加速のプログラムで根号を使った計算を避けることを1番に考えているので,拡張性はあまりないと思います.