NanoVNA-V2(S-A-A-2) をいじってみました

おじさん工房 TOP へ      NanoVNA へ      NanoVNACapture へ      掲示板へ


■ページ履歴


■ソフト




2020/07/05

NanoVNA をしばらくいじっていましたが、高調波次数切り替え周波数でのおかしな動きに気付き、どうしても原因が分からないでいたところに NanoVNA-V2(S-A-A-2) が届きました。
早速、セミリジッドケーブルをオープンスタブとしてつないでみたところ、NanoVNA では不安定だった 1GHz 以上でもきれいな円を描いて、素性の良さを感じました。

いじってみたところ、良い点もいろいろありますが、問題点もありました。
まだ発売されて間もないためか、ソフトの作り込みがあまいようです。
回路図が公開されていないのも残念です。


・良い点
  1. 1GHz 以上でもちゃんと測定できる。
  2. 測定ポイント数を 201 まで変更できる。
  3. 測定中にグラフ表示がアップデートされる。
  4. ECAL である程度補正されているので CAL を取らなくてもラフに測定するなら OK。

・悪い点(ソフトバグ)
  1. 140MHz 以上では周波数分解能が 12kHz になりグラフがステップ状になる。
  2. CW で画面がスケール線で埋まる。
  3. SWEEP 開始点に変なピークがある。
  4. SWEEP の途中に変なピークがでるときがある。
  5. マーカーを3個から2個に減らしたときなどで、表示が複数マーカーのものではなくなる。(NanoVNA も同じでした)
  6. マーカー表示の M が文字化け。
  7. マーカー表示が 2.2GHz 以上で負数になる。
  8. デルタマーカー表示がおかしい。
  9. SW 数値入力モードの表示がおかしい。
  10. SW 数値入力モードで、タッチで数字を変えてセンター SW で戻ると画面がおかしくなる。
  11. タッチテンキー数値入力モードで3桁ごとにスペースが入るのでわかりにくい。(NanoVNA も同じでした)
  12. DISPLAY→FORMAT の SWR〜LINEAR が実際と表示がずれている。

binary20200704.bin、NanoVNAv2-release20200619_20200704.zip には上記、悪い点(ソフトバグ)の修正と、以下のソフト改良点が入っています。
ソフト改良点のうちいくつかは NanoVNA バージョン 20200524 でも変更済みのものです。

・ソフト改良点
  1. UI の変更、設定に合わせた表示、色分けなど。
  2. SWEEP PROGRESS BAR 表示追加。
  3. SAVE、RECALL に LIST 表示追加。
  4. CENTER/SPAN の時はスケール線をセンター振り分けにする。
  5. CONFIG→SETTING に LCD GAMMA 調整を追加。(LCD が暗かったので)
  6. E-DELAY のタッチテンキー数値入力時、mm 単位を追加。
  7. DISPLAY に AVERAGE 回数設定追加。
  8. グラフ領域を 4pixel 右に移動し、空いた左側に AVG回数、測定POINT数を表示。
  9. ADC fs=300kHz → fs=1.2MHz Over Sampling x4 にして分解能を上げた。
  10. FPU ON にしてコンパイル。

本当は RBW 設定を追加したいと思ったのですが、信号処理の根幹に RBW=6kHz での処理が密接にからんでいるため、時間がかかりそうです。
ということで、中間報告として現状をアップしました。



・LCD GAMMA 調整

γ調整画面  左 SW と右 SW で GAMMA 設定値を増減します。
 カラーバーの階調が一番よく見える値にします。
 画面をタッチすると調整終了です。

 設定した GAMMA は CONFIG SAVE でセーブします。







2020/07/16 RBW の実装といろいろ変更ファームウェア、ソースファイルはこちら

念願の RBW の実装といろいろな変更、およびバグ修正を入れました。
個人的にはほとんど完成形と言えるものができたと思っています。


・変更点
  1. RBW を実装。 3kHz 〜 10Hz まで変更可能。
  2. ファンクションキー(F0〜F8)追加。 F1〜F7 は自由に設定可能。
  3. CAL したときと周波数や測定ポイント数が異なったときには補間して CAL する。
  4. メニューでトレース色を変更可能。
  5. メモリー 0 を電源 ON 時に読む。
  6. 電源 ON 時に右 SW を押していると、メモリー 0 と CONFIG を読まない。
  7. テンキー入力時、現設定値を右下に表示。
  8. テンキー入力時、無関係のところをタッチするとキャンセルになる。

