2021年10月31日日曜日

最近のHFの高い方のコンディション

 J5HKT, 3DA0RU, 3DA0WWを皮切りにペディションが始まりました(終わった)が、SNも上がってきて高い周波数のコンディションもマズマス。 で、昔からのcfm見てみると、結構cfm出来ていないものがありますので、この機にChallenge用に穴の開いているところを埋めようと、必要なバンドのワッチを続けています。 

J5は10/12mが出来ませんでした。残念。

で、7P8RU(3DA0RUのグループ)のオペレーションが始まったので、QSLの状況を見ると、40/20/10m以外が無い事に気が付きました。 

特に15mは50年昔のQSOなので、cfmは絶望的。 ということで、毎日朝夕にワッチを続けていましたが、中々信号強度が十分でなく交信のチャンスにめぐまれていませんでしたが、昨日ようやく15mの交信が完了して、全バンドでの7P8RUとの交信終了。 

Clublogで確認。

7P8RUに気を取られていてCQ WWの3A3Aを無視していましたが、今日はQRV確認できず、しまった!と悔やんでいます。

 HD8Rも出ていますので、80mでのQSOを狙って出来れば、Galapagosも終了。

 一昨日は、朝の12mのコンディションが良く、USのStatesをかなりこなすことが出来ましたが、 今朝はそれほど良くありませんでしたね。 まだ日によって安定していませんね。

しかし、FT8様様で、WSJT-x見ていて、クリックすれば即どのバンドでも 送信できるのですが、、CWやPhoneはそうは行かず、ちゃんと送信したいバンドのTXボタン押さないとその周波数で送信できない! 暫くは、気が付かずに、ちっとも呼んでも答えて貰えず、落ち込んでいました。 ついでに、Phoneの時はDAXボタンoffにしておかないと音が出ない!(Flex 6000の話です) 

うーん、かなり腕が錆びついていて、楽なFT8生活を反省。

 

 


 



2021年9月10日金曜日

CL6DXを追加

 6~7月にEスポで6mのDXが騒がしく、30-40-80mのダイポールでもEUが聞こえていたので、「おー、6mも出れるようにしなきゃ!」と以前よりお願いしても中々来て貰えない整備点検も兼ねてFTIに注文しました。 当然、シーズンに間に合うわけは無く、9月に入ってやっと雨の合間をぬって実施して貰いました。

市販のアンテナは、無調整でもほとんど問題なく希望の周波数に同調しており、ほんとに簡単ですね。 他のアンテナに対しても、特に影響も無く、全て正常に稼働し、また、タワーの昇降時の音が大分静かになったのはありがたい。 

全部のアンテナの同調点をシャックからnanoVNAで確認してみましたが、案の定80mダイポールは、温度かテンションか少し伸びて同調点が下がってましたので、20cm(15cm+5cm)程切り詰めて、3.53Mhzに中心周波数が来るように微調整。

備忘録として、本日のnanovna-saverの測定データ(80,40,30,6m)を添付。




 



2021年9月9日木曜日

Stepper Motor Driver の問題解決

2~3年前秋月にコパルのSPG27-1101が安価で出ていたので、使い道も考えずに纏め買いして、ジャンクボックスの肥しになっていました。 で、バタフライバリコンでこれを使ってリモートで、と当然考え、これのドライバをESP8266とDRV8835で作ってみました。

SPG27のスペックシートを見ると12Vでの動作が出ていたので、つい「12Vで動かす必要がある」と思い込んでいましたが、DRV8835のVMmaxが12Vです。 気にしないで、12V加えていましたが、 突然動かなくなって、ESP8266もUSB入力を受け付けなくなってしまうものが幾つか出てきました(壊れている!)。

回路はいたって簡単で、外部からDC電源を供給して、内部で3.3VのVccをICに供給、モーターには外部からのDCを供給するようになっています。

壊れそうなところは無いので、最初原因が分からず色々考えていましたが、DRV8835のVM maxが一番怪しい!という事で、電圧を5V位まで落としてみましたが、StepperMotorはちゃんと動いてくれます(トルクが少し落ちているかもしれませんが)。 また、動かなくなることも今のところないようなので、結論として、12Vが拙かった!  

ちょっとした勘違いで、可愛そうなESP8288とDRV8835を幾つかお見送りしてしまいました。Amen...

