2019年7月3日水曜日

MLA用の高耐圧コンデンサと駆動装置の実験

小暮さんから、MLAの設計シミュレータの情報がMLに回っていたので、早速160mで作るとどうなるのか、シミュレーションしてみましたが、QSTにVKの局が載せていたものでも、2-30KVの耐圧のコンデンサが必要との結果。 記事では10KVの真空バリコンでしたが、ほんとに500W入れて大丈夫? (Qが設計理論値よりかなり低くて、電圧も低いのでは? との意見もありますが、、)。
いずれにせよ、高耐圧の可変コンデンサが必要であることは確かなので、銅パイプのシリンダの出し入れで検討してみました。
20φと16φの銅パイプ10cm程度の出し入れで、カプトン3重巻きにして、15pFから120pF位までのコンデンサは出来そうです。 カプトンは厚みにより違いますが、380KV/mm程度の絶縁破壊電圧が示されているので、50μのテープを3重、4重にすれば、20KV程度は行けるのでは? と「取らぬ狸の皮算用」で、高価なポリイミドテープを購入。 ところが、3本の銅パイプを接続する為の半田付けは、ちょっと簡単には出来そうもない! 最近流行りのプロパンボンベのトーチで炙りながら半田ごてで半田付け、ということになりそうで、目下準備中。
2)駆動エンジンとしてステッピングモーターの検討
その間に、このシリンダを動かすメカの部分とこれを動かすためのソフトの部分について検討。 秋月等見るとステッピングモーターは安価なものがあるし、Arduinoも安価で使い易いので、Arduino+Stepping Motorに挑戦。 
まず手始めに、SPG20-1332+DRV8835の組み合わせ(秋月)と、28BYJ-48+ULN2003の組み合わせ(Amazon)についてWEBでググりながら動作の確認。 SPG20も28BYJもギア比から些かスピードが遅いので、モーターは変えなければならなさそうですが、ドライバのUNL2003やDRV8835は使えそうです。 
DRV8835は小さくて良さそうですし、VM <11v p="">が11Vとなっていますが、12Vでも今のところ問題なく使えています。
3)SPG27-1101+DRV8835+Arduino Unoで実験用の駆動装置の作成
Arduino Unoのシールドとして、上に乗っけてやろうと、部品箱を漁ってみたら、5V regulator, シールド用のスルーホール万能基板、トグルスイッチ等全て揃っていたので、早速12V単一電源供給のシールドを作成して、以降の実験に使うことにしました。 単純にUp/Downのトグルスイッチで制御するだけですので、「DCモーターで作ればいいじゃん」とも言えますが、ArduinoUnoにはA/Dコンバーターもついていますし、SDカードも使えますので、自動化にも対応でき、拡張性からもこの選択をしました。 回転ー>横方向の移動には一般に”すべりネジ”が使われますが高価なので、躊躇していましたがJR1OAO中島さんより「長ネジで大丈夫」との知見をいただきましたので、長ネジで挑戦してみることにし、長ネジのピッチ(M3で0.5mm)から、10cm動かすために200回転必要になることから、実験装置は200回回転させる事を考慮してデザインすることにしました。   
左は、Stepperライブラリを使ってwhileループで1ステップづつ200回回転させた時と、Stepper.step(XX)で一挙に200回転させた時にかかった時間を測定したものですが、1ステップづつ送っても、問題が無いことが確認されましたので、stepper.step()には1或いは-1を指定して、1ステップづつ送ることとしました。
また、Stepper.setSpeed()では2500位までは指定しても大丈夫ですが、ギアの回る音がやたらとうるさくなり、3000を超えると不安定になって、脱調を起こすようです。【3000回でも大丈夫ですが、時々おかしくなりました】  2300程度で使うのが安全でした。
<11v p="">M6(1mmピッチ)で100回転か、30度台形ネジ(すべりネジ)でないと、チューニングにやたら時間がかかってステッピングモーターの価値が半減しそうです。
<11v p=""> 
4)Arduino Unoのスケッチの作成
 2)のところで、色々なライブラリを試してみましたが、結局は標準のStepper.hをつかい、global変数にcurrentPositionを作り、setup()で必ずposition 0 に戻す事にしました。またmaxPositionは計算値、或いは実測値で求め、ソフト的に一定の範囲で動作するようにし、ハード的なリミッタは付けない事としました。
 今後、ハード部分が出来上がれば、下のスケッチを必要に応じて修正してゆくことにします。


