« 2025年6月 | トップページ | 2025年9月 »

2025年7月

2025年7月24日 (木)

カオスふたたび

Chaos
図1.夏によく合う涼しげなカオス


カオス現象について取り上げたのは2022年の記事で、あれからもう3年経ってしまった。
事の発端は、当時タモリ倶楽部で取り上げられた早稲田大学の「役に立たない機械コンテスト」に出品された、二重振り子を応用したメトロノームで、リズムがしっちゃかめっちゃかで実に役に立たなそうだったが、二重振り子はカオス現象を紹介するためによく使われる。

2022年当時、私はこのカオス現象を電子回路で再現させて、カオスの音を聴いてみたいと思ってあれこれ実験した。2つの発振回路が、相互に周波数を変更するような作用を行うように構成すれば再現できるのではないか……?そう思い何通りか実験してみたがどうにもういまく行かなかった。たいていは発振状態が安定してしまい、カオスと呼べる状態にはならなかったのだった。
そこでネットで、電子回路でカオス現象を再現する方法がないか調べてみたところ、chua回路なるものを発見した。これは1983年にchuaさんという技術者によって発明された回路だそうだ。さっそくLTSPICEでシミュレーションし、実際に回路も組み立てて検証したところ、カオス波形が得られた。カオス波形は、X信号とY信号のリサージュ波形として得られるものだった。

このカオス波形の音を聴いてみたいと思ったが、当時はXYのリサージュをうまいこと音声信号に変換する方法を思いつかず、苦肉の策でX+Y信号、X-Y信号の2種類を生成して聴いてみたが、ホワイトノイズのようにしかならず、結果として面白みに欠けるものだった。リサージュということなら位相差を演算すればいいのではないか?というところまでは考えたのだが、結局そこまではやらなかった。これらはすべて2022年の記事に記している。

ところで先日、トランジスタ技術の最新号を読んでいたら、アナログ乗算器を使った位相差演算回路の製作記事が載っていた。これを読んでいて、カオス信号の音声化がうまくいっていなかったことを思い出した。この位相差演算回路を使えば、カオス信号をもう少しそれらしく音声信号化できるのではないか……?
しかし記事ではアナログ乗算器というICを使っていて、経験のない分野なのでたとえばこれがLTSPICEでシミュレーションできるのか?など、わからない点も多く、またしても棚上げにしそうになったが、よく考えてみれば回路で実現するよりも、すべてプログラムでやってみた方が早く、しかもいろんな検証ができるのではないかと思い、pythonを使って検証してみることにした。

まずはpythonでchua回路のシミュレーションを考える。chua回路は次の微分方程式で与えられる。

Chua_function
Chua_constants_20250725070901

ただし、α、βは回路部品(抵抗、コンデンサ、インダクタ)に依存する定数、m0,m1は非線形素子の特性を決める定数。

pythonを使って、この微分方程式を数値的に解いてプロットしたグラフが、冒頭図1のカオスのグラフだ。実際にpythonで、この微分方程式を定義して、それを解く部分は次のとおり。(プログラムの全体は記事の下の方でリンクします。)


###Pythonコード抜粋

# Chua回路の微分方程式
def chua_circuit(t, state, alpha, beta, m0, m1):
x, y, z = state
# 非線形関数 h(x)
h = m1 * x + 0.5 * (m0 - m1) * (abs(x + 1) - abs(x - 1))
dxdt = alpha * (y - x - h)
dydt = x - y + z
dzdt = -beta * y
return [dxdt, dydt, dzdt]

# パラメータ設定
alpha = 15.6
beta = 28.0
m0 = -1.143
m1 = -0.714

# 初期条件と時間範囲
initial_state = [0.1, 0.0, 0.0]
t_span = (0, 100)
t_eval = np.linspace(t_span[0], t_span[1], 10000)

# 微分方程式を数値的に解く
solution = solve_ivp(chua_circuit, t_span, initial_state, t_eval=t_eval, args=(alpha, beta, m0, m1))

###ここまで

このコードでは、x,y,z空間上で、10000ポイント分の数値演算ができ、その3変数のうちのxとzをプロットしたものが図1だ。これは典型的なカオスのグラフとなっている。
実際のコードは次のとおり。

ダウンロード - 20250721chua_000.py