・バグ修正点
  1. タッチでマーカーの位置移動を6秒ぐらいしているとハングする。
  2. テンキーで周波数をたとえば 16.395M と入力しても 16.39499MHz になる。
  3. CAL 状態が正常に表示されない( D しかでない)。
  4. SWR が大きいとき、表示が /.0/ になる。


・RBW を実装

NanoVNA-V2(S-A-A-2) は fs=300kHz の 50 サンプル(RBW=6kHz)での信号処理が基本単位で、いろいろな処理の時間単位が 50/300kHz( = 0.166ms ) になっています。
この信号処理時間単位を崩さないように(変えると修正箇所が増えて面倒なので...)、周波数変換、窓関数処理、CIC フィルター処理をいれました。

RBW画面  窓関数はテーブル参照で、テーブルサイズは 600 ( float なので 2400 バイト)です。

 RBW が 3kHz〜1kHz までは窓関数をそのまま適用し、
 300Hz〜10Hz は CIC フィルターで fs を 300kHz → 6kHz に落としたあと窓関数を適用しています。




・ファンクションキー(F0〜F8)追加

ファンクションキーで自分の好きなメニューをワンタッチで素早く呼び出せます。
画面の左端(下図)をタッチすると F0 〜 F8 になります。

top_fn画面  それぞれのファンクションキーにはデフォールトで以下の設定が入っています。
 
  F0 = 0 ... TOP メニュー
  F1 = 6 ... RECALL
  F2 = 4 ... CAL
  F3 = 3 ... STIMULUS
  F4 = 23 ... MARKER → OPERATIONS
  F5 = 16 ... DISPLAY → RBW
  F6 = 17 ... DISPLAY → AVERAGE
  F7 = 36 ... STIMULUS → SWEEP POINTS
  F8 = 715 ... CONFIG → SETTING → QUICK FUNC


設定の数値はメニューの項目番号を選択する順にならべたものです。
F0 と F8 は固定、F1 〜 F7 は自由に設定可能です。

CONFIG → SETTING → QUICK FUNC とタッチすると下左画面になります。
メニューがでていない状態で F8 の場所(画面左下角)をタップしても OKです。

ここで、たとえば F4 をタッチすると右画面になります。

fn画面 fn数値入力画面

数値入力欄の右下に 23 という数値が見えますが、これが現在の F4 の設定値です。
最初の 2 が TOP メニュー画面の上から 2 番目(MARKER)を表し、次の 3 が MARKER メニュー画面の上から 3 番目(OPERATIONS)を表わしています。

このようにファンクションキーの数値入力画面では、TOP メニューから順番に何番目の項目を選んでいくかを入力します。
設定した内容は CONFIG SAVE でセーブすると、次回以降も使うことができます。



・メニューでトレース色を変更可能

CONFIG → SETTING → COLORS とタッチすると左画面になります。
右画面は TRACE 0 をタッチし、数値入力までしたところです。

tracecolor画面 tracecolor数値入力画面

色の数値入力には、2 つの形式があります。

一つは、R.G.B 形式で、0〜255 の 3 つの数値をドットで区切って赤、緑、青、それぞれのレベルを入力します。
右画面ではこの形式で入力していて、赤が 255、緑が 240、青が 0 なので橙ぽい黄色になります。

もう一つは、RGB565 形式で、0〜65535 の数値(ドットなし)で入力します。
RGB565 形式では、色を、赤 5bit + 緑 6bit + 青 5bit の 16bit で表します。
右画面の数値入力欄右下に TRACE 0 の現設定色の 65408 という数値が見えますが、これは RGB565 形式での色で、R.G.B 形式での 255.240.0 と同じ色を表しています。

設定したトレース色は CONFIG SAVE でセーブします。

デフォールトのトレース色は以下のとおりです。

R.G.B 形式 RGB565 形式
トレース 0 橙ぽい黄色 255.240.0  65408  
トレース 1 濃い水色 0.230.255  1855  
トレース 2 薄い緑色 128.255.128  34800  
トレース 3 濃いローズ色 255.0.200  63513  



・CAL 状態が正常に表示されない

現状は、CAL をしても D 表示しかでません。 何を CAL したのか分からないのでは困ります。

そこで、それぞれの CAL 項目を実行すると以下のように CAL 状態を表示するようにしました。
それぞれの CAL 状態表示は右側の 〇 のついた CAL 項目を全て実行したときに有効になります。

