jl7gmnのblog

yahooブログから移行してきました。アマチュア無線を中心としたブログです。

2025年08月

hp OSCILOSCOPE 500MHz 2GSa/s 500MSa/s の入手

かねてから、液晶FFTのオシロスコープがほしいと思っていたところ、古いですが機能的に十分満足できるオシロスコープがオークションに出てきたので、早速入札参加しました。
54540C-1

詳しく外観写真をみると、やはり経年変化の液晶劣化の現象と画面右側に赤の縦線が出てる状態のFFTでした。この点とフレームのプラスチック枠にヒビがあるのがチョットだけ気にりましたが、オシロで使用のFFTは手持ちに予備でありましたので液晶は交換すれば良いと思い、その他は大したことではありません。性能は満足できるものなので、参戦し、うまいこと安く落札できました。いつも専門的に中古計測器をオークションでかなりの数量出しているストアです。また安心して今までも計測器類をたくさん落札している実績があります。店の名称はソクラボに変更していました。他の人のブログでもかなり良い評判のオシロです。立ち上がりが本当に早くストレスレスであるという点も使用者には本当にすぐ使用開始できる嬉しい仕様です。あと液晶の発色もとてもきれいでいいですね。このFFTは国内では現時点で4、5万で売られています。わたしは、中古で中華で2つで当時約1万で購入してありましたが、1つは画面の発色が薄くはずれでした。以前のalliexpressでR3753の液晶不良交換用に中古で安く注文したものでした。中古なので、このようなことはありえます。国内で買うよりは安いです。安いものでは、現在Alibaba.comでは1-49ピースで1万7千円ぐらいのようです。

早速ケースを開けて交換開始です。
hpのケースに使っているのは星型の特殊なネジですが、手持ちにそれ用がありましたので使用しました。

1000012086-5

1000012086-6

1000012082-8

1000012084-7
使用しているのはシャープの液晶LTM08C015KAで 8.4INCH 640X480ピクセル

小型の特殊ドライバーで4箇所の液晶を止めているネジは奥の1本が外しにくかったですが、上の写真にあるサイドのパネルをはずして、なんとか外すことができました。

交換完了後の写真です。1-4chを順番に設定してテストピンの信号を撮りました。

1000012103-1

1000012100-2

1000012101-3

1000012102-4

カラーな輝線なのでチャンネル識別が容易です。
操作が今ひとつ理解してなく、これから色々と設定方法を確認です。これも楽しみの一つです。Hi!
とてもラッキーな落札でした。これからはブラウン管のKIKUSUI 200MHzオシロ7202Aと併用で使いたいと思っています。古い7202Aはストレージ機能が素晴らしいので手放せないオシロです。なので複数予備もあります。Hi!
久々のオークション参戦後のプチ交換再生修理でした。

つづく?

MODEL 1200FXローテーターその31

久々にUbuntuのarduino IDEを起動してエモトのローテーターコントロールスケッチのコンパイル状況を確認してみました。2022年11月10日以来全くと言っていいほどローテ―ターコントロール基板へは電源も入れていませんでした。IDEは最近かなりバージョンアップされていましたので、最新にしてみました。
バージョンはarduino-ide_2.3.6_Linux_64bit.Appimage になります。今までと違い、シリアルモニターがプラットフォーム上に組み込まれ同時に表示できるようになっています。今までの古いバージョンでは、シリアルモニターは独立画面でした。私としては、独立画面のほうが使いやすいと思います。とまあ、最新版のIDEもインストールしました。もちろん今までの使用していた旧バージョンも動作します。
まずは、古いIDEバージョンArduino 1.8.19でスケッチ動作を確認しました。
基盤となるesp32のby Espressif Systemsのバージョンで動作するしないがあります。
問題なく動作するのは バージョン2.0.2までです。バージョン2.0.3以降はエラー発生します。
もう少し古いIDEバージョンArduino 1.8.9ではバージョン2.0.2でもpyton関連のエラー発生します。
最新版の2.3.6でもやはり2.0.3以上では動作しませんでした。2.0.2まではうごきました。AIで確認すると最新版としてのby Espressif Systemsのバージョンは3.3.0なのですが、AIではこの番号は最新板ではないと回答してきています。ボードマネージャーでのバージョンからすると3.3.0が最新のように思えます。また、最近のESP32-S3も対応できるようになっていました。
あまり、スッキリしていないのですがひとまず、ここいらで動作可能なIDEバージョン1.8.19とESP32 by Espressif Systems バージョン 2.0.2でコンパイルして動作確認をすることにしました。UDPのデータはスマフォからアプリケーションで角度をコマンド”M180"のテキストデータとして送りUDP通信でのデコード動作を確認しました。