参考としたHP;
Arduinoで小型ステッピングモータを動かす。半田付け不要 
ステッピングモーター 28BYJ-48 を DRV8835 で回してみる (4) 
ステッピングモーター SPG20-1332 を DRV8835 で回してみる
SPG-27 Spec sheet
SGP-20 Spec sheet 
Arduinoでステッピングモータを制御してみる 
ステッピングモータを動かす(ステッピングモータ、モータドライバ使用)
TynyStepper_28BYJ_48(GitHub)


=================================================
//  For use of DRV8835+SPG27-1101
//  Author  Ken Yamada, JA2IYJ
//  Date:  2019 July 3rd.
//    2019 July 4th.
//      interruptをup/downに使えるようにpin アサインメントを変更(interruptはボタンのセンスが不安定でうまくゆかなかった)
//        ZERO_SENSOR ->12, MAX_SENSOR ->13, UP_BUTTON->2, DOWN_BUTTON->3 
//
#include

#define TRUE 1
#define FALSE 0
#define MOTOR_1 8
#define MOTOR_2 9
#define MOTOR_3 10
#define MOTOR_4 11
// digital address それぞれをボタン、センサーにアサイン
#define ZERO_SENSOR 12
#define MAX_SENSOR 13
#define UP_BUTTON 2
#define DOWN_BUTTON 3
#define PITCH 0.5 // mm/revolve
#define LENGHT_2_MOVE 10  // cm 必要な移動距離


long currentPosition = 0;  // 絶対値 ... 動作開始時にsetupで起点0にされる
long maxPosition = 120*200;   // 後で手動入力? M3並目ネジは0.5mm pitchなので10cm 動かすには200回廻す
boolean toggle1 = FALSE;
boolean toggle2 = FALSE;

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

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

void setup(){
  Serial.begin(9600);
  pinMode(ZERO_SENSOR, INPUT_PULLUP); //内部pullup抵抗でHighになっている
  pinMode(MAX_SENSOR, INPUT_PULLUP);  //内部pullup抵抗でHighになっている
  pinMode(UP_BUTTON, INPUT_PULLUP); // 手動制御用のUp/Down ボタン High
  pinMode(DOWN_BUTTON, INPUT_PULLUP); // 手動制御用のUp/Down ボタン High
  resetCurrentPos2Zero();  // currentPositionを0に戻す(ZERO_SENSORがLOWになるまでCCWする
  maxPosition = move2MaxPos(); // そこからCWしてmaxPosをいったん獲得  Maxが既知であればこの2行は手入力で置き換え
  // resetCurrentPos2Zero(); // enable this if move2MaPos() actually make a move.
}

void loop(){
  long start_t;
  long end_t;
 
  myStepper.setSpeed(1800); // 2500位まではOKの様です。
  Serial.println("Start ... ");

  if( digitalRead(UP_BUTTON) == LOW || toggle1 == TRUE){
    toggle1 = TRUE;
    while( digitalRead(UP_BUTTON) == LOW && toggle1 == TRUE && currentPosition < maxPosition ){
      myStepper.step(1);
      currentPosition++;
    }
  }
  if ( digitalRead(UP_BUTTON) == LOW && toggle1 == TRUE ){
    toggle1 = FALSE;
    while ( digitalRead(UP_BUTTON) == LOW && currentPosition < maxPosition){
      myStepper.step(1);
      currentPosition++;
    }
  }
  if ( digitalRead(DOWN_BUTTON) == LOW || toggle2 == TRUE ){
    toggle2 = TRUE;
    while( digitalRead(DOWN_BUTTON) == LOW && toggle2 == TRUE && currentPosition > 0 ){
      myStepper.step(-1);
    }
  }
  if ( digitalRead(DOWN_BUTTON) == LOW && toggle2 == TRUE ){
    toggle2 = FALSE;
    while ( digitalRead(DOWN_BUTTON) == LOW && currentPosition > 0 ){
      myStepper.step(-1);
    }
  }
  stopMotor();
  delay(100);
}
void stopMotor(){
  digitalWrite(MOTOR_1, LOW);
  digitalWrite(MOTOR_2, LOW);
  digitalWrite(MOTOR_3, LOW);
  digitalWrite(MOTOR_4, LOW);
}

