2012年4月30日 (月)

中華グラフィックLCD その3

実際にプログラムを作成していて分かりにくかった点などを記録として残しておきます。
まずは文字表示編。

文字表示
CGROMを内蔵しているので、全角8文字×4行の表示位置を指定した後で文字コードを送り込むだけで文字表示できるのですが、以下の点でおおいに迷いました。

・画面上の位置と文字コードを書き込むアドレスの関係がリニアでない。
1行目はアドレス0x00からなのですが、2行目はアドレス0x10から、3行目はアドレス0x08から、4行目はアドレス0x18からになっています。また、1行目に16文字以上連続して書き込むとなぜかはみ出した分の文字が3行目に表示されます。

・LCD内の文字コードを格納するRAM領域は16ビット幅のデータである。
なので、半角文字の場合に行内で奇数番目の文字だけを書き込むことはできません。同様に行内で偶数番目の文字だけを書き込むこともできません。そこでCPU内部に書き込んだデータを記憶させておく領域を確保し、ここのデータを利用するようにしました。

左上1文字目から"ABCD"と書く場合
文字位置を指定(アドレス0x00)
"A"のデータを送り出し、バッファのアドレス0x00に"A"を書き込む。
"B"のデータを送り出し、バッファのアドレス0x01に"B"を書き込む。
"C"のデータを送り出し、バッファのアドレス0x02に"C"を書き込む。
"D"のデータを送り出し、バッファのアドレス0x03に"D"を書き込む。

左上から2文字目に"E"と書く場合
文字位置を指定(アドレス0x00)
バッファのアドレス0x00のデータを送り出す。
"E"のデータを送り出し、バッファのアドレス0x01に"E"を書き込む。


2行目の左から3文字目に"F"と書く場合
文字位置を指定(アドレス0x09) 0x08+0x03/2
"F"のデータを送り出し、バッファのアドレス0x12に"F"を書き込む。
バッファのアドレス0x13のデータを送り出す。 (2行目の左から3文字目を書き直す)

| | コメント (0) | トラックバック (0)

2012年4月29日 (日)

中華グラフィックLCD その2

「とりあえず」4月29日時点で作成済の制御プログラムです。
まぁ、たいしたことはやっていません。下記とは別に下記を呼び出す側のプログラムもあります。
PSoc用のコンパイラを使用しています。

LCDからの読み込みに対応しないで、CPU側にテキストとグラフィックのバッファを持たせておき、そことの演算結果をLCDに流すようにしています。


#define Display_Clear 0x01
#define Return_Home 0x02
#define Entry_Mode_Set 0x04
#define Address_Inc_Mode 0x02
#define Display_Control 0x08
#define Display_On 0x04
#define Cursor_On 0x02
#define Char_Blink_On 0x01
#define Cursor_Display_Control 0x10
#define Function_Set 0x30 // 8bit I/F mode Basic Function
#define Extended_Instruction 0x04
#define Set_CGRAM_Address 0x40
#define Set_DDRAM_Address 0x80

#define Extended_Function_Set 0x34
#define Graphic_Display_On 0x02
#define Graphic_Display_Off 0x00
#define Stand_By 0x01
#define Scroll_or_RAM_Addres_Select 0x02
#define Set_Scroll_Address 0x40
#define Reverse 0x04
#define Set_Graphic_Display_RAM_ADdress 0x80

char GL0[256],GL1[256],GL2[256],GL3[256];
char DD[64];

unsigned char _posX = 0; // current char X pos for Charctor
unsigned char _posY = 0; // current char Y pos
unsigned char _gposX = 0; // current char X pos for Graphic
unsigned char _gposY = 0; // current char Y pos
unsigned char _gareaY = 0; // current char Y area


void CmdWrt(unsigned char X);
void DataWrt(unsigned char X);
void GLCD_Init(void);
void GLCD_Clear(void);
void GLCD_Cursor_Move_XY(unsigned char X,unsigned char Y);
void GLCD_PrString(unsigned char* sRamString);
void GLCD_PrCString(const unsigned char* sRomString);
void GLCD_PrIntWithAlign(int nData,int nLen);
void GLCD_Calc_XY_Address(unsigned char X,unsigned char Y);
void Sample_Display(void);

#ifndef wait
void wait(LONG l){while(l--);}
#endif

void CmdWrt(unsigned char X)
{
RS_Off();
RW_Off();
E_On();
PRT2DR = X;
wait(2);
E_Off();
}

void DataWrt(unsigned char X)
{
RS_On();
RW_Off();
E_On();
PRT2DR = X;
wait(2);
E_Off();
}

void GLCD_Clear(void)
{
int i,j;

CmdWrt(Display_Clear);
wait(100);
GLCD_Cursor_Move_XY(0,0);
GLCD_PrCString(" ");
GLCD_Cursor_Move_XY(0,1);
GLCD_PrCString(" ");
GLCD_Cursor_Move_XY(0,2);
GLCD_PrCString(" ");
GLCD_Cursor_Move_XY(0,3);
GLCD_PrCString(" ");
for(i=0;i<32;i++){
CmdWrt(Function_Set + Extended_Instruction);
wait(10);
CmdWrt(Extended_Function_Set + Graphic_Display_On);
wait(10);
CmdWrt(Set_Graphic_Display_RAM_ADdress + i);
CmdWrt(Set_Graphic_Display_RAM_ADdress + 0);
wait(10);
CmdWrt(Function_Set);
for(j=0;j<32;j++){
DataWrt(0x00);
};
};
for(i=0;i<256;i++){
GL0[i] = 0;
GL1[i] = 0;
GL2[i] = 0;
GL3[i] = 0;
};
}

void GLCD_Init(void)
{
unsigned char i,j;

wait(1000);

RS_Start();
RW_Start();
E_Start();
PSB_Start();
PSB_On();
wait(100000);

for(i=0;i<64;i++){DD[i]=0x20;};


CmdWrt(Function_Set);
wait(100);
CmdWrt(Function_Set);
wait(100);
CmdWrt(Display_Control + Display_On);
wait(100);
CmdWrt(Entry_Mode_Set + Address_Inc_Mode);
wait(100);
GLCD_Clear();
}

void GLCD_Cursor_Move_XY(unsigned char X,unsigned char Y)
{
_posX = X;
_posY = Y;
switch (_posY){
case 0x00 : CmdWrt(Set_DDRAM_Address + 0x00 + (_posX >> 1));break;
case 0x01 : CmdWrt(Set_DDRAM_Address + 0x10 + (_posX >> 1));break;
case 0x02 : CmdWrt(Set_DDRAM_Address + 0x08 + (_posX >> 1));break;
case 0x03 : CmdWrt(Set_DDRAM_Address + 0x18 + (_posX >> 1));break;
};
wait(100);
}

void GLCD_Write_DataBytes(unsigned char* S,int pLen)
{
int i;
if ((_posX & 0x01) == 1){
DataWrt(DD[(_posY<<4)+_posX]);
_posX++;
};
for(i=0;i if (_posX<16){
DataWrt(S[i]);
DD[(_posY<<4)+_posX] = S[i];
_posX++;
};
};
if ((_posX & 0x01) == 0){
DataWrt(DD[(_posY<<4)+_posX + 1]);
_posX++;
};
}

void GLCD_Write_DataCBytes(unsigned const char* S,int pLen)
{
int i;
if ((_posX & 0x01) == 1){
DataWrt(DD[(_posY<<4)+_posX]);
_posX++;
};
for(i=0;i if (_posX<16){
DataWrt(S[i]);
DD[(_posY<<4)+_posX] = S[i];
_posX++;
};
};
if ((_posX & 0x01) == 0){
DataWrt(DD[(_posY<<4)+_posX + 1]);
_posX++;
};
}

void GLCD_PrString(unsigned char* sRamString)
{
GLCD_Write_DataBytes(sRamString,strlen(sRamString));
}
void GLCD_PrCString(const unsigned char* sRomString)
{
GLCD_Write_DataCBytes((const unsigned char*)sRomString,cstrlen(sRomString));
}

