2015年05月06日

ISPでArduinoを楽しむ!V

DSC01125.jpg

普通なら、Arduinoの専用ボードを入手して色々遊んでから、ISP書き込みになるのでしょうが、今回はISP書き込みができることを知って、それを確かめることからはじめました。
今回確認できたことは、Arduinoの沢山あるライブラリを活用するのに専用ボードは必要ないということです。
つまり、普通に売っているATMELのAVRマイコンである、ATmega168やATmega328をそのまま組み込みマイコンとして使用して、基板に乗せたままISPプログラムできるということです。
これまで、BASCOM-AVRで使用してきたプログラムライターである、USBaspやAVRISP、AVRISPmkU等があれば、今までのBASCOM-AVRと同じようにプログラムを書き込むことができるのです。
勿論、ソフトウェアはBASICではなくCをベースにしたものになりますが、ArduinoIDEという開発ソフトは素人にもとっつきやすくできています。そして、驚きは、大概の制御ライブラリはネット上にあふれダウンロードして使うことができます。
当局は、Cが苦手でこれまで実用ソフトを作ったことがありませんでしたが、実質1日でロータリーエンコーダーで回転パルスを入力し、DDSの周波数を可変して、その周波数をLCDに表示するというところまでを作ることができました。
これは、DDS制御や、LCDの制御のライブラリがあったからです。DDSの制御は殆ど4行くらいのプログラムで、必要な周波数の10進数(たとえば7000000Hz)を代入するだけで出力が出てきます。これまでのBASICよりはるかに楽です。LCDも同様です。
更にすばらしいのは、最近流行のI2C制御のLCDの制御や、TFT液晶の制御ライブラリもあります。
DDSの次のオシレータとしてはやりつつある、シリコンラボ社のSi570やSi5351の制御ライブラリもあります。
Si5351は8KHzから150MHzまで3つの独立した周波数の出力を出すことができるICです。しかし、レジスタは100以上もあり、その設定や、周波数の計算は複雑なのですが、ライブラリを使えばいとも簡単に出力を出すことができました。このICは機能が多く使いこなすにはそれなりに勉強が必要ですが、とりあえずVFOとしてDDSの代わりに使う程度なら出来上がってしまいました。

DSC01112.jpg
Si5351ボード
DSC01111.jpg
先日のDDSの変わりにSi5351ボードを駆動したブレッドボード

後先が、逆になってしまったのですが、専用ボードも欲しくなり先週のQRP懇親会で秋葉原に行った時、aitendoのびんぼうでいいのという500円の基板と250円の部品セットと380円の書き込み済マイコンを買ってきました。

DSC01120.jpg

ついでに、999円のカラーTFT液晶も買ってきました。
それを組み立て、サンプルソフトを動かしたのが最初の写真です。一部、表示を書き換えてあります。どこをどう書き換えればどのように表示されるのかは、実際にやってみれば簡単にわかりました。



ポート数は食いますが、自作のTRXでカラーのドットマトリクス表示ができそうです。
自作の楽しみもまた増えるのではないかと期待しています。
ということで、何も目的を決めていなかったのですが突然思いつきで始めた今年のGWの実験は終わりになりました。また、あすから本業に戻ります。

posted by ja6irk at 22:18| Comment(2) | TrackBack(0) | AVR&Arduino

2015年05月02日

ISPでArduinoを楽しむ! U

連休で時間があると一気に進みます。
とりあえず、LCD表示、タイマー割り込みによるロータリーエンコーダーのカウント取り込み、中華製DDS(AD9850)の制御による出力周波数可変まで出来上がりました。

DSC01108.jpg

プログラムの書式など、今までのBASICとは勝手が違い、書式エラーを沢山出しながらでしたが、なんとなく雰囲気がつかめて来ました。
LCD表示、タイマー割り込み、DDS(AD9850)については、サイト検索でライブラリーが見つかり、簡単に実現することができました。特に、DDSのライブラリは中華製DDSの基準クロック125MHzをベースに作ってあり、周波数データとして必要な周波数を10進数で記述するだけで(ex.7000000で7MHzとなる)簡単に出力することができます。途中の計算プログラムを考える必要がありません。

DSC01110.jpg

ローカルのOMさんが言われていた、ライブラリのコピペで簡単にできますよ!が、確かにそうだな〜と言った印象です。
ただ、ロータリーエンコーダーの取り込みのプログラムは自分で作りました。ライブラリは沢山見つかるのですが、殆どが外部割込みによるライブラリです。
当局の経験的には、外部割込みでエンコーダーを使用すると殆どの仕事が割り込み処理になってしまいほかの仕事に影響が出るのと、チャタリングの処理で結構苦労します。(ライブラリにはチャタの処理つきが多いですが)
これまでは、タイマー割り込みでうまく動いていたので今回もそれで作ってみました。割り込みは1mSとしていますが、1回転20パルス程度でしたらもっと遅くても問題は出ないと思います。ただ、今までは4倍速でカウントしていたのですが、今回は4倍速は実現できていません。もう少しソフトのコマンドを勉強しないとダメです。



