Darkside(https対応しました)

2021年09月の記事

<< 前のページ

2021年9月24日(金) 21:27

最速レスポンス

 電流センサーの出力配線を外し、代わりに普通の配線を接続。それをGNDとVCCに接触させ、モーターの挙動を確認する。
 結果として、キチンと自動復帰した。Hにするとモーターは回転し、Lにすると止まる。これなら、コンパレーターを使うことで電流制限を最速レスポンスで実行可能だ。

 CMP1を使うことにすると、2つの入力がLED用の端子になり、改造が楽と判断。

 代わりに電流センサー入力端子を、LED出力に使う。LEDは1個しか無くても、実用にはなるだろう。

 PWMのフォールトソースをCMP1に設定。動作モードはサイクル。

 

 コンパレーター入力のうち1つは電流センサーで、もう1つが基準電圧となる。電流センサー出力はゼロ点がVCCの半分。

 そこで、基準電圧の半分から4分の3までを可変できるような、分圧抵抗を組む。

 これにより、電流制限を0〜60Aあたりまで可変にできる。
 半固定抵抗は信頼性や長期安定性も不安があるので余り使いたくないのだが、一方ではその場で調整可能というのは便利なのも確かだ。

 白い延長配線を付け替えるだけで済む部分もあり、何とか改造は可能。

 電流センサー出力はローパスを通過させず、コンパレーターに直結してみる。せっかくハードウェアによる高速処理なのだから、遅延の最小化を優先させる。
 これで、電流センサーの遅延6μ秒にコンパレーターから後のハードウェア遅延だけで、PWMにブレーキが掛かる。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年9月23日(木) 21:12

このままでは使えない

 電流制限をディスクリートのハードウェアで組むというのは、電流センサーの出力をオペアンプなりコンパレーターなりで比較し、電流オーバー信号を出すことである。その信号をPWMのフォールト端子に入力することで、PWMを止める。ソフトウェアよりも遥かにレスポンスが速く、電流センサーとローパスの遅延+αで対応できる。

 やりたいことは同じなのだから、ソフトウェアの工夫あれこれするより dsPIC の機能を使えば良いのでは?という思考に至った。
 ハードウェアに任せれば、レスポンスのみならずソフトウェアの複雑化を避けられる。ソフトウェアは複雑な処理も実装可能なのがメリットだが、これまで試したことにより単純な方式で効果がありそうなことも分かって来た。
 ただし基板上のピンは余っていないので、電流センサーの読み取りに使っていたGPIOを電流超過フラグの入力ピンとして使おう。

 PWMのFLT1を、RA0に割り当てる。
 PWM Generator の1〜3すべて、Current Limit Control を Enable にして、ソースをFLT1にする。

 後は、RA0にHを入力すればPWM停止する、はずだ。まてよ、現状では電流センサーがRA0に接続されていて、電流ゼロ時は2.5Vが入力されている。電流が増えれば、4.5V(@100A)へと上昇する。果たして、何V以上がHと判定されるのだろうか?
 試しに、ハード改変一切しないままスロットルを開けて行く。モーターの回転は徐々に速くなり、ある程度まで速くなったら突然停止した。え?

 電流制限が機能しているのは、確かである。しかし、いったん電流制限に引っ掛かったらそのまま止まってしまう。
 電流が制限より低くなれば再び給電(PWM再開)してくれないと困る。電流制限の目的はトルクに上限を設けることであって、上限を超えたらトルクがゼロになって欲しい訳じゃないのだ。
 仮に dsPIC の電流制限機能がこのような動作しかできないのであれば、全く役に立たない。想定外の大電流が流れた時にシステムを保護する用途には使えるが、想定内の大電流をクリッピングしたいという今回の用途には、使えない。

 フォールト端子ではなくコンパレーターをソースにすれば、期待通りに機能する可能性はある。しかしコンパレーターを使うにはハードにある程度の手を入れねばならず、期待が満たされる確率が低いと予想される以上は実験し難い。

 幾ら何でもこれは実用性に欠ける。フォールトの動作モードを変えられないのか?データーシートを漁る。
 その結果、Current Limit Control ではなく Fault Control の方を使えば可能かもしれないと判明。試すことにする。

 Fault Control では、Latched と Cycle の選択が可能だ。ここで Cycle にすることで、PWM周期終了後に発振状態に自動で戻るらしい。しかし、試すと挙動は全く同じ。電流ゼロになったら復帰しない。
 詳細なレジスター設定が必要な可能性もあるし、そもそもデジタル入力に電流センサーのアナログ出力を接続したままの手抜き動作確認である。半端な電位を入力している中で、ヒステリシスなどの問題が生じている可能性もある。

 ハンダゴテを回避しない試験が必要だ。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年9月22日(水) 22:21

