スペアナ制御ツール

先日,アンリツのスペアナMS2661Aを中古で入手した.
9kHz~3GHzの帯域で,RBWの最小は30Hz(オプション付)と
性能的には納得して購入したが,測定データの保存方法で悩んでしまった.

20181010_061554

メモリインターフェースオプションが付いていて,
PCカードメモリにデータを保存できるようだが,
今時PCカードメモリなど入手困難なので,SD用PCカードアダプタを使ってみた.

結果は残念ながら,”メモリタイプが異なる”とのメッセージが出てNGだった.
このスペアナが作られた時代にはSDは無かったのかもしれない.

仕方がないので,GPIBかRS232Cポート経由で,
データをPCに転送して表示・保存することにした.
ただ,プログラムを作る必要があるので少々面倒だ.
(なので,できればメモリインターフェースを使いたかった)

測定器といえばGPIBというところだが,
PC側にもGPIBインターフェースが必要になり,面倒なのでRS232Cを使うことにした.
ただ,通信速度が9600bps と,今時としてはかなり遅い感じがするのは否めない.

簡単なプログラムを作って試したところ,うまい具合にデータの取得・表示ができた.

42641369_1386471288151860_1717727983411658752_n

42727699_1386471231485199_1732282193058725888_n

必要な人は他にはおそらくいないと思うが,Windows10で動作するMS2661A用の
データキャプチャソフトをこちらに置いておく (  MS2661A.exe ) 

センター,スパン,スタート,ストップ周波数に関しては,
このソフトからリモートコントロールできる.
通信速度が遅いので,データの取得には  3, 4秒かかる.
これが速ければ,リアルタイムでPCに波形表示ができるのだが・・・

FT817ND   433MHz とその第2高調波
FT817_430M

433MHz拡大
FT817_433.000MHz

 

FIRフィルタ

前回AF PSNを複素係数のFIRフィルタで作成したが,その係数を変えれば任意の周波数特性を持ったフィルタが作れることはいうまでもなく,AF PSN はその一例にすぎない.

FIRフィルタの係数は,周波数特性を逆フーリエ変換すれば得られるので手間はかからない.とはいえ手計算できるものでもないので,AF PSN 作成の際に,係数を求めるために作ったツールをここにUPしておいた(Calc_Coeff_of_CPLXBPF.m).

これは,拡張子mが示すようにMATLAB,GNU Octave 上で動くスクリプトである.
GNU Octave はフリーウェアでこちらから入手でき,Windows の場合,octave-4.4.0-w64_1-installer.exe ならインストールは容易かと思う.

スクリプト内でパスバンドの周波数を書き換えて実行すれば,その特性を実現する係数を定義するヘッダファイルが自動生成される.
これをincludeしてコンパイルすれば,設定どおりのパスバンドを持ったBPFが実現できる.
複素係数フィルタであるが,実数部のみ使用すれば普通のフィルタと同じである.

 

さて,前回製作したAF PSNであるが,パスバンド内のリップルとパスバンド外の減衰特性が気になった.周波数特性を求めたところ下図のようになった.

Rect

理由は,窓関数を使用していなかった(=矩形窓)ためである.
そこで,フィルタ係数に窓関数を掛けてみた.
(窓関数はスクリプト内で指定できるようにしてある)

 

Hann 窓
han

Hamming 窓
hamming

Blackman 窓
blackman

Bartlett 窓
bartlett

使用する窓関数としては Hamming か Blackman になるだろう.
Blackman のほうが減衰特性がなだらかであるが,それでも十分急峻な減衰特性なのでこれがよいと思う.
(ヘッダファイルとCソースファイルを更新しているので,日付を確認の上ご利用願います)

AF PSN

PSN方式でSSBを発生させるためのAF PSNを試作した.01
PSN方式のSSBジェネレータは上図のような構成であるが,大概AF PSNの実現がネックとなる.

アナログ回路でAF PSNを実現する方法としては,ナガード型PSN,多段のオールパスフィルタ,PPSNなどが知られている.
これらは,性能が十分でなかったり,回路規模が大きい,部品定数の精度が要求される,など少々難しいところがあり,さらにアナログであるが故,環境(周囲温度など)の変化による特性の変化にも気を付ける必要がある.

そこで今回はAF PSN をディジタル信号処理で実現することにした.これは近年よく見かけるSDRと同様なものである.

まず,SSBの発生方法から確認していく.SSBの生成方法はシンプルに考えれば下図のとおりである.
02
周波数シフトは,AF PSNの後の直交変調器で行われるので,
結局AF PSNとは,AF信号の負(あるいは正)の周波数成分を除去するものである.

ならばバンドパスフィルタ(BPF)で実現できそうだが,通常フィルタの周波数特性は,下図の上段に示すように,正の周波数領域と負の領域で対称なものしか実現できない(実係数フィルタの場合).

03

しかしながら,フィルタの係数を複素数にすれば(複素係数フィルタ),上図下段に示すような非対称な周波数特性をもったフィルタが実現できる.

複素係数フィルタを用い,信号を複素数表現すれば,SSB生成の流れは下図のようになる.
04

今回はこの複素係数フィルタを,dsPIC33FJ64GP802 を用いディジタル信号処理で実現してみた.下図のように,複素係数フィルタの出力の実部がAF PSNの0°出力,虚部が90° 出力に相当する.
05

 