ライブラリは別になりますが、今回のプログラムを参考のために記載しておきます。
(goto文を多用するなどCライクではありませんがあしからず)
これだけの記述で機能が実現できているよ!という参考程度にお願いします。

/*

The circuit:
* LCD RS pin to digital B0
* LCD Enable pin to digital B1
* LCD D4 pin to digital B2
* LCD D5 pin to digital B3
* LCD D6 pin to digital B4
* LCD D7 pin to digital B5
* LCD R/W pin to ground

*/

// include the library code:
#include
#include
#include

#define enc0 A4
#define enc1 A5

#define led0 A0
#define led1 A1

int enccnt = 0;
int encold = 0;
long fcnt = 7000000;
int intcnt = 0;


// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(8, 9, 10, 11, 12, 13);
EF_AD9850 AD9850(7, 6, 4, 5);// (CLK,F-UP,RST,Data)

void setup() {
// set up the LCD's number of columns and rows:
lcd.begin(16, 2);

pinMode(enc0,INPUT_PULLUP);
pinMode(enc1,INPUT_PULLUP);

pinMode(led0, OUTPUT);
pinMode(led1, OUTPUT);

MsTimer2::set(1, timer2int); // 1ms period
MsTimer2::start();

AD9850.init();
AD9850.reset();
AD9850.wr_serial(0x00, 1000000); //1000000Hz
// initialize serial communications at 115200 bps:
Serial.begin(115200);

}


void loop() {
// set the cursor to column 0, line 1
// (note: line 1 is the second row, since counting begins with 0):
lcd.setCursor(0, 0);
lcd.print("JN3XBY/1");

lcd.setCursor(9, 0);
// print the number of seconds since reset:
//lcd.print(millis() / 500);
lcd.print("Arduino");

lcd.setCursor(0, 1);
lcd.print("FREQ=");

AD9850.wr_serial(0x00,fcnt);

// lcd.setCursor(0,1);
lcd. print(fcnt);
lcd. print("Hz");

}

//*** Timer2 INT Routine***************************
void timer2int() {

//*** Encoder Count Routine ***
if (digitalRead(enc0) == LOW) {goto ret;}
if (encold == 1) {goto ret1;}
encold = 1;
if (digitalRead(enc1) == HIGH) {fcnt = fcnt + 10;}
if (digitalRead(enc1) == LOW) {fcnt = fcnt -10;}
goto ret1;
ret:
encold = 0;
ret1:
//*******************************

//*** 100mS LED ON/OFF **********
intcnt = intcnt + 1;
if (intcnt < 100){goto ret2;}
static boolean output = HIGH;
digitalWrite(led1, output);
output = !output;
intcnt = 0;
ret2:
//*******************************
;
}
//************************************************
posted by ja6irk at 11:43| Comment(4) | TrackBack(0) | AVR&Arduino

2015年05月01日

ISPでArduinoを楽しむ!

今年も早いものでもう5月です。例年だと玄関先の鈴蘭が綺麗に咲いていたのですが、昨年から東京に移り住んでいるため鈴蘭がどうなっているのか知る由もありません。
この連休はとても穏やかで、むしろ暑いくらいです。
特にやることを決めていたわけでもなかったのですが、何気なくサイトで見つけていた専用ボードを使わなくてもArduinoを使う方法を試してみることにしました。

DSC01105.jpg

もともとArduinoは当局が愛用するAVRを使用しており気にはなっていたのですが、専用ボードとなっておりTRXとか組み込み用として使うにはボードのサイズとか使いにくいな〜とか思っていました。
また使用する言語もCライクな言語で当局にはなかなかなじめないものがありました。
これまではAVRとBASCOM-BASICでなんら不自由を感じていなかったこともあります。
しかし、最近ローカルのOMさんが使い始めておられ、色々を参考アプリが沢山あって便利で簡単だよ!と強力に勧められていました。
確かにWifiアプリやカメラアプリなど自分だけではこなせない難題アプリもあるので、一層気になっていたのも事実です。
そういう状況で見つけたのが、タイトルのように専用ボードではなく、AVRの単体チップにISPで直接書き込んでArduinoを動かそうというものです。
実際は、何も難しいことはなくて、手持ちのAVR(ATmega168や328)と手持ちのライターUSBaspに、ダウンロードしたArduinoIDEに、USBasp用のドライバを組み合わのせるだけで、従来のBASCOM-AVRでやっていた時と全く同じようにAVRチップを組み込み状態(ISP)でプログラムを書き込めるようになりました。

DSC01106.jpg
ALEXPRESSで買っていた200円程度のUSBaspライターとその改造版(どちらも使えた)

これで、何千円もする専用ボードを購入する必要もありませんし、コンパクトに機器を自作することができます。
ここに至る簡単な手順を備忘録として以下に記載しました。

