PSoC5 CY8C5888LTI-LP097 VGA_inv を使う(オペアンプ・ゲイン可変)
PSoCのOPamp絡みのモジュール PGA_inv です
これは可変ゲインを持って居るのですが逆位相で出力します
x1 / x3 / x7 / x15 / x22 / x24 / x31 / x47 / x49 がプログラムで
選べますがなんとも中途半端な倍率ですこと、例えば何で x10 / x20
が無いんでしょうねぇ。
取り敢えず回路図を提示します
WaveDAC8_2 が正弦波発振モジュール
VDAC8_1 と VDAC8_2 が DCバイアス、Vref です
PGA_Inv_1 が反転増幅器
PGA_1 が正転増幅器
↓
WaveDAC8_2 正弦波発振モジュールのパラメーター
↓VDAC8_1 、Vref のパラメーター
↓VDAC8_2 DCバイアス、Vref のパラメーター
↓
PGA_1 正転増幅器のパラメーター
↓
PGA_Inv_1 反転増幅器のパラメーター
Pin 配列
↓
main.c
それぞれのモジュールを起動し
倍率を変化させ、1秒キープ
四種類の増幅率をそれぞれ1秒キープ
Loopで繰り返しという単純な動作です
こんな使い方は無いでしょう、単なる実験です
で、思ったんですが、と言うか、ダメだこりゃって思った事です
VDAC8 からDCが出て来ます、これ、あちこちに繋ぐとレベル変動が
激しくて使い物に成りません、信号でフラれまくりです
なんて言うか・・・テーブルタップに色んな機器を配線して電源
とったらどんどん電圧が落ちて使えなく成る感じです
なので一つのOPampに一つのVDAC8が必要です、要は根性無しです
それと電源5Vですからレール・トゥ・レールって謳ってますが
たった5Vですよ?然かもマイナスには絶対振れません、絶対に
もっと言うと基準が0Vでしょ?だから増幅するとDC成分も重畳して仕舞い
必要な交流成分がサチッて仕舞うんです、なのでCカットとか外部で
やってチマチマと狭いスパンで基準を気にしながら回路を組む
組まざるを得ない、こんなのやってられない、ってのが正直な
感想です、だからこのOPampモジュールは使途は本当に限定的だな
って感じます。
ソースファイル
/* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include "project.h" int main(void) { CyGlobalIntEnable; /* Enable global interrupts. */ WaveDAC8_2_Start(); VDAC8_1_Start(); VDAC8_2_Start(); PGA_1_Start(); PGA_Inv_1_Start(); /* Place your initialization/startup code here (e.g. MyInst_Start()) */ for(;;) { /* Place your application code here. */ PGA_1_SetGain(PGA_1_GAIN_01); PGA_Inv_1_SetGain(PGA_Inv_1_GAIN_01); CyDelay(1000); PGA_1_SetGain(PGA_1_GAIN_02); PGA_Inv_1_SetGain(PGA_Inv_1_GAIN_03); CyDelay(1000); PGA_1_SetGain(PGA_1_GAIN_04); PGA_Inv_1_SetGain(PGA_Inv_1_GAIN_07); CyDelay(1000); PGA_1_SetGain(PGA_1_GAIN_08); PGA_Inv_1_SetGain(PGA_Inv_1_GAIN_15); CyDelay(1000); } } /* [] END OF FILE */
動画です
黄色が発振回路の源波形
青がAGP正転増幅器
紫がAGP_Inv反転増幅器
PSoC5 CY8C5888LTI-LP097 VGAを使う(オペアンプ・ゲイン可変)
PSoCの特徴的なモジュールに OPamp が在りますが、これ
或る程度の制限付きでゲインが変えられます
VGA (Variable Gain Amp)モジュールです
但し正転アンプです
x1 / x2 / x4 / x8 / x16 / x24 / x48 つまり33dBぐらいまで増幅が
プログラミングで可能って事です
逆に逆転アンプも在りますがゲインが異なるので要注意です
なんでやねんと言いたいですね
VGA_inv というモジュールです、こちらは
x1 / x3 / x7 / x15 / x22 / x24 / x31 / x47 / x49 の逆位相です
統一性が無いですねぇ・・・まぁ仕方無い・・・・。
動画は x1 / x2 / x4 を繰り返すだけの単純動作です
上、黄色が入力波形
下、青色が出力波形
↓但し、プログラミングしてて無駄な一日を過ごして仕舞ったので
この記事をご覧の方は、嘲ってやって下さい、何が無駄だったのか
ですが、オペアンプの出力です、これが適切に選択されていないと
ドツボに嵌まります。
動画の詳細は以下のように成ります、これなら動きます
回路図、抵抗は外付けでコンパイルには無関係です、メモ程度と
お考え下さい
↓
WavwDAC8_2 パラメーター
↓
VDAC8_1 パラメーター
↓
PGA_1 パラメーター
↓
main.c
モジュールを起動 → ゲインを変化させる → Loop
こんな簡単なプログラムなんですが
こうすると動きません
Pin_1 をご覧下さい 15[4] と書かれていますよね
なんでこの Pin を選んだかですが、作図していて pin 配置の画面に
切り替えるとご親切に自動的に pinが選ばれるのです
「ああーー便利だなぁ♪ 流石サイプレス社だ、ふんふんふーーん♪」ヽ(´ー`)ノ
なんて調子に乗ってやっていた訳ですよそしたらとんでもない
なにやっても出力が出て来ないんです、ちゃんと Analog out pin
をドラッグ・アンド・ペーストしたにも関わらずです
恐らくと言うか間違いなく英文マニュアルを読めばどの pin を
使うべきなのか書いて有るハズです、こういうバカをするから
ど素人なんですよね、あーあ、無駄な時間を過ごした。
ソースファイル
/* ======================================== * * Copyright YOUR COMPANY, THE YEAR * All Rights Reserved * UNPUBLISHED, LICENSED SOFTWARE. * * CONFIDENTIAL AND PROPRIETARY INFORMATION * WHICH IS THE PROPERTY OF your company. * * ======================================== */ #include "project.h" int main(void) { CyGlobalIntEnable; /* Enable global interrupts. */ WaveDAC8_2_Start(); VDAC8_1_Start(); PGA_1_Start(); //PGA_Inv_2_Start(); /* Place your initialization/startup code here (e.g. MyInst_Start()) */ for(;;) { /* Place your application code here. */ PGA_1_SetGain(PGA_1_GAIN_01); CyDelay(1000); PGA_1_SetGain(PGA_1_GAIN_02); CyDelay(1000); PGA_1_SetGain(PGA_1_GAIN_04); CyDelay(1000); } } /* [] END OF FILE */