CAL 状態 OPEN SHORT LOAD THRU エラー項
D  directivity
R  refrection tracking
S  source match
T  transmission tracking
X  isolation

NanoVNA-V2(S-A-A-2) では、CAL 項目に ISOLATION がありません。 OPEN と SHORT 時に RX ポートへの漏れを測定し、ISOLATION を計算しています。
そのため上表でも X の表示は OPEN、SHORT、THRU の3つを実行したときに有効になっています。






2020/07/21 基準インピーダンス変更機能を実装しましたファームウェアはこちら

基準インピーダンス変更機能は、入出力インピーダンスを 50 Ωから任意の値に変更したときの S11、S21 を計算で求めるものです。
ハードウェアは 50 Ωで測定しているのですが、測定により得られた 50 Ω系 S パラメータをインピーダンスに無関係のパラメーターに変換し、任意インピーダンスの S パラメータに戻して表示します。

本来はすべての S パラメータが必要ですが、NanoVNA-V2(S-A-A-2) では S11 と S21 しか得られないので、S22=S11、S12=S21 としました。
また、入力インピーダンス、出力インピーダンスはそれぞれ自由に変更できるのですが、ここでは入出力とも同じインピーダンス、かつ実数(抵抗)と簡略化しました。

ここまで簡略化しても計算はまだかなり複雑で、測定しながらリアルタイムで変換するのに計算時間が足りるのか心配でしたが、いじって見たところ大丈夫そうです。

しかし、はたして実用性があるのか疑問ですし、まだ十分テストしていないのでテストバージョンとして発表することにしました。
バグレポートや改良案など頂けたらありがたいです。


renorm画面   TOP 画面 → DISPLAY → SCALE とタッチすると左画面になります。
  "RENORM-Z 50→RX Ω" が基準インピーダンス変更機能です。
  タッチすると数値入力画面がでますので入出力抵抗値を入力します。


  基準インピーダンス変更は renormalization といいます。




・実際に基準インピーダンス変更した例

何かおもしろい題材がないかと探したのですが適当な例(部品)が見つからず、LPF を作って測定してみました。
Z=1000 Ω, fc=1MHz, 5 次 Butterworth LPF です。

renorm50画面
50 Ωで測定
renorm1000画面
基準インピーダンスを 1000 Ωに変更した


50 Ωで測定したときは、インピーダンスが LPF 設計値と合っていないのでカットオフ周波数付近で大きなピークがでています。
基準インピーダンスを 1000 Ωに変更すると(右画面)、カットオフ周波数付近のピークがなくなりフラットに近くなりました。

次に、この基準インピーダンス変更した特性は本当にあっているのか、確かめてみます(気になりますよね)。


renorm抵抗画面
左は入出力に直列に 1000 Ωを入れて測定した画面です。

S21(CH1 LOGMAG、CH1 PHASE)は基準インピーダンスを 1000 Ωに変更した特性(上記)とよく似ていて、基準インピーダンス変更が正しく行われていることがわかります。

しかし、入出力に抵抗を入れたためレベルが大きく落ちて(-26dB)、減衰域がノイジーになっています。
また、S11(CH0 LOGMAG、CH0 SMITH)はほとんどオープン状態を示しています。

直列に抵抗をいれて測るより基準インピーダンス変更したほうが情報量が多い、とも言えそうです。


高周波では 50 Ωでフィルター類を設計するのが普通ですが、数 MHz 程度までは 数100〜数kΩで設計することが多いと思います。
普通は上記のように入出力に直列抵抗をいれてむりやり 50 Ωにして測定しますが、基準インピーダンス変更機能を使えば簡単に測定できます。

また、ビデオ信号では 75 Ω系なので、普通は 75-50 変換パッド(ATT の一種)を付けて測定しますが、これも基準インピーダンス変更機能を使えば簡単です。

ほかにも、入出力インピーダンスがわからないフィルターでは、実際に抵抗を付け替えて実験しなくても、基準インピーダンス変更機能を使い、特性の良くなるところを探して入出力インピーダンスを推定できます。


// さて、次に作るのはインピーダンスマッチング機能かな。
// やることは今回の基準インピーダンス変更機能と大して変わらないのですが、ユーザーインターフェースをどうするかが難しいです。
// 計算パワーもいるし、PC 上のソフトにしようかな。





2020/07/28 インピーダンスマッチング機能を実装しましたファームウェアはこちら