1.ArduinoIDEのダウンロード
 下記サイトから、自分のPCのOSにあったものをダウンロードします。
 ページが開き、すでに100万以上ダウンロードされ更に開発を加速するために寄付をお願いされます。
 試用であれば、JUST DOWNLOADで問題ないでしょう!

 http://www.arduino.cc/en/main/Software

 そしてインストールします。

2.USBasp(ISPライター)のドライバのインストール
 下記サイトからドライバをダウンロードします。

 http://sourceforge.jp/projects/sfnet_libusb-win32/

 zipファイルですので展開して、そのフォルダの中にあるbinの中の inf-wizardを起動します。
 
 inf-wizard1.jpg
 NEXTを押します。
 inf-wizard2.jpg
 USBaspを選択して、NEXTを押します。
 inf-wizard3.jpg
 NEXTを押します。
 inf-wizard4.jpg
 保存を押します。
 inf-wizard5.jpg
 Install NOWを押して完了です。

3.ArduinoIDEを立ち上げます。
 以下、LCDTESTプログラムを書いた状態から、書き込みまでの手順です。

 Arduino IDE.jpg 

 Arduino IDE1.jpg
 ツール>ボード>Arduino Nano を選択します。
 Arduino IDE2.jpg
 ツール>プロセッサ>ATmega168 を選択します。(ATmega168を使用したため)
 Arduino IDE3.jpg 
 ツール>書込装置>USBasp を選択します。
 Arduino IDE4.jpg
 ファイル>書込装置を使って書き込む を選択すると書込みが始まります。

 とりあえず、ISPでの書き込み方とLCDの表示やポートの制御はわかったのですが、タイマー割り込みとか、実用プログラムの作り方はこれからです。休み後半は用があるので、今日辺りで何処までかけるようになるかです。とりあえず頑張ってみます。

※Arduinoは、ハードの壁を低くして色々な機能を実現するというような思想で始められたと理解しております。従って、ISPで組み込みでソフトを含め物作りするというのは、この考え方に反するものなのかもしれませんが、当局は、この考え方に反論しているわけではありませんのご理解ください。
むしろ、ハードの敷居を低くして自作派が増えていることに喜ばしく思っております。
当局的には、Arduinoの成果を借りて自分としてのソフトの敷居が低くなって今までできなかったものができれば良いかな〜と思っております。


posted by ja6irk at 13:10| Comment(4) | TrackBack(0) | AVR&Arduino

2015年04月04日

FT-817用 世羅多フィルタ製作 その後

DSC01024.jpg

前回の実験と製作はうまく行ったのですが、残念なことに基板をさかさまに作ってしまいFT-817のケースのふたを閉めることができませんでした。
そこで、もう一回気をとりなおして基板を作り直しました。
真剣に探したわけでもないのですが、FT-817に使用されている2mmピッチの基板to基板のコネクタも見つかりそうにもなかったので、2.54mmピッチの8pinICソケットを片側ずつに切り離して使用しました。

DSC01025.jpg

DSC01023.jpg
こんな風にFT-817の本体基板のコネクタに刺さっています。

実際には、スピーカの端が少し当たっているようにも思いますが、ふたは無事に閉まりました。
めでたしめでたしです。

DSC01022.jpg

フィルタの素子数は、JA9TTT加藤さんのオリジナルと同じく5素子としました。切れ具合にそれほど差があるようにも思えませんでした。

posted by ja6irk at 12:12| Comment(0) | TrackBack(1) | QRP-HomeBrew

2015年03月22日

FT-817用 世羅多フィルタ製作

DSC00994.jpg 

先日、ネットサーフィンしていたらiCOMさんのHPで冨川OMが寄稿されている製作記事BEACONの中にセラミック発振子の周波数を変える記事を見つけました。このときひらめいたのは、周波数を変えたセラミック発振子を5素子、6素子と作れば中心周波数455KHzの世羅多フィルタができるのではないかということです。
 世羅多フィルタはJA9TTT加藤さんによるラジオ用セラミック発振子を用いたフィルタですが、出来上がったフィルタは、中心周波数が発振子の周波数より低くなってしまいます(おおよそ10KHz程度)。
自作のTRXなどに使用する場合は、これでも問題はないのですが(局発の周波数を対応すればいいから)、メーカー製のTRX等では、中心周波数が455KHzものが必要となってきます。
 当局も、FT-817の中古が安くなったので入手していたのですが、CW用のフィルタは本体の入手金額の半分以上の14000円程度もするので、購入していませんでした。世羅多フィルタを使用したQRP TRXは自作機があったから、まあいいかといった感じです。
 http://blog.toshnet.com/article/5109739.html

 しかし、上記記事を見つけ、作ってみたくなり検討から始め、そこそこに良い感じにできましたので紹介します。

 セラミック発振子として使用したのは、以前共同購入で大量に入手していた中華製のCRB455というものです。今でも、100個 送料無料で9$程度で売っているようです。
 記事に従って、セラミック発振子の中を開き、四隅を削って共振周波数があがるのを確認し、まず1素子のフィルタ回路を作って、加工したものが455KHzにできるだけ近づくように少しずつ削ってゆきました。