SPG27-1101は基本ステップ角度3°で、これに5:1のギアでMLAのバタフライバリコンを動かしています(0.6°/step)が、100pF程度のバタフライバリコンだと、まだ粗い感じがあります。 

マルチバンドのMLAの場合は、多分、固定コンデンサと小容量のバタフライバリコンの組み合わせ、等を考える必要があるのでしょうね。 この時、固定コンデンサの切り替えをリレーで行うとすると数十Aの高周波電流を許容するリレーをどうするか?が問題になりそう。

備忘録としてfritzingのBreadboardとPCBのコピー、それにsketchを添付しておきます。

 

 

 

 

 

 

 

 

 

 

 

 

 //  For use of DRV8835+SPG27-1101
//  Author  Ken Yamada, JA2IYJ
//  WeMos D1 mini
//  Date:  2019 July 3rd. V0.5 Initial version.
//              July 11th V1.0 Zero_sensor added and bandled to the workable protype hardware.
//         2020 Nov. 11 v2.0  MAX_sensor added.  
//         2021 Apr. 23 Modified for Butterfly Capacitor ... No need of Max/Min Stopper.
//         2021 May. 19  EEPROM.write/read/commit added to set initial and current Position.
//         2021 Sept. 3  Changed Up/Dwn/Init pin to reflect PCB alignment.  Motor runs at 5V.
//                       Above 11V, DRV8835 might die and kills ESP8266 too.
//

#include <Stepper.h>
#include <EEPROM.h>
#include <ESP8266WiFi.h>

#define EEPROM_SIZE 2  // sizeof(int)=2 byte.
#define TRUE 1
#define FALSE 0
#define MOTOR_1 16 //15  DRV8825のピン配置に合わせて変更 5/22
#define MOTOR_2 14 //12
#define MOTOR_3 12 //13
#define MOTOR_4 13 //14
// digital address それぞれをボタンにアサイン
#define UP_BUTTON 0 // 黄色
#define DOWN_BUTTON 4 // 白
#define INIT_BUTTON 2 // Position 0 setting (GPIO16 has a built-in pull-down resistor.)
#define STEPS_PER_REV 120  // SPG27-1101 specification
#define MAX_POS 155 // 90deg/3deg step, 5:1 gear = 30 x 5 + α

// stepPerRotate は素のモーターの一回転当たりのstep数の様です(ギアの事汎用では顧慮できないもんね)
//const int stepsPerRotate = 20;// SPG20-1332ス テップ数 = 480 ギア比1:24 hence 20
const int stepsPerRotate = 12;// SPG27-1101 ステップ数 = 120 ギア比1:5 hence 24 でも12でないと動かない! 何故?
int curPosition;
int initPosition;
boolean toggle1 = FALSE;
boolean toggle2 = FALSE;

Stepper myStepper(stepsPerRotate, MOTOR_1, MOTOR_2, MOTOR_3, MOTOR_4);

void setup(){
  Serial.begin(115200);
  Serial.println("\n Setup ...");
  // WiFiを使用しないので、省電力化の為に下の3行
  WiFi.mode(WIFI_OFF);
  WiFi.forceSleepBegin();
  delay(1);
 
 //EPROM.begin(EEPROM_SIZE);
//initPosition = EEPROM.read(0);
//curPosition = initPosition;
  Serial.print("\n curPosition = ");
  Serial.println( curPosition );
  pinMode(UP_BUTTON, INPUT_PULLUP); // 手動制御用のUp/Down ボタン High
  pinMode(DOWN_BUTTON, INPUT_PULLUP); // 手動制御用のUp/Down ボタン High
  pinMode(INIT_BUTTON, INPUT_PULLUP);  // One time.
  myStepper.setSpeed(2000); // 2500位まではOKの様です。
  //myStepper.setSpeed(50); // make it slow

  Serial.println("\n  End of Setup ...");
}

