エレクトロニクス工作室
No.149 マイクコンプレッサの実験
1.はじめに
マイクコンプレッサは、今までNo.21のように専用のICであるTA2011Sを使っていました。このICはゲインを可変して出力レベルを一定にするものです。性能は良いのですが、瞬間的な信号に対してはレベルオーバーを防ぐ事ができません。また、特性を自在に操る事ができませんし、変調度を上げるような動きではありません。クシャミのような過大音が入ると、暫くの間は出力が下がってしまいます。使いやすいICですが、平均変調度を上げたい、パンチを効かせたい、などという目的とは少し違います。
そこで今回はPSoC(Programmable System-on-Chip)を用いて、写真1のようなデジタル処理のコンプレッサを作ってみました。圧縮して過変調を防ぎ、平均の変調度を上げるという動きになります。発展性は大いにあると思いますが、まだまだ実験段階で完成度は高くありません。そのため今回の題は、「マイクコンプレッサの実験」としています。私が知らないだけかもしれませんが、アマチュアレベルでのデジタル制御のコンプレッサは見たことがありません。なお、No.132と同様にCQ出版の2冊の書籍がバイブルになっています。
写真1 デジタル処理のマイクコンプレッサで、トランシーバのマイク端子とマイク間に入れるように作っています。
2.PSoC
PSoCについての詳しい説明は他の書籍等に譲りますが、アナログとデジタルの回路、それにCPUが詰まっているICです。内部の回路の接続などの設定は自分で行う事ができ、またCPUのソフトも入れる事ができます。今回のマイクコンプレッサではA/D変換とD/A変換を用い、その間をCPUで制御してレベルの制御をしようというものです。
内部の設定は図1のように行います。まず入力のアンプ2段で16×48=768倍しています。仮にマイク入力に3mVが入ったとすると、2.3Vとなります。ピークからピークだと6.4Vになり、入力の半固定VRで調整して下げる必要があります。電源が5Vですので、最大限にスイングできるように調整して、S/Nが悪化しないようにします。これを8ビットでA/D変換し、CPUに設定したソフトのテーブルを用いて圧縮してD/A変換で音声に戻します。高域に発生するノイズを減らす目的でLPFを通し、出力は半固定VRで調整して入力と同じ3mVに戻します。LPFは3kHzとしています。SSB等でクリスタルフィルタを通す場合はこれで良いと思いますが、AMやDSBでフィルタが無い場合は不十分です。PSoCの内部だけで十分なフィルタは難しいようで、トランシーバ本体で何らかの対策が必要になります。
図1 PSoC内部の設定です。(※クリックすると画像が拡大します。)
圧縮の方法はこのように簡単ですが、デジタルの処理方法では苦労をしました。PSoC初心者ですので、間違いは大目に見て下さい。内部の設定にしても、もっと効率的な接続があるかと思います。
3.回路
図2のような回路になります。写真2のように、ブレッドボード上で動作を事前に確認しています。ほぼICの入出力と電源だけで、ハードウェアよりもPSoCの設定が重要となります。A/D変換やD/A変換はもちろんですが、アンプとフィルタもPSoCに内蔵されていますので、回路的にはPSoCの入出力程度しかありません。あとはマイク端子にバイアスをかける抵抗と、マイク端子の2ピンはトランシーバから出てくる8Vを5Vにするレギュレータです。もちろん5ピンのスタンバイ信号はスルーします。
図2 回路図になります。(※クリックすると画像が拡大します。)
写真2 このように、ブレッドボードで実験を重ねました。
私が教科書としているCQ出版の「改訂はじめてのPSoCマイコン」では、入力のバイアス回路は内部で電圧を作っています。これを試したのですが、波形の上下のバランスが完全には合いません。内部でゲインを最大に上げて、レールtoレールで最大限に使おうとしているせいでしょう。結局半固定VRを使うという昔ながらの方法で調整しています。これが結構シビアな調整になりますので、多回転でないと調整が困難です。もちろん、ハード的な信頼性としては固定抵抗の方が優れています。本当はビット数を多くして、余裕を持って動かしたいところです。
4.作成
極めて単純な回路ですが、図3のような実装図を描いてから作りました。ユニバーサル基板はシールド付きのもので、他で使った後の切れ端です。これで十分なサイズです。
図3 アース付きの基板を使った実装図です。
PSoCの設定変更が簡単にできるような作り方としています。扱うのはAF信号ですが、外部からのRF信号の回り込みを考え、シールド付きのユニバーサル基板を使いました。ケースも金属性を使うべきだと思いますが、ケースはタカチ電機工業のプラスチックケースSW-75Bを用いました。これをマイクとトランシーバの中間に入れるように、写真3のように穴あけをしました。これにマイクのコネクタを取り付けて、基板を入れて出力のマイクプラグを付けます。内部の様子が写真4と写真5になります。写真6のように完成させました。基板はネジ止めする余裕がないのでホットボンドで固定しています。また、この方がネジの頭が出ずにスマートにできますし、剥がす事も簡単ですので修正もできます。ISSP端子を出してありますので、MiniProgによるソフト変更は容易です。
写真3 SW-75Bに穴あけをしたところです。
写真4 修正も多かった部品面の様子です。
写真5 ハンダ面側の様子です。
写真6 完成した内部です。
このPSoC設定については、一般的なソフトでないのでBEACONのページには置けません。私のHPのアドレスにメールを頂ければ対応します。
5.調整
一番大事になってくるのが、入力のバイアスをかけるVRです。極めてシビアな調整になりますので、慎重にどこが最良のポイントになるのか探る必要があります。まずは入力と出力のVRを回して、そして上下が対称になる位置にします。入力信号としてはサイン波を入れて、出力はオシロスコープで観測します。人の声などでは、まず正しい調整はできません。
入出力の特性を測ってみたところ、測定結果1のようになりました。普段使うマイクの出力レベルは、No.109で測ったように数mV程度です。入力のVRは、かなり右に回したあたりとなります。この結果だとダラダラと上昇するように見えますが、ピークが伸びるのではありません。ピークより低い値が上昇するため、平均電圧として上昇するものです。
測定結果1 入出力の特性です。このようにコンプレッサしています。
出力のVRは飽和するレベルを送信機の100%変調のレベルに合わせます。もちろん送信機にもよります。ALCのない自作機などでは多少低めにするべきでしょうし、メーカー製トランシーバならALCに任せられますので、もう少し高くても良いでしょう。いずれにしても、オシロスコープで送信波形を観測しながら調整する必要があります。時間とカンだけでは難しいと思います。
6.使用感
まだトランシーバに使ってみようという段階ではありません。機能を詰め込めれば良いというものでもありませんが、もう少し熟成してから考えてみようと思います。
動作を試してみると、内部で発生するノイズが気になります。このまま自作機へ接続しても問題になるほどのノイズではありませんが、内部でレベル調整を行っているような機器の場合、更にノイズレベルが上昇する可能性があります。意味が無いどころか、S/Nが悪化して逆効果となる場合もありそうです。ノイズ対策については今後の検討課題でしょう。何しろ8ビットですので255ステップしかありません。1ステップがノイズレベルとすると、S/Nは50dB程度となります。そのような意味で、もっとビット数を多くする方が良いのでしょう。いずれにしても、レベルを正しく合わせる事が、S/Nを良くして正しくコンプレッサをかけるコツです。
また、切換えスイッチを付けて、コンプレッサ曲線を切り替える方法もあると思います。完全なリニアから本機程度の圧縮までを何段階かに切り替える等、アイデアはいくらでも出てきますが、まだまだ道半ばです。