複素係数フィルタの構成は,512Tap FIR フィルタとした.
06

 

フィルタの周波数特性(設計目標)は下図のとおり.
+300Hz~+3kHzのバンドパスで,負の領域はすべて阻止する.
Fres_cmplx

 

これを逆フーリエ変換し,FIRフィルタの係数を求めた.
サンプリング周波数は,使用するdsPICの性能により 約10kHz に設定した.

フィルタ係数(実部:R0 – R511)
FirCoeff_re

フィルタ係数(虚部:Q0 – Q511)FirCoeff_im

複素係数フィルタのプログラムのソースコードを,こちらに置いておく.
dsPIC周辺の接続は下図のとおり.07

 

動作確認の結果を以下にまとめておく.

20180706_071500 dsPIC

入力200Hz
f0200

入力300Hz
f0300

入力1000Hz
f1000

入力2000Hz
f2000

入力2900Hz
f2900.jpg

入力3000Hz
f3000

これらの結果を見る限りは使い物になりそうな感じがする.
部品選別や調整などなしに,プログラムを書き込みさえすればこれと全く同じ結果が得られる.
あとは実際にSSBジェネレータにしたときにどのような品質の信号になるか,確認が必要だろう.

ヤマハPortaSound PS3修理

3か所,音の出ない鍵盤があるとのことで修理を依頼された.
PS3は最も初期のポータサウンドの一つらしい.

20180602_112810

 

とりあえず開腹して,一枚目の基板を外した.
YAMAHAのオリジナルICを使用している.
年代を感じさせる作りで,ピッチの基準はLC発振のようだ.

20180602_094518

 

鍵盤下の基板を外したところ.

20180602_100253
音の出ない鍵盤に対応する接点をショートさせてみても,やはり音が出ない.
ということで接点不良ではなさそう.

 

該当する接点につながっているパターンをたどっていくと,電池の液漏れによるパターンの腐食があった.
調べてみると導通がない.音の出ない鍵盤に対応する接点はすべてこのラインにつながっているので,故障の原因はこれだろう.

20180602_102749

 

 

ということで,バイパス.
隣りのパターンも怪しかったので処置しておいた.

20180602_105935

 

これで音も出るようになり,修理完了.

ヘッドマイク

最近は中国製の安いヘッドマイクが購入できる.これらはほぼエレクトレットコンデンサマイクでバイアス電源が要る.
一方ミキサのXLRマイク入力には,大抵ファンタム電源が供給できるようになっているが,これはコンデンサマイク用でエレクトレットコンデンサマイクのバイアスには使えない.
また,エレクトレットコンデンサマイクの出力は不平衡なので,そのまま長く引き回すとノイズがのる.
そのようなわけで,ヘッドマイクをミキサのマイク入力(XLRコネクタ)につなぐためのアダプタケーブルを製作した.

20180508_230606~2
ケースの中身は,ファンタム電源からエレクトレットコンデンサマイク用のバイアスを作る分圧回路と不平衡を平衡に変換する差動アンプである.
試作ということで,ケースを3Dプリンタで作り空中配線で仕上げたが,結構面倒でユニバーサル基板を使えばよかったかもしれない.

20180508_232430~2

ケースにはベルトなどに引っ掛けるようクリップをつけた.
こういうのは3Dプリンタのおかげで簡単にできるのでありがたい.

VFO

カウンタ基板にはSi5351が実装できるようにすでにパターンを作っているので,
次にダイアルイメージ表示のVFOをやってみようと思う.
カウンタの場合はすべて受け身の動作でよかったが,
VFOとなると,システムから考え直さないといけない.

20180507_211713~2

周波数はエンコーダで設定するが,
周波数に応じて外部のバンドパスフィルタを切り替える,
などということも必要となるから,そういう制御信号をださないといけないし,
どの周波数のとき,どのフィルタを使うのか,
そこはユーザが設定できるようにしないといけない.
Si5351を使うなら,もちろんキャリア信号も出したいから,
その周波数の設定と,モードによっては受信時はオフに…
と,考えたらきりがない感じだが,少し時間をかけて検討しよう.

周波数カウンタ

周波数カウンタは,今では格安のキットなどもあるので,
今更…な感があるが,今回少々変わったものを作った.
とはいえ,実用性がよいとか,性能が向上したとかではない.

カウントした周波数を数値ではなく,
あえて読み取り精度が低下するダイアルイメージで表示する.
20180415_132715

昔,ラジオなど作るときに一番工作に苦労したのが周波数表示ダイアルだった.
今は,周波数カウンタやPLL,DDSといったデバイスがあるので
そのようなダイアルは不要であるが…
とはいえ,ディジタル表示よりもダイアルがいい,と思うことがときどきあり,
そのあたりが製作の動機である.

表示には2.4インチのTFTカラーLCDを使った.
CPUはPIC32MZEF.
SRAMが512kBあるので外付けメモリなしでOKだった.

 

表示のレイアウトなど,気分でいろいろと変られるように設定用のPCアプリもつくってみた.
”dcon.exe”

dconfg

以下は設定例.
sample00

完成品を¥10,000 で頒布しています.
お問い合わせのフォームからご連絡ください.