読者です 読者をやめる 読者になる 読者になる

RCJの無線のルールが変わるっぽい

RCJ関係の記事です.

(タイトル見りゃわかる)

 

TWELITEという無線モジュールがあります.

mono-wireless.com

 

これを使おうと思って仕入れたんですが,1つ問題が...

f:id:anbalioh:20170429223841p:plain

 

昔からずっとですが,ロボット2台の無線通信は「Bluetooth」or「ZigBee」しか使えないんです.

 

しかし,TWELITEは「IEEE802.15.4準拠」としか書いてなくて,ZigBeeプロトタイプじゃないっぽい.

無線詳しくないけど,とにかくダメそう...

 

と思いましたが,今年からできたRCJForumでこんなやりとりが.

f:id:anbalioh:20170429224959p:plain

junior.forum.robocup.org

 

 おお,つまりはTWELITEもOKってことか!?!?

 

といっても不安なので,このフォーラムのリプでTWELITEも使えるか質問しました.

 

来年から無線を考えている方は参考に!

PowerpointでTeXの数式を書いた

 

Twitterで”LibreOffice + TexMaths Equations拡張 + TeXLive2016”をやっている人がいて,「LibreOfficeで出来てPowerpointで出来ないことはないろー」と思って調べたら簡単に出来た.

 

IguanaTex - A Free Latex Add-In for PowerPoint

これを入れるとこんな感じで書ける

f:id:anbalioh:20170425153550p:plain

f:id:anbalioh:20170425153720p:plain

 

IguanaTexのインストール

1.公式から最新版をダウンロードする

Download IguanaTex

 

2.パワポの設定でダウンロードしたアドインを入れる

「ファイル > アドイン > 管理ダブ > PowerPointアドイン > 設定 > 新規追加」

から導入することができる.

 

3.cドライブの直下に「temp」というフォルダを新規作成する

 

4.終わった

パワポのタブに「IguanaTex」があるので選択して,「New LaTeX display」を押せばTeXの数式を打つ画面が出てくる.

MAXONのPWM周波数を考える

 

 この記事のコメントにて

「VNH+ArduinoMEGAだとなぜマクソンが台無しになるのでしょうか?
よかったら教えてください。」

と指摘されたので,これと関連付けてMAXONのPWM周波数どうしようかいま悩んでいることを書きます.

 

※これから書くことは炎上している可能性があります.(圧倒的未来予知)

 

FETの駆動方式(というかPWMの形式)

NOTE - 回路設計編 - モータドライバと象限

こちらのページのみれば分かる通り,”Sign/Magnitude PWM”と”Locked Anti-Phase PWM”の2種類があります.

f:id:anbalioh:20170418102623p:plain

先程のリンクより引用させていただくだけですが,

【Sign/Magnitude PWM】(以下,SMと略します)

上段のスイッチを回転方向を決めるのに使い、下段のスイッチでPWMにする形式です。ブレーキは、上段を両側OFFにして、下段の両側を同時にONする事で端子間を短絡させて行います。

4つの象限のどこを使うかを明示的に指定することが特徴です。
よって、可動フェーズが明確に分かれている場合に有効です。

最低2本(PWM/回転方向)、ブレーキのコントロールも入れると、3本の信号が必要になりますし、ドライバレベルでは制御に応じて4つのスイッチング素子を独立して制御する必要があります。

 

【Locked Anti-Phase PWM】(以下,LAPと略します)

1本のPWM信号のH/Lで、ブリッジを常に正転/逆転させる形式です。
出力波形の電圧積分が平均電圧になるので、50%duty で出力 0V=停止します。

指令値とモータの状態によって、4つの象限の間を境目無しに行き来することが特徴です。
フィードバック制御をかける場合、この制御を使っていると、パルスドライバでもDCモータの基本制御式(無負荷回転は電圧に比例し、トルクは電流に比例する、ってやつ)が使えます。

ただし、PWMを余裕を持って電流連続モードにしないと、モータが振動したり、無負荷でも大きな電流が流れて発熱したりします。

 

波形について気にしたことないとぴんとこないと思いますが,モータードライバICでよくあるのはSMです.

 

あと,「パルスドライバでもDCモータの基本制御式が使える」っていうのは,LAPだからなのか,電流連続モードだからなのかっていうのはよくわからないです.

つまりは,SMでも電流連続モードなら...という疑問です.

 

でも,LAPは電流連続モード必須なので,LAP使えばいいっていう話ですね. 

 

