2016年4月29日金曜日

OTAのNJM13600、NJM13700を使ってみる実験

この間V+の接続を間違えていたのでテストしなおした。

今回はNJM13600、NJM13700で内蔵のTrの出力バッファを使うのとOPAMPのボルテージフォロワーを使う2通りでやってみた。

等価回路図

NJM13600とNJM13700の違いは、NJM13600の方が出力バッファのダーリントン接続の1段目のエミッタから増幅率を決めるバイアス入力回路のあたりにつながっていて、出力バッファとバイアス入力がなんか関係ありそう。と、いうことぐらいしかわからない(^q^;

TIのLM13600とLM13700のDATASHEETはもう少し詳しく書いてありそうだが、英語なので気が向いたら読むかも。(そもそもコンパチなのか?)

ボルテージフォロワーを使う


回路図

回路図の下の方は電圧→電流変換回路でGND~1Vの電圧を電流に変換してNJM13600/13700のAMP BIAS INPUT(1Pin)に入力している。

ブレッドボード図


回路はNJM13600もNJM13700も同じもの。

NJM13700+ボルテージフォロワー


電圧→電流変換回路に入れた電圧とNJM13700→ボルテージフォロワーからの出力電圧をオシロで測定。オシロのキャプ画は記事の最後に掲載。


バイアス電圧(mV) 0 200 401 602 801 989
出力電圧(mV(p-p)) 264 520 784 1020 1240


電圧で入力波形の振幅をほぼリニアに制御できている。

NJM13600+ボルテージフォロワー


NJM13700をNJM13600に差し替えて測定。


バイアス電圧(mV) 0 201 400 601 800 996
出力電圧(mV(p-p)) 13.78 500 920 1340 1720 2060


若干対数カーブになっている感じ。

内蔵Trバッファを使う


回路図

出力バッファのT2、T3はほんとは内蔵だが(IC1Aの7,8Pinにつなぐ)わかりやすいように外に書いておいた。R1、R7の値はLM13700のDATASHEETのApplication Noteに載っていた値を使った。

NPN Trなので入力波形の負側(+VBE*2)では動作しないのでR1とR8でバイアスをかけている。(実測値+2.51V)

ブレッドボード図

電圧→電流変換回路は割愛。


NJM13600+Trバッファ



バイアス電圧(mV) 0 200 401 600 799 999
出力電圧(mV(p-p)) 32 168 296 432 552 69


まあまあリニアに制御できている。

NJM13700+Trバッファ



バイアス電圧(mV) 0 202 399 601 800 999
出力電圧(mV(p-p)) 40 176 336 472 624 776


まあまあリニアに制御できている。(ちょっといびつ?)

電圧→電流変換回路の測定


Trバッファの回路で出力をNJM13700の1Pinにつないだ状態で電圧→電流変換回路の入出力をテスタで測定した。


入力電圧(mV) 202 399 601 802 999
出力電流(uA) 11.1 22.2 33.3 44.5 55.3


電圧→電流変換回路もまあまあリニアに変換できてると思う。

データーシートの特性例を見ると

増幅率を決めるバイアス電流は数uA~数100uAの範囲で制御できそう。

入力波形の振幅


90mV(p-p)程度のサイン波を入力して測定したが、これ以上の振幅で入力すると波形が歪む。

NJM13600+Trバッファ 100mV程度

NJM13600+Trバッファ 150mV程度

データーシートの特性例を見ると

なので入力波形の振幅が100mV(p-p)ともなるとかなり歪むようだ。「ダイオード使用」とは2,15Pinのことだと思うが、使い方がよくわからん。

メモ:


内蔵Tr(エミッタフォロワ-)とボルテージフォロワーで出力を増強したが、バッファを入れない場合も見た方がいいかな?バッファを通すと出力電圧がかなり違うようだし。

ボルテージフォロワーでバッファリングした時NJM13600だと少し線形性が失われるている感じだし、NJM13600とNJM13700で増幅率が倍ぐらい違う。等価回路図から推察すると内蔵Trでバッファリングしない場合も「BUFFER INPUT(7,10Pin)」にOTAからの出力を入れてみるのもありかな?

OPAMPを使うと素子数が増えるがGNDレベルの振幅になる。Trだと出力が正側に寄ってしまうので出力はACカップリングしないとダメそう。あ、TrでもエミッタをGNDではなくてV-に接続すればいいのか(@@?

内蔵Trをバッファとして使うなら、電圧→電流変換もTr一発の回路等、素子数を少なくする方向でやったほうがいいかもしれない。

大筋では動作するようなのでもう少し実験してみる予定。


以下、オシロのキャプ画です。

NJM13700 + ボルテージフォロワー


電圧→電流変換回路への入力電圧:200mV

ch1:OTAへの入力 ch2:バッファからの出力

電圧→電流変換回路への入力電圧:401mV

電圧→電流変換回路への入力電圧:602mV

電圧→電流変換回路への入力電圧:801mV

電圧→電流変換回路への入力電圧:989mV

NJM13600 + ボルテージフォロワー


電圧→電流変換回路への入力電圧: 0mV

電圧→電流変換回路への入力電圧:201mV

電圧→電流変換回路への入力電圧:400mV

電圧→電流変換回路への入力電圧:601mV

電圧→電流変換回路への入力電圧:800mV

電圧→電流変換回路への入力電圧:996mV

NJM13700 + 内蔵Trバッファ


電圧→電流変換回路への入力電圧: 0mV

電圧→電流変換回路への入力電圧:202mV

電圧→電流変換回路への入力電圧:401mV

電圧→電流変換回路への入力電圧:601mV

電圧→電流変換回路への入力電圧:800mV

電圧→電流変換回路への入力電圧:999mV

NJM13600 + 内蔵Trバッファ


電圧→電流変換回路への入力電圧: 0mV

電圧→電流変換回路への入力電圧:200mV

電圧→電流変換回路への入力電圧:401mV

電圧→電流変換回路への入力電圧:600mV

電圧→電流変換回路への入力電圧:799mV

電圧→電流変換回路への入力電圧:999mV

2016年4月27日水曜日

Arduino UnoでaitendoのOLED(VGM12864-3S)を動かす U8GLIB編

74HC4050を使うとSPIならArduino Unoでもあまり気にせず3.3V系を操れそうなので3.3V駆動のOLEDを動作させてみた。

aitendoのOLED VGM12864-3S 



OLEDのグラフィック表示器としては安いほうだが、1,350円なのでヘタして壊したら泣ける。

I2C/SPI/パラレル接続のどれかを選択して使えるようになってるが、I2CはいろいろややこしいのでSPIでやってみた。

I2Cだと上側の7ピンで制御できるが、SPIだと左側のCSとA0ピンも必要になるのでブレッドボードで実験するためにピンソケットを使って上側からケーブルをさせるようにした。

上側の7ピンは


1 2 3 4 5 6 7
VCC GND RESET SCK SDI BS1 BS2

となっていて、VCC、GNDは電源、SCK、SDIはSPIの信号線で、BS1とBS2で通信方法のI2C/SPI/パラレルを選択する。BS1、BS2をL(GND)に落とすとSPI接続になる。

ブレッドボード図


74HC4050はSPIの信号線のロジックレベルを5V->3.3Vに変換するために使っている。ブレッドボードの電源は74HC4050、OLEDともArduino Unoから3.3V供給している。

A0(青)、CS(白)、RESET(緑)は仕様通りHかLに固定すれば動作するので(←未確認)、実質クロックとデータの2線で動かせる。(I2Cの様にデータラインが双方向ではないので、5V->3.3Vに片方向で変換できれば良い)

<追記:2016.09.05>A0とCSはU8GLIBの指定通りに配線しないと動作しません。</追記>

U8GLIB


いろいろな表示器のコントローラーに対応しているライブラリで、CPUはArduino、AVR、ARMに対応している。

Arduino Uno用のライブラリをインストールするとArduino IDEでexampleが使える様になる。

aitendoのOLED(VGM12864-3S)はコントローラーがSSD1306なのでexampleのスケッチの

//U8GLIB_SSD1306_128X64 u8g(13, 11, 10, 9); // SW SPI Com: SCK = 13, MOSI = 11, CS = 10, A0 = 9
//U8GLIB_SSD1306_128X64 u8g(4, 5, 6, 7); // SW SPI Com: SCK = 4, MOSI = 5, CS = 6, A0 = 7 (new white HalTec OLED)
U8GLIB_SSD1306_128X64 u8g(10, 9);  // HW SPI Com: CS = 10, A0 = 9 (Hardware Pins are  SCK = 13 and MOSI = 11)


とコメントアウトされているところの「//」を削除してu8gのコンストラクタを指定すれば動く。

U8gLogoや他のスケッチも試してみたが問題なく動作する(^q^/

思ったこと


5V系->3.3V系の変換には74HC4050は結構便利。

マイコンに限ったことではないが、キャラクタLCDと違ってグラフィックLCDは文字を表示するのも一苦労する。U8GLIBはいろいろと関数が用意されているようなので、使うLCDとMPUに合致すれば便利かもしれない。

ARM用のライブラリにPSoC 5LPもあるようだ。

2016年4月25日月曜日

OTA(トランスコンダクタンスアンプ)のNJM13700を使ってみる

<追記:2016.04.27>

ブレッドボードの実験でV+の配線を間違えてました(^q^;

V+は14Pinではなく、11Pinです。

したがって、測定結果は全部おかしいです。簡単にテストしてみましたが、後日ちゃんとやり直す予定。

</追記>

VCOもデジタル・ポテンショメータを使えば簡単にマイコンで制御できそうだが、アナログシンセでよく使われているOTAを使ってみることを考えた。

OTAとは電流で増幅率を可変できる増幅器だ。大雑把に言うとOPAMPに増幅率を可変する電流制御端子をつけたもの。

秋月でNJM13700共立でNJM13600 が売られている。

回路図

電源系は省略

ブレッドボード図


電流源には「電圧→電流変換の実験」でやった、OPAMP+PNPトランジスタの回路を使った。

NJM13700からの出力は内蔵されているTrによるバッファ(ダーリントン接続)を使うのが普通のようだが、NJM13600とNJM13700で内部の接続が違って使い方がよくわからないので、とりあえずTL072の反転増幅回路を外付けしてみた。

電圧→電流変換回路の入力電圧(ブレッドボード図の「CtrlIN」)は、回路図のR5、R6の分圧で+5V電源を分圧して約+1Vを作り出し、R4のPOTで分圧して+1V~GNDを作っている。

回路図のAudioINには自作のファンクションジェネレータ+4次バターワースLPFで1kHzのサイン波生成して入力した。

入出力測定


CtrlIN 0.0501V

CtrlIN 0.102V

CtrlIN 0.197V

CtrlIN 0.302V

CtrlIN 0.401V

CtrlIN 0.614V


電流値の測定


ブレッドボード図

OTAの回路を切り離して電圧→電流変換回路のみでPNP Trのコレクタ(電流出力ポイント)からGNDに10kΩ(実測値:9.831Ω)のRを入れて電圧を測定。


入力電圧(V) 出力電圧(mV) 出力電流(uA)
0.913 112.4 11.43322144
0.603 74.8 7.608585088
0.5 62.7 6.377784559
0.402 50.8 5.167327841
0.298 38.3 3.895839691
0.199 26.3 2.675211067



電圧→電流変換回路の入力電圧と出力電流は比例しているようだ。

メモ:


入力波形の振幅は300mV(p-p)だが、±5Vの電源ではこれでも振幅が大きすぎるようだ。振幅を歪みなく可変するためには入力波形の振幅はかなり小さくしないとだめかもしれない。

入力波形を正側に振ったほうがいいかな?

NJM13700とNJM13600で内蔵バッファを使う実験をしてみる。