Darkside(https対応しました)

2020年02月の記事

<< 前のページ

2020年2月29日(土) 20:30

でも悪戦苦闘

 前提の問題が解決したので、改めてドライバーのソフトを製作する。これが全然動作せず、悪戦苦闘の末に厄介な現象が発見された。

 まず、PWMのDUTYを上げられない。
 低速回転で試しても、DUTYが80を超えるあたりになると回転が止まる。この現象は、PWM周期を長くすると悪化する。しかしPWM周期を短くするとスイッチングロスが増えるので、結局DUTY80あたりが限界。
 これに関しては、前世代の戦車なのでモーターをフルパワーで回せなくても妥協できる。それよりは、自作ドライバーにより超低速の道が開けることの方が遥かに重要である。

 だが決定的な問題として、大勝利と思ったノイズ問題が再発。ある程度高速でスムーズに回転させると、ノイズも強力になるようで、再び正常に通信できなくなった。DUTY80までに抑えるとモーターは期待通りに回転するのだが、スロットル値が化けるため操作通りに回転しない。デジタル値が化けると、値が大きく変動する。それにより、回転数も大きく変動する。全く使い物にならない。
 ただしマイコンは生きているので、WDTは動作する。ノイズによりI2C通信が不良になると、液晶ディスプレイとの通信が終わらずハングアップ状態になる。そういう場合、WDTで脱出可能だ。

 本筋には無関係っぽいが、ホールセンサー値の変化による割り込み処理ルーチンの中身を減らす。
 基本的にホールセンサーの状態変化は、モーターが60度回転する毎に発生する。回転方向が分かっていれば、直前の状態も分かる。ブラシレスモーターの制御はハーフブリッジ3つであり、6つのスイッチング素子がある。隣接状態から変化する場合、この6つのスイッチング素子は、そのうち2つしか状態が変化しない。
 つまり、6つではなく2つの素子を変化させるコードを記述すれば良いのだ。
 しかも、この2つは常に、2つともハイサイドかまたは2つともローサイドである。ハイサイドとローサイドに分かれることは無い。順番を間違えなければ、貫通電流を発生させることなく、かと言って電流を止めてしまうこともなく、状態を変化させられる。

 実際にはPWMのOFF期間は電流を止めてしまうため、スイッチング素子内蔵のダイオードが通電して電流を逃がしてくれる。だから、割り込み処理ルーチンの中身を書き換えても、サージの発生は殆ど改善されないと思われる。しかし、処理は高速化される。dsPIC とは言え、処理速度に余裕を持たせることは決してマイナスにならない。
 記述ミスには要注意だが、案の定むしろ動作がおかしくなった。

 ところが、手順を戻してオープンループの一定速度回転からやり直すと、どこが問題だったのか不明なままに、ちゃんと動作するようになった。
 液晶ディスプレイを表示させるとWDTが働いてしまうが、表示を諦めると動く。SPI通信エラーは皆無とは言えないが、実用的な通信確率になっている。

 メインPIC基板のGNDと、ブラスレスモーター・ドライバー基板のGNDの、電位差をオシロで確認すると1V以下である。モーターの回転数が上がるほど電位差が増えるが、これなら通信エラーはそれほど増えないと期待できる。

 更に、SPICON1.SSEN を enabled にして、転送時期を限定しビットずれ対策。SPI2CON2.FRMEN は enabled にすると常時Hで通信不能になったので、disabled のまま。

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

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

2020年2月28日(金) 20:05

大勝利

 基板の取り付け用スペーサーを利用し、GNDをシャーシに短絡させる。

 4つ穴のうち、2つを利用。4つすべてを活用したいが、配線が密集していて短絡リスクがあるので、2箇所しか利用できない。

 これはブラシレスモーター・ドライバー基板だが、ノイズフィルターは実装しないままである。

 PICメイン基板も、穴2つを活用してGNDとシャーシを短絡させる。

 予備実験では、基板から10〜20センチ伸ばしたGND配線の先端を、シャーシのあちこちに接触させて動作確認した。今回は、最短距離でスペーサーに接触させる。効果というより安定性がどこまで出せるか不安だが、効果が一定することなら期待できる。

 結果は、大勝利。

 動作は完全に安定。液晶ディスプレイの電源も、別基板上から取って問題なし。

 各基板のGNDと、シャーシを短絡させるべきか?
 それが分からなかったので、物理的に回避可能な場合は短絡させないようにしていた。だが実は、短絡させるべきだったのだ。
 こうなると、金属車体にしたのが思い切り効いて来た。ハンダ付けによる製作で、シャーシ全体が電気的に完全に一体化している。いわゆる「アースを取る」のが容易なうえに、その効果が素晴らしい。
 金属シャーシでGNDを一体化させ、ノイズは三端子レギュレーターで撲滅させる。これプラスチック製車体だったら、ノイズ対策に絶望していたところだ。基板を固定するのに金属製スペーサーをハンダ付けするという方式も、実は最高の選択だった。

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

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

