SSブログ

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 が正転増幅器

bandicam 2019-02-19 23-08-19-889

WaveDAC8_2  正弦波発振モジュールのパラメーター


bandicam 2019-02-19 23-08-35-113


VDAC8_1  、Vref のパラメーター

bandicam 2019-02-19 23-08-54-419

VDAC8_2  DCバイアス、Vref のパラメーター


bandicam 2019-02-19 23-08-59-097

PGA_1 正転増幅器のパラメーター

bandicam 2019-02-19 23-09-08-096


PGA_Inv_1 反転増幅器のパラメーター


bandicam 2019-02-19 23-09-14-135

Pin 配列

bandicam 2019-02-19 23-09-28-258


main.c
それぞれのモジュールを起動し
倍率を変化させ、1秒キープ
四種類の増幅率をそれぞれ1秒キープ
Loopで繰り返しという単純な動作です
こんな使い方は無いでしょう、単なる実験です

bandicam 2019-02-19 23-09-51-823


で、思ったんですが、と言うか、ダメだこりゃって思った事です
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反転増幅器





nice!(0)  コメント(0) 

PSoC5 CY8C5888LTI-LP097  VGAを使う(オペアンプ・ゲイン可変)

bandicam 2019-02-19 16-43-01-826


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  を繰り返すだけの単純動作です
上、黄色が入力波形
下、青色が出力波形



但し、プログラミングしてて無駄な一日を過ごして仕舞ったので
この記事をご覧の方は、嘲ってやって下さい、何が無駄だったのか
ですが、オペアンプの出力です、これが適切に選択されていないと
ドツボに嵌まります

動画の詳細は以下のように成ります、これなら動きます
回路図、抵抗は外付けでコンパイルには無関係です、メモ程度と
お考え下さい

bandicam 2019-02-19 16-22-05-842


WavwDAC8_2 パラメーター

bandicam 2019-02-19 16-22-29-256

VDAC8_1 パラメーター

bandicam 2019-02-19 16-22-36-669

PGA_1 パラメーター

bandicam 2019-02-19 16-22-44-190


main.c
モジュールを起動 → ゲインを変化させる → Loop

bandicam 2019-02-19 16-23-40-149


こんな簡単なプログラムなんですが
こうすると動きません
bandicam 2019-02-19 16-28-57-679

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 */





nice!(0)  コメント(0) 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。