削りすぎると周波数が高くなり、元には戻せないので不良品となります。従って、周波数を見ながら少しずつ削ってゆきます。

DSC00977.jpg
発振子のケースをニッパでむしりとった
DSC00978.jpg
わきも同様
DSC00979.jpg

DSC00981.jpg
発振子が電極にサンドイッチ状に入れてある
DSC00983.jpg 
右が削る前、左が削ったもの
DSC00984.jpg
削る前の共振周波数
DSC00986.jpg
削ってゆく途中の共振周波数
DSC00987.jpg
完成した共振周波数(スペアナの表示は違っているが、正しく455kHz)
DSC00993.jpg
フィルタとして構成した時の共振点の特性(山なり)

 勿論、全く同じ455KHzものが作れる筈もありませんが、大体±100Hzに合わせ込みました。5素子ほど作ったところで、世羅多フィルタを構成し、ちゃんと455KHzになっているか確認します。センターは50Hz程度ずれていましたが、まあ使えるだろうとそのまま進めました。
 このフィルタは-3dB帯域を5,600Hz程度を目標にしましたので、入出力インピーダンスが35Ω程度となっており、FT-817に実装するには2KΩにインピーダンス変換する必要があります。ここは、JA9TTT加藤さんの設計を参考に手巻きで7mm角コイルの変換器を作りました。しかし、」挿入損失が-17dB程度あり、フィルタのOn/Offでかなりの音量差が出ていました。3素子で我慢できるかな?といったところでした。コイルを巻きなおしたり色々やって見ましたがうまくいかず、FT-817の本体基板から電源を取ることを前提に、FETアンプを挿入することにしました。これも、加藤さんのSR-7用に設計されたものを参考にしました。

DSC00995.jpg
アンプを入れる前
DSC00996.jpg
実装した時の様子(これで十分実用的)

 どうせアンプ入れるならとフィルタを6素子にし、基板も作ってみました。最初は、蛇の目基板での実験でしたが、結果として、蛇の目基板でも再現性に変わりはないようです。
 結果としては、非常に良い感じのものができました。INRAD等の良いフィルタと比較にはならないのかもしれませんが当局的には、大満足です。以前に仕入れた 安い発振子と、分けていただいていたコイルボビンと線、手持ちのコンデンサ、FETなどを使用しましたので、今回の製作に掛かった費用はゼロでした。
ゼロから集めても2000円はしないと思います。

 FETアンプの電源は、オプションフィルタ用の端子からは取れないので、結果としてスピーカコネクタのすぐ横にあるAFアンプ用のICの端子に半田付けして取りました。(Pinピッチが一番広くて取りやすかったから)

 このフィルタを製作するには、周波数特性を測るFRMSやスペアナ(トラゼネ付き)が必要です。また、中心周波数が重要ですので、10Hz程度以上の精度のある安定した周波数カウンタか基準信号が必要になります。100Hzズレて製作したら何を作っているかわからなくなるのではないかと思います。
 昨年は、周波数高精度病になり、RbOSCやGPSカウンタ等を入手、また作っていましたので役に立てることができました。
 また、基板本体から半田付けで電源を取りますので、もし、まねをされるのであれば自己責任でお願いします。

DSC01016.jpg
基板化したフィルタ

FT-817世羅多フィルタ20150321.BMP
回路図
DSC01010.jpg
実装した様子(上に飛び出している)

フィルタの切れ具合と聴感が聞けます。

 しかし、とても残念なことに、蛇の目基板では裏返しに製作し蓋ができたのですが、基板化する時に裏返しに作ることを忘れてしまい、蓋が閉められない構造になってしまいました。工夫をするか、もう一回基板の作り直しです(トホホ)

追伸:使用したセラミック発振子は、封を開けて削って使用していますので、経年変化に対しては全く考慮されていません。物理的に機械共振だと思うので大丈夫だとは思いますが、湿気や温度での性能変化は?です。


posted by ja6irk at 19:28| Comment(2) | TrackBack(0) | QRP-HomeBrew

2015年02月11日

1SEG USBチューナーでスペアナ

DSC00966.jpg

自作記事ではありません。
1SEG USBTVチューナで広帯域のSDRRXを実験する記事は以前からよく見かけていましたが、試してみることはありませんでした。
aitendoで1000円程度でリモコン付きのチューナーを売っているのも知っていましたが、人気商品のようで入荷するとすぐ売り切れとなっていることが多いようです。
先月は、エアーバンド用のRXを自作してみましたが、上記の1segチューナを使えばエアーバンドも受かるのではないかとaitendoのサイトを見たらやはり売り切れです。
秋葉原に出かけた時になんとなく見ていたら、なんと650円で1segチューナーを売っているではありませんか。
しかも、ふれこみにはSDRに使えそうなことが書いてあります。日本向けの製品で当然日本のテレビも見れるはずです。

