道具 Feed

2024年5月 6日 (月)

FIRデジタルフィルター係数 発生ソフト

dsPICを使い、FIRフィルターを自作しておりますが、長年使ってきた 石川高専の山田先生のホームページがedgeでは閲覧できなくなっており、新たにFIRフィルターを設計するのに困っていましたら、フランスのThomas Drugeon さんがオーディオ向けのフィルター係数を発生させるソフトを公開していました。 さっそくダウンロードしてテストしてみると、これはいとも簡単に係数を発生し、C言語で扱えるファイル状態で出力してくれます。 以下、その使い方を紹介します。 

rePhaseと呼ぶソフトを紹介しているページはこちらにあります。

このページから、Latest version   (v1.4.3, 2019-01-16, Windows 32/64 bit)というソフトをダウンロードし、ダウンロードされたzipファイルを解凍すると、rePhase.exeというファイルが現れますので、これをダブルクリックすると以下のようなダイアログがオープンします。

Repaseorijinal

このソフトは本来、オーディオのグラフィックイコライザーの特性をデジタルフィルターで構成する時のフィルター係数のジェネレーターですが、dsPICでSSBを発生させる為のFIRフィルターの係数を発生させることもできます。

上の画像の真ん中付近にある「Linear Phase Filter」というタグを開き、左下側にあるlinear-Phase Filterの部分に必要な記述を行います。

Rephase_linearphase_filter_2

使うのは上の2行だけです。 最初の行をhigh-passにして、2行目をLow-passに指定します。

次にshapeの列に2行とも「brikwall」を選びます。 freqの列の1行目に150Hz、2行目に2850Hzと記入します。

次に、右下のInpulse Settingの部分を記入します。

Rephase_impuls_setting_2