2020年2月27日(木) 22:03

大半は効果ゼロ

 手始めに、ブラシ付きモーターと同じようなコンデンサーの取りつけ方を試す。

 更に配線を伸ばし、モーター筐体やSタンク車体に接触させることもできるようにする。

 結果は、ノイズ低減効果皆無。更に延長配線をどこに接触させても、ノイズに変化無し。

 次に、PICメイン基板とブラシレスドライバー基板。両者は、それぞれ単独だとノイズの無い5Vを確保できていて、マイコンは正常に動作している。しかし、両者のGNDは異なっていて、両者間で正常に通信できない。ならば、両者のGND同士を接続してはどうか?
 結果は、通信の改善は無し。

 メインPIC基板は5つのPICを搭載できるが、いま2つは空きにしてある。その2つのGND電位をチェックしたところ、両者はほぼ同一になっている。三端子レギュレーターは別だが、基板は同じ。どうやら問題は、基板自体が別の場合のようだ。

 GNDとシャーシの間にパスコンを入れると、即座にマイコンが暴走した。それで、すぐ気付いた。激しいノイズすなわち電位変動があるため、コンデンサーを入れるとチャージポンプ化して異常な高電位を与える結果になってしまう。パスコンは、酷い逆効果である。
 主電源に入れた平滑コンデンサーも、オシロでは事態をむしろ悪化させていたので、それも取り去る。

 あれこれ試すと、基板のGNDをシャーシに短絡してしまうのが圧倒的に効果的だった。
 シャーシに接触する位置次第で、効果には違いがある。どうもそのあたり法則性が無くて曖昧なのだが、GNDを取るのが対策として有力なのは確か。と言うより、それ以外で少しでも効果が認められた対策が、何1つ無い。

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

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

2020年2月26日(水) 21:06

