2021年12月28日火曜日

ホワイトノイズ発生回路の実験

NPNトランジスタのベース・エミッタ間に逆電圧を加えノイズを生成する回路を2つ実験しました。電源の+12VはERK01(商用電源→スイッチング電源→3端子レギュレーター)からとりました。

その1



回路図

左側のNPNトランジスタのベースを接地し、エミッタに正電圧をかけてベース・エミッタ間に逆電圧を掛け、右側の自己バイアスを掛けたNPNトランジスタで電圧増幅する回路です。増幅用のトランジスタはhfeが大きいほうが(2SC1815ならBランクやGRランク)大きな振幅が出力できます。

ブレッドボード配線


出力波形

約1.8Vppのホワイトノイズ波形が得られました。0~400kHzのFFTでは高域が5dB程度減衰するようです。

スペクトラム 0~20kHz

0~20kHzレンジではほぼ一定の周波数特性が得られました。

スペクトラム 0~1kHz

0~1kHzレンジでも商用電源を使っていますが60Hz付近のハムノイズも見られません。

その2


回路図

左側のNPNトランジスタのエミッタ側に正電圧を掛け、ベースに現れた電位を右側のNPNトランジスタのベースに入力してエミッタ接地で増幅する回路です。

ブレッドボード配線


出力波形

約1.1Vppのホワイトノイズが得られました。0~400kHzのFFTでは高域が5dB程度減衰するようです。

スペクトラム 0~20kHz

0~20kHzレンジではほぼ一定の周波数特性が得られました。

スペクトラム 0~1kHz

こちらもハムノイズは見られません。

メモ


その2の回路はブレッドボードでの配線では出力振幅が変わるなど不安定なようです。

どちらも1Vpp以上は出力できているので、10Vppの振幅を得るには後段のアンプは10倍以下の増幅で済みそうです。

2021年12月22日水曜日

ERK01-EX ユーロラック増設

自作のユーロラック ERK01が一杯になってしまったので増設しました。ERK01初号機とほぼ同じ作りですが、電源部がないため初号機より高さが低くなっています。電源は初号機から引きます。


材料


FFR型フロントレール 431.8mm【FFR-43N】2本 \1562@マルツ
BN型レール用バーナット【BN43-M3】2本 \649@マルツ
MDF 300mm×400mm×5.5mm 1枚 300円程度

フロントレールを側板に取り付けるビスはフロントレールに付属しています。

仕上がり寸法


板加工


切りしろ(3mm)を入れると縦方向の余りが1mmになってしまうため、加工が難しいです。ホームセンターで切ってもらいましたが、137mm指定のところが仕上がりは136mmになってしまいました。同じ板寸を使うなら奥行きを150mm程度にしたほうが良さそうです。

仮組み


レールの両端にパネルを取り付けておくと組み立てが楽です。私はレファレンスとしてDoepferのブランクパネルを利用しています。


底板の接着


底板は木工ボンドのみで接着しました。圧着にはハタガネを利用しました。540mmで1本1500円以上しますがあると便利です。

電源基板の取り付け



自作の電源基板のERK01_PSU_EXTの穴径はM3用の3.2mmφです。中空のスペーサーを入れてタッピングビスで固定しました。

タッピングビス なべタッピング 3×10 4本
中空スペーサー M3×5mm 4個

2021年12月5日日曜日

ArEG Arduinoを使ったEnvelope Generatorの構想

以前もArduinoを利用してEnvelope Generatorを製作しました。 今回はその改良版を製作します。

ステート制御にGPIOを3ステートで利用


コンデンサへの充放電の制御にダイオードを使って電流の逆流を防止していましたが、AVRのGPIOはWriteモードの時H/L出力できるのに加えて、Readモードの時Hi-Zとなる3ステートバッファとなっています。Hi-Zを使えばダイオードを入れなくても電流が流れなくなります。

利点としては、555タイマーやロジックICを使った場合に比べ部品数を少なくできること、またダイオードを入れないのでダイオードの順方向電圧のため波形の底が0Vまで落ちない(0.6V程度になってしまう)問題が解消されます。

ADSR波形のステートについては「アナログ・エンベロープ・ジェネレーターをプログラムでシミュレートする」で少し書きました。

回路図

実験に使った回路のアナログ部分です。回路図のSWは実際にはAVRのGPIOです。

閾値の判定にコンパレーターを使う


Attackステートは出力波形がある電位(今回は3.3V)に達した時終了し、Decayステートに移行します。ADコンバーターを使って電位を測定することもできますが、処理に時間がかかるためAttackの立ち上がりが急峻な場合行き過ぎてしまいます。

コンパレーターを使って閾値を越えたかどうか判定し(閾値の前後でH/Lが切り替わる)コンパレーターの出力でAVRの割り込みを発生させる方法を取りました。

また、ヒステリシス付きコンパレーターでないとSustainレベルが高い場合に出力がバタついてしまいます。プログラムで回避する方法もあるのですが、ノイズ源になりそうなのでコンパレーターはヒステリシス付きにしました。