DSC00968.jpg

DSC00970.jpg

DSC00972.jpg

DSC00971.jpg

DSC00973.jpg

売っていたのは千石です。入り口の床に箱に入ってドンとおいてありました。
アンテナも、ロッドアンテナと、外部アンテナと接続するためのMCX⇒F型の変換ケーブルも付いています。
早速購入してみました。TVを見るためのドライバやアプリのソフトのCDも付いていましたが、インストールすることなく、サイトを探して広帯域RXとしてのアプリを探してインストール。
あっけなくSDR広帯域RXが出来上がりました。なんと、AM、FM、SSB、CWなど色々なモードに対応しており、最初の目的のエアーバンド以外に、144MHzや430MHzのCW,SSB、FMも簡単に受信することができました。
とても便利なソフトです。リグの電源を入れなくてもネットサーフィンをしながらワッチが可能です。


SDR画面.jpg

普通ならここで終わってしまうのですが、このチューナーは22MHz〜1100MHzまでの受信が可能なようで、1.2Ghzが受信できないのはちょっと残念でした。機種によってはもっと高い周波数まで受信できるものがあるようです。
当局的には、折角CWやSSBが受信できるのであればHFも受信できるようにしたいと思いサイト検索をしたのですが、流石に多くの先達がいらっしゃり、コンバータキットもあるようです。100MHzのアップコンバートが普通のようでした。どうせなら自分で作ろうかと思いつつ、これだけ広帯域で受かるのであるならスペアナとして使えるのではないかと考えました。
やはり先達がいらっしゃいます。スペアナとして使用するためのソフトウェアもフリーで見つかりました。
マニュアルも読まずにさっと使った感じでは使えそうな気がします(使いこなしてはいませんが)。

76-90MHz画面.jpg

76-90MHz画面2.jpg

入力にアッテネータ位は必要になると思いますが、自作TXの高調波測定などには使えるのではないかと思います。測定帯域を広げると測定には時間が掛かりそうですが、650円で簡易スペアナが手に入ると思えばものすごく得したような気がします。
オシロなら中古や中華製でそこそこの値段で買えますが、スペアナはまだなかなか手に入れにくいと思います。(当局は清水の舞台から飛び降りて中古を購入しましたが、使い道は信号の性能や高調波の測定、フィルタの特性測定くらいです)
650円なら1台持っていても損はしないと思います。ソフトを入れれば1Segを見ることができますし。
自作記事ではありませんが、お勧めの記事です。

スペアナに関しては下記URLを参考にしました。探せばもっとあるのではないかと思います。
http://pub.slateblue.tk/memo/day3301.html



posted by ja6irk at 15:25| Comment(6) | TrackBack(0) | 徒然なるままに

2015年01月18日

エアーバンド受信機U

ケースベルト1.jpg

先週に続いて、エアーバンド受信機の仕上げをしていました。
まず、適当に作った基板のためにケースに入りきれなかった分を外側ケースを作ってつなぎました。
薄いアルミ板を巻いただけですが、それなりにアクセントになったかと自己満足です。

ケースベルト.jpg

航空無線は短いやり取りの繰り返しで、受信していない時のノイズも気になったので、スケルチを追加しました。
幸いにもラジオICのAGC電圧出力があるので、これをマイコンのA/D変換で読み取って、無信号レベルでAF回路にTRでミュートを掛ける様にしました。
元々マイコンのポートは一杯だったのですが、7SegLEDの表示桁を8桁から7桁に減らして、ドットポイントの表示もやめにして2ポートを捻出しました。
また、折角AGCレベルを読んでいるのでSメータ機能も追加しました。
こちらは、どう表示するか悩みましたが、信号を受信してスケルチが開いた時に、バー表示するモード(このとき受信周波数は表示されない)と、

S表示2.jpg

S表示4.jpg

左端の周波数ステップモードとチャンネルメモリーモードのところを、数値でS表示するモードを用意しました。切り替えスイッチは1つしかないので、周波数ステップモード、チャンネルメモリーモードの切り替えボタンをもう一回押すとバー表示モードと数値表示モードをトグルで切り替えるようにしました。

S表示1.jpg

S表示3.jpg

改造ついでに、KG-ACARS用のAF信号出力とその周波数のメモリーチャンネルを追加しました。
しかし、残念ながらKG-ACARSのデコード率は良くありませんでした。サイトで調べるとメーカー製のRXでもデコード率は良いものと悪いものがあるようなので、まあこんなものかと割り切りました。

posted by ja6irk at 16:50| Comment(3) | TrackBack(0) | QRP-HomeBrew

2015年01月11日

エアーバンド受信機

概観斜め.jpg