void GLCD_PrIntWithAlign(int nData,int nLen)
{
int nDataLen;
char pBuff[6];

itoa(pBuff,nData,10);
nDataLen = strlen(pBuff);
for(; nDataLen < nLen; nDataLen++)
GLCD_PrCString(" ");
GLCD_PrString(pBuff);
}

void GLCD_Calc_XY_Address(unsigned char X,unsigned char Y)
{
_gposX = X >> 4;
_gposY = Y & 0x1f;

CmdWrt(Function_Set + Extended_Instruction);
wait(5);
CmdWrt(Extended_Function_Set + Graphic_Display_On);
wait(5);
if (Y < 32){
CmdWrt(Set_Graphic_Display_RAM_ADdress + _gposY);
CmdWrt(Set_Graphic_Display_RAM_ADdress + _gposX);
wait(5);
}else if (Y < 64){
CmdWrt(Set_Graphic_Display_RAM_ADdress + _gposY);
CmdWrt(Set_Graphic_Display_RAM_ADdress + _gposX + 8);
wait(5);
};
CmdWrt(Function_Set);
wait(5);
}

void GLCD_DotON_XY(unsigned char X,unsigned char Y)
{
unsigned char B1,B2;
int ADR;

GLCD_Calc_XY_Address(X,Y);
ADR = ((Y & 0x0f)<<4) + (_gposX<<1);
if (Y < 16){
B1 = GL0[ADR];
B2 = GL0[ADR+1];
}else if (Y < 32){
B1 = GL1[ADR];
B2 = GL1[ADR+1];
}else if (Y < 48){
B1 = GL2[ADR];
B2 = GL2[ADR+1];
}else {
B1 = GL3[ADR];
B2 = GL3[ADR+1];
};
switch (X & 0x0f){
case 15: B2 = B2 | 0x01;break;
case 14: B2 = B2 | 0x02;break;
case 13: B2 = B2 | 0x04;break;
case 12: B2 = B2 | 0x08;break;
case 11: B2 = B2 | 0x10;break;
case 10: B2 = B2 | 0x20;break;
case 9: B2 = B2 | 0x40;break;
case 8: B2 = B2 | 0x80;break;
case 7: B1 = B1 | 0x01;break;
case 6: B1 = B1 | 0x02;break;
case 5: B1 = B1 | 0x04;break;
case 4: B1 = B1 | 0x08;break;
case 3: B1 = B1 | 0x10;break;
case 2: B1 = B1 | 0x20;break;
case 1: B1 = B1 | 0x40;break;
case 0: B1 = B1 | 0x80;break;
};
if (Y < 16){
GL0[ADR] = B1;
GL0[ADR+1] = B2;
}else if (Y < 32){
GL1[ADR] = B1;
GL1[ADR+1] = B2;
}else if (Y < 48){
GL2[ADR] = B1;
GL2[ADR+1] = B2;
}else {
GL3[ADR] = B1;
GL3[ADR+1] = B2;
};
DataWrt(B1);
DataWrt(B2);
}

void GLCD_TEST(void)
{
unsigned char i,j;

/* GLCD_Cursor_Move_XY(0,0);
GLCD_PrCString("AABBCCDDEEFFGGHHIIJJKKLL");
GLCD_Cursor_Move_XY(1,1);
GLCD_PrCString("0123456789");
GLCD_Cursor_Move_XY(1,0);
GLCD_PrCString("m");
GLCD_Cursor_Move_XY(5,0);
GLCD_PrCString("nn");
GLCD_Cursor_Move_XY(9,0);
GLCD_PrCString("ooo");*/

/* for(i=0;i<64;i++){
GLCD_Calc_XY_Address(i+64,i);
// CmdWrt(Function_Set);
// wait(100);
DataWrt(0xff);
DataWrt(i);
};
GLCD_Calc_XY_Address(0,16);
CmdWrt(Function_Set);
DataWrt(0xaa);
DataWrt(0xaa);
GLCD_Calc_XY_Address(0,32);
CmdWrt(Function_Set);
wait(100);
DataWrt(0xCC);
DataWrt(0xCC);
GLCD_Calc_XY_Address(0,48);
CmdWrt(Function_Set);
wait(100);
DataWrt(0x33);
DataWrt(0x33);
*/
for(i=0;i<64;i++){
GLCD_DotON_XY(i,i);
GLCD_DotON_XY(i+4,i);
GLCD_DotON_XY(i+64,i);
GLCD_DotON_XY(i+62,i);
GLCD_DotON_XY(64-i,i);
};
}

void Sample_Display(void)
{
unsigned char i,j;

//1行目に16文字
CmdWrt(Set_DDRAM_Address + 0);
wait(10);
for(i=0x30;i<0x40;i++){
DataWrt(i);
};
//2行目に16文字
CmdWrt(Set_DDRAM_Address + 0x10);
wait(10);
for(i=0x40;i<0x50;i++){
DataWrt(i);
};

//上側2行をクリア
for(i=0;i<32;i++){
CmdWrt(Function_Set + Extended_Instruction);
wait(200);
CmdWrt(Extended_Function_Set + Graphic_Display_On);
wait(200);
CmdWrt(Set_Graphic_Display_RAM_ADdress + i);
wait(100);
CmdWrt(Set_Graphic_Display_RAM_ADdress + 0);
wait(200);
CmdWrt(Function_Set);
for(j=0;j<16;j++){
DataWrt(0x00);
};
};
//下側2行に0x00..0x0fを繰り返す
for(i=0;i<32;i++){
CmdWrt(Function_Set + Extended_Instruction);
wait(200);
CmdWrt(Extended_Function_Set + Graphic_Display_On);
wait(200);
CmdWrt(Set_Graphic_Display_RAM_ADdress + i);
wait(100);
CmdWrt(Set_Graphic_Display_RAM_ADdress + 0x08);
wait(200);
CmdWrt(Function_Set);
for(j=0;j<16;j++){
DataWrt(i);
};
};
}

| | コメント (0) | トラックバック (0)

中華グラフィックLCD その1

中国製の安価なグラフィックLCDをぽちってみました。
これです。基板裏面のシルク印刷を元に「ネットで検索する」と、Digole社の12864ZWのようです。
Dscf1789_25

LCDそのもののサイズが70×38mmくらいでしょうか。

128×64ドットで青色LEDのバックライトつき、さらに半角と全角のフォントまで内蔵しています。
もっとも、全角フォントは中国仕様(?)の文字コードに対応したものだし、半角で表示されるフォントもよく使うものとは一部異なっているようです。これで単価が10ドルを少し切るくらいで、送料は無料でした。しばらく待つことを我慢できれば、送料を払って国内で買う場合といい勝負ではないかと思います。

ただし、秋月で売っているLCDのようにサンプルコードが公開されているわけではないので、自分で仕様書を探してきて、それをもとに自力でプログラミングする必要があります。(インターフェースを初期化する手順とごく簡単な例は仕様書に例があったので参考にしました。)

ハードウエア的には8ビット幅のデータバスにRead/Write信号、Enable信号、レジスタ選択信号、パラレル/シリアル選択信号程度なので、CPUのIOピンに適当に割り振ってみました。

Glcd_cpuif

仕様書にはLCDのコントラスト調整用の信号が書かれていますが、実際には機能していないようです。基板のパターンを追いかけてみると、パターンはあるものの部品が実装されていませんでした。

<<その2へ続く>>

| | コメント (0) | トラックバック (0)

2012年4月20日 (金)

変更届、審査終了

今回の変更点はこれだけ。

・PSKモードに31.25のボーレートを追加
・PSKモードの副搬送周波数変更(固定周波数から範囲指定に)
・WSPR関連の追加
・パソコン→パソコン(iphoneなどに対応)

| | コメント (0) | トラックバック (0)

FM波の位相ずれ

430MHzのFMを聞いていると時々聞く用語に「位相ずれ」ってのがあるのですが、なんでしょうね?