PWMの電流モード

ゆーくりっどさんがC89で出した「モータードライバの作り方ver1.1」(以下,まんじゅう本)とか,

NOTE - 回路設計編 - PWMドライブの設計とかを読むと,

PWMには”電流不連続モードPWM”と”電流連続モードPWM”の2種類があります.

これまた引用ですが,

【電流不連続モードPWM】

モータの電気時定数に対して、PWMの周期が十分長い=PWM周波数が低い場合で、ON期間は電流が全開 で流れ、OFF期間は電流が完全に流れなくなります
よって、トルク変動が最大になりますが、機械的な慣性モーメントによって、モータの回転数の変動が実用上の許容範囲内に入っているようにした設計です。

# 主に、3極モータ(540とか)のような起動時の抵抗が大きなモータに使います。

 また,

この駆動法は、設計や製作が楽なのでよく使われていますが、コアレスモータや、工業用サーボモータには向かないです。コアレスや工業用サーボに使うと、モータが異常発熱したり、定格に達する前に焼き切れたりする場合があります。
このようなモータは、かならず電流連続モードのPWMになるようにします。

逆に、この後で述べる電流連続モードPWMだと、3極モータのような起動時の閾値の高いモータの場合、うまく起動しなかったり、低速トルクが足らない場合があります。この場合は、電流不連続モードのPWMになるようにする方がいいです。

 

【電流連続モードPWM】