■基本送出角度コマンド仕様について
角度コマンド”M***" を送ります。
角度は3桁のテキスト数値”***”
角度1°から9°まではヘッダーに"00"追加 例)1°の場合 "M001"
10°から99°まではヘッダーに”0”追加 例)90°の場合 "M090"
100°から360°まではそのままの数値。例)180°の場合 "M180"

使用したスマフォアンドロイド用のアプリケーションはUDP Monitor です。送出と受信の両方ができますので主に使うのはコマンド送出です。受信はコードで角度ではないので受信してる事の確認程度になります。受信の角度はESP32のudp受信スケッチでコードから角度への変換を行い液晶に表示しています。UDP通信では0°から360°までの数値はコードとして角度全部は送ることができません。256以上は扱えないので角度を上位バイトと下位バイトに分割して送る工夫が必要となります。
一通り動作してくれましたので、今回は回転する基準点(スタートする方位)を通常はローティターでは北(North)を基準に0°から360°まで右回りで使用します。が、南を基準にする使い方をスケッチで対応を検討します。180°から181°まで左回りで使用するケースです。
南をスタート基準とする場合は、スタートから順に左回りなので主な角度を表示すると次になります。
180°ーー>90°ーー>0°(360°)ーー>270°ーー>181° 
通常の北をスタート基準とする場合は右回転で
0°ーー>90°ーー>180°ーー>270°ーー>360°

通常では何もせずに仕様として作成していますので、どのようにして南をスタートとするケースに合わせたスケッチにすればいいかを考えます。
まずは、考えなければならないのが、北をスタート基準にするケースと南をスタート基準の切り替えです。
これは、単純にESP32の空いているI/Oを1つ探して使います。今回は空いているIO21を入力として使います。
SWをIO21端子とGND間に入れます。SWONでGND(LOW),SWOffで内部プルアップ(HIGH)です。これで北と南のスタート基準を切り替えます。
次に角度コマンドは方位の角度をそのまま今まで通り同じコマンドで使用するという条件です。ここが運用時を考えた時に一番重要な条件になると思います。
具体的には角度に対しての”M***”コマンドを南をスタート基準とした場合はどのようになればよいかを理屈で記述してみます。
現状 -->  変換後         :  対応
"M000"-->"M180"    : +180°
"M090"-->"M270"    : +180°
"M180"-->"M360"    : +180°
"M270"-->"M090"    : -180°
"M360"-->"M180"    : -180°

上記の矢印の先のコマンドに変換する必要があります。
サブルーチンで対処します。少し今回はGoogleのAIのGeminiを使いコードを書き出してもらいます。
result 変数はグローバル変数としてスケッチの最初に移動します。サブルーチン上では定義しませんので//です。

void calculateKakudo(){
     //   int result;

        // kakudoが0から180までの場合
       if (kaku >= 0 && kaku <= 180) {
              result = kaku + 180;
              Serial.print("角度が0から180なので、180を加算します: ");
              Serial.println(result);
        }
        // kakudoが181から360までの場合
        else if (kaku >= 181 && kaku <= 360) {
               result = kaku - 180;
               Serial.print("角度が181から360なので、180を減算します: ");
               Serial.println(result);
        }
        // 上記の範囲外の場合
        else {
               Serial.print("角度が指定された範囲外です: ");
               Serial.println(kaku);
        }
}