まだ試せることがある

 モーター電流制御の実際を調べると、設定電流を超過すれば完全に電流を切ってしまう方式がむしろ普通らしいと判明。つまり、モーターはインダクタンスが大きいので、電流を切ってもすぐには電流ゼロにならない。充分にフィードバックが速ければ、それほどの脈流にならない。
 ソフトウェア制御中に、ゼロとノーマルの2状態ではモーターの動きがギクシャクする気がしていたが、それはまだ動作が安定していない頃だったかもしれない。まずは再度、2値方式を試す。すなわち、電流超過していれば電流ゼロ設定にし、超過していなければ希望のPWM値をそのまま有効にする。

 これは、単なる制御方式の修正ではない。
 2値方式にすると計算が簡単になるため、フィードバックレスポンスも向上が期待できる。

 制御プログラムのレスポンスを高速化してみるが、ちょっとしたプログラムの違いで動作に大きな差が出る。
 電流抑制側に思い切り振ると、効果は出ているがモーターが妙なタイミングで停止してしまったりする。ブラシレスモーターだから、制御に介入するのも細心の注意を要する。
 少し甘い制御だと、モーターが止まることはない。そして、ストールトルクも手で止めることが可能なレベルへと明白に抑止できている。ただし、電流制限に引っ掛かり始める半端な回転数で、モーターに振動が生じる。

 電流センサーの変化を、オシロで確認。中速までは、穏当に動作する。

 フルスロットルにすると、電流制限に引っ掛かって電流ゼロに落ちてしまうことが多くなり、回転数が逆に低下する。これは、実用上大きな問題である。

 ストール発生時は、ピーク50Aぐらいまでに抑え込めている。ソフトウェア制御でも、レスポンス最優先なら実用が見えて来た。
 モーターの回転が止まると相の変化が無くなり、240ミリ秒間停止を検出すると強制的に隣接相に回転させる処理が走る。しかし逆に言えば、240ミリ秒間は電流ゼロが持続。よって、ストール後の安全性は高い。
 実験では、ある程度の速度で回転している状態から強制停止させるには大きな力が必要っぽい。仮にフルスロットルでスムーズにモーターが回らない問題を解決できたとしても、それなりの速度で走行中に突然何かを巻き込んで起動輪が止まるようなケースで、ギアの破壊を防げるかどうかは何とも言えない。

 いずれにしろ、ちょっとしたソフトウェア実装のアヤで挙動が大きく変化する。しばらくソフトウェアのみで試行錯誤してみるのも悪くはなさそうだ。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年9月21日(火) 21:25