LR 直列回路のパルス応答でOFF期間もLに蓄えられたエネルギーで電流が流れ続けることで電流の変動が小さくなるようにした場合です。電流の変動が小さいので、当然トルクリップルも減って大変なめらかに回転します。ただし、きちんと設計しないと、うまく動きません(^^; 

だそうです.

 

要はPWM周波数を高すれば電流連続モードになるってことですかね. 

 

電流連続モードPWMの周波数の検討

いろいろ説明したところで,MAXONのPWM周波数について検討します.

 

①まんじゅう本や,適切なPWM周波数を考える - Takeyuta Labによると,

コアレスモーターのPWM周波数は電気的時定数の10倍以上らしいです.

INPUTで使っているDCX16は,

端子間抵抗R=1.63[Ohm]

端子間インダクタンスL=0.096[mH]

なので,

電気的時定数 τeは

{ \displaystyle \tau_{e} = \frac{L}{R} \simeq 58.9 (\mathrm{\mu s})}

になります.

これの10倍の周波数を得るとすれば,

{ \displaystyle f = \frac{1}{ \tau_{e}} * 10 = 169.8 (\mathrm{kHz})}

以上の周波数でスイッチングすればいいことになります.

 

NOTE - 回路設計編 - PWMドライブの設計によると,

LR直列回路において,入力電圧vの方形波入力時の出力電流の変化は,

立ち上がり時に

{ \displaystyle i(t) = \frac{V}{R} (1-e^{- \frac{t}{k}}) }

立ち下がり時に

{ \displaystyle i(t) = \frac{V}{R} e^{- \frac{t}{k}} } 

で変化するらしいです.

これより,

時定数 k が 10倍 ( k > 10T ) の場合,電流変動は +-5%程度

k が 100倍 ( k > 100T ) の場合,電流変動は +-1%程度

になるらしく,電流変動が連続定格に対して数%以内に収まるようにすればいいらしいので,まあ10倍ってことでいいですかね.

(①の方々はきっとこのページも参考にしてるから一緒なんだろうな)

 

デバプラ記事によると,

{ \displaystyle \frac{ \tau_{e}}{tpwm} \geq 100 }

から,

{ \displaystyle tpwm \geq \frac{100}{ \tau_{e}} = 1698 (\mathrm{kHz}) }

ということになります.(つまり電気的時定数の100倍以上

僕の解釈が間違っていると思いたいんですがこの周波数は無理です.

 

MAXONアカデミーによると,

 マクソンのコントローラのPWM周波数は通常、39~60[kHz]

 らしいです.

また,

 さらに、低インダクタンスのモータには、追加のインダクタンスが電流の反応を減衰させます。マクソンのコントローラには通常、モータチョークが組み込まれています。

 なので,PWM周波数が①,②の計算に比べ低めに設定されています.

 

これらより,電気的時定数の10倍の周波数でいいんじゃないかと考えています. 

 

VNH+ArduinoMEGA

 以上の話を踏まえると,MAXONが台無しになったかなという説明になると思います.

・VNHはSMなのでパルスに対してDCモータの基本制御式が使えない

 (要はデューティー比に対して回転数が線形的にならない)

 

・LAPにしたいけどVNHじゃ無理

 

・コアレスモーターには電流不連続モードはよくない

 

・電流連続モードにしたいけどVNHの最大周波数は20kHzだから無理

 

・VNH変えたとしてもArduinoMEGAの最大周波数は約31kHzだから電流連続モードにはならない

 

また,VNHは電流がいっぱい流せて大変魅力的なMDICですが,波形がめっちゃ汚いんで,まあ,「手動制御の部内ロボコンとかにぴったり♪(煽)」って感じです.

(って言うくせに,自分はRCJロボに積んてるっていうね)

 

波形に関してですが,こちらをどうぞ.

※以下の波形はすべてMAXONの端子にそれぞれプローブをつないで測定しています.

VNHとArduinoMEGA(31kHz)

低速(最低速)→なんだこれ,くそ

f:id:anbalioh:20170418002109p:plain

中速 →左肩なんなん()

f:id:anbalioh:20170418002114p:plain

高速 →ショボーン

f:id:anbalioh:20170418002116p:plain

全速力 →まともっぽい

f:id:anbalioh:20170418002326p:plain

 

最近作ったMD

全速力(95%程度)

LAP方式で駆動していて,PWM周波数は200kHzです.

(波形汚いのは許して)

f:id:anbalioh:20170418002320p:plain

 

参考文献

[1]まんじゅう本舗 "モータードライバの作り方ver1.1" (C89)

[2]MAXON公式集

[2]適切なPWM周波数を考える - Takeyuta Lab

[3]モータの電気的時定数に対して十分に小さいPWM周期について | Device Plus - デバプラ

[4]マイクロドライブの概要 (3) 出力の留意点 / 時間軸上で見たドライブ処理 | academy.maxonjapan.co.jp

[5]NOTE - 回路設計編 - モータドライバと象限

[6]NOTE - 回路設計編 - PWMドライブの設計

 

MATLABライセンスをもらう

研究室が再配属になったあんばらです.

 

RobocupやってるとMATLABもらえると,ジャパンオープンの時に国際委員会の方に聞いたので試してみました.

MATLABRobocup専用サイトがこちら.

RoboCup - MATLAB & Simulink

 

無料ソフトウェアのご提供のところに「ソフトウェアのリクエスト」があるのでそこからエントリーすると72時間以内に回答が来る仕組みのようです.

 

僕の場合,寝て起きたらライセンスコードとアクティベーションコードが送られてきていました.

 

f:id:anbalioh:20170409200850p:plain

こんな感じでSponsored Useライセンスというやつらしいです.

 

ライセンスよく読んでない()んですけど,たぶん世界のポスターに取り入れたほうがいいと思うんで,なんか成果出さないとですかね...

ArduinoのPWM周波数を変える MEGA編

一年越しのMEGA編となりました.

 

 1年前には無かった気がするんですが,公式でPWM周波数を変える方法が公開されているのでこちらを参考にしながら紹介しようと思います.

Arduino Playground - TimerPWMCheatsheet

 

まず,ArduinoMEGAにはタイマが5つあって,それぞれのタイマに対応しているピンがあります.

タイマ : PWMピン

timer 0 : 13, 4
timer 1 : 12, 11
timer 2 : 10, 9
timer 3 : 5, 3, 2
timer 4 : 8, 7, 6

たとえば,timer0だけ周波数を変えたら13,4ピンから出るPWM周波数のみが変わります.

 

先に重要なことを言っておくと,timer0はシステムに使われているので変更するのはおすすめしません.Delayとかの時間関数がずれます.

 

周波数の設定ですが,Dueのように任意の周波数にすることができません.

数段階の周波数の中から選べるって感じです.

timer0 (13, 4ピンのみ)

①62.5 [kHz]

②7.8125 [kHz]

③976.5625 [Hz]

④244.140625 [Hz]

⑤61.03515625 [Hz]

 

timer1 (12, 11ピンのみ)

①31.37255 [kHz]

②3.92116 [kHz]

③490.20 [Hz]

④122.55 [Hz]

⑤30.64 [Hz]

 

timer2 (10, 9ピンのみ)

①31.37255 [kHz]

②3.92116 [kHz]

③980.39 [Hz]

④490.20 [Hz]

⑤245.10 [Hz]

⑥122.55 [Hz]

⑦30.64 [Hz]

 

timer3 (5, 3, 2ピンのみ)

①31.37255 [kHz]

②3.92116 [kHz]

③490.20 [Hz]

④122.55 [Hz]

⑤30.64 [Hz]

 

timer4 (8, 7, 6ピンのみ)

①31.37255 [kHz]

②3.92116 [kHz]

③490.20 [Hz]

④122.55 [Hz]

⑤30.64 [Hz]

 

概念がわかったところで,void setup内で以下のように宣言すればPWM周波数を変えることができます.

 TCCRnB = (TCCRnB & 0b11111000) | 0x0m;

 n:タイマ番号 (0~4)

m:設定したい周波数の番号 (1~7)

 

コピペ用にGistを用意しましたのでご活用ください.

聞かれそうなこと先に書く

ロボカップジュニアジャパンオープン2017ぎふお疲れ様でした.

おかげさまで優勝できました.

スタッフのみなさんありがとうございました.

 

今回はプレゼンテーションポスター手抜き過ぎて,質問されることが予想されるorすでにされたことをまとめておこうと思います.

 

※プレゼンテーションポスターはINPUTブログにて公開しています.

rcjinput.blog.jp

 

EDF

www.aliexpress.com

 

・バッテリー

G5 70Cmax 3S 2200mAh 4.2V-Max LiPo

 

・モーター

f:id:anbalioh:20170327233758p:plain

小言ですが,ロボカップジュニアやっている人にはMAXON使えば勝てるとは思って欲しくないです.

去年のINPUTは秋月で200円の385を使っていました.

去年と今年ではプログラムやコンセプトが違いますが,動きを比較して,MAXONだとなにがいいのか考えた上で候補にしてほしいと思います.

僕的にはVNH+ArduinoMEGA使ったのでMAXONを台無しにしてしまったと後悔しています(新MD間に合いませんでした)

参考に.

yunit.techblog.jp

 

・PWM周波数について

30kぐらいです.(ArduinoのMAX)

VNHは20kがMAXですが20kでも30kでも同じくらい波形汚い&発熱しないでモーターが回るので30kにしました.

ArduinoMEGAでのPWM周波数の変更方法についてコメントにて要請があったので春休み中にまとめたいと考えています.

3/30追記

MEGAの周波数変更について

DUEの周波数は変更について

spaghetti.hatenablog.com

 

 

3/29追記

・赤外線センサについて

ポスターに記載したとおり,TSSP58038を使っています.

購入先はRSとDigikeyですが,Mouserが一番安いと思います.

回路は出力にRCです.値は3.3kと0.33uFを実験して得ました.

特別なことは何もしてないですね.

STM32が好きなフレンズ

STM32が好きなフレンズなので,使ったことのある&使いたいSTM32をまとめました.

(はやくSTM32が得意なフレンズになりてー)

 

・F030F4P6

パッケージ:20-TSSOP

コアプロセッサ:Cortex-M0

最高速度:48MHz

Flash:16KB

アリエクで売っていて¥50/個でめちゃくちゃ安い.

Flashが16KBなのでmbedライブラリでの開発は非推奨.

TSSOP20は小さい&ハンダし易いのでGOOD!

f:id:anbalioh:20170301235206p:plain

 

・F051K6U6

パッケージ:32-UFQFPN

コアプロセッサ:Cortex-M0

最高速度:48MHz

Flash:32KB

アリエクで売っていないのが個人的に最大のネック.

まだ使ったこと無い(笑)けど,UFQFPNを使ってみたい.

足がなく,基板を小さくするのに役立ちそう,1度使いたい.

f:id:anbalioh:20170301235006p:plain

 

・F072C8T6

パッケージ:48-LQFP

コアプロセッサ:Cortex-M0

最高速度:48MHz

Flash:64KB

アリエクで¥110/個で買えたことがあったので気に入った.(1ロット20個)

Digikeyじゃもうなくて,CBT6ではFlashが2倍に増えている.

 

・F103C8T6

パッケージ:48-LQFP

コアプロセッサ:Cortex-M3

最高速度:72MHz

Flash:64KB

言わずと知れたSTM32,STLINKに乗っているやつ.

アリエクで¥150/個で買えるのと,アリエクでも入手性が高い.

Digikeyだと800円近くするので結構いいやつ.

f:id:anbalioh:20170301235127p:plain