今年最初の自作です。
親しくさせていただいているOMさんが年末からエアーバンド受信機の製作をされているのに刺激を受け正月の休みも手伝って当局としても製作してみました。
エアーバンドは保有のリグでも受信できるので敢えて作る必要もなかったのですが、過去から実験のみに終わっている中華製DDSや、これもOMさんから分けていただいたままになっているロシア製も製品化されているAFパワーアンプも内蔵している1ChipラジオIC(オリジナルはTA7316?)、などに加え最近入手した超小型のmini7SEG LEDも使ってみたくなり、以下の条件をつけて自作してみました。

1) 分けていただいたラジオICで実用品を作る
2) 中華製DDSも実用品に活用する
3) mini7SEG LEDを使用して小型に作る
4) 手持ちのケースに入れる
5) 新たな部品は購入しない

ダイナミック点灯の7SEGは物は小型なのですが、片面基板でパターンを引くと基板自身が大きくなってしまうので、パネル面の基板は部品を置くのみとしてジャンパ線などはリード線で手配線としました。
手持ちケースはおそらく15年以上前に購入していたものでラフに寸法を測って基板サイズを最初に決めてパターンを引きました。結構厳しい寸法だったのですが、何とか入ったものの、パネル面の基板の部品の厚みを考慮していなかったので結果としてはその分パネルがはみ出る形となってしまいました。ご愛嬌です。

前面概観.jpg

前面基板.jpg

概観横.jpg

電池比較.jpg

設計時点で悩んだのが、エアーバンドは10MHz以上の帯域があり、ラジオIC側でこの帯域をカバーさせるのには無理があると考え、ラジオICは入力を10.7MHzとしてIF455KHzに変換、フロントエンド側でこの帯域をカバーすることにしたのですが、中華製DDSはせいぜい0〜50MHz位の範囲でしか使用できないことです。
フロントエンドの局発のカバー範囲は107MHz〜120MHz程が必要となります。
そこで、デジタルの良さ?を利用して、うまく行くかどうか?でしたが、今回はDDSとして通常使用する信号ではなく、ナイキストイメージの信号を活用することにしました。
次に問題として気づいたのが、DDSの基準クロックが125MHzであり、エアーバンドの帯域の真ん中にあることです。これが悪さをしてラジオICのAGCを飽和させてしまうと全く使用できない受信機になってしまいます。
やってみないとわからない状況ではあったのですが、10.7MHzにはFM用ですがセラミックフィルタを使用し、また455KHzにもラジオ用セラミックフィルタを使用して選択度を少しでも良くする方法をとりました。お陰で死蔵していたフィルタも活用できました。

全体の制御には、いつものアトメルAVRマイコンを使用し、BASICでプログラムしています。
28pinのATMega168を使用したのですが、7SEG8桁としたのでこれだけで16pinを消費してしまい、ポート数はぎりぎりでした。
ソフト量としては16KBのマイコンですが20%程度しか使用していません。
DDSの制御、ロータリーエンコーダーでの周波数可変、7SEGのダイナミックスキャン等、これまでに作った資産を利用していますので1時間くらいの改造で動くものが出来上がりました。
周波数ステップは航空無線周波数データから25KHzとしています。但し、当局のロケーションでは羽田周辺しか聞けないと思いましたので、あらかじめメモリーした周波数だけを選択するメモリーチャンネルモードも追加しました。ポートが足らなかったので、メモリー周波数は任意に記憶させることはできず、各チャンネルにあらかじめプログラムで周波数をメモリーさせています。

内部全体.jpg

内部拡大.jpg

結果としては一応実用になりそうなものが出来上がりました。羽田のアプローチのやり取りなどが非常に良く入っています。
残念なのは常に信号が出ている羽田の気象情報の周波数が128.8MHz、アプローチの周波数が119.1MHzと離れておりフロントエンドの帯域をもっとブロードにしないとどちらかに感度の最高点を合わせざるを得なくなったことです。
当然のことながら125MHzは強烈な信号を受信しており、使用できません。
その他、スプりアスと思われる信号を沢山受信していますが、とりあえず支障なく使えています。
ポートが後2ポートあれば、無信号時にAFをカットするスケルチを追加したいところです。
とりあえずケースに入れて完成までこぎつけたので、今年最初の自作としてはまずまずかと思っております。

動画は削除しました。

エアーバンドRX 140111.BMP



posted by ja6irk at 14:02| Comment(6) | TrackBack(0) | QRP-HomeBrew

2015年01月01日

謹賀新年!

旧年中は大変お世話になりました。
本年も宜しくお願いします。

         2015年 元旦
posted by ja6irk at 00:09| Comment(5) | TrackBack(0) | 徒然なるままに

2014年12月30日

今年もお世話になりました! 高精度病に明け暮れた2014年

概観20141230.jpg

