プログラミング/LabView/波形発振器 のバックアップソース(No.1)

更新

* 波形発振器 VI を作る [#z958be7d]

[[プログラミング/LabView/スニペットライブラリ#y4f95948]] 
のデザインをサブ VI に分割して、再利用性の高い波形発振器の実装を考えます。

* サブ VI を切り出した正弦波発生器 [#zaa7bbf9]

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-sin.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/wavegen-sin.png);

** 切り出されたサブ VI [#qdd7031a]

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-sampling-info.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/wavegen-sampling-info.png);

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-phase-generator.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/wavegen-phase-generator.png);

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-t0-generator.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/wavegen-t0-generator.png);

** 使用例 [#w6dc1b34]

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-sin-example.png);

&ref(プログラミング/LabView/スニペットライブラリ/wavegen-sin-example-panel.png);

もちろん、正弦波だけでよければ標準の波形生成コンポーネントがあるので、
それを使えばいいのですが、もっと凝ったものを作りたいとき、
上記の wavegen-sin.vi を改造すればいろいろできる、という話です。

* 安全な発振器 [#q983da34]

上記の発振器では amplitude や offset を変更すると出力が不連続に変化してしまいます。
出力電圧をつなぐ機器によってはそのような不連続な変化は装置に過負荷を与えてしまいます。

そこで、amplitude や offset、wave type、enable oscillation 
を変えても出力が不連続に変化することがない、
装置などに接続しても安全な発振器を作りました。

- wave type で正弦波と三角波を選べます
- offset に2次の iir フィルタを掛けています
- amplitude は一定の速度で変化します
- enable oscillation が on になったときは必ず位相ゼロから始まります
- enable oscillation が off になると振幅が徐々に小さくなります
- 振幅がゼロになる前に再び on にすると、振幅は元の値に徐々に戻ります
- enable oscillation が on になる瞬間に wave type が読み取られます

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-safe.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/wavegen-safe.png);

動作確認用 VI

&attachref(プログラミング/LabView/スニペットライブラリ/wavegen-safe-example.png);

*** 必要となるサブVI [#cc3ce497]

&attachref(プログラミング/LabView/スニペットライブラリ/iir-module.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/iir-module.png);~
シンプルな1次の iir ローパスフィルタです。

&attachref(プログラミング/LabView/スニペットライブラリ/slope-module.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/slope-module.png);~
速度一定で入力値に追随するフィルタです。~
入力値を追いかけている間 sloping が true になります。

&attachref(プログラミング/LabView/スニペットライブラリ/detect-change.vi);~
&ref(プログラミング/LabView/スニペットライブラリ/detect-change.png);~
入力値が変化したら changed が true になります。

* 質問・コメント [#b260a6a3]

#article_kcaptcha


Counter: 3667 (from 2010/06/03), today: 4, yesterday: 0