PSoCで行きたい

by K.I
2004/08/01? 〜

アナログが苦手

CypressのPSoCを使い始めた。PSoCに関してはWebでの情報も少なく、結構戸惑ったが PastelMagicのBBSでのアドバイスもあって、ワンチップマイコンとしての機能は、いろいろ 試してみることが出来た。慣れてくると、なかなか使い易そうなマイコンだと感じている。 何故、自分はアナログ回路が分かんないんだろう。 デジタルにしたって、デジタルの難しさはある(はずだよね)。手を動かしてやって見ないと分からないのは同じなんだけど、アナログは作るのが何故か難しく感じる。 ということで、PSoCを使ってアナログ回路の勉強をし直そうと思う。(できるといいなぁ)
[top]

オペアンプを使えるようになりたい

Op-Ampは、さらに以下のような性質を持っている ちなみにPSoCの場合はというと、、、カタログの最後の方のそれらしい数字を引っ張り出してみよう。
パラメータ 規格値
利得 60dB(1000倍)
入力抵抗 入力リーク最大200nA
出力抵抗
入力(VDD5V) 0.5〜4.5V
入力(VDD3V) 0.2〜2.8V
出力(VDD5V) VDD/2±1.6V
出力(VDD3V) VDD/2+0.5-0.8V

反転増幅器の動作

スイッチト・キャパシタによる反転増幅器

PSoCは、抵抗の代わりにスイッチト・キャパシタで回路を構成している。 ここらへんはトラ技の'04年8月号の桑野さんの解説を、そのまんま、なぞって見よう。 これを簡略化すると、、、 電荷とコンデンサの電圧の関係式 Q=CVから、
やっぱり、Vdを0と考えると、
うーん、なるほど。分子と分母は逆になるけど、抵抗の場合と同じような式になるんだね。面白いなぁ。
[top]

反転増幅器を使ってみたいが、、、

PSoCで実際に反転増幅器を動かしてみよう。 ここで途方にくれてしまった。それで桑野さんの記事を見直していると、極性切替え回路の説明がある。 これに気が付くのに随分かかっちゃったけど、これで最初は全く意味不明だったスイッチト・キャパシタの回路も少しだけ分かった気がする。

スイッチト・キャパシタの設定

自分なりのイメージで描いてます。変かも。
User Module Parameters
FCap 16 FCap=ACapで、倍率1
ClockPhase Norm 良く分からないが多分Normalだろう
ASign Neg 反転増幅器だからNeg
ACap 16 FCap=ACapで、倍率1
ACMux Port_2_1 A入力をポート2-1に接続する
BCap 0 B入力を切り離すため、0にする
AnalogBus AnalogOutBus_0 出力をAnalogOutBus_0に接続する
CompBus Disable CompBusには接続しない
AutoZero On よく分からないが、回路図からみて1だ
CCap 0 C入力を切り離すため、0にする
ARefMux AGND 反転増幅器として使うためGNDに落す
FSW1 On FCapを有効にするSWかな?とりあえず1
FSW0 On 同じく1に設定しておこう
BMux ACB00 BCap=0なので関係ないはず適当に繋ぐ
Power Low これは何だろう?とりあえずlowにする

入力に何を繋ごうかな?

SCBlockを動かしてみる

本当は何かセンサを繋ぎたいところだけど、、、 とりあえずプログラムなしでやってみたけど、当然出力が出ない。
        SCBLOCK_1_SetPower(1);
やったー。波形が出た。。。でも、ちょっと変かなぁ。。。 秘密兵器のオシロ。出来れば使いたくないんだけど。。。 うーん、やっぱり波形が変だ。最初20kHzでやってダメだったので、1kHzでもやったけどほとんど変わり無し。なんだろう。入力インターフェース部分の問題なのかなぁ。

やっと動いた

良く見直してみると、クロックは24MHzで、1/10だと2.4MHzだった。 今度こそ、動いた!!結構悩んだんだけどなぁ。まったく何やってんだか。。。

反転しない

うまくいったと思ったんだけど、これって反転増幅器なんだけどなぁ。 Posiにすると、早めに飽和するのは何故だ? また、分からなくなりました。

いろいろやってもダメか

JunkBoxさんにSetPowerで3を指定した方が良いと言われた。すると波形はしっかり出るようになった。飽和とかもしなくなるみたい。 でも、やっぱり反転してくれない。

ASDモジュールに変えてみる

doggieさんから、ASCモジュールの方はASignにEx-ORが付いてるけどという指摘あり。

動作しました。。。

回路と設定値を何度見直しても合ってるような気がする。 えーっと、上の波形が正しい反転増幅器の出力波形です。(1kH,40kHz)
1データシートには80fFと書いてあったりするけど、どれが正しいのかな。
2じゃなくて、オシレータを持ってないからだけど、周波数を簡単に変えられるから便利なんだよね。
3リードアウトのやつって、切替が分かり難くってダメなんだよなぁ。。。言い訳。

[top]

その他の基本回路

それ以外の回路も考えてみる。う〜ん、また数式か。

非反転増幅器

Cbの電流の向きは逆だから、電荷とコンデンサの電圧の関係式 Q=CV、さらにVd=0だから、

反転増幅器の入力のスイッチを逆転させただけで、非反転増幅器として働いていることが分かる。

減算回路

今度は、非反転増幅器のRef側を、GNDに落さずに別の入力にした回路を考える。 電荷とコンデンサの電圧の関係式 Q=CV、さらにVd=0から、


これだけで、減算になっていることが分かる。でも、減算回路って何に使うんだろう?

全波整流?

スイッチト・キャパシタの出力をモジュレーションのコントロールに繋いじゃえばどうかなぁ。 ダメでした。良い考えだと思ったんだけど。。。 じゃあ、スイッチト・キャパシタの出力をコンパレータで受けて、モジュレーションに繋いだらどうだ? これもダメか。φ1φ2関係ない出力を使ってるからかなぁ。。。あれ、そういえばモジュレーションはASignをひっくり返してるだけなんだから、どんな信号にしても反転するはずだよなぁ、中点に落ちるだけっていうのは変だなぁ。 PWMので作った信号をモジュレーションに入れるとちゃんと反転する。

PGAでバッファする

全波整流するためには、やっぱりPGAでバッファしてキレイな波形を作ってからコンパレータを通して、モジュレーションの信号を作らなきダメってことか。 パラメータとか変えても全然ダメ。丸一日以上これで悩みました。バイアスの配線をケチった所為でした。。。 入力信号自体のレベルがズレて波形が欠けてただけだったのに、随分ムダな時間を喰われてしまった。大事なところをハショッちゃダメだよなぁ。反省。

加算回路

減算回路を試しに使ってみようと思ったんだけど、Ref側ってGNDとかコンパレータバスにしか繋げないんだなぁ。じゃ加算回路に行こう。

これだけで加算器になるのかぁ。非反転増幅器だと符号が反転しないだけか。。。

comments powered by Disqus