コンパレーター出力のバタ付く例

C1:ADSR出力 C2:Threshold

ヒステリシス付き反転入力コンパレーター部分のシミュレーション

定数はVh=3.3V Vl=3.0Vを目標に決めています。

実験したブレッドボード配線図

Arduinoのスケッチ
/*
 * ADSR Switch Test
 * 
 * スレッショルド割り込み: 負論理
 *
 * 2021.11.27
 *
 */

const int ThresholdPin = 2; // INT0

const int AttackPin = 5;
const int DecayPin = 6;
const int ReleasePin = 7;

volatile bool th = false; 

void threshold()
{
  th = true;
}

void setup()
{
  pinMode(AttackPin, INPUT);  // Hi-Z
  pinMode(DecayPin, INPUT);   // Hi-Z
  pinMode(ReleasePin, INPUT); // Hi-Z

  // 負論理
  attachInterrupt(digitalPinToInterrupt(ThresholdPin), threshold, FALLING);
  // 正論理
  //attachInterrupt(digitalPinToInterrupt(ThresholdPin), threshold, RISING);
    
  Serial.begin(9600);
}

void loop()
{
  th = false;
  
  // Attack
  pinMode(DecayPin, INPUT);   // Hi-Z
  pinMode(ReleasePin, INPUT); // Hi-Z
  pinMode(AttackPin, OUTPUT);
  digitalWrite(AttackPin, HIGH);

  while (th == false) // スレッショルド割り込みを待つ
    ;
  
  // Decay
  pinMode(AttackPin, INPUT); // Hi-Z
  pinMode(DecayPin, OUTPUT);
  digitalWrite(DecayPin, LOW);
  delay(80);
  
  // Release
  pinMode(ReleasePin, OUTPUT);
  digitalWrite(ReleasePin, LOW);
  delay(100);
}

検証のため、Gate信号入力はなくプログラムでDecay→Releaseを切り替えています。実用的には、delay()関数で制御している部分をGate信号の割り込み処理に置き換えます。

出力波形

C1:ADSR出力 C2:Threshold

反転入力 or 非反転入力のコンパレーター


ヒステリシス付きコンパレーターは反転入力、非反転入力がありますが入力が閾値を上回った場合、出力がHになるかLになるかの違いがあります。プログラム次第でどちらでも使えそうですが、非反転入力の場合は問題があります。

非反転入力のヒステリシス付きコンパレーターを使った回路

右下の「Threshold」出力の回路が異なります。

ヒステリシス付き非反転入力コンパレーター部分のシミュレーション

こちらも定数はVh=3.3V Vl=3.0Vを目標に決めています。(少しずれてしまっていますが本題とはあまり関係ない)

ブレッドボード配線図

この場合コンパレーターの出力が入力に影響を与えてしまいます。


C1:ADSR出力 C2:Threshold

ThresholdがHの場合とLの場合でDecayの波形が異なってしまい段差が出ています。

次図のように入力インピーダンスが高い反転入力の場合は同じパラメータでも影響が出ません。


ヒステリシス付きコンパレーターは正帰還を掛けるので、負帰還を掛ける増幅回路とは逆に、非反転入力の方が入力インピーダンスが低く、反転入力の方が入力インピーダンスが高くなります。
 

2021年11月12日金曜日

ノイズジェネレータ NOS02の試作

作った結果があまり良くないので今回は製作ではなく、試作としています。


以前、キックマシンKIK01を製作したときにノイズジェネレータNOS01を製作し利用しています。普通のシンセでもノイズ音源は必要なので、Eurorack仕様で試作しました。

回路図

「A」の部分がノイズを生成するコアの部分です。2SC1815のような足の並びがECBのものとBC547のようなCBEのものが試せるようにトランジスタのパターンを2種用意しています。

コア部は出力電圧が低いので後段のOPアンプで増幅します。コア部で発生するノイズはホワイトノイズなので、J2以降のフィルタを通してピンクノイズやブルーノイズを生成します。厳密なピンクノイズやブルーノイズは減衰が-3dB/Octですが、一次RCフィルタの減衰は-6dB/Octの傾きを持っており、RCフィルタで-3dB/Octの傾きを実現するのはなかなか難しい話です。

ピンクノイズ用のフィルタはAnalog 2.0を参考にしました。ブラウニアンは1次LPF、ブルー1は1次HPF、ブルー2はさらに1次HPFを重ねています。

ホワイトノイズ発生コア部


コア部のみ実装して出力を観測しました。


J2(コア部の出力)の波形

J2の出力が±5Vpp程度になるようにRV1を調節しています。

J2のスペクトラム

OPアンプで100倍以上増幅しているためハイ落ちしています。また100Hz付近のピークは商用電源由来のハムノイズだと思います。

J2 FFT

横軸をリニアにして低域を見ると60Hz、120Hz、180MHzにピークがあります。しかも結構でかい。

U2の3Pin

ノイズを生成するトランジスタの素の出力です。測定値を見ると30mVpp程度です。