誤認逮捕だった

 市販ESCからOSコンデンサーを切り取り、取り付けてみる。

 同じ機種ではなく、完全に同じという保証があるだけ実験としては強い。もちろん、元通りにハンダ付けし直すことは可能。

 既にシミュレーターで予想できた通り、殆ど効果は無い。もちろん、dsPIC の暴走も解消しない。だが、だとするとなぜ市販ESCではブラシレスモーターを正常にドライブできたのだ?
 電圧降下は、やはり発生するはず。

 もう一度ノイズフィルターに立ち返り、ノイズフィルターの前後でオシロを使う。プローブ取り付けが大変なので、前回はチェックしなかったものだ。黄色がフィルター前で、緑がフィルター後。何と、フィルターは殆ど効果が無かった。

 それなのに、なぜ三端子レギュレーターを通したら綺麗にノイズが消えたのだ?
 もう一度、三端子レギュレーターの+出力をオシロでチェック。あれっ?前回と違ってノイズ乗りまくってる。

 三端子レギュレーターの−出力をオシロでチェックすると、こっちも酷いものだ。オシロのプローブは、GNDをシャーシから取っている。

 前回の三端子レギュレーターは、PICの空きソケットを活用し、PICのGNDとPICのVcc間の電位変化をオシロで確認していた。改めて同様にチェックすると、全くノイズの無い5Vが観測された。
 ノイズを消してくれていたのは、ノイズフィルターではなく三端子レギュレーターだったのだ。PIC個別に三端子レギュレーターを奢ったことが功を奏し、デジタル系は全くノイズに悩まされず快調に動作していたのだ。

 送信機では、テレメトリー受信ができる。テレメトリーを送り返す処理は車載PICが行っているので、受信できているということは車載PICが動作しているという意味でもある。8ビットPICは、最近全く暴走していない。dsPIC に比べると8ビットPICはノイズに強いなぁ・・・などと思っていたが、もしかすると根本的に勘違いしていたのかもしれない。
 ノイズフィルターをまだ搭載していないブラシレスモーター・ドライバー基板だが、dsPIC のGNDと dsPIC のVcc間で電位差をオシロでチェックすると、8ビットPIC同様に全くノイズの無い綺麗な5Vになっていた。

 実は、dsPIC は最初から暴走していなかったのでは?

 dsPIC の脇には PicKit を接続するための5ピンがあり、そこにはVccとGNDが出ている。オシロのプローブはそこに取り付けたのだが、液晶ディスプレイの電源もそこから取ってみた。
 すると、LCD表示が行われ、数値が延々とカウントアップしている。

 暴走していたのは、dsPIC ではなく液晶ディスプレイの方だったのだ!

 LCDが暴走した理由は、I2Cの信号ラインにノイズが乗っていたから。
 I2C通信は dsPIC から行うが、電源は受信機脇のサービスコンセントから取っていた。両者は異なる三端子レギュレーターの配下にあり、それぞれが勝手にノイズを消去し、それぞれのGND電位は無関係化しちゃっていた。

 同様に、SPI通信も失敗している。本来の値と、無茶苦茶な値が入り混じって表示される。本来なら、シャーシも各基板のGNDも、すべて共通である。だが実際は激しいノイズが乗っていて、基板個別ではノイズを消去できていても基板同士の通信はできなくなっちゃってる。

 アクティブサスペンション用サーボの制御など、基板間通信は非常に多い。光通信にすれば良いのでは?という問題では済まない。
 しかしこれ、適切なノイズ対策をすれば一気に解決する可能性があるのでは?
 ブラシ付きモーターのノイズ対策に通じる匂いがする。

 各基板のGNDとシャーシの間にノイズキラーコンデンサー(という名のパスコン0.1μF)入れるとか、ブラシレスモーターに3つある電源ラインとシャーシの間にコンデンサー入れるとか、ひょっとするとFETの傍に入れるとか(これは第3号を作るときでないと現状ではほぼ不可能)。
 これは、単に匂いだけが根拠ではない。市販ESCは、問題なく動作しているのだ。簡易な対策で、解決できてしかるべきだ。

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

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

2020年2月25日(火) 20:40

平滑コンデンサーの罠

 ついでの工作を行いまくったせいで日数が経過してしまったが、主電源に平滑コンデンサーを追加しての再試験である。

 なお、平滑コンデンサーの効果を見るため、ブラシレスモーターのドライバー基板はノイズフィルターを搭載させていない。

 電源を入れると、動かない。
 症状が、全く改善されていない。

 システム電源の+側電位をオシロで確認すると、改善どころか悪化している!
 なぜだ?原因は明白だし、対策もバッチリのはずだ。完全に解決しないまでも、マシになってしかるべきだ。それが悪化って、いったい何が起きているんだ?

 ちなみに、PICを5つ搭載できるメイン制御基板は、安定した5Vを供給できている。↑のような電源ラインにノイズフィルターを通し、更に三端子レギュレーターを通過すると、嘘のように凪いだ5Vになっている。

 電圧降下ではなく、ふつうにノイズだったのか?
 それとも、平滑コンデンサーに積層セラミックコンデンサーは不適切なのか?
 疑問が2つ残るので、確認のため2つのことを試してみたい。1つは、市販ESCと同じOSコンデンサーを試すこと。もう1つは、ドライバー基板にノイズフィルターを搭載してみること。

 その前に、ハンダゴテ不要のシミュレーターを動かしてやる。つまり、平滑コンデンサーがPWMパルス一発分の電荷を蓄積できているかどうかをチェックする。そして、回路を設定している途中で、見落としに気付いた。
 V1は、ラジコンバッテリー。R3は、その内部抵抗。
 V2は、ゲートドライブ電源。
 R1は、モーター巻き線の抵抗値。インダクタンスは、未設定。
 C1が、平滑コンデンサー。R2が、そのESR。

 これで、DUTY50の20KHzなPWMを掛けると、平滑コンデンサーC1は殆ど効果を発揮しない。なぜなら、C1を充電するためにR3とR2が直列に入るので、充分な電荷を貯められないのだ。
 メカヘルツ単位の高速動作においては、回路の浮遊インダクタンスの影響が大きい。相対的に、抵抗値の影響が小さく、パスコンが効果を発揮するのだろう。しかし20KHz程度では抵抗値の影響が大きく、どんなに高性能なコンデンサーを取り付けても、バッテリーの内部抵抗R3の影響を逃れられない。

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