まず、タップ数を奇数で記入します。ここでは251としました。 次のFFT lengthはタップ数に応じて自動入力されますので、手を加えません。 conteringの部分はmiddleを選びましたが、実際に動くようになったら他の選択肢へ変更しても良いでしょう。 その下は、「use closest perfect inpulse」を選びます。 windowing(窓関数)はサイドローブが低い[blackman-harris」を選びましたが、好きな関数を選択できます。 optimizetionはデフォルトのままです。

rateはサンプリング周波数を記入します。 ここでは48KHzとしましたが、実際には、使用するdsPICのADコンバーターのサンプリング周波数を記入する事になります。 formatは発生したフィルター係数をC言語形式で出力されるようにします。 directoryはこのCファイルをどこに出力するかを指定します。

右枠の中は、デフォルトのままです。

これらを設定し終わった、目標特性グラフ付のダイアログ全体を下に示します。

Rephase_allwindow

目標のBPFの特性は上のグラフのように四角いフィルター特性ですが、タップの数を例え1001としても、このようなグラフになる事はなく、タップの数が多いほど、この理想曲線に近くなるという事だけです。 実際はハイパスフィルターのカットオフを50Hzくらいにして501タップくらいで、Hi-Fi SSB信号が出来ると言われています。

この設定で作られたFIR係数ファイルの例を以下よりダウンロードできます。 このファイルをBPFxxxx.hとリネームし、ヘッダーファイルとして読み込ませたら、dsPICのソフトが出来上がります。

BPF150-2850.cをダウンロード

実際にこのアプリを使い、dsPIC33FJ64GP802用のBPF係数を出力し、AM送信機のFIR BPFフィルターを作った例はこちらの最後の部分で紹介しています。

2024年5月末

石川高専の山田先生のページはWIndows7 Chromeの組み合わせなら、問題無く表示出来るようです。

 

 

 

その後、FIRフイルター係数の計算を英語で検索すると、特性がrePhaseよりよさそうな係数を発生出来るページが見つかりました。 現在、次の自作モデル用として、dsPICによるSSBジェネレーターを試作中ですが、この係数に使って実力を確かめ中です。

新しい、FIR係数発生ページ Digital Filter Design (arc.id.au)

このページで生成されているKaiser-Bessel窓による係数は石川高専のページでも発生させる事ができます。ただし、フィルター外のATT量がデフォルト20dBとなっていますので、60dBに変更してやると、同等のデータがえられます。

 

NDEXに戻る

2022年12月15日 (木)

おかしなオシロ画面

Ociro_1

左の画像は私のオシロの画面です。 モードは単純なsweepで7MHzの若干歪んだ波形を見ているところです。

オシロスコープは基本的に、左から右へスィープします。 従って、描画は、左側から始まり右へ移動し、絶対に戻る事はありません。 この画像は、一度、右側に進んだ後、円弧を描くために、左側に戻っています。 基本的にはあり得ない描画です。 唯一、これが可能になるのは、CRTの輝点を左側に振る為に、スィープ信号に外乱が生じた時のみです。

この画像は、7MHzの送信機を送信状態にして、出力15W程度を、ダミーロードに消費させ、その出力端子の両端の電圧をオシロでモニターした時の波形です。

Ociro_2

正常な出力波形は左のような波形をしており、この状態は正常状態ですが、なんらかのひょうしに上のような渦巻状の波形になってしまうもので、再現は簡単なのですが、その原因が判りません。

考えられる事は、使用しているオシロスコープがアナログ式のCRT方式で、水平、垂直の電界による偏向板で制御されているため、なんらかの外部要因で、水平偏向回路に高周波が誘導し、水平スィープの電圧を揺さぶっているのだろうとは思いますが、その原因が判らないのです。 5W以上の送信状態の時しか出ず、出力が1W以下になると出ません。

また、CRTの管内に磁界が作用したら、昔のTVのCRTと同じで、CRT上の輝点は移動します。 オシロスコープのすぐ横に、海外製のオイルヒーターが有り、正常状態の波形をしている最中にオイルヒーターの電源をONすると、異常波形になります。 オイルヒーターと電磁界をインターネット検索すると、このような情報が有りました。 しかもオイルヒーターの操作スィッチ面がオシロ側に向いておりました。 ただし、このオイルヒーターの電源をOFFにしても異常波形は出続けています。 オイルヒーターも一つの原因ではありそうですが、これだけではなさそうです。

ああでもない! こうでもない! と悪戦苦闘する事、2週間。 やっとほんとうの原因が判りました。 RF出力のコネクター内部でGND線の断線でした。 50Ωのダミー抵抗を繋ぐと、高周波が電源のGNDとオシロのGNDを経由して帰ってくる為、オシロのGNDを通るとき。水平偏向回路を高周波でゆさぶり。画面が左側へゆさぶられるものでした。 コネクター内の断線箇所を接続したら直りました。

INDEXに戻る

2021年4月23日 (金)

Step ATT (ステップアッテネーター)自作

受信機を自作していると、安定した微弱信号が必要になってきます。 信号発生器SGは以前、DDS ICで作って有ったのですが、ATTが無い為、受信機の調整には使いづらい状態でした。 そこで、秋月で小さなスライドスィッチを手配し、ATTの抵抗は全てチップ抵抗によるStep ATT(ステップアッテネーター)を作る事にしました。

Stepattsw

左は、今回、Step ATT用に手配した、2.5mmピッチの2回路2接点スライドSWです。 SWのスライド方向のピッチは2.5mmですが、2回路間のピッチは3.3mmであり、ユニバーサル基板が使えません。 従い、ガラスエポキシ両面基板を切り出して、穴あけ加工を行い、パターンはカッターで切り出しました。

インターネットを検索すると、Step ATTの自作例はたくさん出てきますので、このSWを7個並べ、2dBステップで最大84dBのATTを作る事にし、抵抗はπ型でE24シリーズで作ります。 チップ抵抗で作る為、最大通過電力は100mWくらいにしかなりませんが、受信機用なら、問題ありません。

下に配線図を示します。

Stepattschma

Att2db

左は、2dBのATTを1608タイプのチップ抵抗で構成したクローズアップです。 基板はカッターによる削り出しですから、見栄えは良くありませんが、回路図通り、配線できました。

手元に、測定器が無いので、どのくらいの精度で出来ているかはわかりませんが、7MHzの受信機の前に挿入すると、一応はそれらしく反応します。 チャンスがあれば、ネットワークアナライザでS21をチェックしてみる事にします。

 

Stepatt_back

Stepatt_top

厚さ0.5mmの銅板を金切りバサミで切って加工しましたが、側板を半田付けした事により、強度を確保する事ができました。

Stepattdata_2

 

上のグラフはネットワークアナライザによる実測データです。 100MHzくらいまで使えそうです。 -60dBの1MHz以下のギザギザはアナライザのノイズを拾ったもので、ATTが出している訳ではありません。

受信機を調整する時は、必需品になりますが、使ったスライドSWがちいさすぎて、ATTの切り替えはドライバーかピンセットで行う必要があり、非常に使いづらいです。 再度作り替える場合、SWを大きなスライドタイプにするか、スナップSWに変更しようと思います。 また、ネジ止めタイプのBNCコネクタは何度も同軸ケーブルを付けたり、外したりする内にゆるんできて回転するようになります。 これも次回はビス止め可能なフランジ式のコネクタに変更するつもりです。

 

INDEXに戻る

2021年3月13日 (土)

デジタルDC電圧計

[PIC DC100V ]

200Wのリニアアンプが完成しましたが、この電源は65V 6Aくらいの容量が必要です。 そのため、12V、24Vの固定電圧電源と、48Vの可変電圧電源、計3台を直列接続して、65Vの電源を構築する必要がありました。 固定電圧電源は、問題ないのですが、可変電圧電源は、リニアアンプ以外の機器の電源として、利用する事もあり、いざ、リニアアンプを使おうとすると、毎回、電源電圧の確認をデジタルテスターで行うと言う面倒がありました。 そこで、簡単なデジタル電圧計をリニアアンプに内蔵させ、常に電圧のチェックが出来るようにする為、デジタル電圧計を作る事にします。

使用するのは、PIC12F675という8ピンの8bitマイコンと、aitendoで99円で売れられていたLCDです。 このPICはピン数が少ないだけでなく、プログラムROMも、データ用RAMも容量が少なく、電圧計を構成できるか、不安でしたが、なんとか制限容量内に収まり、完成できました。

まず、回路図です。

Vmeter150_chema

測定しようとするDC電圧を抵抗で分圧し、それを10bitのADコンバーターでデジタル化し、その電圧値をLCDに表示するだけの機能ですが、PICの電源は5Vの3端子レギュレーターから供給されますが、この電源がOFF状態で、測定しようとするDC電圧がADの入力に加わった場合、PICがラッチアップする可能性があります。 そこで、PICの電源がOFFの状態で、測定しようとするDC電圧が印加された場合、AD入力にDC電圧が印加されないようにし、Q1でAD入力をショートし、PICの電源がONになったら、Q2でQ1をOFFにして、ADに電圧が印加されるようにしてあります。

この電圧計を完成させた状態で、PIC12F675のプログラムROM使用量は61%、データRAMの使用量は73%でした。

電圧表示は小数点第1位まで表示し、58Vの電源のとき、表示誤差は手持ちのデジタルテスターに対して+/-0.1Vの誤差でした。 ADCの都合から、測定できる最大電圧は100Vですが、10V以下なら、ATTの値を変更する事により小数点以下2桁まで表示する事も出来ます。

Vmeter150_0

上は、バラック状態で約43Vの電圧を測定しているところです。

この電圧計の校正は通常印加するDC電圧を加えておき、市販のデジタルテスターで電圧を読み、同じ表示になるようにVR1を調整するだけです。

これをリニアアンプに実装したのが以下です。

Vmeter150_1

このデジタル電圧計の最大の欠点は、LCDの視野角が狭い事です。 LCDを正面から見ても、文字が良く見えません。 LCDを下から見上げるようにすると、綺麗なコントラストで文字が見えます。 従い、リニアアンプに実装した時は、かなり斜めに設置し、正面からLCDを見たとき、LCDの下側から見上げる角度になるようにしました。

PICのソースコード V_Meter_DC100V.cをダウンロード  

INDEXに戻る

2020年6月 9日 (火)

ホワイトノイズ発生器

dsPICを使ったSSBジェネレーターを開発中ですが、そのなかで、デジタルフィルターも作成します。 このフィルターが完成した時の特性が、当初の狙い通りに出来ているか、確認を必要とします。 それに使えるホワイトノイズ発生器の制作です。

Whtnoise_generator 

ノイズ発生源はトランジスタのベース、エミッタ間に逆電圧をかけ、BE間がブレークダウンした時に発生する広帯域ノイズをICで40dBくらい増幅します。

Ng_pcb

上がその回路図で、左が、それを実際に組み立てた状態です。

48mm x 30mmくらいの基板に組みました。 一応100KHzくらいまではフラットであるように期待して、完成した後、勤務先のスペアナを借りて、休み時間に測定してみました。

左下が10Hzより2KHzまでをピークホールドでスキャンしたデータです。

右下は、同じくピークホールドで10Hzから100KHzまでスキャンしたデータです。 2KHz以上は、ほとんどフラットで、1KHzで-6dBくらいのレベルダウンがあります。 2KHz以下の周波数で下降しているのは、スペアナの入力の周波数特性が影響しているもので、下の方にある、低周波領域でのスペクトルは、60Hzくらいまで、ほぼフラットです。

Ng_pk2khz

Ng_pk100khz

このホワイトノイズを15TAP 3KHzのLPFを通し、Wave Spectraで表示させた時のPC画像が以下です。

3khz_lpf

Noise_off

上が、ノイズをONしたとき、下がノイズOFFのときです。 一応、3KHz付近を境に高域がカットされた傾きを示しています。 Wave Spectraにピークホールド機能があれば、きれいに見えるのでしょうが、高級スペアナのようにはいきませんね。

このホワイトノイズ発生器を実際に使っている例はこちらにあります。

しばらく重宝しておりましたが、PC上で動くWave Generatorの中にホワイトノイズとピンクノイズの発生手段があり、かつSSBの2-tone信号も出せる事から、この基板はジャンク箱行きとなりました。

INDEXに戻る

2019年4月20日 (土)

アルミ板ベンダーの自作

無線機を自作進行中ですが、回路が完成すると、それを無線機としてまとめる必要が生じます。 通常は、アルミシャーシの上に配置して、適当なパネルを立て、操作できるようにしたケースなしの物になりますが、 移動運用に使う目的の場合、持ち運びが簡単で、容易に壊れない事が要求されますので、ケース加工がマストになります。 いままで、アルミ板の曲げ加工をバイスと木製の当て木だけで行っていた関係で、美しく仕上げる事が出来ませんでした。 当然、寸法出しも難しく、なるべく曲げ加工が無いように作ってきましたが、50MHz用AMトランシーバーを製作する過程で、アルミ板の曲げ加工の必要が生じ、ベンダーマシンを手配する事にしました。

インターネットで調べると宝山がDIYに使えるベンダーを発売していますが、結構な値段がします。 さらに調べていくと、アルミ板くらいなら、ベンダーを自作されている人が沢山いらっしゃいます。 どうせ年に数回しか使わない工具ですので、先人にアイデアを頂きながら、私も自作する事にしました。

Bender2

インターネットにある自作ベンダーの記事を頼りに、左の蝶番と、20mm幅、厚さ2.5mmの鉄製Lアングルをホームセンターで手配し、半日で作ってみました。

ところが、Lアングルの回転半径が大きく、曲げ代が15mm以下になると、アルミ板を曲げられません。 15mm以上のものは一応曲げる事はできますが、折り曲げのRが大きく、結局、またバイスでつかんでハンマーでたたくという作業が必要になってしまい、アルミ板はボコボコです。

インターネットで紹介されている自作ベンダーのほとんどの記事で、概要はわかりますが、詳細な寸法や調整の仕方など、詳しく紹介している記事を見つける事が出来ませんでした。

Bender

そこで、欲張らずに1mm厚のアルミ板に限定したベンダーを、構造から検討し、寸法精度が出ない分は組み立て時、微調整するという事で、再製作を開始しました。

左の図面は、曲げ加工の原理図です。 黒のハッチが二つのLアングルで、赤色が1mmの板厚のアルミ板の位置を示したものです。 青色のアルミLアングルは折り曲げる板を下から挟む為のものです。

真ん中の円は蝶番の回転中心です。 今回の蝶番は先の失敗した物とは異なり、ビス止めする板の部分がフラットのまま回転軸に回り込む構造の物にしました。 また、この蝶番の板厚は1mmのものとし、この1mmが折り曲げるアルミ板の厚み上限となります。

板厚1mmの蝶番というのは、結構小さい形状で、耐荷重も大きくありません。 従い、寿命も短いとは思いますが、ガタがくるようになったら、蝶番を交換する事にします。

原理図では蝶番の回転軸にそって、右下のLアングルを起こすと、左上のLアングルの角の部分を支点として、直角にアルミが折れ曲がる事を示しています。

Bender1

原理図を元に蝶番の位置を決め3mmのビスナットで組み立てたのが上の写真です。 ビス穴は4.5mmを開けてあり、原理図のように1mmのアルミ板を挟んだ時、ぴったり隙間なしになるよう位置決めしてビスナットを締め付けました。

Bender3

実際に取り付けた蝶番が左の写真です。Lアングルを立てた場合、蝶番を止めるビス頭が一方のLアングルに緩衝しますので、8mmの穴を開け逃げてあります。

8mmの穴の近くにある3個の穴は失敗した蝶番の止め穴で、今回のベンダーには無関係です。

下の写真は曲げ代10mmで試験的に曲げたものです。Lアングルは90度までしか曲がりませんので、アルミ板の曲げ角度は88度くらいまでしか曲げられません。 この構造ではこれ以上は無理ですので、曲げ加工後、あて木で矯正する事にします。

Bender5

このベンダーで実際に板を曲げる場合、このLアングルの下に2mm厚のアルミLアングルを敷き、このアルミLアングルとベンダーのLアングルの間に曲げようとするアルミ板を差し込みます。 当初、この幅20mmのアルミLアングルだけでしたが、本来曲げる位置から約25mmの位置で2度くらいの折れ線が生じます。曲げる時の力が作用して、Lアングルのはしっこでアルミ板に余計な力が加わるようです。

対策としては、2mm厚のアルミ板を幅200mm、奥行き60mmまで両面テープで張り付け、力が集中しないようにしました。 効果は完全ではありませんが、手で矯正すれば治りますので、良しとします。

Bender8

上の写真が、2mm厚のアルミ板を敷いた状態です。 また、ベンダーアングルを固定する為にクランプを使いますが、そのクランプがつかみやすいように木製の台を作りました。 この板の下に下駄の歯のように、30mm角のサンをビス止めしてあります。

Bender6

曲げ幅が100mm以内なら指で押さえるだけでLアングルは90度回転しますが、100mmを超えると難しくなります。 その場合、上の写真のようにクランプで締め上げる事にしました。 最大折り曲げ幅は200mmです。

Bender7

左はこのベンダーで加工した、アルミシャーシで、トランシーバーのPLL VFOのケースです。最大曲げ幅は173mm、最少曲げ代7mm。 前回のボコボコのものよりかなり美しく仕上がりました。 

このケースを使ったトランシーバーはここで見る事が出来ます。 結構きれいに仕上がっています。

 

何回か使っていると、ビス止めしたLアングル同士がずれてきます。 曲げのRが大きくなってきた時は、再度Lアングルの位置関係を調整しなおしました。

また、曲げる外側のラインにカッターナイフでケガキ線を入れておくと、きれいに曲がります。 ただし、線をけがくのは1回だけです。 複数回けがくとそのラインで折れてしまう事があります。

INDEXに戻る

2017年6月24日 (土)

オイル冷却ダミーロードの製作

200WのAM送信機の製作を行っていますが、200W連続印加可能なダミー抵抗が無く、エージングができていません。 そこで、金属皮膜抵抗を使ったオイル冷却のダミー抵抗を作る事にしました。

材料は200Ω 5Wの金属皮膜抵抗16本、厚さ0.3mmの銅板、ペンキ用の1リットル空き缶、Mコネクタ、BNCコネクタなどです。

80wdummydraw

いつものようにJW-CADで抵抗を円筒状に並べる為、寸法を決めながら作図し、その図面を銅板の上に糊で貼り付けます。

右上の板は丸めて、コネクターと抵抗の接続に使います。

円板は3枚で、コネクターより一番遠い板は中心に3mmの穴を明け、同軸コネクターの中心導体を直径3mmの銅パイプで延長し、この穴に接続します。 それ以外の円板は2枚ともセンター穴を16φとして銅パイプと距離を確保します。

抵抗は8本をパラに接続し、25Ωにした後、これを2段シリーズにつないで50Ωの抵抗にします。 また、オイルに浸すのはこの50Ωの抵抗のみで、スペアナモニーター用のATTやBNCコネクターはオイル外になるよう、Mコネクタと50Ωの抵抗の間に距離を確保するようにしました。

80wdummy1

80wdummy2

上の写真が組み立て完了したダミー抵抗です。5Wの抵抗を16本使っていますので、この状態で80Wの容量があります。 この裸の状態で予備テストしたところ、80Wの出力で、抵抗の塗装が焼け、煙がでます。 裸のままで約10分間80W連続テストをしたところ、初期の煙も収まりました。

これをペンキ用1リットル缶の蓋に取り付けます。

80wdummy3

80wdummy4

左上がダミー抵抗を缶の蓋の裏に取り付けたところです。 モニター用BNC端子へのATTは、2KΩ 2Wを2本シリーズに入れました。 右上は蓋をかぶせて完成した状態です。

アンテナアナライザで測定したSWR特性は以下のようになりました。 1.7MHzから50MHzまでは、SWRを小数点以下2桁まで表示する自作のアンテナアナライザで測定し、145MHzと435MHzはコメットのCAA-500mk2で測定したものです。

Rf_80w_swr_da

Rf_80w_swr_gr

缶の中に何も入れない状態(空気のみ)でのSWR特性は145MHzまでなんとか使える範囲です。 試に水を入れてSWRを測ってみました。50MHz付近にSWR最大ポイントがありますが、3.5MHzや7MHzなら我慢して使えると思われます。

オイルを缶の7部目くらいまで入れ、抵抗本体だけがオイルの中に浸るようにした状態で測定した結果、145MHzまでは空気だけのときより良好です。

使ったオイルは日清キャノーラ油、近くのスーパーで、お一人様1本限り、1kg 108円でした。

下はオイル充填状態で、140Wの出力を加えダミーロードのエージングをしているところです。 約10分経過して、缶の上面はアッチッチですが、缶の底辺は指で触っていられます。

Dummy140wtest

140Wで30分のエージングが終わりました。 さすがに缶の底辺も指を触れ続けられないほど熱くなっています。 1時間半、間をおいて、今度は1時間のエージングにトライしました。 50分過ぎくらいにモニター出力が出なくなりました。エージングを中止し、缶の中を覗くと、 2KΩの抵抗2本が缶の底に沈んでいました。 ハンダが解けて、オイルの中に落ちてしまったようです。

Dummyatt

80Wの金属皮膜抵抗16本には異常がありませんので、このATTの部分だけがNGのようです。缶が冷えるのを待って、左の写真のような対策を行いました。ATTの抵抗を6本に増やし、すべてカシメで結合しました。 先端の同軸芯線への接続はハンダ付けです。 これで再度1時間のエージングにトライし、問題なしでした。 BNCコネクタの反対側に見えている小さな円筒は換気孔です。 熱膨張した空気の逃げ場を作る為、設けました。 中のオイルが揺れて跳ねても、簡単にこぼれないように筒状のダクトにしてあります。ダクトの内径は3mmです。

 

この実験から、安心して200Wのエージングが出来る為には、缶の容量を2リットルくらいまでアップすべきと考え、ホームセンターに探しに行きましたが、あいにく2リットル缶は無く、代わりに3リットル缶がありましたので、これを購入して来ました。サイズ的に、1リットル缶がすっぽり収まり、取っ手の部分で宙吊りになりますので、とりあえずは3リットル缶に水をいれて、オイルの入った1リットル缶沈めて見る事にします。

このダミーロードを実際に使っている状態はこちらです。

Dummy3l

その後、1リットル缶では熱容量が不足するのを実感しましたので、3リットル缶に変更する事にしました。

特用1.3Kgのキャノーラ油を継ぎ足すと、ちょうど抵抗全体がオイルの中に浸すレベルとなりました。 元の1リットル缶は粗大ゴミ用のごみ箱行となりました。

 

INDEXに戻る

2017年1月22日 (日)

LCメーターの製作

[PIC 自作]

アナログのCメーターはすでに自作してあり、重宝していましたが、インダクタンスを測る場合、アンテナアナライザにコイルとコンデンサを直列に接続し、共振周波数を読み取った後、計算で算出していました。 もう少し簡単にインダクタンスを測定できないかとWEB検索していると、沢山の記事が見つかりました。 既知のコンデンサ1個と、正確な周波数カウンターを利用して、マイクロコンピューターで自動測定するもので、かなり以前より、世界中で製作されているようです。

そこで、これらの製作記事を頼りに私も作ってみる事にしました。 マイコンはピン数は28本もあれば十分なのですが、今回はジャンク箱で遊んでいた40ピンのPIC16F1939です。

まずは、LCメーターに使用されるフランクリン発振回路の予備検討です。 校正時のLとCの組み合わせは100uHと1000PFが一般的で、WEB上でもこの定数の回路が多数存在します。 そこで、このLCと74HC04の回路で一番広帯域に発振する定数を確かめてみました。

下に回路図を示します。

Franklinosc この回路状態でC3にパラレルにコンデンサを追加して、安定に発振させられるC1,C2,R2を調べました。 C3に最大0.55uFのコンデンサをパラレル接続したとき、正常に発振するR2の値は580Ωでした。0.55uFが追加された場合、R2は580Ω以下でもOKでしたが、逆に1000PFだけの場合、580Ω以下では発振停止してしまいます。 そこで、選んだ抵抗値は820Ωとしました。 この段階では、まだ周波数カウンターは接続されていません。

500khz

50khz

左が100uHと1000PFの基準共振時の約500KHzの発振波形です。 右は0.068uFのコンデンサを接続した時の、約60KHzの波形です。 見ての通りオシロの同期がうまくかからず、2重に写っていますが、周期にムラが有っても、周波数カウントには影響ないと考えていました。 しかし、いざカウンターが動作するようになると、とんでもない周波数(1MHz以上)をカウントします。 波形の縦線の部分を拡大してみると、数MHzの寄生振動を伴っていました。 これでは、全く使い物にはなりません。 

WEB上で、インバーターはアンバッファ品が良いというのは、この性かも知れません。

そこで、インバーターをアンバッファ品に替えて実験してみました。 結果は0.1uFくらいまでは、安定に発振しますが、0.22uFくらいから発振周波数が1MHzオーバーとなります。 そして、この程度のレベルが限界に近いというのが、WEB上にも散見されます。 しかし、せっかく、作り始めた事もあり、なんとかこの最大容量を拡大できないか検討する事にしました。

Franklinosc1

従来からの変更点は正帰還回路にシリーズに入っていた抵抗R2を20KΩの半固定VR2に変えた事。 CMOS発振回路の出力に負荷容量としてC6を追加した事です。

VR2の値は4.7KΩくらいで微調整が必要でした。 C6は大きくすると、発振周波数の低下を招きますが、高容量のコンデンサを接続しても寄生振動が起こりにくくなります。 ただし、大きくなるほど、LとCによる共振周波数と実際の発振周波数と差が生じ、真のLCの値を表示しなくなります。

Cout_freq

上のグラフはC6を変化させた時の発振周波数の変化を表しています。 仮にC6が0PFの時の発振周波数が真のLC共振周波数とすると

100PFのとき発振周波数は0.116%ずれます。これは。コンデンサに換算すると0.232%の誤差となります。 1000PFの時は、発振周波数が1.78%とずれ、コンデンサの容量換算で3.58%の誤差です。 しかし、コンデンサの容量変化と周波数の変化は、ほぼ直線に変化していますので、帰還系の条件は発振周波数にあまり影響しないと思われます。  という事は、この負荷容量込みでキャリブレーションを行えば、そこそこの精度が得られると考えられる訳です。

C6を1000PFとして、キャリブレーションをしてみました。 

マイラーコンデンサの場合、6.6uFまでは正常に測れました。 電解コンデンサは1uFまでは測れましたが、その次に4.7uFを掴んだら発振周波数は0となっていました。  最少容量は、1PFでも測れます。ただし、正しいのかは?です。

また、コイルは、100uHの表示のあるものが94.77uH、3.3mH誤差kと表示のあるチップインダクタを測ると3.62mHと出ました。 なんとか誤差内です。

ここまでの検討で、そこそこの精度は出ていると思われますので、条件付で完成品に仕上げる事にします。 条件とは、コイルは確認できた最高インダクタンスを15mH、コンデンサは電解コンデンサは除外して、最高6.6uFとします。

使用した1000PFのコンデンサの温度係数は、通常のCH特性(0+/-60ppm)より特性の良いC0G特性(0+/-30ppm)のセラミックでMURATA製です。 

一方、中国製の100uHのコイルの温度係数は未知です。 使われている磁性体がフェライトのようですから、多分+1000ppmくらいと思われますので、これをカーボニルの+50ppmくらいに変更しないと安定しないと考えます。 そこで、カーボニルコアで100uHくらいのコイルを手作りする事にしました。 

100uhcoil

アミドンのカーボニルコアT37-2に0.3φのUEWを約150回巻いて100uHのインダクタを作り基板に実装しました。

左の基板はそのコイルを実装した状態です。基板に両面テープで張り付けてあります。

コイルが+50ppmの温度係数なら、コンデンサは-50ppmの温度係数でなければなりませんので、実働状態では、発振周波数がドリフトします。 特に暖房(多分冷房も)が動作中に、電源ONした直後はキャリブレーションした直後でもオープン状態の静電容量が0PFとなりません。 使用しながら、対策を考える事にします。

良く使われるPPコンデンサの温度特性は-25ppmくらいですから、0ppmのC0Gコンデンサより良い結果が得られそうです。 そこで、ネット通販を探し廻りましたが、サイズと価格が折り合わず、とりあえず現状としております。 仮に大きな温度係数を持つコイルやコンデンサの場合でもキャリブレーションした直後は原理的に正確に測定できます。 この安定度の追及はコンデンサを接続しない状態で、どのくらいの時間0PFを表示し続けるかで実用出来るかどうかが判断できます。

現状では2分間通電した後、キャリブレーションを行い0PFを表示し続けるのは約30秒です。 そして、30秒過ぎたあたりから0.03PFの表示になり、これが次のステップである0.07PFの表示になるまで90秒くらいあります。 という事は90秒以内なら0.03PFの誤差で容量を測れるという事ですから、実用上は全く問題有りません。

左側の3個の黄色の箱は回路切り替え用のリレーですが、手持ちの24V品を使った関係で、5Vから24Vに昇圧するDC/DCも実装してあります。 実際のリレーは2個しか使っていなく、3個目は予備です。

LCDの表示は、pFとμF、μHとmHの単位自動切り替えで、あまり細かい表示はしない事にしました。

下に、それぞれの表示例を示します。

C221

C223

L101_2

L332

ここまでの回路状態でケースに組み込む為、組み立て図の作図を開始したところ、用意したケースに収まりません。ケースはエレキーやCメーターに使用したタカチの同一サイズですが、高さが足りず、LCDやテスト端子を実装できません。

Lc_1939

最大の原因は、左の40PIN DIPのマイコン基板です。 もともと、以前、アンテナアナライザーの予備検討をした時の基板で、もう出番は終了していたものでしたが、今回のLCメーターの検討にちょうどよさそうでしたので、ジャンクボックスから拾い上げたものでした。

そこで、このPICマイコンを28PINのPIC16F1938に換える事にしました。 しかし、DIPのままで28PINに変えても、大きく改善は出来ませんので、同時にSOPに換え、アナログ回路基板に同居させることにします。 さらに、場所や高さ制限で厄介者でした24VのDC/DCも基板をサイズダウンさせます。

Lcm_1938このようにして作り直した基板が左の写真です。 ここまでサイズダウンすると、なんとかケースに収まりそうです。

PICマイコンを変更した回路図LC_Meter2.pdfをダウンロード

当初キャリブレーション時の周波数チェックはノーマル時を先にやり、キャリブレーション時の周波数チェックを後で行っていましたが、何回かテストすると、順序はこの逆、すなわち、キャリブレーションの周波数を先にチェックし、ノーマル時の周波数チェックを後からやる方が、キャリブレーション直後のオープン状態での容量が0PFになる確率が高くなる事が判りました。 従い、マイコンソフトもそのように修正しました。

ソースコードLC_Meter1938.cをダウンロード

Lcmeter_box

一応使えるようになりましたので、ケースに収納しました。 消費電流はリレーの電源が影響して、Cx測定時115mA、Lx測定時12mA、キャリブレーションピーク時230mAとなっています。 DC電源で使う分には問題は無いのですが、いざ使おうとすると、最初に電源の心配をせねばなりません。

以前作ったアナログのCメーターは電池式で、すでに2年以上経過していますが、いまだに電池交換した事が有りません。 今回のLCメーターも少なくとも1年は電池交換しなくても良いような電源回路を考える事にします。

校正用リレーを5V品に変えて、L/Cの切り替えをメカニカルスイッチに変更して、今まで5Vから24Vを作っていたDC/DCを3Vから5Vを作るDC/DCに変えた結果、Cx/Lx測定時16mA、校正時65mAまで抑える事ができました。校正時の65mAは1.2秒くらいの時間しか流れませんので、メカニカルの電源スイッチを追加する事により、かなり長期間電池交換なしで使えると思われます。

この状態の回路図LC_Meter3.pdfをダウンロード

また、PICのソフトも変更しました。LC_Meter1938_3.cをダウンロード

Battlcjpg

左は、リレーを5V品に変えた基板です。

今回採用したリレーは、以前5W QRP CW送信機のアンテナ回路切り替えに使ったあまり品で、内部に永久マグネットが入っているOMRON製の省電力でON出来るタイプです。 サイズも従来品の1/5くらいになりましたので、基板上の配置は見ての通りかなりすっきりしました。

今回、単3アルカリ電池2本により3VのDC電圧を5Vに昇圧しますが、R314を11KΩのままとした為、実際は4.75Vにしか昇圧されません。 しかし、回路はこの電圧で十分動作しますので、このままとしてあります。

Lcmeter0203b

また、このDC/DCコンバーターのICの最低電源電圧保障値は1.8Vですが、電源を昇圧した4.75Vから取れば、最低入力DC電圧として0.9Vまで動作します。 しかし、アルカリ電池でも1セル当たり0.9V以下になると電池の内部抵抗が急激に上昇し、電池2本の場合、1.8V以下になると、4.75Vは維持できません。 このDC/DCのIC資料では、ICの電源は昇圧した後から取れとなっていますが、両面基板の改造が面倒なので、入力側から取っています。

従来、LCDの下の行が余っていたので、何も役に立たない発振周波数を表示させていましたが、電池の電圧表示に変えて、少しは役に立つ表示としました。

その後、このLCメーターを重宝しておりましたが、AM送信機の検討中に、インダクタの値が実際値より小さく表示されるのではないかと言う懸念がありました。 そこで、アンテナチューナーに使用していたステアタイトボビンに巻かれたコイルを、このLCメーターとNFのLCメーターで比較してみました。 約8μHのコイルですが、NFとこの自作機の間で約10%の差がありました。 原因を推定すると、LCの共振回路を構成する回路の接続端子を含めた浮遊インダクタと浮遊容量がかなり大きい事が原因と思われます。

この問題を対策する為、一度消した周波数カウンタの値をLCDに表示するように変更して観察すると、明らかにおかしな数値が得られます。 C測定モードで、測定端子オープン時の周波数と、L測定モードで測定端子ショート時の周波数は同じでなければなりませんが、約0.38%差があります。 そして、C測定モードの時の周波数がL測定モード時より低くなります。 

Tp1

回路の実装状態を考察した結果、LCの切り替えスナップSWから測定端子を含めたワイヤーが持っている浮遊容量の影響であろうと考えられます。 左の回路の赤で囲んだ配線になります。 L=0測定時はこの配線はGNDに接続され、回路が持つ浮遊容量は無視されますが、C校正時はオープン状態ですから、浮遊容量が共振回路にパラに加わり、周波数が下がるようです。 LCメーターのKITで基板にリレーやコイル、スイッチ、接続用端子などを直付けしていますが、このような構造なら浮遊容量を小さく出来、多分この問題は大きくならないのではと思われます。 

Cns3まず、OSC回路からLC切り替えSWまでの回路を確認したところ、測定端子のGND側が別ルートでおおきく迂回していました。 そこで、このGNDラインを発振回路に最短で接続する為、今まで2Pであったコネクタを4Pに変えました。

この変更だけで、C測定モードに置ける端子オープン時の周波数が0.2%くらい変わりました。 しかし、まだC測定モード端子オープン時とL測定モード端子ショート時の周波数差は解消しません。

下の写真は左から、コネクタを4Pに変更した基板、真ん中はLC SWの周りのハーネス接続状態、右はハーネスをコネクターに挿入した状態です。 見ての通り、浮遊容量がかなり大きいと想像できます。

Lcmpwb1_2

Lcmswwire

Lcmwpcb

このLCメーターのケース加工状態では浮遊容量削減はほぼ不可能です。 そこで、C校正とL校正を独立させ、測定する前に必ず校正させるソフトに変更する事にしました。

Nocal

LC SWを切り替える度に、左のような表示をLCDで行い、校正を促します。 また、L校正モードで端子をショートし忘れた場合、あるいはC校正モードで端子をオープンにしていない場合、いつまで経ってもこのNo Caliblationの文字が消えないようにソフトを変更しました。 要は、L、Cいずれも測定前に必ず校正(CAL)を行わないと測定できないソフトに変更したものです。

変更後のソースファイルLC_Meter1938_4.cをダウンロード

また、サンプルのLとCをNFのLCメーターで測り、8uHのコイル(ステアタイトボビンに巻かれたコイル)のインダクタが最も近い値を示すようにCcalの値を修正しました。修正したCcalは990pFとなりました。 これは、使用した基準のコンデンサが990Pであったという事ではなく、周辺の浮遊容量や浮遊インダクタを統合した結果、基準コンデンサの値が990PFと等価で有ったという意味です。

Sampl

Cal_8uh

左上がサンプルL、Cで、白いボビンに巻かれたコイルが公称8uHのコイルでHFのアンテナチューナーに使われたいたものです。 右上の表の黄色の部分にその実測値を示しますが、自作LCメーターの値はCrefを990pFに設定した時のもので、NFのLCメーターに対して誤差0.13%です。その他のデータは、Crefを990pFに固定したまま、自作LCメーターで測定した値とNFのLCメーターが出した値を表示しています。 CもLも値が小さくなると誤差が大きくなりますが、私が使うには十分過ぎる精度が得られています。

Frefwave

左は、校正時の基準周波数発振波形で約495KHzです。

最終回路図LC_Meter4.pdfをダウンロード

INDEXに戻る

2016年7月 7日 (木)

周波数カウンターの製作

[自作 PIC TCXO AN592]

ATUやアンテナアナライザーを製作する中で、周波数カウンターも作ってきましたが、色々実験している内に、汎用の周波数カウンターを必要とする場面が結構発生します。 その為に、アンテナアナライザーの中に外部の信号の周波数をカウントする機能を用意したのですが、このカウンターの入力インピーダンスが50Ωの為、信号源を過負荷状態にしてしまい、場合によっては発振周波数が変わってしまうという不都合がありました。

そこで、入力インピーダンスが比較的高く、40Hzくらいから500MHzくらいまでを簡単に測れる周波数カウンターを新たに作る事にしました。

周波数カウンター回路図 Fcounter0.pdfをダウンロード

使うマイコンはジャンクBOXの中に余っているPIC24FV32KA302という16bitのマイコンです。単純なカウンターですので、8bitでも十分実用になる物をつくれますが、アンテナアナライザーの製作で、開発資産がいっぱいありますので、今回のカウンターは16bitで進行します。

目標の仕様は、40Hzくらいの低周波から500MHzまでのUHFまでをそこそこの精度でカウント出来、入力インピーダンスは10KΩ以上で感度も100mVくらいとしました。

ハード的には、プリスケーラ無しの場合、1Hz単位で10MHzまで、10Hz単位で50MHzくらいまで測れる回路と、1/64のプリスケーラーを付けて1MHz以上1GHzまで100Hz単位で測れる回路をスイッチで切り替えて実現させます。 それぞれの回路にデュアルゲートのMOS-FET BF1211によるLNA(ローノイズアンプ)を設けて所定の感度と周波数帯域を確保します。

Fcfront

Fcback

-

2個のBNC端子の内、左側がAF,HFを1Hz単位ではかれる入力端子、右側が一応1GHzまで100Hz単位で測れる入力端子です。どちらの端子が有効かは真ん中のスナップスイッチで切り替えます。 UHFで動作するプリスケーラーは低い周波数が苦手で、簡単に手に入るプリスケーラーは、2GHzまで測れても最低周波数は100MHzくらいというICが多いのですが、今回使った富士通のプリスケーラーMB501Lは、最高1GHzながら、最低1MHzという、ハムにとっては非常に利用しやすい帯域となっています。 ただし、すでに廃番品種ですので、入手はプレミアム価格を覚悟必要です。

カウンターのゲート時間の管理は、それぞれのカウンター動作モードごとに、独立したカウンター関数を用意し、個別にゲート時間を微調整する事にしています。 校正はFT991から10120.00KHzの信号を送信し、すべてのモードでこの表示になるようにソフトを調整してあります。

Fc40hz

Fc500mhz

左上は、自作の正弦波発振器で40Hzを出力したときのカウント値です。31Hzとカウントしています。 この原因を調べたところ、本来1秒のゲート時間が必要なのに、100msecのゲート時間でカウントした後、10回分の合計を表示した事により、本来のカウント値は小数点付でなければなりませんが、カウント値に小数点以下は含まれませんので、小数点以下を切り捨てて合計した為と判りました。 よって、1Hz単位表示の場合、1秒のゲート時間に変更しました。 この変更の結果、40Hzと表示するようになりました。

右上は手元のCAA-500を最高周波数にした時の表示です。CAA-500の表示との差は1KHz以下ですが、どちらが正しいか判りません。 しかし、私が使う範囲内ならこれくらいの精度で十分です。 また、使用しているプリスケーラーの仕様の関係から、VUHF端子に入力が無い場合、ランダムノイズを計数しますので、表示がでたらめになります。 

ソースコード F-counter.cをダウンロード

C言語で書かれた周波数カウンターは特定の周波数で誤差が出ます。特に、カウンターのbit数が不足する為、ソフトで作成されたカウンターを連結して、カウントと条件判定をCで記述した場合、このソースでもその処理に1.2usから2.4usくらいの時間がかかりますので、この間に、ゲート時間がきたりしたら、その分だけ誤差になります。 精度を上げたい時は、アセンブラで記述しますが、それでも誤差が半分か1/4くらいになるだけで、決定的な対策にはなりません。 誤差が許容できない時は、外部回路によるゲート制御しかないようです。 実験的に、タイマーのオーバーフローを割込みで処理してみましたが、かえって誤差が多くなりました。 また、温度補償を行っていない水晶発振回路の周波数はかなりいい加減です。

2018年10月

DDSによる信号発生器(SG)を作ったので、50MHzを発振させ、このカウンターで測定してみたところ、2.5KHzも多くカウントします。 この誤差をPPMで表示させると、50ppmとなります。 通常の水晶発振器の誤差はこのくらいはありますので、水晶発振子と外付けの負荷容量だけで作成した発振回路の誤差としては当たり前の誤差となります。 今、50MHzのAM送信機を自作中ですが、この周波数を測定して2.5KHzの誤差では、全く周波数カウンターの意味がありません。 そこで、もう少し精度を上げたカウンターに作り代える事にしました。

今までは、最低でも50MHzまでは外部プリスケーラーなしでカウントする為、非同期カウントが可能なTimer1で周波数カウントをしていますが、このカウンターは16bitです。 最大999MHzまで100Hz単位で表示するには最低24bitのカウンターが必要であり、16bitのTimer1がオーバーフローする度に、ソフト的に作成した16bitのカウンターをインクリメントしていました。 このソフトでインクリメントする最中にゲートOFFの時間になると、即カウント誤差が生じ、これが50ppmくらいの誤差となっていました。

一方、この16bit PICの中には、ハード的に連結出来る32bitのカウンターが2系統ありますが、いずれも同期カウンターの為、その最大カウント周波数が10数MHzという条件があり、とても50MHzはカバーしません。 しかし、カウンター入力部に接続されたプリスケーラーの分周比を大きくすると、例え同期式カウンターであっても、カウント可能な周波数は50MHz以上にする事ができます。

An592

そこで、マイクロチップがかなり以前に公開したAN592という技術資料で紹介されたプリスケーラー内のデータを読み出す技法を使う事にしました。 左の回路図がAN592によるプリスケーラー残数を読み出す為のハード接続図です。

AN592の解説はWEB上に沢山ありますので、それを参照して下さい。 この技法は、まだPICの規模が小さく、8bitのカウンターしかなかったころ、内部にある8bitのプリスケーラーを使い、トータル16bitのカウンターにした後、カウント終了後にプリスケーラーの入力にパルスを加え、プリスケーラーがオーバーフローし、タイマーが1カウントアップするまでのパルスの数を数える事により、プリスケーラーのカウント値を知る事ができ、このプリスケーラーの値とカウンターの値を連結した16bitのカウンターから、単位ゲート時間内にカウントした周波数を知る事が出来るものでした。 

左上の回路図はカウントしたい信号を470Ωのシリーズ抵抗経由で、カウンター入力に加え、かつこの入力をRA2という端子を出力にして、外部からの信号をブロックした後、RA2にパルスを出力してプリスケーラーをインクリメントするものですが、470Ωの抵抗が災いして、最高カウント周波数は20MHz位にしかなりません。 

An592gate1

そこで、左に示す様に、AN592が解説する技法を外付けのNANDゲート回路で実現し、この最高周波数が低下するのを防ぎます。 この方法も先人がすでにWEB上で紹介しています。

IC7Aの入力Aにカウントしたい信号を加え、入力Bでこの信号をゲートコントロールします。 カウントソースは入力BがHの時だけ通過しますので、入力Bをカウンター用のタイムゲートで制御してやればOKです。 一方IC7Bは、IC7AがOFFの時、入力BをH→L→Hとすることで、カウンター入力にワンパルスを転送できますので、このパルスでプリスケーラーをインクリメントさせます。 このようにゲート回路を組み、プリスケーラーの分周比を1/64にすると、470Ωの抵抗の場合、22MHzくらいまでしかカウントしなかったのが、110MHzくらいまでカウントするようになりました。

次にタイムゲートを作成する為に、ディスクリートの水晶発振回路をTCXOに変更します。 TCXOは秋月で2個、350円で売られていた、26MHzのセイコーエプソン製ですが、そのまま使うには多少難点があります。 まず、SMT用の極小品ですから、ハンダ付け作業はかなり気を使います。 うっかりすると、端子と金属カバー間をショートさせてしまいますので、かなり先細のコテが必要です。 また、出力が0.8Vpp以上となっていますが、実測で0.9Vppくらいしかなく、そのままでは、PICへ入力できません。 従い、TCXOの出力を1石アンプで増幅する必要があります。 もちろん、このTCXOの電源の為に3.3VのLDOも必要となります。

回路図 Fcounter2.pdfをダウンロード

Txco_pwbこれらのハード変更を行ったのが、左の基板です。

追加したTCXOもNANDゲートもLDOも米粒より小さいサイズなので、良く見えません。 NANDゲートは5pinパッケージに2入力NANDゲートが1個だけ入った物を2個使っています。 LDOは不動在庫していたトレックス製の4pinパッケージ品をつかいましたが、これもTCXOの1/4くらいのサイズです。 これらを、拡大鏡を使いながら、基板にマウントして、テスターで導通確認を行い、動作確認するまで足かけ2日かかりました。

そして、10MHzの標準電波BPMでゼロビートを取ったDDSの信号をこのカウンターに入力し、指示が10,000,000Hzに最も近くなるようにゲート時間を調整した結果が下の写真です。

10mhzcnt

ゲートタイムのカウントはタイマー4,5による32bitカウンターで行いますが、C言語で作成されたプログラムの実行時間はかなり長く、これらの実行時間を含めて、1秒とか0.1秒の時間を作る必要があります。 従い、ゲートタイムカウントモードに入ったら、全ての割込みを禁止した上で、タイマー4,5によるカウント時間は、計算で得られる時間より短めに設定し、細かい時間調整はNOP命令の数で行います。 このようにしても1Hzの差は解消できませんでしたが、それでも0.1ppmの誤差まで詰める事ができました。 50MHzの場合5Hzの誤差ですから、問題なく使う事ができます。

ソースファイル F-counter2.cをダウンロード

カウンターのゲートタイムはプリスケーラーなしのとき1秒と0.1秒のみです。 1秒の場合、1Hz単位、0.1秒の場合、10Hz単位で測定できます。 100Hz単位ならゲートタイムを10m秒に、1KHz単位なら1m秒に設定し、データの更新を早くできますが、100Hz単位、1KHz単位いずれの場合でもゲートタイムは100m秒とし、計測データの未表示部分を切り捨てています。 1/64プリスケーラー付の場合、640m秒のゲートタイムのみで、100Hz単位、1KHz単位いずれも同じゲートタイムです。 このようにすることで、不要な表示チラツキを抑制できます。 また、1秒ゲート以外は全て5回分の計測値の平均を表示させています。

このカウンターは1GHzまで測定できますが、信号源がないので、実際の誤差は判りませんでした。 手元のCAA500mk2を接続すると505MHzくらいまでは測れます。プラスマイナス1KHzくらいは一致していますが、このカウンターが正しいのかCAA500mk2が正しいのかは???です。 逆に言えば、CAA500mk2のカウンターは以外と正確であると言えます。

2019年1月

ゲート時間を一定にしておき、表示桁のみ切り捨てる方式の場合、例えば、99.9の小数点以下を切り捨てると99になりますが、これを1/4分周器を通した後、測定すると24.9から9を切り捨てる事になり結果は24となってしまいます。 ここは25と表示して欲しいので、切り捨てではなく四捨五入する事にしました。 この例では99.9は100と表示され、1/4分周後の表示は25となります。 

修正したソースファイル F-counter3.cをダウンロード

2019年5月

表示に使っている99円のLCDの最上位桁の文字が欠けて数字にならなくなりました。 そこで、このLCDを16文字2行のLCDへ交換する事にしました。 LCDのサイズが大きくなったので、ケースは100円ショップで入手したアクリルケースで作り直しです。

32bitカウンター+6bitプリスケーラーにより、周波数カウント用のカウンターは38bitとなりましたので、カウントそのものは1GHzでも1Hz単位で行えますが、PICの上限周波数が110MHzですので、1Hz単位で表示出来るのは110MHzまでです。

LCDがi2cインターフェースに変わりましたので、PICのi/oの変更も必要となり、ソフトもLCDドライブを全面的に変更する事になってしまいました。 このカウンターを使う時、いつもDC12Vの電源を用意する必要がありましたが、今回、ケース変更に伴い、電池を内蔵させ、どこでも使えるように改良しました。消費電流は50mAくらいですので、追加した電源スイッチにより、1年以上は電池交換なしでつかえそうです。

Fcounter3

LCDに追加した機能は、選択されたBNC端子がA かBかを表示する事。 それに電池の電圧を小数点を省いて表示させます。 左の写真は、50MHzのDDS(すでに26MHzのTCXOに変更し、10MHzでゼロビートを取った改良品)の信号を測定した時の表示ですが、6Hzの誤差で表示しています。 TCXOの温度ドリフトはゼロではありませんが、当初より大きくドリフトはしていないようです。

右端に086と表示しているのは電池の電圧で8.6Vである事を示しています。この電池はすでに3年以上経過した低周波発振器用に使っていたのですが、使用頻度が少なかった為、まだ9Vちかくあります。 カウンター回路は6Vの電圧まで動作しますので、さらに1年くらいは使えそうです。

変更した配線図 Fcounter4.pdfをダウンロード

変更したソフト F-counter_i2c-LCD.cをダウンロード

 

  

2019年10月

しばらく使っていましたら、「Hz」の文字付近の下に、白い雲が現れるようになってきました。 LCDのガラス面に歪が発生しているようです。 コントラストも薄くなってきたようですので、再度このLCDを交換する事にしました。

Ng_lcd

New_lcd

今までのLCDはI2Cインターフェースでしたが、手持ちのLCDは4bitパラレルのインターフェースしか有りませんので、過去のLCDのソフトが使えるように、またPICのi/oを変更し、かつ、パネル化粧も、新しいLCDに合わせて作り直しました。

左が、その完成品のパネルとなります。

LCDは秋月から購入したものでしたが、コントラストがかなり改善されました。

電池を実装したまま、外部DC電源のプラグをDCジャックに挿入すると、電池は回路から切り離されるのですが、同じDC電源で動作している発振回路の周波数を測る為に、プローブをつなぐと、このプローブのGNDラインが電源スイッチをショートする事になります。プローブをつないだまま、外部電源からのDCプラグを抜くと、電池から電流が供給されっぱなしになり、1日以上放置すると、電池が液漏れしてしまいました。  対策は、電源スィッチを2回路にし、OFF時は、DCジャックのGNDラインも切断する事にしました。

最新の配線図 Fcounter6.pdfをダウンロード

最新のソースプログラム F-counter_ACM1602K-LCD.cをダウンロード

簡易型の7MHzのAM送信機専用の周波数カウンターも作成しました。 配線図とソースコードは

VXO再検討 を参照下さい。

INDEXに戻る

2016年1月 3日 (日)

低周波信号発生器

PICマイコンによる正弦波発生器を使いやすくする為、このコントローラーを作成しました。

DAコンバーターを利用した正弦波発生器はこちらを参照下さい。

PICで作成した正弦波発生器はDAコンバーターの駆動周期を初期設定した後、この設定値に基づき、ただひたすらに正弦波を発生し続けるもので、周波数を変更したい場合、PICをリセットする必要がありました。 また、発生する正弦波の周波数はPICのクロックや命令サイクルに依存し、きりの良い1000Hzとか3000Hzとかは不可能で、PIC内部の分周値による決まった周波数しか発生できません。 よって、発生した正弦波の周波数を計測して、なんらかの形で表示が必要でした。 その為、コントローラーには、正弦波発生器の初期値を決めて、RESETする機能、発生した低周波の周波数を計測する機能、計測した周波数を表示する機能が必要となります。

まずは、ソフト開発のデバッグにも使える、周波数(整数)をLCDに表示する機能をつくりました。 詳細はこちらを参照下さい。

正弦波発生器の初期設定とRESETは、本来、メカニカルSWで行っていたi/o操作をオープンコレクタのデジトラで行えるようにするだけですので、これは簡単に実現できます。

Sin_osc_cntler

発生した低周波の周波数を計測する周波数カウンターが必要になりますが、Hz単位での表示となりますので、カウンターのゲートタイムは1秒必要です。 最初,100msec単位で計測し、10回分を合計したカウント値を表示していましたが、周波数が低くなるほどカウント誤差が大きくなりました。 原因は100msecの間に発生するカウントの実際は小数点付になるのですが、PICの中では整数としかカウントしませんので、10回分合計しても、最大で-10の誤差が出ることでした。 やはり、表示はとろいですが1秒間待って表示しています。 周波数を可変すると、正しい周波数を表示するまで1秒以上かかりますが、周波数切り替えやLCD表示に違和感はありません。 

この回路の低周波の出力電圧は約0.78V(0dBm)ありますので、20dBと40dBのATTを設け、-20,-40,-60dBmの信号を得る事ができ、また、可変抵抗器で連続可変できるように、可変抵抗器のつまみの周りに実測値による目盛を入れ、-16dBまで1dB刻みで絞れるようにしました。

1khz_spectol

上のスペクトル画像は1KHzの出力をフリーソフトWaveSpectraで表示させたものです。第2高調波レベルが-40d以下になっていますので、なんとか1%以下の歪率は確保できました。

Sinosc_box

完成した基板やコントロール類、LCDを透明のタッパーの中に収め、単3電池8本の電池パックで動くようにしてあります。 これで、AM送信機の検討が便利になりそうです。

ソースファイル OSC_controller.cをダウンロード

配線図 OSC_schema.pdfをダウンロード

AM送信機のテストの為に使ってみました。一応基本動作はOKで、歪の確認や周波数特性のチェックは出来るのですが、送信ONにすると、周波数があさっての方に飛んでいきます。OFFにしても同じ。 マイコンの高周波妨害耐力は甚だ弱いようです。 少しでも効果があるようにと、タッパーの内側に銅箔テープを貼り、アースしたのですが、イマイチでした。

そして、AM送信機の出力を40Wまでアップしましたら、送信中に周波数変更もできない事が発生しました。 暇なら対策しますが、今はAM送信機を完成させる事の方が優先で、インターネット上で「WaveGene」というフリーソフトを入手し、PCから正弦波を供給しています。 こちらの方は、PCが誤動作しない限り大丈夫ですが、そのままでは誤動作しますので、USBマウスの根本に40mmの長さのフェライトコアを挿入し、このコアにUSBケーブルを4回も巻きつけております。

暇になりましたので、RF回り込みによる対策を行いました。 配線図とソースファイルは修正済みです。(2016年7月31日)

その後、PCのWGの利用と、パナソニック製のファンクションジェネレーターなどの入手により、この発振器はジャンク箱いきとなり、今では部品取りの材料になってしまいました。

INDEXに戻る

2014年9月17日 (水)

半田鏝(ハンダゴテ)のアース

同じ回路を同じプリント基板上に組み立て、色々と問題点の検討をしているとき、ある特定の人がショッチュウ半導体を壊していました。電源を入れたまま部品交換するな!と言ってあったのですが、それでもFETが壊れた、ICが壊れたとトラブルは発生し続けていました。

Solderiron

原因は、ハンダゴテの先端の半田を溶かす部分を接地した為でした。  感電の危険を防止する為に、日本でも接地端子のある3ピンのコンセントを用意した環境が存在します。そして、ハンダゴテのコテ先もこの接地端子に接続できるようにした、安全性100%とうたわれたハンダゴテも存在します。

しかしながら、3ピンの独立したアース端子が付いたコンセントやテーブルタップを用意しているのは、工場や、プロフェッショナルな作業を行う場所で、一般の家庭や、事務所などでは、2ピンのコンセントがほとんどです。 このような環境では、この手の接地したハンダゴテや機器はかえって感電を招く事になります。 感電には至らないけど、数十ボルトのAC電圧が加わり、トランジスターやICを壊してしまいます。 なぜそうなるのか以下説明します。

世の中にある機器や試作検討中の電子回路を含めて、そのGND側がすべて大地に接地されているのなら、全く問題ありませんが、日本の電気器具は接地を強制しません。 代わりに、商用電源の2本の電線のうち、片方のみが大地に接地されています。 この接地された端子はコンセントの受け口の横幅が少し広くなっていますが、機器についているプラグは極性が有りません。 よって、機器の内部では、ホット側、GND側と言った識別はありません。一般的に、絶縁トランスで絶縁された機器はこのホット、GNDの区別は不要で、2次側と1次側の間は数十メグオームの絶縁抵抗で隔てられており、感電の危険は有りません。

ところが、雷対策や、ノイズ対策で、この1次側と機器のシャーシの間にコンデンサを接続したり、数メグΩの抵抗を入れたりしています。コンデンサは高周波用ですので、50Hzや60Hzの商用電源では無視できるほどのおおきなインピーダンスであり、また抵抗も感電を感じるような電流は流せませんので、無害です。

しかし、高いインピーダンスであるにせよ、そこには大きな電位差が発生します。仮に、ホット側とGND側からシャーシに0.01μFのコンデンサがつながっている場合、シャーシは大地に対して50VのAC電圧を持っている事になります。

実際にどのくらいの電位差があるかは、2台の品種の異なる機器のケース間の電位差をテスターで測ればすぐに判ります。 ごく普通の機器では10Vから20Vくらいの交流電圧が存在します。ところが、工業用の計測器や電源装置は、ほとんどの機器が3線式の電源コードを使い、シャーシは必ず大地に接地するように設計されておりますが、一般家庭や簡易の作業台の場合、アース端子はどこにも接続せずに使っているのが現状です。これらの機器は前述の1次側とシャーシ間に結構小さいインピーダンスをもつコンデンサが接続されている事が多く、例えばDC電源とオシロスコープのGNDどうしを手で触ったら感電したという事もよく発生します。

DC電源のGNDを接地していない場合、GNDの電位は宙に浮いている状態になります。しかし、大抵の電源はそのノイズ対策の為、1次側とシャーシの間にのノイズフィルターという名でコンデンサが接続されています。そこへ、接地されたこて先をもつハンダゴテを当てると、前述の電圧分の電位差が回路素子に加わり、例え通電してなくても、回路素子を壊してしまうという事態になる訳です。 最近のスイッチング電源などは要注意です。

電子回路を検討する場合、ハンダゴテのこて先は完全に絶縁状態にして、回路素子にこて先を当てても電位差が生じないようにします。 ハンダゴテも電源も接地したらいいではないかと言われるかも知れませんが、それは貴方が管理している機器だけの事で、「ちょっとハンダゴテ貸して」と借りた途端、大事な試作回路を壊してしまうのです。

電源プラグが3ピンで機器をGNDへ接続する事が義務付けられている国では、測定器、DC電源を含め、ハンダゴテのGND線(緑と黄色のらせん模様)をニッパで切っていました。 感電のリスクより、検討する回路が壊れるのが怖かったのです。 また、このGNDラインがつながったままの場合、測定系にループが出来て、正確にデータが取れないという問題の対策としてもGNDラインのカットは必要でした。 この国の中にある工場で、問題のあるプリント基板を検討しようとして、ハンダゴテを借り、64ピンのマイコンの足を再ハンダしようとした途端スパークが起こりマイコンが壊れたのは言うまでもありません。結局、ほとんど設備のない場所で64QFPのマイコン交換は丸1日かかってしまいました。

ちゃんと設計された工業用DC電源はGND端子をケースにつなぐか宙に浮かすか選択できるようになっています。実は、宙に浮かして安心していても前述のフィルター名目のコンデンサはつながっています。 また、PCはほとんどスイチング電源ですから、PCのGNDは大抵20Vくらいの電位差がありますので、例え微弱電流しか流れないにしても、耐圧以上の電圧が一瞬加わる事により、半導体を壊してしまうのです。 トランジスターやICを壊して、ロスを発生させる前に、アナログテスターでハンダゴテやDC電源やその他の機器のGND間のAC電圧を測定して置くことですね。そして、AC電圧が小さくなるように各機器のプラグの極性を変える事です。  最近のデジタルテスターは入力インピーダンスが高くて、のきなみ高電圧を表示します。 20KΩ/Vようなアナログテスターの方がこの判定はより正確です。

ハンダごてのこて先への電圧リークは論外です。こて先と接地間で電位差が生じるようなハンダごては、こて先を接地する前に、即廃棄する事をお勧めします。

最近の事例としては、GNDラインが接地されていないPCを、USBケーブルでVNAにつなぎ、VNAのテスト端子をアンテナにつないだら、高価なVNAが壊れたという悲劇が有りました。

INDEXに戻る

2014年6月 9日 (月)

C メーターの製作

カテゴリ<道具

最近、チップ部品を多用していますが、一度実装したチップコンデンサは、いくらの容量であったか判らず、疑義を生じた時は、判っているコンデンサに取り替えるという手間をしいれられていました。 在庫が沢山ある場合、問題ありませんが、手持ちが1個や2個になると、外したコンデンサをまた実装する事になりますが、机の上は外したコンデンサだらけで、どれがいくらの容量だったか忘れてしまう事が度々です。 また、運悪く、テーピングからこぼれたコンデンサは、その容量は?で結局ごみ箱行になります。 何かいい手だてはないかと思案していましたら、「JH1HTK方式Cメータ」なるものがある事が判りました。 1PFの容量も測定できるとインターネット上で紹介されていました。

ちょうど、手元に、壊れたクロスメーター式のSWR計と使い道が決まっていなかった広帯域発振器が有りましたので、ジャンク箱をかき回して、手持ちの部品を使いながら作る事にしました。

まず、アナログメーターですが、メーター感度はフルスケール100μAという高感度品ですので、Cメーターには最適です。 しかし、FWD側のメーターは内部で断線しているようで、全く振れません。REF側は生きていますので、FWD側のメーターユニットを取り去り、新たに0から10PFまでの目盛をJW-CADで作成し、これを光沢フォト印刷用紙に実寸大で印刷すると、メーカー品並みの仕上がりで目盛板ができました。

広帯域発振器は、秋月で販売していたLTC1799という品番の方形波発振ユニットです。 以前、FT-450の修理の為、トランジスターを手配した事がありますが、部品代と送料が同じくらいの金額でしたので、何かに使えるかも知れないと一緒に購入しておいたものです。 LTC1799というLinear Technolgy社のICはRSで買っても400~600円しますので、秋月のユニットはお買い得ですね。

このCメーターはCMOS ICの消費電流が負荷となるコンデンサの容量や、ドライブする周波数により変化する事を利用したもので、アナログメーター式ではありますが、かなり正確に測れるらしい。 そのCMOS ICはインバーター1回路を使用するとのことでしたので、ジャンク箱から40年くらい前のモトローラー製の4069UBといインバーターを見つけ出しこれを使用する事にしました。

また、暗電流キャンセルの為に定電流回路が必要で、ジャンクションFETを使った回路が良く使われているようです。残念ながら、手元にJ-FETが有りませんので、ここはジャンク箱にゴロゴロしている3端子レギュレーター2個で、常に一定の電位差を作り、抵抗値を選ぶ事により常に一定の電流を得る事にしました。 5V用と3.3V用のレギュレーターをシリーズに接続し、CMOS ICや広帯域発振器は3.3Vで動作させ、5Vと3.3Vの電位差1.7Vの間に半固定抵抗を入れば、任意の定電流を作れます。 

2.54mmピッチの蛇の目基板にCMOS ICや発振ユニット、3端子レギュレーターを実装し、動作テストすると、100PFや1000PFはいとも簡単にフルスケールが得られ0PFの暗電流キャンセルも簡単に調整できますが、10PFレンジのテストを行うと、うまくいきません。 うまくいかない最大の原因は、周波数を上げていくと、消費電流も比例して増えていくのが正常ですが、15MHz以上になると、逆に電流が減少していきます。 最近の高速CMOSではないからかもと、データシートを確かめると、昔の4069は電源電圧が5V以下になると急激に動作可能周波数が下がってくる事がわかりました。 原因はJ-FETが手元に無かった為、3.3VでCMOS ICを動作させたことのようです。 3.3Vの電源を外部DC電源に変更し、30MHzくらいまでリニアに電流が増える電圧を探すと、3.7V以上あればOKである事がわかりました。 3端子レギュレーターの出力電圧をかさ上げする場合、GND側にダイオードをシリーズに入れ、本来の出力3.3VにダイオードのVf 0.6Vを加えて3.9Vを作る事ができます。  ところが、ダイオードを1個入れたのに3.5Vにしかなりません。 3.3VのレギュレーターはLDOと呼ばれる安定化電源で、消費電流が少なく、シリコンダイオードのVfが0.2Vくらいしかならないような電流しか流れません。ダイオードを3個シリーズにいれると、3.9Vの電圧を実現できますが、微小電流によるかさ上げは、温度変化に敏感になる可能性が強く却下。 インジケーターとして使用しているLEDの電流をダイオードに流し込み0.6VのVfを確保することにしました。 4069を74AHCシリーズのICに変更し、3.3VのLDOのままで動作するようにする案もありましたが、LTC1799も3.3Vのままでは、周波数が20MHzを超えると方形波出力が難しく正弦波にちかくなり、これがまた周波数対消費電流の変化を狂わせてしまいます。

J-FETが入手でき回路を5Vで動作させるのが一番のようですが、とりあえず、以上の対策で使う事が出来るようになりました。

Cmeter1

Cmeterbk1

一応、基本動作はOKとなりましたので、レンジ切り替え用ロータリースイッチやつまみ、半固定抵抗、ケース、電池用ケースとコネクター、それに電池を加えると、3000円近くかかってしまいました。 全体の消費電流は4mAくらいですので、レンジ切り替え表示のLEDにバッテリーインジケーター機能を持たせ、電池電圧が6.5Vを下回ると、LEDが次第に暗くなり6V以下ではほとんど点灯しなくなるようにしました。

Cmeter2

実際の使用では、取り付けられたターミナルに無接続の状態で0PFのキャンセル回路が調整されています。 コンデンサを掴みやすくするためにミノムシクリップを接続すると、この赤色のリード線を取り付けただけで1.2PFくらいを示します。しかも、リード線を動かすとコロコロと数値が変わりますので、ミノムシクリップを使って10PF以下を測定する時は、この浮遊容量を気にする必要があります。

このCメーターは、容量不明のチップコンデンサの容量確認を目的に作ったものでしたが、いざ、使い始めると、自作のポリバリコンや2本のビニール線を互いによじって作ったアンテナチューナー用のコンデンサの容量確認時に威力を発揮しています。

C-METER配線図をダウンロード

5Vのレギュレーターは1Aクラス品ですが、ここは0.1Aの78L05でも問題ありません。   使用している抵抗に75KΩという特殊な値を使っている所がありますが、使用するZDの品種でこの抵抗値は変わります。100KΩの半固定にして、調整可能にした方がいいかも知れません。

容量だけでなくインダクタンスも測れるデジタル式LCメーターの自作はこちらにあります。

INDEXに戻る

続きを読む »