ToDo リスト最上位のインピーダンスマッチング機能を実装しました。

pai回路  左のようなパイ型インピーダンスマッチング回路を DUT の入力に付けたときの特性を計算します。
 Z3 側が DUT 側になります。
 Z として L、C、R が選べます。


インピーダンスマッチング回路の T パラメーターを、測定で得られた S パラメータを T パラメーターに変換したものに掛けて、得られた T パラメータを S パラメータに戻して表示します。
基準インピーダンス変更機能と同様に、S22=S11、S12=S21 としました。


マッチングメニュー画面1
 TOP 画面 → DISPLAY → SCALE と辿ると左画面になります。
 MATCHING がインピーダンスマッチング機能です。


マッチングメニュー画面2
 Z1 〜 Z3 の入力と APPLY MATCHING ボタンがあります。
 APPLY MATCHING ボタンでインピーダンスマッチングを ON/OFF できます。
 インピーダンスマッチングが ON の時は画面に Z1 〜 Z3 の設定値が表示されます。


マッチングメニュー画面3
 Z1 〜 Z3 ボタンをタッチするとこの画面になります。
 L、C、R を選び、値を入力します。




・22 Ωの抵抗を CH0(PORT1)につなぎ、10 MHz で 50 Ωにインピーダンスマッチングさせた例

マッチング1画面
画面の左上に Z1 〜 Z3 の設定値が見えます。
この場合は Z3 は使わないので影響しないように 1MΩの抵抗(R)になっています。

若干ずれているのは 22 Ωの抵抗が 10MHz では実測 22.6Ω + j 2.9Ω なためです。
マッチング1画面


左は NanoVNA-V2(S-A-A-2) でインピーダンスマッチングした画面、右は Iowa Hills Smith Chart でシミュレーションした図です。
シミュレーションとよく似た特性が得られています。




次に、同じ 22 Ωの抵抗を別の定数でインピーダンスマッチングしてみます。
こんなマッチング回路を実際に使うことはありませんが、こんな極端なことをしてシミュレーションとどれぐらい合うのか興味本位で試してみました。

マッチング1画面

右のシミュレーションとよく似ています。
マッチング1画面


前のマッチングに比べ、S11 の良くなる範囲が狭くなっているのがわかります。
実はこのマッチング回路の軌跡は、下図のようにスミスチャートの Q=5 を通っています(前のマッチングは Q=1.2 ぐらい)。

マッチングQ画面
 スミスチャートに等 Q 線(Q=1 〜 Q=5)を追加しました。
 真ん中の膨らんだラグビーボールのような線です。
 中心から離れるに従い Q が大きくなります。


一般にマッチング回路の軌跡はスミスチャートの Q の小さいところを通るようにします。
Q が低いとマッチング範囲が広く、ロバスト性がよく(部品や環境のばらつきに対して強い)なります。






2020/08/06 マッチング素子の計算機能を実装しましたファームウェアはこちら

インピーダンスマッチングに使う素子の値を計算する機能を実装しました。

PC 上のマッチング計算ソフトにインピーダンスを入力して、計算結果を NanoVNA-V2(S-A-A-2) に入力するといった手間が省けます。
また、測定に応じて自動的にマッチング計算するモードも付けましたので、回路をいじりながら特性の変化を見るのも面白いです。

マッチング回路は L マッチで、LPF 型にしました。


メニューDISPLAY画面
 TOP 画面 → DISPLAY とタッチすると左画面になります。
 上から2番目の SIMULATE をタッチすると下の画面になります。
 
 今までのバージョンとメニュー構造を変更しましたのでご注意ください。


メニューSIMULATE画面
 SIMULATE メニューには、E-DELAY、MATCHING、PORT-Z が入っています。
 内部で計算するときもこの順番なので、E-DELAY をした S11 に MATHING 回路をつけて PORT-Z で違うインピーダンスで表示する、ということができます。
 たとえばインピーダンスマッチングで 100Ωに整合させ、PORT-Z で 100Ω系にしてみる、といった使い方です。

 MATCHING をタッチすると下の画面になります。