早いものです。今年ももう暮れようとしています。
今年も多くのOMさんにお世話になり、大変ありがとうございました。
今年の書き込みは夏以降高精度な基準周波数をいかに作るかに明け暮れていました。
このテーマは、もう何年も前に多くの方が通り過ぎられたテーマのようです。
当局的には、そんな高精度は必要ないからと無視していました。
10Hz以下は問題ないと!
しかし、いざ手持ちの自作周波数カウンタで測りだし、調整を始めたら本当に合っているのか不安になってきました。それは、最近のリグは全て周波数表示がデジタルになっており、これとの差が出てしまって何を調整しているのかわからなくなり不安になったのです。
夏ごろに、GPSの1Hzパルスをゲート信号に使って周波数カウンタを作ったらそこそこ精度のいいものができるよ!と教えていただき早速作ってみました。更に、古いGPS基板TU30-D140には10KHzパルスの出力があり、これを使った10MHzの基準信号を作る古いスタンダードになっている記事も紹介を受け作ってみました。しかし、手持ちのVCTCXOは、秋月の12.8MHzしかありませんでしたのでOSCとしてはこれを使いました。
これらを紹介したのが8月16日の記事です。

http://blog.toshnet.com/article/102455817.html

周波数カウンタは、時間はかかりますが、0.04Hzまで測れるようになっています。
しかし、GPSを基準としているとしても合っているのかどうかがわかりません。
それで、OMさんに精度がわかっているルビジウム信号源を貸していただきました。

ここからが、高精度病の始まりです。
お借りしたルビジウム信号源の周波数は、当然10.00000000MHzと表示されます。時々サンプリング誤差で最下桁が±0.04Hzの表示となります。
秋月のVCTCXOを使った信号源は、ルビジウムと比較すると息を吹きかけただけでふらふらしているのが気になりました。GPSでのカウンタでは、12.80000000MHzではあるのですがどうも短期安定度が悪いようです。
そこで、8月のハムファエでジャンクのOCXOを手に入れました。
これは5MHzのOCXOだったのですが、ちょっとの改造ですぐに出来上がりました。

DSC00725.jpg

しかし、これでもルビジウムと比較するとVCTCXOよりはましですが、安定度にはまだ満足できませんでした。
このあたりでやめておけば良かったのですが、ebayでダブルオーブンのOCXOが安く売られているのを見つけ、すぐにポチって入手しました。

DSC00751.jpg

この時には既にお借りしたルビジウム信号源は返してしまっておりました。
やはり比較になるものが欲しくなりました。しかし、ルビジウム信号源は最近高級オーディオ用でニーズがあるようで高騰しています。そうした中で、FE5650Aという比較的安価なものをまたebayで見つけ購入しました。
あまりメジャーなモデルではなかったのですが、関西時代にお世話になったOMさんのサイトで使い方が紹介されているのを見つけて、これなら使えるだろうと踏ん切りをつけました。
但し、これは校正されたものではないので安定度は高そうでしたが絶対周波数は良くわからないところがありました。勿論、10E-9位まではあっているという感じでしたが。
このルビジウム信号源を作った時の記事が、10月13日の記事です。

http://blog.toshnet.com/article/104543388.html

ここまできたらやめれば良かったのですが、ルビジウム信号源の短期安定度は10E-11程度と言われており、自作のGPS周波数カウンタでは、4×10E-9までしか読むことができず、ダイレクトカウント方式のため時間がかかります。
こうした折、ヤフオクでアジレントのレシプロカルカウンタが安く出ていると教えていただき、色々聞くとだいぶ安いらしいと言うことで、そこそこの精度の周波数カウンタを作るのが目的だったのに、10E-11が測れ、標準偏差など計算では10E-12まで表示できるカウンタまで購入してしまいました。
¥15K以下だったので結果はとても良い買い物だったと思っています。
しかし、カウンタは基準信号源あってのカウンタですから、これも精度の高い安定な基準信号が必要になります。当然、最初に搭載されている基準信号は目的を達成しませんでした。
このカウンタには外部基準信号源の入力があり、ここにルビジウム信号源を接続しました。絶対値はともかく安定度の測定はできます。
GPIBの端子もあり、周波数の変化をPCに取り込むためにGPIBのI/Fも作りました。
ここからが、測定の嵐です。
ハムフェアで入手したOCXO、秋月のVCTCXO、ebayで購入したダブルオーブンのOCXOとGPSモジュールTU30-D140を使用したGPSDOと アイテンドーで入手した1980円のGPSモジュールの1Hzを使用したGPSDO(FLL)など時間がかかりましたが、多くのデータが取れました。

代表的なデータとして、ルビジウム信号源FE5650Aを基準信号源としてダブルオーブンのOCXOMV89aを使ったGPSDOの周波数変動を測ったものを掲載します。約1日以上測定したものです。人がいない昼間と人の動きのない深夜に比較的安定していて、人の動きのある時間帯に変動が大きくなっています。
それでも、変動幅として標準偏差で100μHz、最大最小で4〜500μHzといったところでしょうか?!
中心周波数は基準がないのであまり意味を持たないのですが、それでも10MHzに対して1.5mHz程度のズレとなっています。中心周波数のズレは、変動幅を含めて、基準信号源としたルビジウム信号源なのか、OCXO GPSDOなのかは定かではありません。