目的は達成できない

 電流制限が40Aで掛かるように設定し、モーターを回してみる。最高速に上げると、若干の制限が掛かる。鋭いピークは制限が間に合っていないが、それ以外は抑制が効いて少しだけ回転速度が落ちている模様。

 次に、起動輪を強制的に停止させ、モーターをストールさせてみる。モーターからは、ピーという高い音が鳴る。40A制限だが、実際に制限が効果を発揮するには0.2ミリ秒近い遅延が生じているようだ。

 電流制限しない時のように簡単にピーク100Aを超過するような状況は防げるので、大電流ヒューズの代用としてなら意味はある。しかし、トルクを抑止する効果は小さいと思われる。ピークの山は半減したいところで、0.2秒近いディレイを考えるとほとんど制限電流ゼロ近くにしないと実現できない。

 起動輪に布を巻き込ませて強制ストールを実現したが、とにかくトルク過剰な印象。電流的にも、実感としても、これではトルク制限として機能していない。
 モーター単体で電流制限を非常に低くして試した時でも、トルクが出過ぎているのを感じた。

 このまま電流制限値をゼロ付近に下げても、期待ほどストールトルクは下がらず、一方で最高速は露骨に低下すると思われる。
 遺憾ながら、ストールトルクの安全領域への低下と、それなりの最高速を両立するのは不可能っぽい。電流フィードバックに0.2ミリ秒も要しているのは致命的で、ソフトウェア方式による速度的限界である。

 130や260のような小型モーターに対して「モーター制御用IC」を活用しての電流制限は、非常に効果的に働いた。見事にストールトルクを抑止できていた。電動マガジンには不適切だったが、ドーザーブレードで活躍している。
 だが、540に使えるような大電流対応のモーター制御用ICはない。

 更に残念なことに、パワーパックを分解すると左舷のギアも欠けまくっていた。
 つまり、ギアの破損を予防するという電流制限の目的は、達成できていない。
 使える空間は狭く、トルク制限用クラッチを組み込むのも、物理的に不可能だ。

 こうなると、三択である。
・諦める(ストールしないよう操縦で注意)。
・大電流制限用途に使えるモーター制御用ICを探す(7V対応)。
・電流制限をディスクリートハードウェアで組む。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

2021年9月20日(月) 21:25

なかなか厄介

 なかなか厄介だ。
 希望の性能を発揮させようとすれば、ギアの強度が不足するかもしれない。ギアはタミヤのフルオペを流用しており、ラジコン戦車用としては最上ブランドである。これ以上のものを見つけるのは、難しい。
 外国製の金属ギアボックスもあるが、フルオペのように走行用モーターと旋回用モーターを組み合わせる方式ではない。通常のラジコン戦車ならともかく、旋回で主砲照準も行うSタンクではフルオペタイプのパワーパックでないと適さない。そして、フルオペタイプのパワーパックを金属製で自作するのは、それこそ困難どころではない。

 かと言ってフルオペ本来の仕様であるノーマル540モーターを使用したのでは、超低速走行をスムーズに行うことはできない。ここは、ブラシレスモーターでないと難しい。そして使用しているブラスレスモーターは、タミヤ製15.5Tという穏当な機種である。まずは、21.5Tに買い替えるべきかもしれない。しかし、トルクは小さくならず最高速は激減というパターンもあり得るよなぁ・・・
 まずは現状でパワーパックを組み、電流制限の効果と回転速度の現実を確認するのが先決だろう。

 一応WDTを確認すると、スロットルがニュートラルではないのに回転が1秒以上停止すると、リセットが掛かる状態になっていた。これは、正解だろう。そこで実行開始直後に、スロットルを連続して1秒以上ニュートラルにしないと抜けない無限ループを用意。
 スロットルが入った状態でモーターの回転が停止すると1秒でリセットが掛かり、再スタート後はスロットルをニュートラルに戻すまでモーターには通電されなくなる。これと電流制限を組み合わせれば、安全性が高まるだろう。
 レーザー銃で、トリガーを入れたまま電源を入れても発射されない安全機構と同様だ。

 上部にモーター用ヒートシンクを取り付ける前提で、温度センサーをモーターの腹に接着し直してやる。

 パワーパックを車体にセットし、起動輪だけ固定。わざわざキャタピラまで付けるのは、面倒なので回避。

 無負荷で回転させると、右舷のパワーパック内から異音がする。パチっ、パチっというギアの歯が欠ける時の音が、無負荷なのにする。
 音だけではなく、ファイナルギアの噛み合わせ付近のパワーパック筐体が持ち上がるように内部から押されている。

 欠けたギアの歯は取り除いたので、残っているが変形した歯が問題になっているのかもしれない。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

<< 前のページ

Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4