void resetCurrentPos2Zero(){
  myStepper.setSpeed(2500);  // As fast as possible
  while ( digitalRead(ZERO_SENSOR) == HIGH ){
    myStepper.step(-1);
  }
}
long move2MaxPos(){
  if( 0 ) { // 計算でmax postionを出した方が早い
    while (digitalRead(MAX_SENSOR) == HIGH){
      myStepper.step(1);
      currentPosition++;
    }
    return currentPosition;
  } else {
    return LENGHT_2_MOVE/PITCH;
  }
}
int moveAbsPos2(long pos){
  if (pos < maxPosition) {
    myStepper.step(currentPosition - pos);
    currentPosition = pos;
  } else {
    return -1;
  }
 
}
int forwardPosBy(long pos){
  if (currentPosition + pos < maxPosition) {
    myStepper.step(pos);
    currentPosition = currentPosition+pos;
  } else {
    return -1;
  }
}
int backwardPosby(long pos){
  if (currentPosition - pos > 0 ){
    myStepper.step(-pos);
    currentPosition = currentPosition - pos;
  } else {
    return -1;
  }
}

==================================================



2019年6月19日水曜日

Windows 10 update 1903でDAXが壊れた!

SmartSDRとWindows10の定期Updateは毎度相性が悪くてupdateの度にトラブりますが、今回も案の定、トラブり、DAXのstream 3以上が繋がらなくなってしまいました。
FlexでHelp Ticketを発行して、トラブルを報告すると、早速Tim Ellisonからメールが来て、「TeamViewer立ち上げてremoteでdriverやregistryのお掃除をやるのが一番早いよ」という事で、彼の勤務時間の23時頃から1時間ほど、TeamViewerを立ち上げて、Timにdriverのお掃除をしてもらい、無事回復しました。
で、その内容は;
Quote
This is an update from the remote support session today.

I first checked for uninstalled DAX drivers in Device Manager and manually removed the ones I found.
I found that several of the DAX IQ device names were mislabeled so I manually corrected those.
When I accessed the Sound Control Panel Playback tab the PC crashed with a Blue Screen error
I then completely removed DAX and rebooted the PC
I manually installed DAX.
I started SmartSDR for Windows, DAX and CAT and no errors were reported (that is good)
I verified that all DAX channels were working properly in SmartSDR

I used WSJT-X as a validation to ensure the DAX fix was working properly. I was able to decode FT8 and made an used the WSJT-X TUNE feature to ensure transmit was working.

DAX is fixed!

Unquote
何か簡単なWindows定期update対応のFlexの為の方法を考えないと、定期updateの度にこれではやってられませんねー。 原因はいつも、driverとregistryの内容の整合性のようですが、、、。

>しかし、PCのUSBマイクロフォン(Rode NTA-1)が使えない? 何が悪いのか、ちょっと原因がわからず、、、。 ま、最近はFT8とCWでSSBが殆ど無いので、いつから使えなくなったののかが良くわからないし、使えるときに各設定がどうなっていたのかの記憶(記録)もない。 Mic端子に繋いだハンディマイクは使えるので、「これでいいや」という根性が、当分は解決しないことを予想させますねー。

>> どうもSteingberg UR22のdriverがおかしいようで、 LogicoolのHD Pro Webcam C920のマイクは正常に動いています。 しかし、DefaultのDeviceを色々切り替えているうちに、再度DAXが壊れ、今度はDAX TXが使えません! registryがらみの問題だと思いますが、複雑怪奇としか言いようがないですね。 MSにも困ったもんだ、、、。

>>>更にDAX TXが使えなくなってしまい、再度TimにTeamViewerでお出まし願って、修理をして貰いました。 今度は下のように、「いつの間にか、必要なものがdisableされていた」だけだったので、5分位で解決。 しかし、一体だれが? 腹が立つ!
Timの修理リポート;
 1)I found the DAX RESERVED TX device disabled so I enabled it.
 2)I started SmartSDR for Windows, DAX and CAT and no errors were reported (that is good)
 3)I verified that all DAX channels were working properly in SmartSDR



2019年6月1日土曜日

3D2CR Conway ReefがQRV始めましたね。

土曜日の運動から帰ってDXSpot見たら、7Mhzの下の方に3D2CRが出ていたので、早速聞いてみると強力に入感してして、JAともやってくれているので、早速QSO (jE1CKAなのかな? 結構スムースなCW)
前回はChallenge考えていなかったので、12/17/30/80と4つも残っているので、今週は期待して頑張っちゃいます。

> 8日時点で、12~80mまで出来てなかったところはCW/FT8(両方或いはどちらか)で終了。 ありがとうございましたです。 
しかし、熊谷さんのCWオペレーションは、「元気ですねー」としか言いようがない。朝から晩までパイルを捌いてサービスされています。38°の高温下、ヒッチコックの「鳥」の状態で二人ぽっちのペディションはほんとに大変でしょうね。 あと2日程のようですが、がんばってください。