ダウンロード - variable_sine_tone_builder_wav.py

上の20250721chua_000.pyがchua回路のシミュレーションプログラム本体で、下の
variable_sine_tone_builder_wav.pyは、任意の正弦波を発生させてwavファイルに記録する関数を含むファイルだ。

使い方は、上の2つのファイルを同じホルダに配置し、20250721chua_000.pyを実行する。
すると、図1に示すカオスのグラフが表示され、同ホルダ内にカオスのグラフを音声化したものが生成される。
まずは理屈よりも先に、生成されたカオスの音を聴いていただこう(音量注意)。
20250805追記
91行目を次のように変更して、再生速度を2倍にしたパターンも録音してみた。こちらの方がスピーディでいいかもしれない。
ab.add_tone(freq=vFreq,level_db=-6,pan=vPan,dur_s=0.01,fade_ms=5)

chuaWav000.wav

20250805chuaWav2x.wav  (2倍速Ver.)

なんとなくそれらしいサウンドになったように思うが、どうだろうか?ヨガのBGM用に売れるかもしれない。
これは、図1のカオスグラフのxの変域に対して、約65Hz~3kHzの範囲の正弦波を割り付けている。
x<0の領域では、440/3|x|、x>=0の領域では440*3xとしている(20250721chua_000.pyの85、87行目)。
これは単にxの変域に周波数を割り付けているだけで、当初想定した位相差演算などはしていない。

それでは位相差を演算してそれを音に変換するとどうだろうか。

chuaWavHilbert000.wav

20250805chuaWav_hilbert2x.wav  (2倍速Ver.)


思ったほどおもしろい効果は得られず、個人的には上の単純割り付けの結果の方が良いように思う。
これはカオスの演算結果x,yに対してそれぞれをヒルベルト変換し、ポイント毎の瞬時位相を求めてその差をとることで、位相差を演算して、その結果を約70Hz~2.7kHzに割り付けている(20250721chua_000.pyの80,82行目)。

また上記のいずれに対しても、共通して、演算結果zの値に応じて、-1(左)~1(右)のパンポットを割り当てている。

以下、コードの簡単な説明。

まずはコード本体の20250721chua_000.pyにおいて、45行目で微分方程式を数値的に解いて、47行目で演算結果x,y,zを各10000個のリストデータとして得ている。61行目以降で、これらのデータのうちx,zをプロットして、図1のグラフを得ている。

次にデータの音声化は、ヒルベルト変換で位相差を使うか、単に変域のデータを使うかを72行目のhilbertフラグで設定する。hilbert=1ならヒルベルト変換による位相差、hilbert=0なら変域データ。

任意の正弦波を発生する関数はvariable_sine_tone_builder_wav.pyに含まれているので、20250721chua_000.pyの13行目以降でAudioBuiderライブラリをインポートしている。
使い方は、
ab = AudioBuilder(sample_rate=48000)
(74行目)として、AudioBuilderオブジェクトをabとして、48kHzサンプリングのインスタンス化をして、ab.add_tone(freq=vFreq,level_db=-6,pan=vPan,dur_s=0.02,fade_ms=10)
(91行目)で各ポイントデータに対してfreq(周波数)、level_db(信号レベル)、pan(パンポット-1~1)、s(信号長さ(s))、フェードイン/アウト時間(ms)をそれぞれ設定して、ポイントデータ毎の正弦波を追加していく。
すべてのデータ(10000個)に対して信号の割り付けができたら、
ab.write_wav("chuaWav000.wav", normalize="store_true", peak=0.99)
(95行目)で、信号ピークを0.99に正規化したオーディオ信号を"chuaWav000.wav"として書き出す。

以上の処理で、グラフと音声信号を生成している。


2022年の記事と比べると、格段にカオスっぽいサウンドが得られたと自負しているが、いかがでしょうか?

 

| | | コメント (0)

2025年7月16日 (水)

アースノーマットタイマーの製作(20250731追記あり)

Earthtimer