void loop(){
  Serial.println(" Start Loop ---");
  //  初期設定の時に容量最大値の位置を0に設定する。
  #if 0
  if( digitalRead(INIT_BUTTON) == LOW) {
    EEPROM.begin(EEPROM_SIZE);
    EEPROM.write(0, 0);
    EEPROM.commit();
    Serial.println( " Wrote EEPROM -> 0 ");
    delay(500);
  }
  #endif
  // Up button
  if( digitalRead(UP_BUTTON) == LOW ){
    Serial.println("Up button 1");
//  while( digitalRead(UP_BUTTON) == LOW && toggle1 == TRUE && curPosition < MAX_POS){
    while( digitalRead(UP_BUTTON) == LOW ){
      myStepper.step(1);
      curPosition++;
      yield();    // Soft WDT reset が出ない様にするため。
      delay(50);
    }
  }
  // Down button
  if ( digitalRead(DOWN_BUTTON) == LOW ){
    Serial.println("Down button 1");
//  while( digitalRead(DOWN_BUTTON) == LOW && toggle2 == TRUE && curPosition > 0 ){
    while( digitalRead(DOWN_BUTTON) == LOW ){
      myStepper.step(-1);
      curPosition--;
      yield();    // Soft WDT reset が出ない様にするため。
      delay(50);
    }
  }

  stopMotor();
  #if 0
  if (curPosition != initPosition ){
     EEPROM.write(0, curPosition);
     EEPROM.commit();
     initPosition = curPosition;
     Serial.print( "Save curPosition = ");
     Serial.println( curPosition );
  }
  delay(10);
  #endif
  Serial.println("  End of Main loop ...");  
  delay(10);
}
void stopMotor() {
  digitalWrite(MOTOR_1, LOW);
  digitalWrite(MOTOR_2, LOW);
  digitalWrite(MOTOR_3, LOW);
  digitalWrite(MOTOR_4, LOW);
}  
#if 0
int moveAbsPos2(long pos){
  if (pos < maxPosition) {
    myStepper.step(currentPosition - pos);
    currentPosition = pos;
  } else {
    return -1;
  }
 
}
int incrementPosBy(long pos){
  if (currentPosition + pos < maxPosition) {
    myStepper.step(pos);
    currentPosition = currentPosition+pos;
  } else {
    return -1;
  }
}
int decrementPosby(long pos){
  if (currentPosition - pos > 0 ){
    myStepper.step(-pos);
    currentPosition = currentPosition - pos;
  } else {
    return -1;
  }
}
#endif



 

 

 

2021年8月29日日曜日

自作バリコンの内部抵抗

MLAはQが高くないと効率が上がらない。 Qが高くなるとループには大きな電流が流れる。 「うん? 自作のバリコンって大丈夫?」等と思いながら、バタフライバリコンを調子に乗って大量試作していました。(バタフライバリコンなら、摺動部からの配線ーローターからのーが必要ないので、特殊な事をしなくても抵抗値を低く出来る)。

しかし、使用部材で内部抵抗が大きく違う事がJR1OAO中島氏から報告され、心配になり、自作のバリコンについて全部、定電流電源に繋いで測定してみました(片側のステーターの一端から対極端に電流を流し、電圧降下を測定)。

結果「あいやー! 酷いね」。何も考えずに、ユニクロ(鉄、ユニクロームメッキ)やステンレスのM5ボルトとステンレスナットを使用していましたが、ステンレスは最悪の組み合わせでした。 


それで、アルミボルト、アルミナットに置き換えてどの位の改善になるのか実験してみました(左表の赤字の部分)。 スプリングワッシャは流石にステンレスですけど、、、。

アルミボルト、アルミナット にすると目を見張るような改善が見られました。 また、締め付け強度やナットの材質の影響が大きい為か、大容量(プレートの数が多い、距離が長い)だから抵抗が大きい、という結果にはなりませんでした。

別途、個々の部材の影響をみようと実験してみましたが、ナットの材質の影響が大きく、続いてボルトの材質の順番の様でした。 ナットはボルトとの接触面積が大きいので、当然なのでしょうね。 スプリングワッシャを使用していますが、スプリングワッシャを介してのみの導通は無いので、締め付け強度以外の点では影響は無いようです。 また、ナガラのテナメイトをボルト、ステーター、スペーサーの間に塗ってみましたが、顕著な効果は認められませんでした(場合により、効果があるように見えましたが、締め付け強度の影響の方が大きいように思えます)。

何も考えずに、使っていたステンレスが電気的には鬼門だったことに些か驚いています。


 

2021年8月16日月曜日

nanoVNAでMLAのQを測定