常時一定の量だけ位相がずれているのであれば、関係ないはず。だって、「あなたの送信していたデンパと私が送信したデムパの位相があっている」なんて状態がずっと続くことなんてあり得ないですよね。(互いの周波数が1Hzだけずれているとしたら、毎秒1回だけは位相があうけど、それ以外はずっとずれているはず。)

もしかして、「あなたのデンパを私のトランシーバで受信すると、復調回路のPLLなんかを応用した位相弁別器がリニアに動作する範囲を外れてしまって音声に歪みがでている」現象でしょうか。これなら確かに「位相弁別器の動作範囲からずれている=位相ずれ」と言えますよね。

でもそれって、「単に周波数がずれているだけ」なのでは?

もしかして、可聴周波数に入るような周期で定期的・不定期的に位相が変動していることかな。

| | コメント (0) | トラックバック (0)

CQ誌2012年5月号

感想です。

あえて言ってしまいますが、非常通信とかって「目的外通信」ですよね。
次が来る前にちゃんと法整備してほしいと思う。(次なんか永遠に来て欲しくないけれど。)

「アンテナ拝見」のページってページ数とアンテナに掛けているコストが比例していないかな。
ぶっちゃけ、ページ数の多い回は参考にもならない・・・・。

KN-Q7A、うちの「爆弾」こと2号機よりもあれこれはしょってるな~~~。AGCとかALCとかメーターとか。
AGCとメーターは無くてもいいと思うが、ALCはあった方がいいと思うな。

DVAPドングルの記事、ワンチップでは免許されるのが困難としていますが、要はワンチップなのが問題なのではなく不要輻射の問題ではないだろうか。フィルタさえきちんと入っていれば免許されるはず。周波数は違うが、2.4GHz帯ではRFモデムICからアンプなしでアンテナに送る構成で免許されています。(RFモデムICから直接アンテナにつながる経路とパワーアンプを経由してアンテナに送る経路を持たせてパワー切り替えを行うようにしています。)

新連載の「ハムのアンテナQ&A」は次回が待ち遠しいかな。


| | コメント (0) | トラックバック (0)

VK6RSX聞こえた

50MHzSSB/AM機の様子見のために車に積んでインチキな短縮ホイップをつないで多摩市内をうろうろしていました。最初のうちは50.490MHzを聞いていたのですが、途中でバンド内をスキャンしてみると50.300MHzの少し上あたりでCWが聞こえました。スキャンをやめてワッチしていると

VK6RSX DAMPIER OG89 (連続したキャリア)

を繰り返していました。コンディションいいんですね。

| | コメント (0) | トラックバック (0)

2012年4月15日 (日)

城山湖の桜

写真撮ってきました。

Dscf1769

| | コメント (0) | トラックバック (0)

できました。

とりあえず、取り扱いに困らない大きさの方を作ってみました。

Dscf1766

家の窓際にぶら下げて使っていた5/8λ×2GPよりもトランシーバのSメータ表示で1~2くらいいいようです。
振り回してみると、S9くらいの信号がメータが振れないくらいまで落ちる点がありました。

名前は「ちょうちょ」に決定しました。
手に持つと、なんだか「ぱたぱた」させたくなるアンテナです。


» 続きを読む

| | コメント (0) | トラックバック (0)

2012年4月13日 (金)

できるかな

430MHz用のアンテナ案です。
サイズの違う2枚のデルタループに180度の位相差を付けて給電したらどうなるか計算してみました。

まずは構成
Quad_deltaloop1

計算結果
Quad_deltaloop2

パターン
Quad_deltaloop3


もう一つはロンビックです。

長い方の対角が4mあります。でも1エレメントなんですよね~。
どうやって振り回すのかが最大の課題かも。
1

計算結果
50Ω系から1:3のバランで給電できるように450Ωで計算してます。
2

パターン
3

こんなような形のイキモノがムーミンに出ていたような記憶が・・・・・。

| | コメント (0) | トラックバック (0)

ICOM機用 周波数表示器 Ver2.1

以下は半分個人的なメモです。

追加したスイッチで100kHzアップと100kHzダウンをやるようにしました。
メモリチャンネルの選択ダイヤルを回している時に存在しないチャンネルまで回してしまった時におかしな表示になったり、存在しないチャンネルが表示される(リグ側では無視されるので表示と実際の動作が一致しなくなる)ことの対策として、メモリチャンネルの切り替えは3回コマンドを出して3回ともリグからOKが返ってきたときだけ切り替えが成功と判断して表示を切り替え、失敗した時は元のチャンネルに戻す処理を追加しました。

| | コメント (0) | トラックバック (0)

RJX-601用周波数表示器 その11

2セット目完成。
3セット目はLED基板とCPU基板の接続などが未。

ということで、ぼちぼち製作しています。
今回は手持ちの水晶発振器が12MHzなので、1セット目とは一部プログラムが変わっています。
それと3端子レギュが結構発熱していたので、LEDに流す電流を決めている抵抗を100Ωから150Ωに変更しました。

4セット目以降は部品のストックがないのでまたあちこちから通販で集めないとな~。

| | コメント (0) | トラックバック (0)

2012年4月 2日 (月)

アンテナカップラ その5

電圧給電型で垂直系のアンテナをためしてみたいのですが、電圧給電用のアンテナカップラがありません。
余っている部品か何かで出来ないかと色々検討していました。しかし、それなりの耐圧のバリコンが無いとどうしょうもありません。

先日製作したL型のアンテナカップラをほんの少し変更すると、なんとかなりそうな気がしてきました。コイルの途中にタップを追加して、そこをアースに落とすようにします。タップから上側のコイルは片側がアースに接続されて反対側はアンテナとバリコンのホット側に接続された形になります。コイルのタップから下は片方がアースに接続されて、反対側が同軸の芯線に接続された形になるので、リンクコイルとして働くはずです。

L


| | コメント (0) | トラックバック (0)

2012年3月26日 (月)

○ARL主催コンテストの使用周波数変更

JAR○のWebサイトに「コンテスト委員会からのお知らせ」として3f月21日付けで下記の通達が掲載されていました。多分、だいぶ前に意見募集などがあったのだろうと思いますが、見逃してました。

>(1) 50MHzのコンテスト周波数を変更します。
>現行の
>CW:50.050-50.090MHz SSB、AM:50.250-51.000MHz FM:51.000-52.000MHz
>を、次のようにします。
>CW:50.250-50.300MHz SSB、AM:50.300-51.000MHz FM:51.000-52.000MHz(変更なし)

自作機で局発にVXOを使っているCW機とかSSB機は使えなくなる可能性がありますね。
特に50.060~50.100MHzあたりで設計されているCW機は軒並水晶を交換して、再調整しないと使用できないことになります。

DSB機は50.300MHzより下でもいいのかな?(相手がいないってば。)


| | コメント (0) | トラックバック (0)

2012年3月21日 (水)

アンテナカップラ その3

実際に使ってみました。
車の上に設置して、たぶん21MHzあたりに同調している電線を釣り竿に沿わせました。
21mhzgp_with_tuner

インピーダンスとSWRは計っていないので不明。アンテナチューナーもLCともに最小になるようにしているので効果は不明。

結果、PSK31でロシア(ヨーロッパロシア)のRA3LVと中国のBD3RQの2局と交信できました。ウチのデンパの最長到達距離更新です。

| | コメント (0) | トラックバック (0)

不定期な日記 2012.03.21

しばらくさぼっていたので、ぐだぐだ・・・・・。
20120321_1

速度設定を15WPMから20WPMに上げているので、聞き取れずに何回も聞き返していました。

| | コメント (0) | トラックバック (0)

2012年3月20日 (火)

不定期な日記 2012.03.20

いつもの城山湖(猫山)まで車で移動し、天気が良かったので湖の周囲を回ってきました。

