Darkside(リンクエラー修正しました)

名前

URL

タイトル

コメント

2020年7月30日(木) 21:13

制御プログラム

 制御プログラムは旧レーザー銃のアセンブラをCに移植するつもりだったが、旧レーザー銃は相当に面倒なことをやっている。大きな理由はPICの能力不足で、今回は dsPIC で余裕がある。だから、単純化することにした。
 安全対策をあれこれ組み込むので作成に時間を要したが、基本的な考え方は極めて単純である。光出力センサーの値を元に、出力電圧を変更して制御する。目的の光出力センサー値と実際の値を比較し、大小関係に応じて出力電圧を高くしたり低くしたりする。

 安定化の策として、現在値を2倍して過去値を減算する。これにより、非力なマイコンでも容易に計算できる。過去値をそのまま未来に線形延長しただけの値が計算できるわけだ。
 この未来予測値と、現在値を比較する。現在値が小さければ出力電圧を上げ、大きければ下げる。うまく安定するかどうかは、どのていど過去の値を使用するか、で調整する。
 まずは、目標値を1500に固定。これは、光出力センサーの増幅回路が、1500ミリボルトを出力するように制御することを意味する。
 過去値は、16回前の値を使うことにした。

 結果は、電圧上昇開始から20ミリ秒で、ほぼ安定している。ただし、手前でいったん落ち込んでいる。未来予測値による「このままではオーバーシュートする」判断が、早く発生し過ぎたようだ。

 やたらノイズが多いが、トリガーOFFでゼロボルトの期間も変わりなく発生しているので、光出力が激変しているのではなく光出力センサーにノイズが乗っているだけと判断できる。
 以前のオシロ測定ではノイズが少なかったのに、今回は多い。これは、制御系と接続するために延長配線を行っているせいだと思われる。

 若干補足しておくと、レーザー電源のDCコンバーターが安定化するのを待つため、トリガーON後は30ミリ秒待っている。波形の上昇は、トリガーを押してから30ミリ秒の遅延がある。それでも、トリガーを押して0.05秒も経過すれば殆ど予定出力まで出ているので、これでGを取り逃がすようなことはあるまい。
 旧レーザー銃はPICの性能が低いために処理ループに無駄を確保していて、トリガーを押してから0.3秒ぐらい要していた。

 次に、使用する過去値を32回前のものに変更してみる。すると、判断が「更に早過ぎる」結果となった。まあ、当然か。

 そこで、今度は8回前を使うことにした。これは、良い感じである。予定出力手前で僅かな落ち込みはあるが、素直な立ち上がりになっている。何しろ、これ以上ないぐらい単純な制御方式である。これ以上を望むのは、欲張りというものだろう。

 ちなみに、方式は単純だが細かな工夫はいろいろ行っている。
 ループ1回ごとの出力電圧変更量は、目標値との差により変えている。そしていったん出力が予定値の近くまで来れば、変更量は1固定になる。激変が阻止され、ローパスフィルター同様の効果を発揮する。だから、光出力センサーにこれほどノイズが乗っていても、制御は安定しているのだ。
 また、光出力センサーのナマ値ではなく、過去5回の中央値を使用している。センサーノイズが多い場合、メジアンフィルターが絶大な効果を発揮することが、過去の実験で分かっている。

 本実装では延長配線は除去するので、結果がこれより悪化するとは考えられない。

 オシロで確認するにあたり、トリガーを半秒ぐらいだけ押している。その全体波形を見ると、ノイズが多くても、想定通り1500ミリボルトでしっかり安定化できている。制御アルゴリズムの基本は、良好ということだ。筋は、悪くない。

 これならば、更に出力を上げても大丈夫だろう。

written by higashino [ファイバーレーザー] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

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

Comments

TrackBacks

Darkside(リンクエラー修正しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4