1m角ループのMLAを作ってみましたが、JR1OAO中島氏の言われている、Ct,Cmの値と大きく違うので、中島氏の所へ持ち込み確認して頂いたところ、4隅の接続点に使用したL金具が


アルマイト加工されていたようで、ループ全体の抵抗値が大きくQが上がらない状態であったことが判明。中島氏の所で、L金具のアルマイト加工を極力剥がし、 接触面にナガラのテナメイトを塗り、ループ全体の抵抗を測ったところ大幅に改善。 14MhzでのSWR等も問題なかったので帰還。

我が家の室内で、実験をしてみると、やっているうちにCt,Cmの値が何故か昔の状態に戻るような感じになってくる。 定電流電源の持ち合わせが無いので、ループ全体の抵抗を測るわけにもゆかないので、ループのQをループアンテナの動作確認の指標とすることにして、手持ちのnanoVNAを使って、どうやったらQを簡単に計測できるかググってみました。 S11を使ってQを測定する方法については、いくつかレポートがありましたが、ココにnanoVNAを使った方法についての議論がまとまっていました。

「if you measure Z11 using S11 then the Q is given by fc/ BW where BW is taken between |Z|/Sqrt(2) points on your frequency plot. Or alternatively taken between +/- 45 degrees on the phase plot.(tuckvk3cca)」

Q = fo/BW  foは中心周波数でBWは

  1.  VSWR=2.618となる周波数の差をBWとする。
  2.  |Z|/sqrt(2)の周波数の差をBWとする。
  3.  phase plotから+/- 45°の周波数の差をBWとする。

という事のようなので、実際にnanovna-saverで表示させて、1~3まで、使用できるか検証してみました。 (図では、VSWRで求めた周波数の点を、夫々のグラフ上で結び縦軸上の値を見やすくしてみました)

結論から言えば、左の図の左下のVSWRで確認する方法が、簡単かと思われます。 

2の方法は上右の図のように、相当する周波数の値が読み難い。

3の方法は、phaseが急激に変化するので、+/-45°をグラフ上特定することが難しい(そもそも中心周波数で0°になっていない?)

ということで、VSWR=2.618の点を利用するのが最も簡単だという結論に至りました。 但し、2.618という値が視認できるためにはScan範囲がかなり小さくないとダメなので、中心周波数とScan幅を絞ってゆく作業が必要になります。 

当然の話ですが、Markerで夫々の点をポイントし、左の表示の周波数の値から計算する必要があります。

 で、左の数字を見ていたら、Quality factorというのがあり?? MLA48のdiscussion roomでQしてみたら、藤井さんから、 Impedance 50.4+j760mΩから Q = 0.76/50.4 =... ということでした。 正直な話、これってQ ってQ(uestion)が湧いてきますが、、。

2.618については QRP RXが当該のページで下のように説明していました。

”The magic value VSWR = 2.618 can be found from this equation:


BW = (VSWR - 1) / (Q * sqrt(VSWR))

where
BW is bandwidth relative to the center frequency (BW = df / Fc, where df is the absolute bandwidth)

You can found this equation on page 20 in the book "Microstrip Antennas: The Analysis and Design of Microstrip Antennas and Arrays" by David M. Pozar, Daniel H. Schaubert (see attachment).
https://ieeexplore.ieee.org/book/5263382

Since Q = 1 / BW for -3 dB bandwidth, we got the following system of equations:

BW = (VSWR - 1) / (Q * sqrt(VSWR))
Q = 1 / BW

With substitution, we get this equation:

(VSWR - 1) / sqrt(VSWR) = 1

by solving it, we get this magic number :)

VSWR = (3 + sqrt(5)) / 2 = 2.618...
” 



2021年6月27日日曜日

CW Keyer JG1CCL内田さん版(2) 筐体に入れる

 内田さんからの依頼は、試作と動作確認だったのですが、バラックのままでは、ジャンクボックスの肥しにしかならないので、筐体を作って収めてやろうと考えたら、元々が、CW decoder/keyerの為にデザインされた基板なので、単体のKeyerとして筐体に入れようとすると、micorUSBコネクタの位置がちょっと塩梅悪い(これだけケースの横から出ることになる)ので、FT234xでは塩梅が悪く、MCP2221Aと秋月の「USBmicroBコネクターパネル取付キット」の組み合わせに変更することにしました(基板はFT234XかCH340互換のMCP2221Aのどちらか一つを選択できるようになっている)。