ちいさいピーク(航空神社)を越えて麓近くの金比羅宮へ。
Photo
ここで50MHzで移動運用していたJG1HXW(内山OM)と突発的にアイボールし、1時間近く(?)運用場所、
移動運用装備、桜情報、梅情報などについてお話をうかがいました。1軒家だった自宅の周囲に住宅が
立ち並んでしまい、アマ無線用のアンテナが隣家のTVアンテナと同じくらいの高さになってしまって、
自宅からはあまり運用できないので、もっぱら移動運用しているとのこと。外へ出て、歩き回ることが
健康の秘訣になっているということで、移動運用が健康にいいと言っていました。(今後のためにもいい
ことを伺いました。)

予定から大幅に送れて(そもそも予定なんてあったのか?)城山湖の堰堤を通過。
このあたりはずっと430MHzのFMをワッチしながら歩いていました。
Photo_2
ここからしばらくはゆるいアップダウンが続きます。あまりのゆるさに道を間違えてしまったかと思い始めた
あたりでいきなりの急坂です。写真撮るの忘れました。

さらに進むともう一度急な坂があって、その先が草戸山でした。
2
写真では影になっていて見えない野ですが、テーブルと椅子が何セットかおかれていて、そこで休憩や
昼食をとっているグループもいました。この展望台からJA1NEJ/1局、7L2UUP/1局と交信。そういえば移動
運用に来ていたんですよね。

ここは地図上では東京都町田市と東京都八王子市と神奈川県相模原市の境界になるあたりです。
稜線から南側が相模原市、北川はピークを挟んで西から北側が八王子市で東側が町田市になるようです。

「たまには歩いて移動運用したい」というささやかな目標を達成できたので、草戸山を後にしました。
先へ進む途中で多摩市桜ヶ丘公園移動の7L3ATQ/1局が聞こえていたので、休憩しつつ呼び出してみました。
こたらも無事交信成立となり、本日の(徒歩移動での)交信は合計3局となりました。

そのあとは湖畔に丘の上にある「加藤武雄文学碑」を見て、出発点のいつもの移動場所に戻っておしまい。
Photo_3
なんだかんだで3時間ほどの徒歩移動となりました。


<<<補足>>>
花粉にやられました。

| | コメント (0) | トラックバック (0)

2012年3月16日 (金)

アンテナカップラ その2

CQ誌2月号の付録でJH5MNL田中OMが紹介しているもとのほぼ同じ構造になってしまいましたが、ワイヤー系のアンテナと一緒に使うアンテナカップラ(アンテナチューナ)を製作しました。

全体はこんな感じ。可変できるLとCを各1個使ったL型のマッチング回路です。パイプの下側を車のルーフにつけてある水道管のTジョイントに差し込むか、地面に刺したペグなどに引っかけて固定します。上側には釣り竿を差し込んでそれ這わせた電線をつなぐか、またはそのへんの木などとの間に張った電線をつなぐ予定です。
Photo

バリL部です。
巻き数の調整はCQ誌2月号の付録でJF1HTW中島OMが紹介しているワイヤアンテナの短縮コイルと同じように巨大な洗濯ばさみでコイルをクランプするようにしました。
L

バリコン部です。
田中OMの記事とほぼ同じですが、スライドする電極を縦樋ではなく100円ショップでかったポリエチレン製のクリアケースを切って水道管に緩く巻き付けたものを使いました。最初は電極を縦半分に割った円柱の形にして、ひねって容量を可変させようとしたのですが、調整がやりにくそうなのでこの形にしています。糊付の銅箔テープは意外と高価なので、移動する側の極板(?)はスパイラル状に巻いたアルミテープを使っています。極板の端の所に導電性接着剤を塗られた銅箔テープを貼って銅通をとりつつハンダ付けしのやすさを確保しています。
Photo_2

| | コメント (0) | トラックバック (0)

2012年3月 4日 (日)

DX Debuut (Tnx ZL2USB)

本日21MHzのPSK21でDXデビューを果たしました。(祝)

PhoneとかCWの局はほとんど聞こえなかったのですが、なぜかPSK31だけは賑わっていました。
何局かひろってもらえず、寒かったのでそろそろおわりにしようかと思っていたころに

QRZ? QRZ ? number 7 number 7

と返ってきたので再度コールすると今度は

7L1ARK ........(興奮していたのでよく覚えていないです。)

と返ってきました。再々度コールすると”7L1WRK"をコピーしてもらえました。正直に525と
レポートすると先方では599だそうです。御祝儀599でしょうね。(空気読めなくてすみません。)
パワーを出しすぎていたようなので、途中で少し絞ったのがよかったようです。ありがとうJO1KVS!!

屋外にテーブルを出して、こんな風に運用していました。めっちゃ寒かったですね。
Dscf1739

アンテナは垂直系で使っているモービルホイップ用の基台を忘れたので、逆Vを使用しました。
(城山でよくお会いするOMにエレメントを引っ張る際に使うロープをお借りしました。え~~っと、
名前とコールが思い出せません。Sorry)

| | コメント (0) | トラックバック (0)

2012年2月27日 (月)

RJX-601用周波数表示器 その10

外で動かして見たら500kHz周期のノイズがてんこ盛りでした。
ケーブルの引き回しやら、プログラムの修正をあれこれやって見ましたがどれもNG。そこでCPUでやっていたクロックの発振をやめて、元の発振器モジュールに戻しました。これで500kHz周期のノイズは止まりましたが、バンド全体にホワイトノイズっぽいのが出ています。これは何カ所かフェライトコアを入れてみましょう。

<2月26日夜追記>
家にあったコアです。大小2個みつかりました。
Photo_2

外部電源使用、ホイップアンテナを延ばしきった状態でバンド内のノイズ最大値で比較
コア類なし S7~9 結構うるさい
北川工業製 SFC-3 4T S2以下 52MHz付近のみ。他はS1程度。外部電源コードのリグ直近に入れた。(大)
北川工業製 RFC-4 1T S5以下 あまり効かない(小)

結論、2行目の(最初の)対策に決定。リグの中はあまり効きませんでした。
Photo

| | コメント (0) | トラックバック (0)

2012年2月25日 (土)

RJX-601用周波数表示器 その9

基板を作り直して元の半分くらいの大きさになりました。これでケース、電源などを除いたカウンタ一式です。RJX601の空きスペースに余裕で入ります。

Rjx601d_

実装した様子がこれ。MHz台まで表示します。FM運用時にFずれにならずにきっちりした周波数で運用できます。
(というかFずれが気になります。)
Rjx601d

最終的な回路図です。
Rjx601d_typec

| | コメント (0) | トラックバック (0)

2012年2月23日 (木)

RJX-601用周波数表示器 その8

PSoCに内蔵されているデジタルブロックを使って水晶発振回路を構成している例があったので、やってみました。
コンデンサの容量を調整する必要がありますが、これでも安定して発振しているようなので、水晶発振器の替わりに水晶振動子でもいけそうなことが分かりました。基板の長辺が10mくらい小さく作れそうです。

回路図です。水晶振動子に変更した他、コンパクトに実装するために桁ドライブのトランジスタを抵抗内蔵タイプに変更しました。
Rjx601d_typec


| | コメント (0) | トラックバック (0)

2012年2月22日 (水)

RJX-601用周波数表示器 その7

4桁表示化とバリコン脇の空きスペースに実装するため、回路の修正と実装の見直しを行いました。
基板は3桁表示部と本体の2枚構成でしたが、4桁表示部と本体とアンプの3枚構成に変更しました。
基板はRJX-601の基板に対して垂直に(横にして)実装できるようにアンプを外付けにして、基板の幅が狭くなるようにレイアウトを変更しました。これにともに伴って、桁ドライブ用のトランジスタを2SC1815から抵抗内蔵のRN1227にします。

回路図はこれ。1チップマイコンを利用した周波数カウンタです。
Rjx601d_typeb

修正した基板レイアウトです。サンハヤトのICB-88を使い、縦線から右側は切り落とします。
ケーブル類はコネクタを使用しないで抵抗の足などに直付けします。
Rjx601d2_pcb


| | コメント (0) | トラックバック (0)