U2の1Pin

1段目のアンプの出力です。0.7Vpp程度になっています。

フィルター部


Brownian: 1次LPF
Pink: 1次LPFにゼロを追加
White: コア部の出力
Blue1: 1次HPF
Blue2: 2次HPF

として、ノイズの帯域を制限します。Analog Discovery 2のNetwork機能を使って周波数特性を測定しました。

Blownian

Pink

Blue1

Blue2

結合

J2をショートしコア部の出力をフィルターに通した波形を観測しました。

Blownian

Pink

BrownianとPinkにははっきりとハムノイズの波形が視認できます。

White

Blue1

Blue2

試聴


ERK01に組み込んで音出ししてみました。

特にPinkやBrownianで「ブーン」とハムノイズが乗っているのが聴き取れます。また、単体で鳴らしてもVCOの音が混入するようです。電源からの混入でしょうか。1000倍以上増幅しているので仕方がないのかも知れません。

またフィルターの色ごとの音量(エネルギー)がバラバラで同じ程度になるように調整する必要があります。今回は増幅率を決める抵抗をピンソケットを介して実装しているので結果をもとに変更するつもりです。

ベースコレクタ逆電圧の回路がちょっとおかしい可能性があります。Spiceでシミュレートできないので実験するしかないのですが。VCOとMIXすればほとんど気にならないのでひとまずこのまま活用します。

ホワイトノイズの生成は、ツェナーダイオードを使った方法(これもPN接合の降伏時に発生するノイズ)やロジックICを使った方法もあるので、いずれ試してみたいと思います。

2021年11月2日火曜日

LME49600HPA V2.1 2台目の製作

オーディオインターフェイスのベリンガーUMC404HDのヘッドホン出力が貧弱なため、LME49600を使ったヘッドホンアンプを製作しました。

アナログシンセを製作していると、音量を上げたときに矩形波状に歪んだ場合かえって良い感じに聴こえる場合があります。感覚的に言うと音が太くなります。ヘッドホン出力が歪むと一体何を作っているのかわからなくなるので、これを改善するのが目的です。歪を楽しむために歪みを極力少なくします。

今回は電源を同じ筐体に収めました。

ケース内部

前面

背面

主な構成は以下の通りです。

メイン基板
LME49600 HPA V2.1のDCサーボバージョンです。レギュレータ基板に問題があるため、並列にしているデカップリング・コンデンサの片方をショットキーバリアダイオードに置き換えて、逆電圧を逃がすように変更しています。

レギュレータ基板
AliExpress(Aiyima)で購入したLM317/LM337使用の可変量電源基板(サーボなし)です。前述の通り問題がありそうなためメイン基板側で対策しています。±12V出力に調整しました。

電源トランス

配線図

ケース: タカチ YM-200
標準ステレオジャック(入力): マル信 MJ-187
標準ステレオジャック(出力): マル信 MJ-187LP
パイロットランプ: AC110V 5mmΦ白色LED
ヒューズ: ミゼット 0.5A
ACケーブル用ブッシュ: GM-81I3

以前も間違えましたが、共立で購入した台湾製オーディオ用2連は端子を上向きに取り付けるとケースと干渉します。固定用の小孔を開け直して横向きに取り付け直しました。


配線が複雑になるので、入力ジャックとPOTは基板に取り付けたほうが良さそうです。ただし、このPOTは端子の径が1mmなので普通のユニバーサル基板(ホール径0.8Φ)だと挿入できません。

出力特性


Analog Discovery 2で出力特性を測定しました。

1kHz/1Vpp入力 負荷抵抗RL=100Ω フルボリューム

フルボリュームで約10倍の増幅率です。

1kHz/2Vpp入力 負荷抵抗RL=100Ω フルボリューム

入力電圧を2Vに上げると出力は±10V付近でクリップします。(OPアンプはMUSES8820)

スペクトラム 1kHz/1Vpp入力 負荷抵抗RL=100Ω フルボリューム

THD:0.015%、THD+N:0.522%となりました。

UMC404HDの出力を入力


WaveGeneで1kHz/0dBのサイン波を出力し、UMC404HDのPHONE、MAIN OUT、PLAYBACK OUTPUTSからLME49600HPAに入力し、出力波形を観測しました。

PHONE

UMC404HDのPHONEのボリュームは12時の位置です。

MAIN OUT(L)

PLAYBACK OUTPUTS(1)

波形がガタガタなのは、UMC404HDの出力波形が良好ではないためです。


波形は汚いままですが、出力振幅は十分稼げています。UMC404HDのPHONE出力は最大4Vppなのに対して、今回製作したヘッドホンアンプは最大20Vppまで出力可能で、比較的高インピーダンス低能率のAKG K701もドライブできているようです。

いずれ、UMC404HDとヘッドホンアンプの間にローパスフィルタを入れて波形が整うか見たいと思います。年齢的に聴感上の違いがわかるかどうか自信はないですが。

参考「8th_MFB_LPF