あ、チョンボ! FT234xでないと、USB接続したソフトがWinKeyとして認識してくれないので、この選択はありませんね(MCP2221Aに置き換えて認識して貰えなかったので、気が付きましたーおバカさんでした)。

ただ、FT234xが基板直付けでmicroUSB Bコネクタが横から出ているので、秋月のmicroUSB Bコネクタのパネル取り付けキットを加工して、FT234xモジュールをパネルの方に取り付けて、ジャンパー線で基板と繋ぐようにしました。


 1)FT234xをパネルに取り付けるように改造

秋月のmicorUSB Bパネル取り付けキットの基板から表面実装のmicorUSB Bコネクタを外す(左ー>右)



コネクタを外した基板を裏返して(表面実装用の配線面が見えない側に)FT234xモジュールを取り付ける。FT234xモジュールにジャンパーピンを立て、コネクタを外した基板の後部のジャンパーピン用穴(6p)の真ん中4pに半田付け。ジャンパーピンとコネクタの位置関係が同じなので、同じ位置になります。

その後、パネル取り付け用のL金具を半田付けして出来上がり。 

FT234xモジュールのパネル取り付けキットを作ってくれると、こんな事しなくて済むんですけどね~。


2)で、筐体は? いろいろ探しても適当なものが見つからず、結局はアクリル板で自作することに、、、。

 基板の大きさをベースに2tのアクリル板で筐体を作ってみました。105x75x50とちょっと大きめになってしまいましたが、基板を流用しているのでしかたないですね。 アクリル樹脂接着剤を最初は付属のスポイトで接着部に付けていましたが、これはダメですね。 ボチャッと大量に接着剤が流れて、周りが汚れてしまいます。 胡麻化すのに、クリアのアクリル板を紙やすりで削って、スモーク調にしました。

 小型のインジェクタでやってみたら、注射の時と同じで中の空気を押し出してやると、少量が注入量を細かく制御でき、接着部分に毛細管現象でうまく広がり綺麗に接着出来ました。

 ジャンパーピンとジャンパーケーブルの大きさが結構寸法に影響を与えますね。 特にジャンパー線の折り曲げで最低1mmの余裕が必要でした。基板と背面の距離がちょっと足りなくて、4台制御できる仕様は、3台に変更。

後は、シールドは全くなく、結構ジャンパー線が内部で引き回されているので、電磁波バンバンの環境では誤動作するかも、、、。

 特に使う予定は無いのですが、バラックだとジャンクボックスの滓になってしまうので、一応格好をつけましたが、ラベルの印字などの予定は無し。 シャックのお飾り!!
 

 

2021年6月24日木曜日

朝からLogger32でローテータの制御が出来ない!

 「あれ、地図にアンテナの方向が出てこない?」と気が付いて、USBのコネクタを繋いだり、外したり。 でも、解決しない! 制御のためにJA5AUCのRTC-59を使っているのですが、USBのコネクタ(四角形っぽい方)の接触があまり良くなく、何度かトラブったことがあったので、そのあたりを中心に弄っても埒が明かず、Logger32でなくBGARTCを使って、なんどか接続の確認をしているうちにBGARTCでは繋がるようになってしまいました。 しかし、まだLogger32のRotorからは繋がらない! 何故だろう?

あちこち抜いたり挿したり、3時間近く悪戦苦闘してしまいましたが、後味の悪い(結論の出ない)状態。

で、色々弄っているうちに気が付きました。 [Radio]の選択が外れていました。 Flex6500を設定しているので、これを選択[open]して解決。 

Logger32の窓の一番下に、設定内容が表示されており(青だと接続、赤だと非接続)、これを見れば一発で分かるのですが、一度設定すると、電源切っても、立ち上げると直前の状態で立ち上がるので、 つい忘れてしまいます。 お騒がせでした。





 


30-40-80m Dipoleがオカシイ(続)

RI1FJLの40mでの交信のときおかしくて、エレメントの修正をして問題なく終わったと思っていたら、ここ2週間の雨天で、またチューンイングが取れなくなってしまった。 何故か30mがオカシイ! よくよく考えてみると、7Mhz用のトラップを軽量化の為に銅線からアルミ線に変更した 注)...