2012年2月21日 (火)

IC720用マイクアンプ

アンプ内蔵のマイクが必須になっているIC-720にアンプ無しのマイクをつなぐための1石アンプ(死語?)を作りました。音質とか、真空管とかいったこだわりはないので、ケースとマイクコネクタ以外はすべて「そのへんに転がっていたもの」をキーワードに選びました。

回路図はこれ。
Ic720

マイク端子にDCがかかっているのて、それを電源にしています。回路図の真ん中あたりから右側は純正のアンプ内蔵マイクであるIC-HM7の回路を参考にしました。


こんなふうにケースに入れてみました。
Dscf1716

| | コメント (0) | トラックバック (0)

2012年2月18日 (土)

とりあえずの7MHz用短縮アンテナ

前に巻いておいたコイルにエレメントを付けて7MHzのアンテナにしました。

7mhz

コイルを調整して一応7.120MHzあたりで共振させてあります。

ちなみにコイルはこれ。
Photo

いっぱい聞こえたけど、団地の駐車場からではQSOならず。

インピーダンスを計った結果はあとでアップします。
(PCごと車に置いたままなので。)

<2012.02.19追記>
7mhzvert2

| | コメント (0) | トラックバック (0)

2012年2月15日 (水)

ダミーロード

以前セメント抵抗で作ったダミーロードの特性がこんなふうに50MHzを越えたあたりから乱れていたので、
Photo

抵抗を3Wの酸金に換えてみました。特性はこんな風に多少はましになったかと思います。
Photo_2

外観はこんな。
Dscf1713

BNCコネクタに短い同軸を付けて、外皮側を基板の切れ端と薄い銅板で作った箱に接続します。同軸の芯線側に150Ω3Wの抵抗3本を並列接続したものをハンダ付けし、反対側を同軸の外皮につないだ箱に落としました。

見た目はきちゃないし、300Ω5Wを6本並列にした前のもよりも使用可能な電力も下がっているけど、これでいいのだ。


| | コメント (0) | トラックバック (0)

2012年2月14日 (火)

短縮コイル

巻いてみました。

Dscf1712

ボビンは定番のCCレモンではなくて手に入ったヘルシアウォーター、インダクタンスの可変は巨大な洗濯ばさみです。インダクタンスは実測で55μHです。

| | コメント (0) | トラックバック (0)

2012年2月13日 (月)

アンテナカップラ その1

オートチューナーは高価なので、手動のチューナーを作ろうと思います。
回路はそこかしこで公開されているので、探してみて下さい。コンデンサの容量が比較的小さくてすむT型にしようと思います。

まずは空芯コイルを巻きました。12uH弱あります。
Dscf1710


ちなみにこれは名前が似ているけどコイルじゃなくて野菜。食べられます。

| | コメント (0) | トラックバック (0)

2012年2月12日 (日)

不定期な日記 2012.02.12

昨日1回目
1


昨日2回目
2


| | コメント (0) | トラックバック (0)

2012年2月11日 (土)

RJX-601用周波数表示器 その6

表示部を4桁化できないか検討するため、4桁分のLEDを実装した基板を作成しました。

これ。
4led

3桁だけ実装した時でもダイヤル窓にはあと1桁分くらいのスペースがあったので、線の引き回しに注意すれば実装できそうです。
50550


慣れてきたので、1時間くらいでできました。


| | コメント (0) | トラックバック (0)

FM-SSTVに挑戦 その5

FM/SSTV運用中にモードを切り替えるたびにマイクとPC用のインターフェースボックスを切り替えるのが面倒なのでΦ3.5mmの二股コネクタを買ってきました。
Photo
赤丸の所につけています。

マイクとスピーカのプラグ・ジャックが別々で、しかもマイク側がΦ2.5mmになっているトランシーバでは二股いっこというわけにはいかないと思いますが、少し(かなり?かな)前のハンディではこれ一個で済むので楽ちんです。

当局はまだ始めたばかりですが、東京近郊でFM-SSTVに興味のある方、お待ちしてます。


| | コメント (0) | トラックバック (0)

2012年2月 6日 (月)

RJX-601用周波数表示器 その5

できました。
電源を入れる前の状態がこれです。仮止めのテープなどが見えてますが、借り物の601なので接着しての表示部分の固定などはオーナーにお願いしちゃいましょう。
Photo


電源を入れると一瞬"601"と表示します。
そのあとは7SegのセグメントAから順に発光して(光っている所がくるりんと回って)終わると周波数を表示します。
一瞬なので写真を撮ってませんが、かっこいいぞぉ~~~。(自画自賛モード)