【20250731追記】
この元記事では、トランスレスでマイコンの電源を確保することをあきらめたが、あとになってうまく実現しているサイトを見つけた。
電子マスカットというサイトのこの記事だ。思いつきでいきなり作ってあきらめるより先に、ネットをよく調べるべきであった。少しのことにも先達はあらまほしきこと也(^-^;
この記事ではトランスレスで5V20mA程度確保できるということなので、フォトトライアックの駆動も十分できる。次回はこのやり方を試してみたい。

ところで、元記事では、規定時間(10時間)経つと自動的にオフし、Deep sleepに入って、翌日の同じ時間にsleepタイマーによって自動的にオンする、というプログラムにしていたが、Deep sleep時のクロックは内部のRCクロックであるため誤差が大きく、実際に使ってみると一日で数分の狂いが生じる。
シングルコアのESP32を、WIFIを使わずにwhileループで止めていても消費電流は微々たるものなので、sleepには入れずに、時間が満ちるまでmillis()で数えながらwhileで回して待って、前回のオンから24時間後にリセットしてまたオンするというプログラムに変更した。millis()はメインクロックを基準としているため高精度で、10日間連続稼働で5秒以内の誤差だった。なので、夏のあいだは完全に手放しにできるが、リキッド切れにはくれぐれも注意したい(^-^;

【変更後のプログラム】

/*
 *         Earthmat Timer Ver 0.01
 *         Copyright 2025 Nobutsugu Higo
 *         2025/07/17
 *
 * 20250717 スリープは時間が不正確なので、スリープしないでmillis()で時間待ちに変更
*/

uint32_t duration_ms;

void setup() {
  Serial.begin(115200);
  pinMode(33,OUTPUT);//HでAC100V オン
  pinMode(19,OUTPUT);//Test LED
  delay(100);

  Serial.println("Hello (^-^)/");

  uint16_t on_duration_minutes=600;//アースノーマット稼働時間設定 10時間=600分
  //uint16_t on_duration_minutes=1;//テスト用 1分
  duration_ms=on_duration_minutes*60*1000;//稼働時間をmsで計算
  //esp_sleep_enable_timer_wakeup((1440-on_duration_minutes) * 60 * 1000000LL);//24時間-稼働時間(uS)

  digitalWrite(33,1);//アースノーマット(AC100V出力)をオン

}

void loop() {
 
  while(duration_ms > millis()){//目標時間が経過するまでループ
    delay(500);
    Serial.print("duration=");
    Serial.println(duration_ms);
    Serial.print("millis()=");
    Serial.println(millis());
    digitalWrite(19,!digitalRead(19));//動作中はLED点滅    
  }
 
  digitalWrite(33,0);//目標時間が経過したのでAC100V オフ
  digitalWrite(19,0);//LED OFF

  while(86400000 > millis()){//24h=86400000ms
  //while(120000 > millis()){//test 2min=2000ms
    delay(1000);
    Serial.print("CountDown");
    Serial.println(86400000-millis());
    //Serial.println(120000-millis());
    digitalWrite(19,!digitalRead(19));
  }
  ESP.restart();
}

*******************ここまで


【20250716元記事】

去年まで煙の出る渦巻きタイプの蚊取り線香を使っていたが、いろいろと面倒なので、とうとうアースノーマットを導入した。
5月のGWあたりからぼちぼち蚊が出始めたので、60日ボトルと本体のセットをアマゾンで970円で購入して使っていた。

この2ヶ月ほど使ってみて、ときどき朝に切り忘れて一日中焚きっぱなしということがあって、リキッドが1日分無駄になったと思うとちょっとくやしい、ということが何度かあった。家の中に出るイエカは通常夜間のみに出る。いっぽうヤブにいるヤブ蚊は日中も出るが、部屋の中に入ることは、都会ではほとんどない。よって、通常は部屋で蚊の対策をするのは夜間だけで十分なのだ。

なので、ちゃちゃっとマイコンを使ってアースノーマット専用のタイマーが作れないか検討した。マイコンでタイマーを組んで、ACをON/OFFするトライアックを積んでやればよい。

問題となるのはマイコンの電源で、まじめにやろうとするとトランスかスイッチング電源か、あるいはACアダプタを使って供給することになる。
ACアダプタを使うのが簡単だが、ACアダプタとアースノーマット用にコンセントを2口使うのは、どうにもスマートではない。
電池駆動もなくはないが、電池切れのことを考えると、どうも気乗りがしない。

そこで、図1のような超手抜き回路でマイコン用の電源を確保できないか検討した。クラスの学級委員の女子が見たら激怒しそうな不真面目な回路だ(^-^;

Tenuki
図1.超手抜き電源回路
LEDの順方向電圧2つ分でスーパーキャパシタに充電して使う。


これならAC100Vを引き込んでいるので、アースノーマット用の電源もここから引けて、コンセントは1口で済む。
出力電圧は3.6~4V程度で、スーパーキャパシタに貯めておけば、低消費なマイコンなら十分動かせるだろう。

さっそく製作にとりかかったが、いやまてよ、マイコンからトライアックを駆動するためのフォトトライアックの一次側の電流は、たしか10mAくらい必要じゃなかったっけ!?
ここであえなく、超手抜き電源方式は頓挫してしまった……やっぱりまじめに生きないとダメだ……(-_-)

数日間放ったらかしになっていたが、タブレットを眺めながらごろごろしていたら、とてもよさそうな小型電源基板を見つけた。AC100入力で5V700mAが出せて、大きさは切手ほど。これこれ、こういうのでいいんだよ!写真1。

Wxdc12003
写真1.超小型スイッチング電源 WX-DC12003
アマゾンで5個999円だった。アリエクだと送料を入れても1個130円くらいで買える。


これでいちばんの懸案であったマイコン電源確保の問題が片付いたので、仕切り直して製作に入った。
使う部品は、マイコンにはこのあいだ秋月で10個1000円で投げ売りしていたので20個買ってきたESP32-SOLO-1、フォトトライアックは以前に秋月の福袋に大量に入っていたMOC3021、トライアックは以前中華温調はんだごてに使われていておもしろそうだったのでアリエクで10個106円で買っておいたBT136-600E。
もうほとんど冷蔵庫にあるあり合わせ材料で適当に何か作るというノリだ。

回路は図2のとおり。

Earthtimer_sch_20250715121901

図2.アースノーマットタイマー回路図    この回路のAC Outletにアースノーマット本体を接続する。
※1 ESP32のTx、RxにUSB-シリアルを接続してPCと通信してプログラムしますが、この回路では省略しています。
※2 プログラム書き込み時はIO0をLにしてリセットしますが、この回路では省略しています。

実際に作ってみると、スイッチング電源のGNDが高域で安定せず、マイコンが誤動作してまともに動かないので、ノイズとGNDの安定のための対策としてC4(Yコンデンサ)を入れた。今回は部品箱に入っていた0.01uF/3kVの高耐圧セラミックコンデンサを使用したが、通常はもう少し低い容量のもの(1000pF~4700pF)がいいと思う。
※Yコンデンサとは、GNDの高周波基準の安定化やノイズ対策としてACラインと2次のGNDの間に入れるコンデンサのことで、IEC規格でclass Yとして分類されているものです。

あとはプログラムをどうするか、ということになるが、ESP32-SOLO-1はいわずと知れたWIFIマイコンで、WIFIのみならずBluetoothも使える。そうするとたとえば、WIFIに接続しておいてネットワーク経由でNTPを使って正確な時間管理ができたり、WIFI経由でパソコンやタブレットからアースノーマットを制御したり、あるいはオン時間、オフ時間の設定をパソコンやタブレットから行ったり、果てはアレクサに声でON/OFFをお願いするとか、ありとあらゆることができる。

今回のきっかけは、そもそもアースノーマットを切り忘れて、リキッドが無駄になるのが惜しい!ということだったので、ON/OFFの制御だけ夏のあいだ確実にやってもらえればそれでいい。

それなら毎日夜7時に自動的に電源オンして、よくあさ5時に自動的にオフしてくれればいいか?
こうなると、ほとんど手放しになるので、すぐにアースノーマットの存在を忘れそうだ。そうすると2ヶ月後にリキッドが切れているのにも気付かず、ある日の夜中に蚊の猛攻で起こされることになる……(^-^;

そういうわけで、なにもかも自動化するというのも考えものだ。
結局、毎晩自分でボタンを押してオンすると、10時間後に自動的に電源をオフする、という最小限の機能とすることにした。
それならばESP32-SOLO-1である必要はなく、もっと安いCH32V003あたりでもいいかもしれない。なにしろポートをひとつ(LEDも含めると2つ)オン・オフするだけなのだから。

arduinoで書いたコードは次のとおり。
リセットボタンを押すと冒頭からプログラムを開始しアースノーマットをオンして、10時間経過するとアースノーマットをOFFしてスリープに入る。次にまたアースノーマットを動かしたいときはリセットボタンを押す。

/*
 *         EarthNomat Timer Ver 0.00
 *         Copyright 2025 Nobutsugu Higo
 *         2025/07/15
*/

uint32_t duration_ms;

void setup() {
  Serial.begin(115200);
  pinMode(33,OUTPUT);//HでAC100V オン
  pinMode(19,OUTPUT);//Test LED
  delay(100);

  Serial.println("Hello (^-^)/");

  uint16_t on_duration_minutes=600;//アースノーマット稼働時間設定 10時間=600分
  duration_ms=on_duration_minutes*60*1000;//稼働時間をmsで計算
  esp_sleep_enable_timer_wakeup((1440-on_duration_minutes) * 60 * 1000000LL);//24時間-稼働時間(uS)

  digitalWrite(33,1);//アースノーマット(AC100V出力)をオン

}

void loop() {
 
  while(duration_ms > millis()){//目標時間が経過するまでループ
    delay(500);
    Serial.print("duration=");
    Serial.println(duration_ms);
    Serial.print("millis()=");
    Serial.println(millis());
    digitalWrite(19,!digitalRead(19));//動作中はLED点滅
   
  }
 
  digitalWrite(33,0);//目標時間が経過したのでAC100V オフ
  digitalWrite(19,0);//LED OFF

  delay(1);

  esp_deep_sleep_start();//Deep Sleepに入る
  Serial.println("zzz");// ここは実行されない
  delay(1000);// ここは実行されない
  ESP.restart();// ここは実行されない
}
///////////////////////////////////ここまで////////////////////////////////////////
 
 
このコードではアースノーマットの稼働時間を10時間(600分)として設定している。これは必要に応じて変更すればよい。
アースノーマット稼働中は、LEDを1秒ごとに点滅している。
稼働時間が経過したら、アースノーマット用の電源供給を停止して、スリープに入る。スリープ時間は(24時間ー稼働時間)としているので、
放っておいても、翌日の同じ時間にアースノーマットが稼働し始めるが、これはあくまでも保険的機能で、稼働開始時は毎日自分でボタンを押すことにしたい。
また、
esp_deep_sleep_start();
のあとにもコードがあり、最終行で
ESP.restart();
としているが、実際はesp_deep_sleep_start()よりあとのコードはすべて実行されないので意味はない。スリープから目覚めたあとはリセットと同じ扱いとなることがわかるように、あえて書いておいた。

なお、ESP32-SOLO-1はESP32のシングルコア版で、arduinoで使うにはコンパイラを変更する必要がある。
そのあたりは過去記事ESP32-SOLO-1を使うを参照してほしい。もちろん面倒のない普通のESP32も使えるし、ESP32に限らず、arduinoで使えるマイコンならほとんど使えると思う。arduinoマイコンでDeepsleepがない場合は、代わりにwhile(1)として無限ループで止めておいて、次回はリセットボタンを押して起動ということにするのが最も簡単に済むと思う。

実際の製作は、タッパウェアに適当に詰め込んで、ESP32の基板はビニル袋に入れて絶縁し、そのビニル袋が適度にクッションになって中身が動かないように工作した(写真2~5)。

20250712tupperware1
写真2.配線の様子


20250712tupperware2
写真3.基板をビニル袋でくるんで絶縁する


20250712tupperware3
写真4.ビニルがクッションになるようにして詰め込んでフタを閉める
フタには起動用のリセットスイッチ。


Earthtimer
写真5.アースノーマットと今回製作したタイマー


これで今年の夏は快適に過ごせそうだ(^-^)

 

| | | コメント (0)

2025年7月11日 (金)

無帰還A級電流駆動パワーアンプ(基板頒布あり)

Overview_20250711093601
写真1.製作した無帰還A級電流駆動アンプ


このブログで、無帰還電流駆動パワーアンプの製作に着手したのは2015年で、当時ちょうど手作りアンプの会の無帰還アンプ大会があり出品しました。その後改良を重ね2016年にはほぼ完成形になり、とても気に入っていまだに使っているアンプです。

このアンプはもともとAuratone 5Cを鳴らすことを主な目的としたアンプです。
Auratone 5Cはアメリカでスタジオ用のニアフィールドモニタとして設計されたキューブ型のフルレンジスピーカーで、とてもニュートラルで自然な音がする反面、低域と高域が少し寂しい感じがするため、電流駆動をして低音、高音をすこし賑やかにすると、小音量でも満足な音質で聴くことができます。

当時、旧金田式のパワーアンプを電流駆動に改造してAuratoneを聴いていましたが、これを無帰還アンプで実現できないか?と思ったのが開発のきっかけでした。

DC(直結)構成にしたいので、スピーカーの保護回路は必須なのですが、電流駆動アンプの場合は出力インピーダンスが高いため、スピーカー出力をリレーで短絡してスピーカーを保護するという方法が使えます。この方法により、保護回路のリレー接点が音に影響を与えることはありません。しかしながら、DC電圧を検出してスピーカー出力を短絡した瞬間、スピーカー出力端は0Vとなるため、保護回路が解除されると、ふたたびDC電圧が出力されて保護回路発動……という事態が繰り返され、これでは保護回路の意味がなくなってしまいます。
また、スピーカーの保護が働いたということはアンプの故障の可能性もあり、その状態でスピーカー出力を短絡すれば、最悪の場合アンプが火を噴くという可能性もなくはありません。

そこで本機は、スピーカー短絡と同時にAC電源を遮断し、電源を入れ直さない限り復帰しない、というめずらしい保護回路を搭載しています。

2025年現在、もうすでに8年間使っていて、基板を起こそうと何度か考えたのですが、保護回路は左右共通で、AC遮断用のSSR(ソリッドステートリレー)基板を含めると、
アンプ基板(L)、アンプ基板(R)、保護回路基板、SSR基板
と、基板の構成が複雑になるため、なにかよいやり方はないものか……とその都度先送りになり、8年の歳月が……(^-^;

今回思いついたのは、おそらくこのアンプでマルチシステムを組む可能性は低く、それならばL,Rの2チャンネルと保護回路をすべて搭載した基板を1枚起こせば、全体構成はとてもシンプルにできるということで、ついにプリント基板化に着手しました。


【電流アンプの音圧特性】
電流アンプでスピーカーを駆動すると、具体的にはどのような特性になるでしょうか。
①旧金田式パワーアンプ、②無帰還電圧アンプ、③無帰還電流アンプのそれぞれでAuratoneを鳴らしたときの音圧特性を図1に示します。
これは2016年に行った測定結果の再掲です。

20160424
図1.各アンプ駆動時のAuratone音圧特性


これはminiDSP UMIK-1を使って、Auratoneの軸上10㎝の距離で測定した音圧特性で、旧金田式アンプは1990年頃作った金田式アンプ、無帰還電圧アンプは現在頒布中のPAV-001同等品、そして無帰還電流駆動アンプは今回取り上げているアンプです。
旧金田式アンプでの音圧特性を基準としてみると、無帰還電圧アンプでは低域、高域の肩の部分が、ほんの僅かに持ち上がっています。
無帰還電流アンプでは200Hz近傍がはっきり持ち上がっていて、4kHz付近から上も少しずつ持ち上がっています。これがまさに電流駆動アンプの特徴で、スピーカーのインピーダンス特性に沿った音圧特性になります。
この結果、低域と高域が増強されて、小音量でも賑やかな印象の鳴り方になります。

【アンプ回路の説明】
図2にアンプ部分の回路を示します。

Camp_sch
図2.電流アンプ回路


全体の大きな動作としては、まずFET  Q1、Q2のゼロバイアス回路で入力信号を受けて、Q5、Q6および4つのダイオードで、次段のバイアス電流を決めるための電圧を発生し、入力信号と合成します。
次の段のQ7、Q8は前段でバイアス電圧を重畳した信号を受けて電流に変換し、その電流をカレントミラーの基準側(Q9、Q10)に渡します。
カレントミラーの基準側は、およそ10mAを中心とした音声信号電流が流れ、これをカレントミラーのミラー側(終段)に渡しますが、終段はA級アンプとしておよそ1Aのアイドリング電流とするため、カレントミラーの電流比を100倍とするためにエミッタ抵抗を0.47Ωとしています。
通常のカレントミラー回路で、基準側が10mAとしてミラー側が1Aということは成り立つでしょうか?トランジスタのHfeが100程度とすると、ミラー側のベース電流が10mA必要となり、破綻してしまいます。これを解決するために考案したのがGM回路です。

この回路の+側のカレントミラー(Q9、Q11)に着目すると、この回路ではカレントミラー出力側のQ11にQ13が接続されています。これによって、Q11とQ13の組み合わせとしてのVbeはQ11単体に等しく、HfeはQ11とQ13それぞれのHfeの積に匹敵する、ひとつのトランジスタとみなすことができて、電流比100倍、出力側電流が1A超でもカレントミラーとして動作します。
これはQ11がQ13を「ランプの精」のように使って大きな仕事をしていることから、"Genie of the Mirror"(鏡の精)、略してGM回路と名付けました。

また当初、終段のアイドリング電流が熱暴走しないようにQ5とQ13およびQ6とQ14を熱結合していましたが、今回新たな検証によってこれらの熱結合が不要であることがわかりました。
この回路では終段のアイドリング電流を決めているのがVbeではなく、ベース電流Ibであるため、温度上昇によって終段Q13のVbeが下がったとしてもIbには影響がありません。また、温度上昇によってQ13のHfeが上昇したとしても、ミラー側のエミッタ抵抗R13に電圧降下が生じ、カレントミラーの動作によって電流が保証されます。
よって、いずれのデバイスも終段トランジスタに対する熱結合は不要で、すっきりした仕上がりになります。

本機のA級最大出力は、負荷8Ω、アイドリング電流1.25Aのときにおよそ25Wです。


【保護回路の説明】
保護回路を図3に示します。


Protect_sch
図3.保護回路


保護回路は左右それぞれのスピーカー出力(Lch Out、Rch Out)のDC電圧を監視して、DCが検出された場合はリレーK1でスピーカー出力をGNDに短絡してスピーカーを保護するとともに、SSR_In+、SSR_In-出力をOFFすることで、SSR(ソリッドステートリレー)でAC100V電源入力を遮断します。AC100Vが遮断されると、次に電源が投入されるまで、自動的には復帰しません。
この方式を実現するために、電源スイッチはモメンタリーとなっていて、一瞬AC100VをオンするとSSRが起動してオン状態を継続し、電源を切る場合は一瞬SSRをオフすることでSSRをオンしていた電源も遮断され、全体としてオフします。

本機の全体回路はダウンロードしてご覧ください。

ダウンロード - pac100sch.pdf


【本機の諸特性】
本機の諸特性は以下のとおりです。

図3,図4にひずみ率特性を示します。THD+Nはボトムで0.03~0.04%程度、10Wで最大0.3%程度でした。今回の製作例ではスイッチング電源との距離が近く、とくに左チャンネルに50Hz系のノイズが重畳したため、左チャンネルの方が若干特性がわるくなっています。

Dist_l  Dist_r
図3.ひずみ率特性(Lch)                     図4.ひずみ率特性(Rch)


周波数特性は左右差がなかったので、代表して左チャンネルの特性を図5に示します。測定条件は、入力1Vp-p、出力負荷8Ωです。


Gainfreq
図5.ゲイン周波数特性  -3dB特性はDC~約450kHz


出力インピーダンスの測定結果を表1に示します。測定は、100Hzと1kHzは負荷1kΩと500ΩでのON/OFF法で連立計算、10kHzは同じく240Ωと120Ωの連立計算で行いました。


表1.出力インピーダンス実測値
Impedance_20250711132101


プロテクト動作電圧を表2に示します。これは無帰還電圧アンプとほぼ同じ結果です。


表2.プロテクト動作電圧
Protect_v



このアンプは自室での普段使いのアンプとして、Auratone 5CとビクターのSX-100(10㎝フルレンジ+バスレフ)を直列にして接続して聴いています。シンプルですが比較的小音量でもメリハリのある音質が得られて、たいへん満足しています。


【基板頒布情報】
生基板1枚(ステレオ分、保護回路搭載)と、製作説明書と回路図、部品表、製作例等の資料、LTSPICEのシミュレーションファイルをセットで1700円(税・送料込み)で頒布します。自力で部品収集、部品選別、調整できる方が対象です。

ご希望の方は表題に「無帰還電流パワーアンプ基板頒布」、本文にお名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。

回路図、部品表、製作マニュアル等

LTSPICEシミュレーションファイル

| | | コメント (0)

2025年7月 6日 (日)

FET入力無帰還A級パワーアンプ(基板頒布あり)

Pcb
写真1.新たに開発したFET入力無帰還パワーアンプ基板


無帰還A級25Wパワーアンプはこのブログのベストセラーで、多くの方に使っていただいています。ありがとうございます(^-^)

先月、無帰還ヘッドホンアンプを2機種発表しましたが、試聴会を実施したところ、FET入力とバイポーラ入力で好みが分かれることがわかりました。無帰還A級25Wパワーアンプはバイポーラのダイヤモンドバッファ入力としていますが、これをFET入力とした場合に音の傾向が変わり、聞く人の好みによって選択肢を提供できるのではないかと思い、今回新たに、FET入力タイプの無帰還A級アンプを開発しました。

今回は、入力回路をバイポーラのダイヤモンドバッファからJFETのゼロバイアスバッファに変更し、それに伴い、入力デバイスのバイアス電流のバランス調整が不要になったため、調整が簡素化でき、また従来回路では出力オフセット調整がゲインに影響を与えるため、部品のペア取りがシビアでしたが、今回はオフセット調整がゲインに影響しないため、再現性がより高くなりました。

今回開発したアンプ基板の写真を写真1に、回路図を図1に示します。

Pav100_schematic
図1.FET入力無帰還パワーアンプ回路図


今回は入力回路の変更と、それに伴う定数変更を行いましたが、保護回路は従来通りで、基板の寸法も同一なため、すでに従来の無帰還A級25Wパワーアンプをお使いの方は、放熱板に取り付けたパワートランジスタと熱結合デバイスはそのまま、基板のみ交換することで試していただくことができます。

今回当方で試作した結果は以下のとおりです。
シャーシおよび電源は、従来と同じものを使用しました。組み立てたアンプを写真2に示します。


Overview_20250706102601
写真2.FET入力無帰還A級パワーアンプ


写真2の状態で測定した諸特性は以下のとおりです。

図2、図3にひずみ率特性を示します。THD+Nはボトムで0.03%程度、全体でも10Wでおおむね0.2%以下でした。

Distl   Distr_20250706114501
図2.ひずみ率特性(Lch)                 図3.ひずみ率特性(Rch)



周波数特性は左右差がなかったので、代表して左チャンネルの特性を図4に示します。

Freql
図4.ゲイン周波数特性 -3dB特性はDC~約250kHz


出力インピーダンスの測定結果を表1に示します。測定は3.1Ω負荷によるON/OFF法で行いました。これも左右で差がありませんでした。

表1.出力インピーダンス実測値
Imp



プロテクトの動作電圧を表2に示します。これは従来の無帰還A級25Wパワーアンプとほぼ同等の結果です。

表2.プロテクト動作電圧
Prtct



以上により、全体の特性は従来の無帰還A級25Wパワーアンプとほぼ同等となりました。

この1週間ほど、実際に音楽を聴いていますが、ほんの僅かながら、従来アンプに比べて音質が柔らかく繊細になった印象があります。これは好みによって評価が分かれるところだと思いますが、製作者としては今回のアンプの音質はとても気に入っています。

【基板頒布情報】
生基板2枚ひと組(ステレオ分)と、製作説明書と回路図、部品表等の資料、製作例、LTSPICEのシミュレーションファイルをセットで2600円(税・送料込み)で頒布します。自力で部品収集、部品選別、調整できる方が対象です。

ご希望の方は表題に「FET入力無帰還電圧アンプ基板頒布」、本文にお名前、送付先郵便番号、ご住所、電話番号をお書きのうえ、

dj_higo_officialアットhigon.sakura.ne.jp
(アットを@に替えてお送りください)

までメールをお送りください。

代金の振込先のご案内メールをお送りします。入金が確認でき次第発送します。

回路図、部品表、製作マニュアル等

LTSPICEシミュレーションファイル



| | | コメント (0)

« 2025年6月 | トップページ | 2025年9月 »