メニューMATCHING画面
 いままであった Z1〜Z3、APPLY MATCHING ボタンに、CALC Z1...3、AUTO CALC ボタンが追加になっています。

 CALC Z1..3 ボタンは、現在のセンター周波数の S11 を PORT-Z で設定したインピーダンスに変換する L マッチ回路を計算し設定します。
 L マッチ回路はなるべく Q の小さい LPF 型です。 使わない素子は R 1MΩ にします。

 AUTO CALC ボタンをタッチすると L マッチ回路の計算をスイープするたびに自動で実行するモードになります。
 もう一度タッチすると解除できます。



メニューAUTO画面
 AUTO CALC モードでは画面左上の Z1 〜 Z3 の値の表示の前に AUTO と入ります。

 DUT の状態が変わった時だけでなく、周波数設定が変わった時などでも追従してマッチング状態を保ちます。






2020/09/06 LC 直列共振回路や水晶パラメーターを計算する機能を実装しましたファームウェアはこちら

S21 から LC 直列共振回路や水晶のパラメーター(LC 値、等価直列抵抗、Q 値)を計算する機能を実装しました。

測定には SHUNT(DUT を信号と GND 間に入れる)モードと SERIES(DUT を直列に入れる)モードがあります。
DUT によって測定モードを使い分けることで広範囲の測定が可能です。


この計算機能を使うにはポート 1 とポート 2 の間に DUT を入れるための治具が必要です。

JIG  左図は治具の例です。
 左側のピンヘッダー 8 ピンが SHUNT(DUT を信号と GND 間に入れる)モード用、右側 8 ピンが SERIES(DUT を直列に入れる)モード用です。
 ピンヘッダーの 4 ピン分を 1 つの端子として使うことで接触抵抗を低くしています。
 入出力にはどちら側にもπ型 ATT 5dB(180Ω-30Ω-180Ω)を入れてインピーダンスマッチングを向上させています。
 
 スライド SW は SERIES モード用の端子をスルー(ショート)するもので、SHUNT モードのときと THRU キャリブレーションのときにスルー側にします。
 測定は S21 から計算するので THRU キャリブレーションだけで OK です。
 
 S11 でインピーダンス測定するとき用に SHORT と LOAD(下の2個)を作りましたが、S21 でしか使わないのならこれらは不要です。



・使い方

メニューDISPLAY画面  TOP から DISPLAY をタッチするとこの画面になります。

 ANALYZE をタッチすると下の画面になります。


メニューANALYZE画面  上から、LC-SHUNT、LC-SERIES、XTAL-SERIES、Z-SHUNT、Z-SERIES のメニューがあります。

 LC-SHUNT は LC 直列共振回路を SHUNT(DUT を信号と GND 間に入れる)モードで測定します。
 LC-SERIES は LC 直列共振回路を SERIES(DUT を直列に入れる)モードで測定します。
 同様に、XTAL-SERIES は水晶を SERIES モードで、Z-SHUNT は Z(L or C or R)を SHUNT モードで、Z-SERIES は Z を SERIES モードで測定します。

 SHUNT モードはインピーダンスが 50Ωより小さい場合に精度よく測定でき、 SERIES モードはインピーダンスが 50Ωより大きい場合に精度よく測定できます。
 普通の LC共振回路は SHUNT モードが、水晶は SERIES モードが適しています。

 もう一度タッチすると測定解除できます。




・測定例

LC-SHUNT画面  ・LC-SHUNT
 
 測定では S21 を使いますので P2 の LOGMAG と PHASE を画面に出しておきます。
 共振周波数付近を CENTER にし、位相が±45°になっている周波数( Q が低い場合は位相が一番変化する周波数)を含む範囲を SPAN にします。

 THRU キャリブレーションしたあと、DUT(LC 直列共振回路)を SHUNT 端子につなぎます。

 スイープが終わると共振周波数、 L 、 C 、 R 、 Q を計算して表示します。
 左図では T37-6 26回巻き + 100pF を測定しています。


LC-SERIES画面  ・LC-SERIES
 
 同様に共振周波数付近を CENTER にし、位相が±45°になっている周波数を含む範囲を SPAN にします。

 THRU キャリブレーションしたあと、DUT(LC 直列共振回路)を SERIES 端子につなぎます。
 
 この例では共振周波数での LOGMAG が -0.05dB と大変小さく、得られた R や Q の測定値は怪しいです。
 このように小さい R (=大きい Q )を測定するときは LC-SHUNT を使います。