50.000MHzのマーカーに同調した時の表示です。
50mhz
ちょっとずれているかも。基準に使っている水晶発振器の偏差がでているのかもしれません。(自作のDDS発振器の信号をカウントさせた時も1kHzずれてました。


ダイヤルを回して550kHzあたりに合わせようとしましたが、昔のアナログVFOのトランシーバはなかなか目標周波数に合わせるのも大変です。結局449kHz表示の位置であきらめました。
50550

MHzから上と100Hz以下の桁は省略しました。


<<2012.02.09追記>>
LEDの電流制限抵抗変更(1kから330オΩ)とそれに伴い桁ドライブをCPUのIOピン直接から2SC1815ドライブ、LED基板の端を少し切り落として実装位置の変更、周波数カウントする際の基準時間修正(24MHzの水晶発振器を使い分周して基準にしているので、分周数を変更)しました。
50.601MHzです。

Photo


| | コメント (0) | トラックバック (0)

2012年2月 5日 (日)

2SC1907

「アインシュタインは間違っている」ぢゃなくて、「データシートが間違っている」って、おい(怒)

この2SC1907データシートなんですが、マーキングの面からみて左から「BEC」と書いてあるのに、実際には「ECB」でした。
1カ月ほど前に10本まとめ買いしたものなのですが、最初に使おうとした時に「なんだかよくわからないけど増幅しない」という現象にぶち当たっていました。(いやな思い出なので忘れ去っていました。)そのことを忘れてもう一度「なんだかよくわからないけど増幅しない」にぶちあたりました。最初はたまたまハズレのものを手にとったのかと思っていましたが、「なんだか絶対におかしい」気がしました。そこでテスタであたってみると「ベースがマーキングの面からみて右」になっているぢゃありませんか。
ブチブチいいながら向きを変えて付けなおしましたがそれでもやっぱり「なんだかよくわからないけど増幅しない」ままです。テスタでチェックした結果からベースの位置が間違って書かれていたことには確信があったので残りのエミッタとコレクタを入れ換えてみました。

結果「ちゃんと増幅しました。」

忘れないようにもう一度書きますが、マーキングの面からみて左から「ECB」です。


そういえば、武蔵中原の某社の基板設計部門に基板設計(アートワーク設計)を依頼した時に「D-Subコネクタの1ピンの位置はプラグとジャックで逆でしょ」と何度言っても理解してもらえないということがありました。曰く、「うちのライブラリではそうなっている。」・・・・・・結局はコネクタメーカーのカタログや図面を大量に送りつけて説得しました。

| | コメント (0) | トラックバック (0)

2012年2月 4日 (土)

モービル用 アースシート

なぜかほとんど使わないままほったらかしになっていたステンレスの薄板と100円均で買ったシート状のまな板でアースシートを作りました。(キラキラした「まな板」市販されているわけではないです。)

Photo

マグネット基台の下に挟み込むか、適当なブツを上に載せて車体に密着させらればなんとか機能するのかな。と思います。市販のゴム磁石を使ったものほどは密着しないと思いますが、その分は面積で稼ぐということで・・・・。


| | コメント (0) | トラックバック (0)

RJX-601用周波数表示器 その4

1桁減らして100kHz~1lHz台を表示することにして幅を詰め、さらに配線を基板裏側と表側の両方で行うようにしてここまで小さくできました。
Rjx610_led2

これ以上は多分無理。

| | コメント (0) | トラックバック (0)

RJX-601用周波数表示器 その3

表示部を作ってみました。

Ledunit1

高さ方向をもう少し縮めたほうがいいかも。あと、幅方向も3桁だけにしたほうがよさそうですね。このままだと実装できるかどうかかなり微妙です。


» 続きを読む

| | コメント (0) | トラックバック (0)

2012年2月 1日 (水)

RJX-601用周波数表示器 その2

PSoCで作るので、まずは内蔵する各モジュールの設定を検討しました。
Rjx601d

紫のブロックが4分周するプリスケーラで、その出力を青いブロック(2個)の16ビットカウンタでカウントします。キャリーが発生する毎に割り込み処理を起動して、上位桁分をカウントしています。赤いブロックは内部クロックを分周してカウンタのゲート時間を制御しています。(ゲート時間は確か100msなので、40Hz単位でカウントしています。
(DAコンで何をやろうとしているのかは内緒。)


仮版の周波数カウンタプログラムを貼っておきます。PSoCでの作例としてあちこちで見かけるものとの違いはIF周波数の補正計算(ようするに引き算)が入っていることと、10MHz台の表示を省略していること、カウントしている最小単位まで表示していないことでしょうか。

~~~~~~~~~~~~~~~~~~~~~~

//----------------------------------------------------------------------------
// C main line
//----------------------------------------------------------------------------

#include // part specific constants and macros
#include "PSoCAPI.h" // PSoC API definitions for all User Modules

unsigned long FREQ,FREQ_SUM;
BYTE FREQ_detect = 0;
unsigned long OLD_FREQ_VAL,NEW_FREQ_VAL;
unsigned int freq_count_h = 0;

void wait(LONG l){while(l--);}

//ゲート時間での割り込み
#pragma interrupt_handler freq_counter_cnt_irq
void freq_counter_cnt_irq(void)
{
freq_counter_Stop();
OLD_FREQ_VAL = NEW_FREQ_VAL;
NEW_FREQ_VAL = freq_counter_wReadCounter();
FREQ =0xffff - NEW_FREQ_VAL + freq_count_h * 0x10000;
freq_count_h = 0;
freq_counter_WritePeriod(0xffff);
freq_counter_Start();
FREQ_detect = 1;
}

// 16bitカウンタのキャリー分をソフトでカウント
#pragma interrupt_handler freq_counter_irq
void freq_counter_irq(void)
{
freq_count_h++;
}

void FREQ_Disp(unsigned long X)
{
int F1;

F1 = X / 100;
LED7SEG_DispInt(F1,1,4);
}


void main(void)
{
int cnt = 0;

//各モジュールを初期化
LED7SEG_Start();
freq_counter_cnt_Start();
freq_counter_Start();
PRE_Scaler_Start();
freq_counter_cnt_EnableInt();
freq_counter_EnableInt();
M8C_EnableGInt;

// 全点灯してテスト
LED7SEG_DispInt(8888, 1, 4); // Display "8888"
LED7SEG_DP(1, 1); // Turn on DP
LED7SEG_DP(1, 2); // Turn on DP
LED7SEG_DP(1, 3); // Turn on DP
LED7SEG_DP(1, 4); // Turn on DP
while (cnt < 30000){
cnt++;
};

//MHz台の小数点を表示し、他の小数点はOff
LED7SEG_DP(1, 1); // Turn on DP
LED7SEG_DP(0, 2); // Turn off DP
LED7SEG_DP(0, 3); // Turn off DP
LED7SEG_DP(0, 4); // Turn off DP

// メインループ
while(1){
while (FREQ_detect == 0){}; // 計測結果待ち
FREQ_Disp(FREQ * 4 - 2900000); // プリスケーラ分とIFを補正して周波数を表示
};
}

~~~~~~~~~~~~~~~~~~~~~~

| | コメント (0) | トラックバック (0)

2012年1月30日 (月)

21MHz用アンテナ その2と3

袋小路に陥って悩まないようにするための用心にフルサイズのダイポール(架設状況によっては逆V)と1/4λの垂直型アンテナを作成しておきました。(まだ未調整ですけど)

まずはダイポール(または逆V)。
Dscf1625
100均で買ってきたタッパに正体不明(単に忘れただけ)のコアに巻いたバランが入っています。エレメントとの接続はギボシ端子を使っているので、エレメントを付け替えたり、他への転用/流用も簡単(なはず)です。

ついでに作った垂直系のアンテナです。
Dscf1624
BNCコネクタに極短いケーブルを付けて、芯線側にはギボシ端子、外皮側には少し線を足して大きめのわにぐちクリップをつけて置きました。モービルホイップ用のマグネット基台につないで、車のルーフに建てた釣り竿に沿わせて使う予定です。

| | コメント (0) | トラックバック (0)

RJX-601用周波数表示器 その1

本体のダイヤル窓の中に表示器を入れ込むのは無理かと思っていましたが、若松に何とか入りそうな
サイズのLEDがあったのでオーダしてみました。

ここの上から10番目あたりにあるGL-91ARってブツですが、外形の高さが5mmくらいなので幅は4mmくらいでないかと思います。
この大きさならば3~4桁横に並べてもダイヤル窓の隙間に押し込めそうですね。(配線するのにめげたら3桁だな)

まぁ、部品が見つかればあとは気合で配線するだけ。ソフトはもとになりそうなやつがすでにあるので、IF周波数のオフセット計算だけ追加すれば何とかなるもんね。

28PINのICを実装した基板をどこに押し込むのかも問題ですが・・・・・・。

| | コメント (0) | トラックバック (0)

FM-SSTVに挑戦 その4

昨晩、たまたま430MHzのFMを聞いていると、「SSTVにQRV可能な局」指定でCQが聞こえました。
「準備するからちょっと待って!!!!!!」とお願いして応答し、8J100TYKと2局目のSSTVでのQSOに成功しました。いただいた画像がこれ。
8j100tyk__
画像の上端部分がノイズまみれになっているのはこちらのVOL調整不良のためです。すぐに調整し直しました。

それにしてもAMって100年の歴史があるんですね。っていうか、過去開設された記念局のなかで一番意義のある局ぢゃないでしょうか。(少なくとも無線的には。8J1MORSEもおなじような趣旨の局ですが、WRK的には「日本の」という要素があるTYKを一押しします。)

8J1MORSEはCWじゃなくてFMでQSOしたし、今回の8J100TYKもAMじゃなくてSSTVだし、○○モードの記念局と○○以外のモードでQSOしたのばっかりだな。

## 前に50MHzのSSBでも聞こえていたのですが、こちらの貧弱な設備ではQSOに至りませんでした。


| | コメント (0) | トラックバック (0)

2012年1月28日 (土)

21MHz用アンテナ

HFに出るためのアンテナを作ってみました。

Dscf1619

一応SuperRADのつもりですが、うまく動作するかどうかはこれから試してみます。

アンテナアニャライザで確認した特性です。
まずは共振周波数のチェックです。赤線は測定対象と10Ωの抵抗で分圧した電圧を10Ω側で見ているので、インピーダンスが最大になる点では検出した信号レベルが最小になるはずです。
21mhzsra_level
21.250MHzあたりで共振しているようです。共振周波数はコイルの巻き数で大雑把に合わせておいて、あとでコイルの脇のロッドアンテナ(コイルとの間でコンデンサを形成している)で調整します。
リンクコイル(無線機側から来たケーブルをつないだコイル)の巻き数と位置でインピーダンスを調整しますが、リンクコイルの位置が変わると共振周波数もつられて変化するということなので、リンクコイルの条件を少しづつ変化させ、その都度ロッドアンテナの角度と長さを調整し直しました。

何とかバンドの中央あたりに共振点が持ってこれて、なおかつインピーダンスが50Ω程度(赤線と青線のレベルがほぼ等しい状態)になったので赤線と青線のレベルからインピーダンスを計算させてその結果を表示してみます。一応バンド内では50Ωの上下に追い込めているようです。
21mhzsra_imp

上のグラフのインピーダンスからSWRを計算してみました。
21mhzsra_swr


| | コメント (0) | トラックバック (0)

2012年1月26日 (木)

アンテナアニャライザ その6

PC側のアプリにインピーダンス(|Z|)とSWRを計算する機能を追加しました。

測定端子に50Ω(100Ωの抵抗を2本パラ)を接続し、基準となるレベル(青:DDS出力を50Ωと10Ωで分圧)と測定対象と10Ωで分圧したレベル(赤)を測定します。
50ohm_lvl

右下に追加したインピーダンスモードのボタンを押します。安いカーボン抵抗のためか、DDSの出力が低下しているためか、高い周波数では測定結果が50Ωからずれています。
50ohm_imp

右下に追加したSWRモードのボタンを押します。Z0=50Ωとした時のSWRを表示します。
50ohm_swr

こんどは100Ωです。レベル表示
100ohm_lvl

インピーダンス表示
100ohm_imp

SWR表示
100ohm_swr


こんどは7ミリのボビンに巻いたコイルです。レベル表示
L_lvl

インピーダンス表示
L_imp

30MHzを超えたあたりから基準側のレベルがノイズに埋もれてしまっているようです。DDSの出力が高い周波数でも低下しないように見直さないとだめみたいですね。


| | コメント (0) | トラックバック (0)

2012年1月25日 (水)

FM SSTVに挑戦 その3

またまた430MHzFMでCQを出していたJL1USZ局にしていただいてSSTVのテストを行いました。
今回はIC-W2(430MHz-FMで運用)に自作のインターフェースボックス経由でノートPCに接続しました。
前回、かなり音量を上げないといけないことが分かったので、インターフェースボックスを使って外に音がもれないようにしてみました。
201201232236
んん~~~~、レベルの調整がうまくいくと結構きれいな画像が送れるんですね。

QSOの内容はSSTVのテストよりもラグチュー主体でした。QSO開始ごろはこの程度だった雪が
Dscf1616

終了間際にはこんなに積もっていました。
Dscf1618
3時間もラグチューしているとずいぶんつもりますね。(話も雪も)


JL1USZ局がブログで提案されているように、PCのマイクとスピーカーにリグのマイクとスピーカーを近づけておけば専用のインターフェース回路がなくても何とか楽しめます。変更申請も付属回路の追加だけならば電子申請ですむはずなので自宅にいながらにしてできてしまいます。(局免を送付してもらう封筒を郵送しないとなりませんが)同好の局が増えるといいな~~~。

| | コメント (0) | トラックバック (0)

2012年1月18日 (水)

アンテナアニャライザ その5

検出部(ブリッジ)の回路を少し変更しました。

2

DDSの出力を左側の100Ωと10Ωで分圧した電圧と右側のZxと10Ωで分圧した電圧の比として検出します。

まずはZxとして100Ωの抵抗をつないでみました。
20120117_r100
青い線が左側の抵抗で分圧した電圧、赤い線が右側の測定対象と10Ωで分圧した電圧です。よく一致していますね。まったく同じ電圧が出ているので、インピーダンスの大きさは一致しているということになります。

つづいて自作したダミーロードをつないでみました。(青線を基準(0db)にして差を見ています。)
20120117_dummyload
元のDDSの出力の11分の1(青線)と6分の1(赤線)になるはずですが、周波数が高くなるにつれて赤線の電圧が低下しています。価格とワット数だけでセメント抵抗を使っているので、リアクタンス分が出てしまっているようです。(いや~~~なものを見てしまいました。このダミーを使って自作トランシーバの調整をやってた。。。)

つづいて適当なLCRを直列にしたものをつないでみました。
20120117_1
カーソル(水色の縦線)のあたりで赤が高くなっているので、このあたりで共振してインピーダンスが最小になっていると思います。


レベル差からインピーダンスを計算して表示させたり、そこからさらにSWRを計算して表示したりすれば初歩的はアンテナアニャライザとして使えそうな感じになってきました。


| | コメント (0) | トラックバック (0)

2012年1月16日 (月)

FM SSTVに挑戦 その2

JL1USZ局にお相手いただいて、2回目のSSTVチャレンジを行いました。(TNX Yamaguchi OM)

こちらからの送信は前回OKだったので、受信がうまくいけば2WAY成立です。デスクトップの自作PCではNGだったので今回はノートPCにインストールしたMMSTVを使いました。

まずはJL1USZ局から送っていただいた画像です。
201201162150
ハンディ機のスピーカから出た音をノートPCの内蔵マイクで拾いました。

受信時はこちらで最初に試していたスピーカの音量よりも少し絞ったほうがいい結果が得られるようでした。
上の画像は途中からスピーカとマイクを少し離しています。


さらにJL1USZ局に送っていただいた西武線のレッドアロー号(復活した旧塗装)の画像です。
201201162220
西武線(池袋線)の沿線で育ったWRKにはずいぶんと懐かしい車両です。


もう1枚。受信時にPCに入力する音量は1、2枚目よりも高くしたほうがいいようでした。(こちらで受信した画像を再送し、さらに再々送していただきました。)
201201162225
室内でスピーカとマイクを近づけて運用するにはちょっとしんどい音量なので、それなりの接続用のブツを使ったほうがよさそうです。

| | コメント (0) | トラックバック (0)

2012年1月15日 (日)

アンテナアニャライザ その4

どうも信号源にしているオシレータ(LTC1799)の出力波形が思わしくないので、方針変更して以前製作したDDSを使用した周波数特性測定ツールを使うようにしてみました。

まずは普通のブリッジ回路を作ってみました。

回路図はこの通り。(R1とR3が2個ありますが、回路図ツール上でコピペした時に部品名を修正していなかったみたいですね。)
Photo_3

生基板に小さく切った基板を張り付けて部品を実装しました。(ランド工法ですね。)
左のコネクタから信号が入ってきて、ブリッジの出力を右のコネクタに返すようにしています。
Photo_4

コネクタを開放、ダミーロード接続、50MHzの移動用簡易アンテナをつないでみました。
50mhz_whip_2


回路構成からすると、インピーダンスが50Ωになってブリッジの平衡がとれている時にレベル計の値が下がるはずなのですが、50Ωのになっているのが50MHzの前後に2箇所あります。(しかもずれている)アンテナの先端に30cmほどのビニル線を足すと50MHz近辺でもいい感じになりますが、実際の使用状態で確認しないと意味不明なので、エレメントを延長すると共振点が下がる(のかな)が確認できたことでよしとしてしまいましょう。

今後はこの回路をベースにしてR,X成分を検出する方法を検討していきます。

### ダミーロードをつないだ時のグラフがちょっと気になりますね。50Ωのつもりなのですが、ずれているようです。テスタで直流抵抗を計るとほぼ50Ωdすが、300Ωのセメント抵抗を6本パラにしただけなのでリアクタンスが含まれているのかもしれません。

| | コメント (0) | トラックバック (0)

ICOM機用 周波数表示器 Ver2

以前からローカルと一緒に製作していたICOM製トランシーバ用の周波数表示器に機能追加しました。
今回は周波数表示器側からのVFO/Memryの切り替え、MemoryCH選択、表示周波数のMemory書き込みに対応しました。(「LCDが壊れたけど交換部品が手に入らないけどなにか替わりにになるものはないか?」ということがきっかけで製作を始めました。機能追加前のものを数セット某オークションに出品していましたので見かけたかたもいるのではないかと思います。)


まずはユニットの内部です。Cypress製のマイコン1個と3端子レギュレータ、トランジスタ2本、液晶表示器、スイッチ、ロータリエンコーダなどを使いました。部品は基本的に秋月やマルツ、千石などを回れば揃うものを使っています。
Photo


リグにつないで動作させてみます。
まずは電源投入時に表示される画面です。
Photo
「NECOYAMA BRAND」はこれを製作するきっかけとなった、ノラ猫がたくさんいる某所にちなんでいます。
(受け狙いで遊んでみました。)


しばらくするとリグとのIF検出を行います。CI-Vインタフェース上のボーレートと論理アドレスを順に変えてコマンドを送信し、応答のあったアドレスを有効と判断します。また、この処理の途中でリグのダイヤルを回すとリグから送られてくる周波数データを検出し、周波数データについてきたアドレスをリグのアドレスと見なすようにしています。
一度検出するとそのアドレスとボーレートを記憶して、次回からはそのアドレスとボーレートを最初にチェックするようにしています。(時間短縮のため。)
If


インターフェースの検出が終わると、メーター読み取りコマンドが有効かどうかのチェックを行います。ここでメーター読み取りコマンドが有効と判断するとSとPOの値をLCD上に表示します。デバッグ用に使ったIC731Sはアナログの(針の)メータが実装されている機種で、画面にはメーター表示していないのでメーター読み取りコマンドは無効のようです。
Photo_2


設定処理が終わって、立ち上がった時の表示です。左上にVFOA/VFOB/MEMOのどれが選択されているかを表示しています。その下には選択されているメモリのチャンネル番号を表示します。メモリのチャンネル番号は周波数表示器に実装したダイヤルで切り替えることができます。上の行の中央あたりから右側には周波数を表示します。IC731Sはリグから送られてくる周波数データが100Hz単位のようなので10Hzの桁は常時0になっています。
中央下にはモードを表示します。いずれもリグの表示と一致していますね。Vfoa
### リグの表示だけ変化して、周波数データを自動的に送ってこない場合があるので、そのような場合は読み取りコマンドを出して強制的に読み取るようにしています。


周波数表示器の黒ボタンを押してVFOBに切り替えました。VFOの選択に連動してモードも切り替わっています。
Vfb


赤ボタンを押してメモリチャンネルに切り替えました。
Memo2ch

この状態で周波数表示器のダイヤルを回すとメモリーチャンネルが切り替わります。
リグに送ったチャンネルデータ(番号)がエラーになった場合は何事もなかったように元のチャンネルになります。
(機種によって搭載しているチャンネル数が違うのですが、意識しないでいいようにしました。)
Memo12ch


最初に「ICOM製トランシーバ用」と書きましたが、CI-Vインターフェースを持っている受信機でも使えるんじゃないかと想います。受信機方面の趣味はないので確認していませんけど。

| | コメント (0) | トラックバック (0)

2011年12月25日 (日)

6m AMコンテスト

今年最後に参加するコンテストということで、1エリアの6mAMコンテストに参加しました。

使ったのはAM送信改造した自作SSB機(1号機)です。
局発をDDSにしているので、バンド内はどこでも出られます。(実際にはFM用の周波数範囲などには出られない用にするため、工事設計書には50~51MHzと記載)
初期の改造点は以下の通り。

1. 変調用のアンプとトランスを実装するスペースがないのでTA7538Aの直流バランスをSSBとAMで変える。
2. SSBの水晶フィルタを通すとキャリアがだだもれのSSBみたいになるので、AM時には水晶フィルタをバイパスさせる。(受信時も水晶フィルタをバイパスする構成にしていました。)

この状態で使ってみると、問題点がぞろぞろと・・・・・

1. バンド中どこでも強めの局が聞こえる。(ダイヤルの位置に関係なくバンド中が混雑している7MHz帯みたいに聞こえる)
2. 比較的近い周波数の局のキャリアでビート音がうるさい。
3. 超汚い電波(多分)なので呼んでも拾ってもらえない。(唯一拾っていただけたJA1CCX局に感謝です。)

1項はとりあえずは受信と送信でモードを切り替えて運用しました。(送信時はPTTを押すとともにモード切り替えスイッチをAM側、受信時はPTTを離すのと同時にモード切り替えスイッチをSSB・・・・・疲れました。)

家に帰るなり改造しました。

まず、1項の対策として、SSB用の水晶フィルタをバイパスするのは送信時だけとなるようにしました。こうすることでSSBと同じIF帯域幅で受信します。(両方のサイドバンドのうち、上側だけを選択して受信する。)SSB用のバラモジを使った復調回路はそのままなので、同調がずれたり、他の局のキャリアが帯域内に入ってくると盛大にビート音が出ます。ということで2項の対策は今回は見送りです。

3項の対策としては、アンテナ端子で信号を見るとみごとに過変調な波形だったので、SSBとAMで変調回路に入力する音声信号のレベルを別々に設定できるようにして、さらにキャリアレベル(実際には音声信号のDCバランス)も別々に設定するように修正しました。


回路図?この程度の改造はアドリブでやっちゃうこともあるので今回は書いてないです。

ここで問題です。
自宅からだと実質的に6mに出られない(アンテナが設置できない)ので、ロールコールetcに参加できません。
次に運用できるのは次回のAMのコンテストかな。


| | コメント (0) | トラックバック (0)

FM-SSTVに挑戦 その1

タイトルを見れば何をやろうとした話なのか一目瞭然ですが、FMハンディトランシーバとPCを使ったSSTV に挑戦しました。
2011年6月の変更申請で50MHzを追加した時、ついでに50MHzから1200MHzまでの各バンドでSSTVやらPSK31やらRTTYなどのモードも追加していました。ただ、相手局がみつからず「工事設計書に書いてあるだけ」でした。
先日、猫山でお会いした山口さん(JL1USZ)が電話・電信以外のモードも積極的にON-Airしているという話を伺っていたので、自宅で聞こえた時にお付き合いいただきました。(他にも色々面白い話があったのですが、そっちは省略)

7L1WRKの430MHzでのFM-SSTVの構成はこんなふうになっています。

自作PC - 自作デジタルモード用アダプタ - IC-W2(5W) - 逆GP(室内)

まずはJL1USZ局にFMの音声にSSTVの信号を載せて送っていただきました。
レベルの調整がまずいのか、何なのか、「カラーバージョンの砂嵐」の連続です。

続いて、71WRKから出した信号を受けていただきました。
こちらはそれほど苦労することなく、こんな感じで届いているということでした。(受信した画像をメールで送っていただきました。)

201112210014
ちなみに猫山の猫たちですね。

いろいろとやってはみたのですが、こちらの受信がうまくいかず 交信成立まではたどり着けませんでした。
(TNX JL1USZ)


さて、後日自宅にあった予備のFMハンディとノートPCも使ってテストしてみました。
接続用のIFは1セットしかないのでノートPC側は「ハンディのスピーカ→ノートPCの内蔵マイク」です。
画像を保存し忘れたので画像はナシですが、JL1USZ局からメールしていただいた上記の画像と同じように受信できていました。

どうも自作PCで音声を取り込む際のノイズか歪みが影響しているようです。
自作PCのサウンドカードを交換すればよさそうですが、面倒臭いのと外での運用がメインなのでとりあえずはノートPCで続けることにします。

<<2011.12.26追記>>

自作デスクトップPCのスピーカから出した音声信号をiPhoneで受信してみました。
Sstv27dec2011000513
自動調整がないので調整がちょっと難しいですね。


| | コメント (0) | トラックバック (0)

2011年12月 8日 (木)

アンテナアニャライザ その3

測定対象にかかっている電圧と測定対象+基準抵抗にかかっている電圧からインピーダンスを計算するのをやめて、
測定対象にかかっている電圧と基準抵抗にかかっている電圧の比でインピーダンスを計算するように回路を変更しました。測定対象が純抵抗でない(共振していない)状態での誤差が大きい点を改善します。

Photo

実際に抵抗、コンデンサ、コイルのインピーダンスを測定してみました。抵抗は縦軸がほぼ一定(200Ωはのぞく)なのに、コイルとコンデンサは周波数特性を持っています。
Antena_anyalyzer_201112072

HC4046で元の信号と測定対象にかかっている電圧の位相差を検出してみました。抵抗の場合は縦軸0付近から上下には動かないので、 容量性か誘導性かを判断できそうです。
Antena_anyalyzer_201112071


| | コメント (0) | トラックバック (0)

«アンテナアニャライザ その2