GPSDOーFLLMV89aRef 周波数変動 LPRO-101.jpg

こうした状況下、大変お世話になっているOMさんに、既に手に入りにくくなっているルビジウム信号源LPRO-101を周波数校正付きで入手していただきました。中心周波数で10MHzに対し、約20μHzしかズレていません。
こうなると100人力です。
既に入手していたルビジウム信号源FE5650Aも調整してしまいました。しかし、ルビジウム同士とは言え、逐次変動していますので、100μHz以下まで合わせるのはとても難しいと言うことがわかりました。
LPRO-101に対し、FE5650Aは約300μHzほど高く調整されています。

入手いただいたLPRO-101は周波数の外部制御端子があり電圧で周波数制御ができるようになっています。
と、言うことは信号源としてルビジウムを使用したGPSDOが実現できると気づき、OCXOの代わりにLPRO-101と入れ替えたGPSDOに改造しました。LPRO-101の周波数可変範囲は0〜5Vの制御電圧で僅か8mHz程度です。
この状態で、先のルビジウム信号源FE5650Aの周波数変動を測ったものが、下記のグラフです。
電源を入れて、10分ほどしてからの周波数収束状況です。次第に10MHzに収束しています。100μHz台の制御には1回の測定で約6時間かかりますので(ダイレクト周波数カウントのため)収束するのに1日以上掛かっています。
変動幅は、標準偏差で50μHz程度、最大最小で300μHz程度でしょうか?! 中心周波数は先に調整した約300μHz程度高くなっています。ちゃんとGPSの1Hz信号を基準に収束制御していると思えます。(おそらく)。

LPRO-101 Ref 周波数変動20141230-3-001.jpg

これで、ルビジウムを校正する信号源がなくても、GPSでいつでも正確な10MHzの基準信号を手に入れることができるようになりました。
ルビジウム信号源の短期安定度は10E-11程度と言われていますので、最大最小の変動状況を見ていてもこれ以上の精度を要求したFLL制御は意味がないし、とても難しいと感じています。10μHz台の制御をするには1回で60時間も掛かってしまいますし(笑)
しかし、10μHz台まで読めてしまう周波数カウンがタがあると気になってしまいます。これが、高精度病を悪化させる原因かもしれません。

実際の無線機の調整では1Hzがあわせられれば十分ですし、この半年これだけで十分楽しめたのでこのあたりで終わりにすることにしました。
もしこれ以上追求するとしたら、セシウム信号源を入手するか、高い評価を得ているけど入手難なGPSDO Z3801あたりを入手するかしかないでしょう。勿論、これに対応した測定器も入手しないと何をやっているかわからなくなってしまいます。

折角ここまで詰めたルビジウム信号源によるGPSDOですので、今年最後の自作としてちゃんとケースに入れることにしました。
と、言っても新品は高いしと思っていたら秋葉原のジャン測やでフィルタとうたった測定器が2000円で売っておりこれがケースに使えると買ってきていましたので入れて見ました。2Uのハーフラックサイズで先に購入したAgilentとほぼ同じサイズです。

DSC00839.jpg

当然、必要のない穴が空いていますが、糊付きシートにインクジェットプリンタでそれらしく印刷して目隠しとして貼ってあります。これの状態が最初の写真です。

内部20141230.jpg
いらない臓物を取り外して、GPSDOとして作り上げた内部(丁度入った)
LPRO-101withHeatsink20141230.jpg
LPRO-101とヒートシンク(ヒートシンクは日米で540円:LPROはインチねじで手持ちがなかったのでワイヤで仮止め)

出来上がった自作GPSDOのソフトとして、GPSは時々捕捉しなくなるので衛星補足が4個以下の時は、その時の周波数測定データを使用しない、マイコンのEEEPROMに100μHz制御時点のルビジウム制御電圧を記録しておき、次回電源ON時にこのデータを読み出してできるだけ収束時間を短縮する、GPSの時刻データを読み出して、シャックの基準時計とするなどそれなりの工夫もしております。

しかし、ルビジウムと言えども温度変化で周波数は変動しますし、ケース内部温度をも考慮した周波数制御や、LPRO-101からは、ロック状態出力やランプの健康状態を表すランプ電圧などの出力があるのでこれらの表示もできるようにしたいな!とかまだまだ追加で色々やりたいのですが、暫くはこの状態で使用することになると思います。でないと、年が越せません。

2014年 各局さんには大変お世話になりました。
特に、JA9TTT/1 加藤さんには色々とご指南いただきました。
ありがとうございました。

皆様、来る2015年も宜しくお願い申し上げます。


posted by ja6irk at 19:25| Comment(2) | TrackBack(0) | QRP-HomeBrew