XTAL画面  ・XTAL-SERIES

 fs(直列共振周波数、左側のピーク)と fp(並列共振周波数、右側のディップ)の両方が入るように周波数を設定します。
 どうしても SPAN が広くなり、直列共振点付近の測定点が荒くなってしまいますので測定 POINT 数を 201 に設定します。

 THRU キャリブレーションしたあと、DUT(水晶)を SERIES 端子につなぎます。

 水晶のパラメータで重要なのは直列 Ls と直列 Cs なので、LC-SERIES で狭い SPAN で測定し、並列 Cp は別途測定するという手もあります。



他に Z-SHUNT、Z-SERIES がありますが、これらは LCR(共振していない)を DUT として測定するモードです。
CENTER 周波数でのインピーダンスから L 値、 C 値を計算します。
いずれ DISPLAY/TRACE/FORMAT に入れてしまおうと考えています。





2020/09/13 4 インチ液晶(480x320 ST7796)用と ILI9341 用の最新ビルドをアップしましたファームウェアはこちら

4 インチ液晶(480x320 ST7796)が届きましたので、この液晶用にビルドしてみました。
ついでに(と言っては何ですが)、ILI9341 用にも最新版でビルドし、アップロードしました。


・20200906 バージョンからの変更点は以下のとおりです(はっきり言って大した変更はないです)。
  1. PAUSE 時 PORT1 からの出力を CW にし、信号発生器として使えるようにした(いままでは断続していた)。
  2. フォントサイズを修正し、見やすくなるようにした。
  3. FORMAT メニューを TRACE が PORT1 か PORT2 かで変えるようにした(いままでは意味のない設定も可能だった)。
  4. ANALYZE メニューの Z-SHUNT と Z-SERIES を FORMAT の中に入れた。
  5. SELECT MARKER メニューの内容を MARKER の中に入れ、ALL OFF、SMITH VALUE は削除した。(SMITH VALUE は SCALE にあります。)
  6. COLORS メニューに GRID を追加した。


ST7796 版では数値キーパッドでタッチ入力すると数字入力欄に上線がでます。 ILI9341 版では大丈夫なので LCD ドライバーの問題かな?と思っています(他にも変な挙動あり)。

あと、ST7796 の LCD GAMMA はあまり良い設定がなく、明るい部分が飛んでしまうか、暗い部分が沈んでしまいます。





2020/10/04 当分いじる時間が取れそうもないので最新版を公開します
ファームウェア、ソースファイルはこちら

最近はいじる時間がなく、しばらくは(もしかするとこれが最後かも)アップデートできそうもありません。
そこで最後に 4 インチ液晶(480x320 ST7796)と 2.8 インチ液晶(320x240 ILI9341)用にビルドしアップしました。

またソースファイルもアップしました(書き汚したままでちょっと恥ずかしい)。
ST7796 用にコンパイルするときは Makefile 10行目を LCD = -DDISPLAY_ST7796 にします。
ILI9341 用にコンパイルするときは Makefile 10行目 LCD = -DDISPLAY_ST7796 をコメントアウトします。
Makefile を変えたときは make clean を実行してから make してください。

今回の変更はユーザーインターフェースが多いです。
メニュー間の移動を減らし、現設定状態がわかるようにしました。


・20200913 バージョンからの変更点は以下のとおりです。
  1. PAUSE から戻ると波形が乱れるのを修正した(PAUSE をスイープに同期するようにした)。
  2. フォントサイズ、行間を修正し、見やすくなるようにした。
  3. COLORS メニューに ACTIVE(タッチした時のハイライト色)を追加した。
  4. 画面下部の周波数表示をタッチすると周波数入力できるようにした。
  5. PROGRESS BAR をタッチすると PAUSE ON/OFF できるようにした。 また PAUSE 時は画面下部に PAUSE と表示するようにした。
  6. STIMULS メニューの START/STOP と CENTER/SPAN をタッチして数値入力画面をキャンセルすると START/STOP、CENTER/SPAN モードになるようにした。
  7. STIMULS メニューで START/STOP 、CENTER/SPAN それぞれのモードがわかるようにした。
  8. TRACE を TOP メニューに移動した。 PAUSE は STIMULUS に移動した。
  9. CALIBRATE を CAL に移動し、それぞれの CALIBRATE 状態が色で分かるようにした(赤:未CAL 緑:CAL 黄:補間)。

残念ながら ST7796 版の「数値キーパッドでタッチ入力すると数字入力欄に上線がでる」件は未解決です。




2022/11/27 スクリーンキャプチャー対応対応ファームウェアはこちら