> 久しぶりに4日午前の15mのCWの録画です。 JE1CKA頑張ってますね、、、。 12mもQRVして欲しいなー。


> 更に08Z頃の7MhzCW 

2019年5月28日火曜日

E31A

WPX CWもなんかパットせずに終わってしまい、朝夕の80mも実に寂しい状態、かといって10/12mが良いのかと言えばこちらもNG。
ですが、時々10/12mが午後から開けているときがありますね。 昨日の午後はSpotに12mのE31AがFT8 F/Hで出ているリポートがあったのですが、ここでは聞こえず、そのままにして犬の散歩に出かけて帰ってきてシャックに戻ってみたらJTAlertXがしきりにAlertを出していました。 
散歩前に何を聞いていたのか、すっかり忘れていて、慌てて見たらE31Aでした。 それも-07~-10dB程度で随分強いので、早速呼んでみました。 30分程で返ってきまして、0942Zに -19dBを貰いました。

高い方のコンディションが開けていて、アクティビティが低いのか、それともコンディションが悪いのか? 何かよくわかりませんが、取り敢えずはChallenge +1
160mのMLAをちょっと考えていますが、今のところは80~10mで2000 upを目標に、各バンドの目標値と達成度を見るようにExcelに細工を追加しました。
2000でも先は長~い、、、、。


2019年4月13日土曜日

JpGraphが動かない!

取り敢えずサーバーは動くようになりましたが、何故かphpとJpGraphの連携がうまくいっていないようで、自室の温度湿度のHPが表示されません!
色々弄っても

[Sat Apr 13 10:47:54.856404 2019] [php7:warn] [pid 33769] [client 192.168.1.17:60819] PHP Warning:  Use of undefined constant IMG_PNG - assumed 'IMG_PNG' (this will throw an Error in a future version of PHP) in /usr/local/lib/php/jpgraph-4.2.6/src/jpgraph_errhandler.inc.php on line 282, referer: http://192.168.1.3/MyRoom.html

等と出て、よくわからない! 個別のphpを動かしてみるとgdが取り込まれていない。 「うーん、php73, php73-extensionsともに入れているのになー」と頭を抱えながら、苦しい時のgoogle頼みで、いつものQiitaさんのページに行き当たり、取り敢えず大人しく、指示に従ってpkg installを繰り返してみたら、動くようになりました。

単純にphp73_gd (/usr/ports/graphics/php73_gd) のインストールがされていなかっただけのようですが、、、。

お陰で、php72からphp73へ、JpGraphは4.0.2から4.2.6へアップグレードされてしまいました。

いつも問題なく動いていて「空気化」している環境の一部が故障したりすると、とんでもなく面倒ですね。 ソフトは、特にどのようにしてインストールしたのか逐一記録を残しておかないと、それもPC以外のところへ、、、、。 これって、一番不得意なところかも。


2019年4月12日金曜日

あ、電源が落ちた!

今朝、娘がドライヤー、嫁が食洗器、洗濯機とやってくれたら、家の電源が落ちてしまいました(これは、結構あるので)。 で、復帰にブレーカーボックス見てみても、子供のスイッチで切れているところが見えない気がしたので、思わずメインを入れ直してしまったのが運の尽き。 自室のファイルサーバーが落ちてしまいましたが、これが電源入れただけではzfsで立ち上がってくれない! TB単位のファイルが入っているので、復帰できないと、、、と思いながら、午前はテニスの練習に、、、。 帰宅してから、色々弄ってもうまくゆかない(zfsでブートしない)。 自分のBlogを読み直すと、在りました! 「boot driveを色々変えてみて動かした」とあるので、起動メニューのbootの一番下のboot optionでToshibaのディスクを指定してrebootしてみたら、元に戻りました。 nisとか色々立ち上がる時に文句を言ってきているので、後で調べて設定をちゃんとしておかなければ、、、。
複数のディスクにboot情報を入れているのが問題なのですが、そこまで整理するのはちょっと、、、。


Z81D

隣のスーダンの軍事クーデターが伝えられていますが、ここのところ連日80/40mのFT8でZ81DがQRVしていて、80mの信号は20Z辺りではとても強いですね。 今朝は2030Z位に0dBでした。多数のJAがQSOしていましたが、時間と共に徐々に信号が落ちてくるのが、よく観察できます。 先週40/80mともにQSOできてeQSLも来ていたので、Mgrに紙QSL請求中で、ここはSWL。 ほんとはPedition modeかなんかで別の所でやって頂けるとありがたいのですが、、、。

本家の スーダンはどうなるんだろう?

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

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