このサブルーチンを使いコマンド角度を変換します。
実際のスケッチではシリアル受信で角度はsuuchikakudo変数に入ってきます。例)"090"とか
北スタート基準では受信した角度は
kakudo = suuchikakudo;
です。
南スタート基準では受信した角度を一旦kaku変数に入れてサブルーチンをコールします。変換結果はresultに入ります。
これをIO21のSWを検出するコードで切り替えるだけです。

実際のコードは次です。

                 if(digitalRead(DIR_STD)==LOW){ //DIRECTION SOUTH STANDARD
                            // 180 South standard ***************************************************************
                            // 左回り 起点180 ,179,178,177,176,175,.....90.....(0,360),359,....270....181(end)
                            result = 0;
                            kaku =0;
                            kaku = suuchikakudo;
                            calculateKakudo();      
                            kakudo = result;
                            // 180 South standard ***************************************************************
                    }else
                      if(digitalRead(DIR_STD)==HIGH){ //DIRECTION NORTH STANDARD
                        //  0 North standard ------------------------------------------------------------------------------------
                       kakudo = suuchikakudo;
                        //  0 North standard ------------------------------------------------------------------------------------
                    }
コマンドはDIR_STDのSW offで通常はHIGHで北スタート基準となります。SWをon(GND)でLOWで南スタート基準となります。

TFTの液晶に表示しているNOW角度も,SET角度も同じで、サブルーチンを使い同じように変換し各タート基準に合わせます。
実際のコードです。
  //*********************************************
  tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.setTextSize(3); 
  tft.setCursor(0,0);
  tft.print("Now :");   

   if(digitalRead(DIR_STD)== LOW){ //DIRECTION SOUTH STANDARD
        // 180 South standard ***************************************************************
        result = 0;
        kaku =0;
        kaku = Readkakudo;
        calculateKakudo();
        sprintf(ce,"%3d",result);//new try
       // 180 South standard ***************************************************************
    }else
    if(digitalRead(DIR_STD)==HIGH){ //DIRECTION NORTH STANDARD
        //    0 North standard ------------------------------------------------------------------------------------
     sprintf(ce,"%3d",Readkakudo);
        //    0 North standard ------------------------------------------------------------------------------------
    }
    
   tft.print(ce);
  //**********************************************
 
  tft.setTextColor(TFT_WHITE,TFT_BLACK);
  tft.setTextSize(3); 
  tft.setCursor(0,44);
  tft.print("SET :");   
  char cc[6];
    
    if(digitalRead(DIR_STD)== LOW){   //DIRECTION SOUTH STANDARD
        // 180 South standard ***************************************************************
        kaku =0;
        result = 0;
        kaku = kakudo;
        calculateKakudo();
        sprintf(cc,"%3d",result);    //new try
         // 180 South standard ***************************************************************
    }else
    if(digitalRead(DIR_STD)== HIGH){ //DIRECTION NORTH STANDARD
         //    0 North standard ------------------------------------------------------------------------------------
         sprintf(cc,"%3d",kakudo);
         //    0 North standard ------------------------------------------------------------------------------------
    }
  tft.print(cc);  
  //**********************************************

上記の追加スケッチで、北スタート基準と南スタート基準を切り替えることができます。
実際のローテーターでは指針の向きを基準となる方位スタートに向けます。
北スタート基準では指針を北に合わせます。
南スタート基準では指針を南に合わせます。(北スタート基準状態時に指針だけ南に合わせるということです。)

上記のスケッチ追加修正にて北スタート基準と南スタート基準を利用できるようになりました。
久々のスケッチでしたが、AIのおかげもかなりありまして、うまく動作するスケッチを追加作成できました。色々とAI試していますが、GoogleのAIのGeminiも素晴らしいです。
少しデバッグを続けたいと思います。

つづく?



アクセスカウンター
  • 今日:
  • 昨日:
  • 累計:

QRコード
QRコード
アーカイブ
  • ライブドアブログ