NanoVNA や NanoVNA-V2(S-A-A-2) のスクリーンキャプチャーするソフト NanoVNAcapture をつくりました。

ただし私の作ったこれまでの NanoVNA-V2(S-A-A-2) ファームはスクリーンキャプチャーに対応していませんので修正したファームが必要です。
画面サイズが 2.8inch は binary_20221120.bin、4inch は binary_st7796_20221126.bin になります。


2.8inch(ILI9341) 320x240
  

4inch(ST7796) 480x320


4inch 用の LCD Controller ST7796 には低温時に VRAM 読み出しがおかしくなるという致命的欠陥があります。
朝、まだ寒い時にスクリーンキャプチャーすると以下のような乱れた画像になりました。
5分程度たつとチップが暖まるのか正常になります。



ILI9341 は画面右下にゴミが入るし、LCD Controller はみんな一癖あります(苦笑い)。



2022/12/09 トレース描画を上書きに変更対応ファームウェアはこちら

NanoVNAcapture にカラーマップ機能を追加して、いろいろ試してみると波形の重なったところが汚くなってしまいました。

これは、トレースを描画するときに上書きではなく前のデータと OR(一種の加色混合?)を取っているためです。
カラーマップを使わない時でも、よく見てみるとトレースの重なったところや、トレースとスケールの重なったところなどが良くありません。

ということで、トレースは上書きに変更しました。 描画はトレース 3 から 0 の順(トレース 0 が一番上)です。
同様にマーカーもマーカー 4 から 1 の順に変更しました。

これで重なった部分が汚くなることはありません。
特にトレースとスケールと重なったところでスケールが残るのはおかしいです。



2023/01/11 LOG SWEEP 追加、スケール目盛数値追加、TOUCH CAL 変更など対応ファームウェアはこちら

外付け 20dB 300MHz 低雑音アンプで久しぶりに NanoVNA-V2(S-A-A-2) を使ってみると、いろいろと使いにくい点、改良したい点がありました。
その中のスクリーンキャプチャーは専用のソフト NanoVNAcapture をつくったのですが、そのほかの本体にかかわるところを今回は修正しました。

・主な変更点は以下のとおりです。
  1. LOG SWEEP モード追加。
  2. 周波数軸、縦軸にスケール目盛数値追加。
  3. 画面下部の START/STOP や CENTER/SPAN を長くタッチすると周波数モードが切り替わるようにした。
  4. TRACE の PORT1、PORT2 変更、機能変更をまとめた。
  5. TRACE や メモリーの番号を 1 から始まるようにした。
  6. 周波数を変更して CAL の周波数と一致した時、CAL 表示が補間( * 表示)からノーマル CAL( C 表示)に戻るようにした。
  7. CENTER/SPAN のときマーカーの周波数表示にΔ周波数追加。
  8. LINEAR 計算のバグ修正。
  9. マーカーを DRAG するとき周波数軸だけでトレース追従するようにした。
  10. マーカーを DRAG するとき狙ったマーカーを捕まえやすくした。
  11. TOUCH CAL するポイントを 2 点から 6 点に変更。
  12. TOUCH TEST で KEY を押すと終了するように変更。
  13. マーカーが 1 個もないときでもトレース情報を表示するようにした。


・LOG SWEEP 使い方

LOG SWEEP画面  TOP から STIMULUS をタッチするとこの画面になります。

 LOG SWEEP をタッチすると周波数 SWEEP が LOG モードと START/STOP で切り替わります。
 LOG モード時に CENTER/SPAN をタッチすると LOG モードは OFF になり、CENTER/SPAN になります。

 LOG モード時は画面下部の周波数表示が LSTART と LSTOP になります。

 画面下部の周波数表示部分を長くタッチすると周波数モードが切り替わります。
 短くタッチすると周波数設定数値 PAD 入力になります(これは今までと同じ)。




・LOG SWEEP で CAL を取っておくと便利

LOG 20k-1G で CAL   CAL
LOG  20k-1G で CAL   CAL

左側は LOG SWEEP 20k-1GHz で CAL を取り、LPF fc=1.3MHz と 25MHz Xtal Filter を測定したもの(CAL が * の補間になっている)、
右側は同じものをそれぞれの測定帯域で CAL を取り測定したものです(CAL が C になっている)。

左側では 20k-1GHz の CAL データから補間しているのですが、ちゃんと CAL を取った右側とほとんど差がありません。


これだけの精度が得られるのなら、自分の使う一番広い周波数範囲で一度 CAL を取って、通常は CAL 補間モードで使い、正確な値が必要になった時だけ CAL を取り直すという使い方ができます。

なので、私は最初に LOG 20k-1GHz、RBW=100Hz、201 点で CAL を取り、メモリー 1 〜 5 全部に入れて使っています。
CAL を取るのはちょっと面倒なので、一回で済めば助かります。



2023/02/12 TDR が 201pts でハングする件、および信号発生器としての使い勝手の向上など対応ファームウェアはこちら

TDR が 201pts でハングする件、信号発生器としての使い勝手の向上、BBGAIN 精度向上、TOUCH 精度向上などの修正をしました。


・変更点は以下のとおりです。
  1. TDR が 201pts でハングするのを修正。
  2. TDR で WINDOW や POINT数でのレベル補正を追加。
  3. TDR の WINDOW パラメータを増やし、さらに BETA = 2, 4, 6, 8 に変更。
  4. TDR の START 0s 表示を止めてステータス表示にした。
  5. TDR モード時、画面下部をタッチしたとき TRANSFORM メニュー、WINDOW メニューがでるようにした。
  6. TDR モードにした時、周波数モードが START/STOP になるようにした。(LOG では TDR 測定できないので)
  7. TDR モードの横軸スケールが時間になるように修正。
  8. TDR での MARKER 表示修正。
  9. PAUSE のとき MARKER の周波数を出力するようにした。
  10. BBGAIN の測定を RBW=100 にして精度向上。(副作用として起動時間が長くなりました)
  11. TOUCH の精度向上、および TOUCH CAL の精度向上
  12. 画面上部をタッチしたとき TRACE, SCALE, MARKER, MARKER→ メニューをだすようにした。
  13. ST7796 で上線がでるのを目立たないように修正。(根本的な対策ではない)
  14. 周波数ステップと周波数スパンが不整合になったときに STOPF または SPAN を自動修正するようにした。
  15. MARKER をピックする時 MARKER との距離が一番小さい MARKER を選ぶようにした。


・TDR

tdr_function画面  TDR モード時、画面下部をタッチするとメニューを表示します。

  左側:TRANSFORM メニュー。
  右側:TRANSFORM/WINDOW メニュー。

 WINDOW メニューでは MIN、MEDIUM、NORMAL、MAX が選べます 。
 Kaiser 窓 の BETA = 2, 4, 6, 8(sidelobe が -20,-30,-40,-60dB ぐらいに相当)になります。
 BETA を大きくすると sidelobe が小さくなり隠れていた小さいレベルの信号が見えてきますが、
 mainlobe の幅が広がり細かいところが見えなくなります。


tdr_warning画面  TDR には LOWPASS IMPULSE、LOWPASS STEP、BANDPASS の3つのモードがあります。

 このうち、LOWPASS 系のモードでは TDR の計算(IFFT) をする際に DC 成分として
 STARTF での値を設定しています。
 しかし、当然ながら STARTF は DC ではないので誤差が生じます。
 (実際には十分小さければ大丈夫なようです)

 ということで、STARTF が大きい(周波数ステップの1/10以上)時、左図のように
 モード名の前に * をつけ注意喚起しています。



・信号発生器

sg_marker画面  今までも SPAN=0 にして PAUSE で信号発生器として使えましたが、周波数の変更が面倒でした。

 そこで SPAN が 0 でなくても PAUSE 時 MARKER の周波数を出力するようにしました。

 ACTIVE MARKER の周波数を出力するので、左図のように MARKER を複数設定し、
 MARKER メニューから MARKER を選択(ACTIVE)することで出力周波数を簡単に変えられます。
 また、画面上で MARKER を DRAG することでも周波数を変えることができます。

 左図のように LOG SWEEP だと広い周波数範囲で周波数を変えることができ便利です。



・画面上部メニュー

upper_function画面  画面上部のトレースやマーカーの情報表示しているところ(左図)をタッチすると
 メニューを出すようにしました。

 左から、
  TRACE メニュー
  TRACE/SCALE メニュー
  MARKER メニュー
  MARKER/MARKER→ メニュー
 です。





2023/02/16 スケール線のバグ修正とスイープ高速化対応ファームウェアはこちら

周波数スケールが STRAT/STOP の時、切りの良い周波数になっていないバグ(前回デグレードした)の修正、およびスイープの見直しでちょっと高速化しました。





inserted by FC2 system