無線ブログ集
メイン | 簡易ヘッドライン |
リンク 単体表示
jl7gmnのblog (2024/7/3 7:06:06)
現在データベースには 156 件のデータが登録されています。
TRX-DUO SDRスタートその3
(2024/3/9 1:29:35)
TRX-DUO
のレッドピタヤのクローン版でのウィジェットアイコンを出したいためにいろいろとレッドピタヤのホームページの手順1のQuick
startを読んでいて、おおよそわかってきました。SDカードにはLinuxを入れてありLinuxでの起動しているということです。Windowsのアプリとして起動しているわけではないということです。なので、まず最初にSDカードに最新版のOSのイメージをダウンロードしました。
Latest Stable(2.00-23)になります。結果から言うとOSインストールは必要です。最初はOSを入れずにアプリのインストール処理のみ行ったので、SDRとしては起動はできますが、今までのSDカードへ入れたアプリでの処理ではウィジェットアイコンのページは出ません。
OSをbalenaEtcherのイメージ書き込みアプリをダウンロードしてOSイメージをSDカードへフラッシュインストールしました。書き込み完了後TRX-DUOにSDを差し込み電源ONしたところきちんと青LEDが点灯してくれました。この状態でAdvanced IP ScannerでTRX-DUOのIPアドレスを確認しました。ちゃんとSDRアプリの時と同じIPで確認できました。HTTP,My Red Pitaya(nginx 1.19.10)をクリックしてみましたらSDRのときはWebのアプリ一覧でしたが、今度は間違いなくウィジェットアイコンページが起動できました。感激しました。!できなかったことがやっとできた時のうれしさです。
右下のアイコンをクリックしてアップデートをおこないましたが、アップデートの途中でエラーメッセージが出ました。最新版は現状のLinuxバージョンではサポートしていないようなメッセージです。
まずはこのOS最新版はやめて、次のベータ版に期待をこめました。
Latest Beta(2.00-30)
各ボードに対応するOSのような感じなのでさっそくダウンロードして同様にインストールし、SDカードにフラッシュ展開しTRX-DUOにSDカードを差し込み電源ONしました。結果はアップデートのiも右下には出ていなくOKのようです。
画面サイズの関係で2ページにわたっていたため、全部のアイコンが出ていなく、再度サイズを調整して全部のアイコンが表示されるようにしました。
ただし、Red Pitaya OS 2.00-30/STEMlab 125-14 LN v1.1 で対応しているようです。14ビットのボード用で対応してるかと思われます。Hi!
(他に過去のOSでSDRlab 122-16用の 1.04-15を入れてみましたが起動しませんでした。何か設定が必要なのかもしれません。)
16ビットボード用として対応する方法が別にあるのかと思いますが、まずはアップデートエラーがないので、この状態でいろいろと試してゆくことにします。
つづく?
Latest Stable(2.00-23)になります。結果から言うとOSインストールは必要です。最初はOSを入れずにアプリのインストール処理のみ行ったので、SDRとしては起動はできますが、今までのSDカードへ入れたアプリでの処理ではウィジェットアイコンのページは出ません。
OSをbalenaEtcherのイメージ書き込みアプリをダウンロードしてOSイメージをSDカードへフラッシュインストールしました。書き込み完了後TRX-DUOにSDを差し込み電源ONしたところきちんと青LEDが点灯してくれました。この状態でAdvanced IP ScannerでTRX-DUOのIPアドレスを確認しました。ちゃんとSDRアプリの時と同じIPで確認できました。HTTP,My Red Pitaya(nginx 1.19.10)をクリックしてみましたらSDRのときはWebのアプリ一覧でしたが、今度は間違いなくウィジェットアイコンページが起動できました。感激しました。!できなかったことがやっとできた時のうれしさです。
右下のアイコンをクリックしてアップデートをおこないましたが、アップデートの途中でエラーメッセージが出ました。最新版は現状のLinuxバージョンではサポートしていないようなメッセージです。
まずはこのOS最新版はやめて、次のベータ版に期待をこめました。
Latest Beta(2.00-30)
各ボードに対応するOSのような感じなのでさっそくダウンロードして同様にインストールし、SDカードにフラッシュ展開しTRX-DUOにSDカードを差し込み電源ONしました。結果はアップデートのiも右下には出ていなくOKのようです。
画面サイズの関係で2ページにわたっていたため、全部のアイコンが出ていなく、再度サイズを調整して全部のアイコンが表示されるようにしました。
ただし、Red Pitaya OS 2.00-30/STEMlab 125-14 LN v1.1 で対応しているようです。14ビットのボード用で対応してるかと思われます。Hi!
(他に過去のOSでSDRlab 122-16用の 1.04-15を入れてみましたが起動しませんでした。何か設定が必要なのかもしれません。)
16ビットボード用として対応する方法が別にあるのかと思いますが、まずはアップデートエラーがないので、この状態でいろいろと試してゆくことにします。
つづく?
TRX-DUO SDRスタートその2
(2024/3/5 3:56:07)
TRX-DUOでThetis v2.10.3.6 x64(01/28/24)(FW v3.2 Protocol 1) dev_2の最新版をインストールしてみました。
今まで上位のバージョンのThetisのインストール時にフルインストールをしていて、動作しなかったのですが、何も選択なしに標準設定でインストールすると動作することが分かりました。さっそく起動できたので、youtube動画でSメータのアナログ版を表示設定したものがあったので、これをやりたくてこのバージョンをインストールしています。(Sメータの追加ができるようになったバージョンの最初はThetis-v2.9.0.8.x64からだと思います。これより以降はSメータの追加ができるようになっているようです。)
セットアップにて設定選択するだけで追加することができました。
Appearance → Multi Metersで下記の設定フォームが出ます。
Add TRX1Containerでコンテナを設定しそこに左のリストのなかからAnam Multi Meterを選ぶだけです。Sメータコンテナーのサイズは右下コーナークリックで自由に変更できます。
RⅩ2の受信器の場合はAdd TRX2 Containerで分けて設定です。RⅩ1の受信用、RⅩ2の受信用とそれぞれで、追加設定できます。
コンテナーはThetisフォーム内設定とフォーム外の設定が可能でピン止めもありました。
Sメータのパワー目盛りも任意に変更できます。200W用に設定してみました。
セットアップで簡単に現存のバータイプのメータの種類設定がいろいろとできるようです。アナログタイプのSメータは使っている無線機も針アナログSメータなのでこのタイプのSメータはとても良い感じで気に入っています。
ついでなので、時計と、まだRFのリニアアンプとかはつけてませんが、送信用時用にクロスSWRパワーメータも追加してみました。追加しただけです。クロスSWRパワーメータのパワーは100Wです。設定で変更できます。
200W用に設定してみたクロスSWRパワーメータです。
いろいろ設定があるので、楽しめるThetis です。
つづく?
今まで上位のバージョンのThetisのインストール時にフルインストールをしていて、動作しなかったのですが、何も選択なしに標準設定でインストールすると動作することが分かりました。さっそく起動できたので、youtube動画でSメータのアナログ版を表示設定したものがあったので、これをやりたくてこのバージョンをインストールしています。(Sメータの追加ができるようになったバージョンの最初はThetis-v2.9.0.8.x64からだと思います。これより以降はSメータの追加ができるようになっているようです。)
セットアップにて設定選択するだけで追加することができました。
Appearance → Multi Metersで下記の設定フォームが出ます。
Add TRX1Containerでコンテナを設定しそこに左のリストのなかからAnam Multi Meterを選ぶだけです。Sメータコンテナーのサイズは右下コーナークリックで自由に変更できます。
RⅩ2の受信器の場合はAdd TRX2 Containerで分けて設定です。RⅩ1の受信用、RⅩ2の受信用とそれぞれで、追加設定できます。
コンテナーはThetisフォーム内設定とフォーム外の設定が可能でピン止めもありました。
Sメータのパワー目盛りも任意に変更できます。200W用に設定してみました。
セットアップで簡単に現存のバータイプのメータの種類設定がいろいろとできるようです。アナログタイプのSメータは使っている無線機も針アナログSメータなのでこのタイプのSメータはとても良い感じで気に入っています。
ついでなので、時計と、まだRFのリニアアンプとかはつけてませんが、送信用時用にクロスSWRパワーメータも追加してみました。追加しただけです。クロスSWRパワーメータのパワーは100Wです。設定で変更できます。
200W用に設定してみたクロスSWRパワーメータです。
いろいろ設定があるので、楽しめるThetis です。
つづく?
RDA5708Mモジュール50MHz受信器その1
(2024/2/27 7:23:16)
FMラジオの受信用として、とても安い価格のRDA5807Mモジュールをアマゾンで3個のものを注文し入手してあったので、試しにArduinoNANOで50MHzのFM受信機をスケッチし作製してみることにしました。
この価格でも安いですが、以前はこれよりもかなり安かったようです。
元々FMラジオ用として使用するものですが、データシートを確認してみると、レジスターアドレス03Hの2ビットめ3ビットめの2つのビットの設定でバンドセレクト(各国のFM周波数帯選択)ができるようになっています。下記のなかの11の設定で試してみるという方法で確認しました。結果から言うと、実際の受信できる周波数範囲はバンドセレクトの仕様とは異なり、受信感度も問題なく45.60MHzから119.60MHzと言う仕様よりも広範囲な受信周波数範囲で受信ができました。FMのインプットレンジが全部対応という事です。(仕様ではMIN:50MHzーMAX:115MHz)また、感度も50MHzではS/N=26dBで標準で1.4μV(EMF)という仕様の様です。びっくりです。
00:87-108MHz(US/Europe)
01:76-91MHz(Japan)
10:76-108MHz(World wide)
11:65-76MHz(East Europe) or
50-65MHz
このモジュールの取り付けピッチは2mmで通常の2.54mmのピッチに変換すると
ボードで使用できるので変換用に蛇の目基板を使い変換しています。時間をかけて半田ゴテをあててしまい、1個はモジュール側のメッキ部が取れて半田付けができなくなり失敗してしまいました。注意点として、早めの半田付のテクニックがいるかと思います。Hi!
ArduinoNANOを使いましたがArduinoUnoでも問題なく使用できます。
50MHz帯は51MHzからFMバンド帯なので起動時の周波数は51.00MHzに設定してあります。
ロータリーエンコーダ1クリックアップ時では、ステップ10KHzで、51.01MHzとなります。
今回のアマチュア無線バンドの50MHz帯の受信器の実験の参考にしたホームページは下記です。
面白いのは、レジスター60Hに書き込むとRDA5807Mで50MHzでも動かせるというものです。この隠しコマンドがあるということで、50MHz帯が受信できるように設定できるというものです。
他、スケッチのフレームとしてロータリーエンコーダ化も必要なので外国のアマチュア無線家 PU2CLR 局が作製してるデータを参考にしました。この局は他のDSPハード(SI4732)でSSB受信化できるライブラリを作った作者で、NETには数多くのDSPライブラリを使用した受信機の制作ページがありました。とても興味をそそる記事がたくさんあるようです。いつか試しにハードウェアを注文し確認してみたいと思います。ライブラリは基本的なもので改良、改変はOKとのことです。Hi! 今回はハードウェアはRDM5807なのでGithubに数多くデータを公開している中の、RDA5807_07_NANO_OLEDを参考に使用しました。また、表示DISPLAYは異なるものでしたので、手持ちのOLEDタイプのSD1306ASCiiのI2cタイプに変更してあります。
今回は単純にロータリーエンコーダーで周波数を10KHzステップで受信する機能のみです。ArduinoNANOにつなぐSWポートのD4、D5、D6、D14、D7の各ポートは設定のみです。スケッチはまだありません。(機能を付けてません。)ハード上追加できる機能としては上記のポートに対応してボリュームUP、ボリュームDOWN、オーディオMUTE、受信信号スキャン、オーディオBASSセットなどがあるのですが、他のハード用(ATtiny84)でしたので、今回の使用のハード用に下記のWireコマンドでソフトウェア設定する必要があります。機能追加するには、RDA5807Mのデータシートを確認しながらテストする必要があります。今後の検討課題としてあります。
Wire.beginTransmission(0x**);
Wire.write(0x**);
〜
Wire.endTransmission();
下記は50MHz帯のFM信号をロータリーエンコーダで10KHzステップで変えて受信するという機能のみのスケッチです。メインとなっているのは、アップダウンのスケッチ部です。
PU2CLR局が使用したハード(ATtiny84)がArduinoNANOと異なるのでスケッチで変えたところはレム化し、残してあります。また使用していない変数設定も一部アリます。Hi!
/*
Test and validation of RDA5807 on UNO/NANO or other ATMEGA328 based device.
It is FM receiver with
Nano and RDA5807 wireup
Wire up on Arduino UNO, Nano or Pro mini
| Device name | Device Pin / Description | Arduino Pin |
|-----------------------|-----------------------------------|------------ |
| OLED - I2C | | |
| | SDA | A4 |
| | SCLK | A5 |
| ----------------------|-----------------------------------|-------------|
| RDA5807 | | |
| | SDA/SDIO | A4 |
| | SCLK (Clock) | A5 |
| ----------------------| ----------------------------------|-------------|
| Buttons | | |
| | Volume Up | 4 |
| | Volume Down | 5 |
| | Mute | 6 |
| | Bass | 7 |
| | SEEK (encoder button) | D14/A0 |
| --------------------------| ------------------------------|-------------|
| Encoder | | |
| | A | 2 |
| | B | 3 |
By Ricardo Lima Caratti, 2020.
*/
#include "src/SSD1306AsciiAvrI2c.h"
#include "src/SSD1306Ascii.h"
SSD1306AsciiAvrI2c oled;
#define I2C_ADDRESS 0x3C //0x3C,0x3A
#define FIX_VOLUME 4
#include <Wire.h>
#include <TEA5767Radio.h>
TEA5767Radio rx;
//#include <Tiny4kOLED.h>
//#define RDA_FM_BAND_SPECIAL 3 //!< 65 –76 MHz(East Europe) or 50 - 65MHz(see bit 9 of gegister 0x07)
#include "Rotary.h"
// Please, check the ATtiny84 physical pins
#define VOLUME_UP 4
#define VOLUME_DOWN 5
#define AUDIO_MUTE 6
#define AUDIO_BASS 7
#define SEEK_STATION 14 // A0 = D14
// Enconder PINs
#define ENCODER_PIN_A 2
#define ENCODER_PIN_B 3
bool bBass = false;
bool bMute = false;
volatile int encoderCount = 0;
int encorderCount = 0;
uint8_t seekDirection = 1; // 0 = Down; 1 = Up. This value is set by the last encoder direction.
long elapsedTimeEncoder = millis();
// Encoder control
Rotary encoder = Rotary(ENCODER_PIN_A, ENCODER_PIN_B);
unsigned char frequencyH=0;
unsigned char frequencyL=0;
unsigned int frequencyB;
double frequency=0;
double freq_available=0; //receivef
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
void setup()
{
pinMode(ENCODER_PIN_A, INPUT_PULLUP);
pinMode(ENCODER_PIN_B, INPUT_PULLUP);
// Push button pin
//#define VOLUME_UP 4
//#define VOLUME_DOWN 5
//#define AUDIO_MUTE 6
//#define AUDIO_BASS 7
#define SEEK_STATION 14 // A0 = D14
pinMode(VOLUME_UP, INPUT_PULLUP); //D4
pinMode(VOLUME_DOWN, INPUT_PULLUP); //D5
pinMode(AUDIO_MUTE, INPUT_PULLUP); //D6
pinMode(AUDIO_BASS, INPUT_PULLUP); //D7
pinMode(SEEK_STATION, INPUT_PULLUP); //D14
oled.begin(&Adafruit128x64,I2C_ADDRESS);
//oled.begin();
oled.clear();
//oled.on();
oled.setFont(Adafruit5x7);
// oled.setFont(FONT8X16);
oled.set2X();
oled.setCursor(0, 10);
oled.println("RDA5807OLED");
oled.setCursor(0,40);
oled.println("By PU2CLR ");
oled.setCursor(0,90);
oled.println("Modefy By");
oled.setCursor(0,140);
oled.println(" JL7GMN");
delay(3000);
oled.clear();
/*
Reads encoder via interrupt
Use Rotary.h and Rotary.cpp implementation to process encoder via interrupt
*/
// Encoder interrupt
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_A), rotaryEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_B), rotaryEncoder, CHANGE);
// frequency initialize -------------------------------------------------
frequency=51.00; //starting frequency ABALABLE MIN 45.60MHz TO MAX 119.60MHz
frequencyB=4*(frequency*1000000+225000)/32768; //calculating PLL word
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
delay(100);
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60); //writing TEA5767
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0xB0);
Wire.write(0x00);// F0->10
Wire.write(0x00);
Wire.endTransmission();
/*
Wire.beginTransmission(0X11); //normal i2c
Wire.write(0X05); // specify register 05h
Wire.write(0X88); // 05h
Wire.write(0b10001000); // 05l VOLUMExxxx
Wire.endTransmission();
*/
//radio.setVolume(15);
//oled.setFont(Adafruit5x7);
oled.setFont(X11fixed7x14B);
oled.clear();
oled.setCursor(1, 0);
;
delay(10);
//----------------------------------------------------------
showStatus();
}
void rotaryEncoder()
{ // rotary encoder events
uint8_t encoderStatus = encoder.process();
if (encoderStatus)
encoderCount = (encoderStatus == DIR_CW) ? 1 : -1;
}
void showStatus()
{
;
oled.set2X();
oled.setCursor(0, 0);
oled.println("FM ");
oled.setCursor(0, 95);
oled.println(" ");
oled.setCursor(0, 95);
oled.set2X();
oled.print(frequency);
oled.setCursor(75, 75);
oled.println("MHz");
}
void loop()
{
oled.set1X();
// Check if the encoder has moved.
if (encoderCount != 0)
{
if (encoderCount == 1)
{
// seekDirection = RDA_SEEK_UP;
//frequency=(freq_available/1000000)+0.05; //f=receivef+0.05
frequency=(frequency+(freq_available/1000000)+0.01); //f=receivef+0.05
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60);
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0xB0);
Wire.write(0x00);//Wire.write(0x1F);
Wire.write(0x00);
//Wire.write(0x88); // 05h
//Wire.write(0x81); // 05l volulme001
Wire.endTransmission();
//////////////////////
b=100;
}
else
{
// seekDirection = RDA_SEEK_DOWN;
//frequency=(freq_available/1000000)-0.05; //f=receivef-0.05
frequency=(frequency+(freq_available/1000000)-0.01); //f=receivef-0.05
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60);
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0x30);
Wire.write(0x00);//Wire.write(
// rx.setVolume(15);
//TEA5767Radio::setVolume(15);0x1F);
Wire.write(0x00);
//Wire.write(0x88); // 05h
//Wire.write(0x81); // 05l volulme001
Wire.endTransmission();
c=100;
}
showStatus();
encoderCount = 0;
}
else if (digitalRead(VOLUME_UP) == LOW) // D4
{;// rx.setVolumeUp();
}
else if (digitalRead(VOLUME_DOWN) == LOW) // D5
{;// rx.setVolumeDown();
}
else if (digitalRead(AUDIO_MUTE) == LOW) // D6
{;// rx.setMute(bMute = !bMute);
}
else if (digitalRead(SEEK_STATION) == LOW) //D14
{ ; // rx.seek(RDA_SEEK_WRAP, seekDirection, showStatus); // showFrequency will be called by the seek function during the process.
delay(200);
}
else if (digitalRead(AUDIO_BASS) == LOW) //D7
{;// rx.setBass(bBass = !bBass);
delay(50);
}
}
Test and validation of RDA5807 on UNO/NANO or other ATMEGA328 based device.
It is FM receiver with
Nano and RDA5807 wireup
Wire up on Arduino UNO, Nano or Pro mini
| Device name | Device Pin / Description | Arduino Pin |
|-----------------------|-----------------------------------|------------ |
| OLED - I2C | | |
| | SDA | A4 |
| | SCLK | A5 |
| ----------------------|-----------------------------------|-------------|
| RDA5807 | | |
| | SDA/SDIO | A4 |
| | SCLK (Clock) | A5 |
| ----------------------| ----------------------------------|-------------|
| Buttons | | |
| | Volume Up | 4 |
| | Volume Down | 5 |
| | Mute | 6 |
| | Bass | 7 |
| | SEEK (encoder button) | D14/A0 |
| --------------------------| ------------------------------|-------------|
| Encoder | | |
| | A | 2 |
| | B | 3 |
By Ricardo Lima Caratti, 2020.
*/
#include "src/SSD1306AsciiAvrI2c.h"
#include "src/SSD1306Ascii.h"
SSD1306AsciiAvrI2c oled;
#define I2C_ADDRESS 0x3C //0x3C,0x3A
#define FIX_VOLUME 4
#include <Wire.h>
#include <TEA5767Radio.h>
TEA5767Radio rx;
//#include <Tiny4kOLED.h>
//#define RDA_FM_BAND_SPECIAL 3 //!< 65 –76 MHz(East Europe) or 50 - 65MHz(see bit 9 of gegister 0x07)
#include "Rotary.h"
// Please, check the ATtiny84 physical pins
#define VOLUME_UP 4
#define VOLUME_DOWN 5
#define AUDIO_MUTE 6
#define AUDIO_BASS 7
#define SEEK_STATION 14 // A0 = D14
// Enconder PINs
#define ENCODER_PIN_A 2
#define ENCODER_PIN_B 3
bool bBass = false;
bool bMute = false;
volatile int encoderCount = 0;
int encorderCount = 0;
uint8_t seekDirection = 1; // 0 = Down; 1 = Up. This value is set by the last encoder direction.
long elapsedTimeEncoder = millis();
// Encoder control
Rotary encoder = Rotary(ENCODER_PIN_A, ENCODER_PIN_B);
unsigned char frequencyH=0;
unsigned char frequencyL=0;
unsigned int frequencyB;
double frequency=0;
double freq_available=0; //receivef
int b=0;
int c=0;
int d=0;
int e=0;
int f=0;
void setup()
{
pinMode(ENCODER_PIN_A, INPUT_PULLUP);
pinMode(ENCODER_PIN_B, INPUT_PULLUP);
// Push button pin
//#define VOLUME_UP 4
//#define VOLUME_DOWN 5
//#define AUDIO_MUTE 6
//#define AUDIO_BASS 7
#define SEEK_STATION 14 // A0 = D14
pinMode(VOLUME_UP, INPUT_PULLUP); //D4
pinMode(VOLUME_DOWN, INPUT_PULLUP); //D5
pinMode(AUDIO_MUTE, INPUT_PULLUP); //D6
pinMode(AUDIO_BASS, INPUT_PULLUP); //D7
pinMode(SEEK_STATION, INPUT_PULLUP); //D14
oled.begin(&Adafruit128x64,I2C_ADDRESS);
//oled.begin();
oled.clear();
//oled.on();
oled.setFont(Adafruit5x7);
// oled.setFont(FONT8X16);
oled.set2X();
oled.setCursor(0, 10);
oled.println("RDA5807OLED");
oled.setCursor(0,40);
oled.println("By PU2CLR ");
oled.setCursor(0,90);
oled.println("Modefy By");
oled.setCursor(0,140);
oled.println(" JL7GMN");
delay(3000);
oled.clear();
/*
Reads encoder via interrupt
Use Rotary.h and Rotary.cpp implementation to process encoder via interrupt
*/
// Encoder interrupt
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_A), rotaryEncoder, CHANGE);
attachInterrupt(digitalPinToInterrupt(ENCODER_PIN_B), rotaryEncoder, CHANGE);
// frequency initialize -------------------------------------------------
frequency=51.00; //starting frequency ABALABLE MIN 45.60MHz TO MAX 119.60MHz
frequencyB=4*(frequency*1000000+225000)/32768; //calculating PLL word
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
delay(100);
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60); //writing TEA5767
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0xB0);
Wire.write(0x00);// F0->10
Wire.write(0x00);
Wire.endTransmission();
/*
Wire.beginTransmission(0X11); //normal i2c
Wire.write(0X05); // specify register 05h
Wire.write(0X88); // 05h
Wire.write(0b10001000); // 05l VOLUMExxxx
Wire.endTransmission();
*/
//radio.setVolume(15);
//oled.setFont(Adafruit5x7);
oled.setFont(X11fixed7x14B);
oled.clear();
oled.setCursor(1, 0);
;
delay(10);
//----------------------------------------------------------
showStatus();
}
void rotaryEncoder()
{ // rotary encoder events
uint8_t encoderStatus = encoder.process();
if (encoderStatus)
encoderCount = (encoderStatus == DIR_CW) ? 1 : -1;
}
void showStatus()
{
;
oled.set2X();
oled.setCursor(0, 0);
oled.println("FM ");
oled.setCursor(0, 95);
oled.println(" ");
oled.setCursor(0, 95);
oled.set2X();
oled.print(frequency);
oled.setCursor(75, 75);
oled.println("MHz");
}
void loop()
{
oled.set1X();
// Check if the encoder has moved.
if (encoderCount != 0)
{
if (encoderCount == 1)
{
// seekDirection = RDA_SEEK_UP;
//frequency=(freq_available/1000000)+0.05; //f=receivef+0.05
frequency=(frequency+(freq_available/1000000)+0.01); //f=receivef+0.05
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60);
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0xB0);
Wire.write(0x00);//Wire.write(0x1F);
Wire.write(0x00);
//Wire.write(0x88); // 05h
//Wire.write(0x81); // 05l volulme001
Wire.endTransmission();
//////////////////////
b=100;
}
else
{
// seekDirection = RDA_SEEK_DOWN;
//frequency=(freq_available/1000000)-0.05; //f=receivef-0.05
frequency=(frequency+(freq_available/1000000)-0.01); //f=receivef-0.05
frequencyB=4*(frequency*1000000+225000)/32768+1;
frequencyH=frequencyB>>8;
frequencyL=frequencyB&0XFF;
//tune set to 0
Wire.beginTransmission(0X10); //continuous write
//no need to specify register
Wire.write(0X00); // 02h(HighByte02) DMUTE0
Wire.write(0X00); // 02l(LowByte02)
Wire.write(0X00); // 03h
Wire.write(0X00); // 03l TUNE0 ENABLE0
Wire.endTransmission();
Wire.beginTransmission(0x60);
Wire.write(frequencyH);
Wire.write(frequencyL);
Wire.write(0x30);
Wire.write(0x00);//Wire.write(
// rx.setVolume(15);
//TEA5767Radio::setVolume(15);0x1F);
Wire.write(0x00);
//Wire.write(0x88); // 05h
//Wire.write(0x81); // 05l volulme001
Wire.endTransmission();
c=100;
}
showStatus();
encoderCount = 0;
}
else if (digitalRead(VOLUME_UP) == LOW) // D4
{;// rx.setVolumeUp();
}
else if (digitalRead(VOLUME_DOWN) == LOW) // D5
{;// rx.setVolumeDown();
}
else if (digitalRead(AUDIO_MUTE) == LOW) // D6
{;// rx.setMute(bMute = !bMute);
}
else if (digitalRead(SEEK_STATION) == LOW) //D14
{ ; // rx.seek(RDA_SEEK_WRAP, seekDirection, showStatus); // showFrequency will be called by the seek function during the process.
delay(200);
}
else if (digitalRead(AUDIO_BASS) == LOW) //D7
{;// rx.setBass(bBass = !bBass);
delay(50);
}
}
上記のArduinoNANOスケッチで50MHz帯のFMが受信できました。
なおSSGで受信を確認してみたところ、FM受信は仕様上のチャンネルスペースの設定範囲が200KHz,100KHz,50KHz,25KHの中からの設定です。最低でも25KHz間隔です。なので見かけ上スケッチにて10KHz間隔で周波数表示対応できてはいますが選択したスペースで受信されているようです。やはりFM放送受信用ということでしょうか?
FM受信周波数にしてFMラジオとして使うのが一番無難なのかもしれません。Hi!
つづく?
RTL-SDR対応HFUPコンバーターとSDR Console V3その1
(2024/2/5 23:33:05)
つい最近また、SDRの世界を覗いたところ64bit対応のSDR Console
V3という新しいタイプのSDRアプリがあることを知りました。最初は、HDSDRで29MHzのFMを受信してみたくなったのがきっかけで、ヤフーオークションで重い腰を上げプチっと落札した0から30MHzを100MHzから130MHzに変換するボードを用い、SDRアプリがダウンロードできるようになったWindows10でHDSDRアプリが動作するかを見ていこうと思っていました。Webで今までと違った名前のSDRのアプリ名だったのを控えておいて、ダウンロードできるようになったので、Windows10に実際にインストールしてみました。感覚的な事ですが、プログラム的には、ハム日誌Logger32++のような感じに思えます。それは別として、機能が豊富です。3Ⅾでのウォーターフォールも2画面使用する事を前提に用意されていたり、各バンド事にマルチでSDR画面を設定準備できたりと、いままでのSDRとは違った飽きないほどのフィチャーがあります、Memoryあり、DⅩクラスターあり、Registoryアプリ起動ができたり、録画・再生ができたり、と驚くばかりです。特に対応するSDRハードが桁違いに多いというのもあります。驚いたのは、SDRラジオではよく言われる再生音の遅延に関して、本当に遅延が少ないということです。以前はエコーどころか、地球の裏側からの放送のように遅れて信号が再生されて、リアルタイムの使用には無理なのではと思えてました。今回もHDSDRを使用して無線機からの受信音と比較してみるとやはり遅れて受信信号が再生されています。しかしこのSDR
Console
V3アプリでの受信信号のAudioの遅延は無線機の受信音と比べてもとても少ないということがわかります。素晴らしいことだと思います。
フォームの下側にはCPU表示がありデュアルコア(2つ)表示されています。audioの再生遅延時間の表示?もあります。
7MHzでの北京放送-中国国際日本語放送を聞いている画面です。
ただ、残念なことに私のWindows10では時々Please Waitの小画面が出て時々クラッシュの発生があります。マウス操作を頻繁にしてると発生する感じです。発展途上ということでしょうか?下記の情報収集画面が表示されます。音声は問題なく再生されていますが、大のFFT波形表示がフリーズしています。左のオーディオ域の小画面の波形は問題なく動いています。作成者の方では、SDR Console画面を出してクラッシュ情報を集めて送れるようになっている様です。
ほか、Paypalでの寄付(Donate)機能もついています。
簡便なドングルでもかなり良く受信できていますので、もう少しグレードアップしたハードのSDRで試してみたいところです。
ドングルで10mFM受信音を確認しましたが、JR‐310のNE567のFM復調音よりSDR ConsoleV3のNFMでの受信音はきれいに復調できているように思えます。(帯域を選ぶ事ができるので,いい音の帯域に合わすことができます。)
ほんのチョットかじった程度なので、SDR Console V3について少し情報を調べてみたいと思います。
別のPCのWindows11ではクラッシュするのかなども確認してみたいと思います。
つづく?
フォームの下側にはCPU表示がありデュアルコア(2つ)表示されています。audioの再生遅延時間の表示?もあります。
7MHzでの北京放送-中国国際日本語放送を聞いている画面です。
ただ、残念なことに私のWindows10では時々Please Waitの小画面が出て時々クラッシュの発生があります。マウス操作を頻繁にしてると発生する感じです。発展途上ということでしょうか?下記の情報収集画面が表示されます。音声は問題なく再生されていますが、大のFFT波形表示がフリーズしています。左のオーディオ域の小画面の波形は問題なく動いています。作成者の方では、SDR Console画面を出してクラッシュ情報を集めて送れるようになっている様です。
ほか、Paypalでの寄付(Donate)機能もついています。
簡便なドングルでもかなり良く受信できていますので、もう少しグレードアップしたハードのSDRで試してみたいところです。
ドングルで10mFM受信音を確認しましたが、JR‐310のNE567のFM復調音よりSDR ConsoleV3のNFMでの受信音はきれいに復調できているように思えます。(帯域を選ぶ事ができるので,いい音の帯域に合わすことができます。)
ほんのチョットかじった程度なので、SDR Console V3について少し情報を調べてみたいと思います。
別のPCのWindows11ではクラッシュするのかなども確認してみたいと思います。
つづく?
IEエッジでダウンロード不可改善方法最終版
(2024/2/5 22:05:20)
Windows10でEdgeを使ってのpdfファイルの保存はプリンターでの印刷をpdfファイルにすることで可能とはなっていましたが、一番ダウンロードしたいプログラムなどは実行ファイルであり、pdf等と種類が異なるため対策にはなっていません。そこで、話は飛びますが、昔よくWindowsファイルが削除できない状態のときに使う魔法のアプリを思い出しました。ダウンロード時のエラーのメッセージはセキュリティアプリがダウンロードをできない検出をした状態であることより、今回のダウンロードには以前使用してたセキュリティアプリのMaccafeeがかかわっていると思いました。まずは最初のステップとして一通りアプリのアンインストールを行いました。が、アンインストールできなくて、PCに居座ったままの状態のMacafee関係のフォルダがありました。残念ながら、ネットで見ても、最終の対策はWindowsのクリーンインストールが良いような回答ばかりです。せっかく有用なアプリインストールしてあるPCをクリーンインストールなんてできません。したくありません。設定を一からやり直すのもかなり大変です。インストールして使用しているアプリの数は相当ありますから!やはり問題となっている箇所を取り除きたいのが本心でそれがベストな方法です。ということで、マカフィー関連の居座りフォルダ内の削除できないファイルを強制削除する方法をとることにしたわけです。
まずは、マカフィーの関連ファイルやフォルダの状況から言いますと、Program Filesのmacafeeフォルダー、Program Files(x86)Macafeeフォルダーの両方(いつまでもアンインストールしたファイル以外のMacafeeの極悪プログラム??)が私のアンインストールの意に反して残り居座っています。商売とは言え、アンインストールの行為はきちんと守るのがメーカーだと思うのですが、この辺りに関しては本当にあきれてしまいます。しかもこのウィルス対策メーカーアプリのせいでダウンロードができない状態が起きているのです。本当にどこかの車屋と同じ感じに思えてしまいます。ダウンロードできないようにしている状態にしていて、自分のウィルスセキュリテイ対策アプリを入れろと言わんばかりに思えます。
ここで居座っているアプリを根こそぎ削除する魔法のアプリの正式プログラム名は、unlocker.exe の登場です。ただし、フォルダ指定で全部の中身を削除とかはできないので、1ファイルずつ消すしかありませんがめぼしい拡張子を優先に削除してゆきます。今は昔とちがう別の便利なフォルダ内のファイルを全部強制削除できるアプリができているかもしれません。調べてないので不明です。あれば便利ですHi!
昔のunlocker.exeもWindows10で動作してくれました。
Windows10でのアイコンです
起動時のUnlockerのフォームです。
ここからWindowsのProgramFiles(x86)、ProgramFilesのなかのマカフィー関連のフォルダの中のファイルを開き、削除してゆきます。
今回はこのアンインストールしても残っているMacafee関連のフォルダのなかのDLLライブラリ、実行ファイルを主に削除することで元通りにアプリもダウンロードできるようになります。ただ、フォルダの中身が膨大なファイルがあるので、目星をつけて実行ファイルとDLLライブラリ関係を削除しています。今回は全ファイルは削除していませんが、Program Filesのなかのmacafeeのフォルダの中の一部のファイルがダウンロードをできないようにしていました。今回は、昔のハードディスクの中にダウンロードしたUnlocker.exeがあったのでコピーしてWindows10で実行しました。どこかのフリーアプリでダウンロードできるようになっていると思います。挑戦してみてください。ファイルを指定して通常の削除でも削除できなかったファイルを Deleteにしてからボタンできれいに削除できます。私のWindow10がつい、昨日ですが、今までダウンロードできなかったアプリがダウンロードできるようになりました。完全復旧しました。生き返ってほっとしています。
つづく?
まずは、マカフィーの関連ファイルやフォルダの状況から言いますと、Program Filesのmacafeeフォルダー、Program Files(x86)Macafeeフォルダーの両方(いつまでもアンインストールしたファイル以外のMacafeeの極悪プログラム??)が私のアンインストールの意に反して残り居座っています。商売とは言え、アンインストールの行為はきちんと守るのがメーカーだと思うのですが、この辺りに関しては本当にあきれてしまいます。しかもこのウィルス対策メーカーアプリのせいでダウンロードができない状態が起きているのです。本当にどこかの車屋と同じ感じに思えてしまいます。ダウンロードできないようにしている状態にしていて、自分のウィルスセキュリテイ対策アプリを入れろと言わんばかりに思えます。
ここで居座っているアプリを根こそぎ削除する魔法のアプリの正式プログラム名は、unlocker.exe の登場です。ただし、フォルダ指定で全部の中身を削除とかはできないので、1ファイルずつ消すしかありませんがめぼしい拡張子を優先に削除してゆきます。今は昔とちがう別の便利なフォルダ内のファイルを全部強制削除できるアプリができているかもしれません。調べてないので不明です。あれば便利ですHi!
昔のunlocker.exeもWindows10で動作してくれました。
Windows10でのアイコンです
起動時のUnlockerのフォームです。
ここからWindowsのProgramFiles(x86)、ProgramFilesのなかのマカフィー関連のフォルダの中のファイルを開き、削除してゆきます。
今回はこのアンインストールしても残っているMacafee関連のフォルダのなかのDLLライブラリ、実行ファイルを主に削除することで元通りにアプリもダウンロードできるようになります。ただ、フォルダの中身が膨大なファイルがあるので、目星をつけて実行ファイルとDLLライブラリ関係を削除しています。今回は全ファイルは削除していませんが、Program Filesのなかのmacafeeのフォルダの中の一部のファイルがダウンロードをできないようにしていました。今回は、昔のハードディスクの中にダウンロードしたUnlocker.exeがあったのでコピーしてWindows10で実行しました。どこかのフリーアプリでダウンロードできるようになっていると思います。挑戦してみてください。ファイルを指定して通常の削除でも削除できなかったファイルを Deleteにしてからボタンできれいに削除できます。私のWindow10がつい、昨日ですが、今までダウンロードできなかったアプリがダウンロードできるようになりました。完全復旧しました。生き返ってほっとしています。
つづく?
JR-310プチレストアその36
(2024/1/5 6:05:53)
トーンデコーダー等でよく使われるNE567NによるFM復調回路のWEB情報より実際に回路を作製し実験をしてきて、ある点で勘違いしていたことがわかりました。思い込みといいますか、PLL
LOCK/UNLOCKに関してです。NE567Nの8番ピン端子にPLLがアンロック時パルスが出てきますが、今回のFM復調回路として使用する場合は、出力はでてきません。と言うか、常にロック状態で使用するため、最初に調整ロックしてしまえば、ずーっとそのまま”L”レベルでロック動作したままでいます。これをキャリア信号が入った時にロックし、キャリア信号がなくなった時にアンロックすると勘違いしていました。455KHzの信号は常にJR-310よりきていますから、ある程度のレベルでNE567Nの入力端子に入り最初にVRでアジャストロックさせます。受信信号があろうが、なかろうが455KHzのIF信号は有るのでロックします。
添付の動画の左側のNE567NのPLL LOCK/UNLOCK LEDはロックして常に点灯したままです。Hi!
ということで、8番ピン端子は”L”レベル時のロック安定状態表示確認用として利用するもので、今回のようなスケルチとしては使用出来無いということです。やはり、キャリア信号が有るなしの判断するスケルチ回路が別途必要と言う事になります。
ということで、新たにスケルチ回路を組む事にしました。新たに組むと言っても以前のワイス検波回路で使用したものとほぼ同じ回路になります。前の回路に455KHz用のトランジスタのIF-AMPを1段追加しました。3段のIF-AMPの2段めのトランジスタのコレクタからNE567Nの入力端子3番ピンにコンデンサを通してつなげています。まずは、結果から言いますと、実験により確認したNE567NによるFM復調はとても簡単で素晴らしいです。全く問題ありません。うまく復調してくれています。昨日は中国の29MHzの信号が出ていたので確認しましたが、とても良く復調してくれました。SSGでなく、実際の信号の方が回路の確認には都合がいいです。なお、NE567Nは電源は5Vで動作させています。
【NE567NのFM復調とスケルチを確認したときの動画】
ボードに作製したNE567NのFM復調回路とスケルチ回路
回路の調整は動作時のLOCKのみです。他の調整は無いので、とても楽にFM復調が出来ます。とても感激しています。今回のJR-310にFMモードを追加するには最適なNE567NのFM復調回路と思います。SQ回路は様々ありますが、ワイス検波で使用したものの実績が有るので、同じ回路構成にしています。
回路図もCAD(EAGLE)で作製しました。パターンはまだ作製は行っていません。若干の回路の変更を予定しています。スケルチは基板外の取り付けしたVRにてメイン調整できるように回路変更の確認を行ってからの予定でいます。
スケルチ動作用のミュート機能で使用している4016は1回路しか使用していません。少しもったいないですが良しとしてます。
つづく?
JR-310プチレストアその35
(2023/12/16 11:33:52)
続きを読む
以前にJR-310プチレストアその12で検討してたトーンデコーダー用ICのNE567を使ったFM復調回路を再度使用出来ないか確認してみました。以前はロックの状態が外れるときに出力にノイズが出る現象があり採用はしませんでしたが、今回少し対策を取れないかを含めて最考してみることにしました。ワイス検波を採用していますが、回路的には、コイルがない分調整を含めてNE567のICの方が作製が楽な為でもあります。
対策はロックが外れるとき、または外れた時に矩形パルスが8pinから出力されます。この状態のときにNE567のFM復調出力から変調信号にパルスが乗ってノイズ音になります。8pinのロック出力を使いロックはずれ時のノイズ出力を閉じる対応をするためにアナログSWのゲートICでコントロールする方法です。
8pin出力の矩形波を単純に積分してやり平滑化により、トランジスター石でスィッチングを行います。SWした出力はゲートIC4016のSWでNE567のFM復調出力をON/OFFします。また、ON用とOFF用表示のLEDを付ける為もう一石トランジスタスイッチング回路も付けました。
一般に使われるスケルチとは違って、信号があると出力が出て、ロックが外れかかると出力が遮断されると言う動作なので、ノイズの出ないFMチューナー的な動作に近いかもしれません?信号が弱いときはロックがかからず矩形波が出力されるので、FM出力は遮断されたままとなります。なので、周波数を固定した待受受信での使用に適しているかもと言う感じです。信号がない時のノイズが聞こえないので、ダイヤルを回してチューニングするには向いてないかもしれません。
実際のサンプル回路を作製しました。FM信号でロックかかる時と外れる時のFM信号をSSGで出してチェックしていますが、うまく動作してくれています。
JR-310につないでの確認も後で行いたいと思います。
このFM復調回路ではVFOをチャンネル方式にしたほうが良いかもしれませんね。
つづく?
続きを読む
JR-310プチレストアその34
(2023/11/27 7:50:24)
JR-310の中間周波トランスのIFT2の基板に半田付けする端子折れを修理して、受信感度の低下現象が再発するかの確認結果です。
感度を最大状態になるようにIFT類を調整した後に電源を落とし、2、3時間後に感度変化が無いことを再度確認した上で、電源を落とし、次の日に再確認ということです。
次の日の確認ということで、電源を入れて確認しましたが、感度の低下は全くおきませんでした。やはり、間違いなく端子折れによる感度低下現象と断定した内容の通りの様です。
修理後の受信感度は、今までと違い、明らかに感度も上がったと分かるほど、また、バンドがにぎやかに感じるほどに良くなりました。確認はちょうど良くCQ
WW DX CONTEST CWが行われていたので、7MHz、14MHz、21MHzと3バンドでの確認です。やはり、高いバンドの21MHz
での感度がかなり良くなっています。14MHzにあたっては7MHzではないかと思えるようなバンドの受信状態となりました。
話は、上記のIFT2の端子折れ修復の確認結果から別の話にかわるのですが、それは6BZ6を使った高周波増幅(RF)の真空管回路について少し変更を行ってみようという内容です。きっかけは、八重洲無線の真空管タイプのトランシーバーの回路を見ていて、同じ6BZ6を使用しており、カソード抵抗値が、JR-310は220ΩでRF
GAIN用VRでゲイン調整しているのですが、八重洲無線の6BZ6のRF回路では56Ωです。試しにJR-310の方のカソード抵抗を56Ωを並列に220Ωに鰐口クリップで追加してやったところ信号がSで3つ4つアップしました。さらに試しで上記の56Ωを220Ω並列に付けた6BZ6のカソード側に1KΩのVRをセンターグランドにして、感度の変化をVRを回して見たところちょうど感度アップとSメータの調整状態が良いと思える時のVRの値が79Ωでした。VRの変わりに82Ωをつけてグランドに落とすと、VRのときとほぼ同じ感度でOKです。これはカソードに抵抗が入った状態ですがさらに直接6BZ6のカソードをグランドに落とすと、びっくりするぐらい感度が上がりました。他の6BZ6を使ったRF回路でもカソードをショートの使い方をしているものもありました。今時のトランシーバーの受信プリアンプをあたかもONしたのと同じ感じがするほど感度upします。ということで、カソードをグランドに落とす細工をJR-310で対応させようという改造をしようと思いついた次第です。このカソードを落とすのは14MHz以上のバンドで用います。7MHzだと56Ωと82Ωグランドへ落とす設定で感度は十分のようです。強力な局の信号ではメーターが振り切るぐらいになるため、カソードをグランドへ落とす(82Ωをショート)必要はないということです。
この改造をするに当たりJR-310本体を見てみるとAFボリュームに配線されてないSWが付いています。JR-310にはAFのVRにCAL
MARKER用SWが付いています。MARKERはオプションですが、付いていない為、このSWを利用する事にしようと思います。プル(引っぱって)でSWが入るので、82Ωの抵抗にSWをパラに接続し、プルでショート配線にします。ショートでは6BZ6のカソードがグランドへ落ち(82Ωをショート)最大の感度状態となります。とても今まで感度が悪いと感じていたJR-310が息を吹き替えしてきたと思えるといっても過言では無いと思います。FT-2000Dと同じアンテナで同じ21MHzで出ている局の信号を比較したところJR-310も同じ様にSメータが振れました。感度でも全く引けを取らない感じでびっくりです。
6BZ6はTVの周波数帯の高周波増幅で活躍していた真空管であることが納得出来ます。50MHzの周波数の高周波増幅も、なんのそのと言う事だと思います。
一通り6BZ6のカソードをグランドへショートした状態での、付属の50MHzのコンバーターの受信感度も確認しました。簡易的にSSGの信号を使い各バンドとの受信感度の比較確認です。14MHz、21MHz、28MHzでの受信時と同じ様に50MHzもSメータが振れ十分に感度は取れていました。
なお、実際の配線に使うケーブルですが、RF回路の6BZ6のカソードからの配線の確認で使用したのは、鰐口クリップのケーブルで30cmほどですが、VRのSWの辺りまで、引き回しても、他の位置へ動かしたりもしましたが、特に感度への影響は出ませんでした。配線用線材は、3.5Φのオーディオ用プラグ等で使用されている2芯のAF用ケーブルがあったと思うので探して、これを使おうと思います。
1つだけ、機能が少しかわってしまった事があります。上記の6BZ6への回路を追加することによりSWオン時のRFのゲイン調整ができなくなるということがあります。SWオフ時は若干の感度調整ができる程度になってしまいます。ローカルの強力な信号などの信号受信では信号が強すぎて、感度調整が出来ないケースもありえます。その場合の対策として追加回路を付けたり外したりのSWを入れる方法があります。82Ωとカソード間に別途SWを付けて、従来のRFゲイン調整で行う方法です。
上記の強力な信号時の話はあくまでも推定した内容なので、実際に不具合や、問題が起きたときに考えることにしたいと思います。
今は、JR-310で、14MHz等、上のバンドのワッチをして、プルオンプルオフでの受信感度の変化での信号の受信状態をみようと思います。
つづく?
JR-310プチレストアその32
(2023/11/25 23:13:15)
実は真空管のRF部の6BZ6の交換確認では新品に交換しても感度が悪くSメータも振らない状態だったため、Sメータが振る動作をしてくれる6AU6にしていました。データ上は6BZ6のほうが増幅度があるようにあったと思います。この記憶からもとの6BZ6に戻して、IFT1、IFT2、IFT3の調整をやり直しました。IFT1は第一混合(局発信号は全バンドDDS改造)とVFO(5.500-4.900MHz)の第2混合間にあるIFT(5.955MHz〜5.355MHz)です。
JR-310の受信においての感度の突然の悪化が時々発生することがあるのがとても気になり、部品の値の確認や、交換、マニュアルによる調整方法など、いろいろと確認を行ってきていました。その中で、今回最も単純な、半田不良による接触不良等の確認をすることにしました。これは、振動を与えることで、症状が発生したり、止まったりということが起きることがあるため、IFTトランス、他抵抗、コンデンサーなどの部品にについて確認してみました。やっていて、おかしい点として、特に第2IF基板をコツコツと叩く時や、微妙にIFトランスをコツコツした時も同じように変な振動音がします。真空管のグリットの巻線に振動が伝わった時の振動によるものかと思ったりもしました。
ここで、次のような感度悪化時と良好な時の現象がありました。感度が落ちたときに、IFT2だけ同調点が変わります。コアを回すと別の箇所で感度が取れます。時間が立つと感度がとれていたのが、突然感度が悪くなったりという症状が発生していました。感度悪化した時コアの調整での感度は取れるのですが、感度最大点のコア位置が変わるという同調時の問題です。455KHzは1箇所にしかピークは無いはずです。(ピーク近辺のリップルを除く)それで、UC1210Jの基板のIFT2に原因が有るとみて、基板からIFT2を取り外して確認することにしました。半田吸い取り器とソルダーウィックで基板とIFT2の端子と基板ランドの半田を吸い取りました。この時に1箇所の端子がポロッと取れて半田吸い取り器に吸い取られました。やってしまったかなーと思いましたが、そんなに力も加えていないのになんで吸い取られるのかとも思いました。一応基板からIFT2を取り外し確認です。アルミのケースで固定された部分を注意して折れない程度に折り返して、コイルコア部をゆっくり線が切れないように引き出してみました。スチロールコンの同調コンデンサーが2つの共振コイルにそれぞれついていましたが、半田付けもしっかりとしていて、断線している気配はありません。コイルの導通があるかもテスターで確認しました。断線なしです。となると、ポロッと取れた基板との半田づけの端子が折れていたことが原因ではないかと判断しました。おそらく、端子が折れてしまった状態で、微妙につながったり、離れたりがあったのではないかと思われます。特に近くに真空の熱源があるので、IFT端子金属の膨張も関係していたかと思います。心当たりとしては、感度が取れている状態で、電源を切ってから、再度次の日に期待をして、感度が取れるように治っているようにと電源を再度入れて確認することを数回やりました。次の日には感度がもう取れない状態となっているというふうに、がっくりばかりでした。
IFT2の端子が折れてしまってるので、まずは対策です。折れた端子の変わりに導線を残りの端子部にはんだ付けし銅線を端子代わりに基板に通して半田付けする対策を取ることにしました。0.8mmぐらいの銅線を使いました。ラジオペンチで平たい端子にピッタリつくように押さえつけます。銅線はフラックスを少し付けて、半田メッキしてあります。端子の穴にうまく入るように銅線を加工して、再度元の基板へIFT2を半田付します。半田ゴテでなるべくパターンに力が加わらないように、剥がれないように注意して半田づけします。
実は真空管のRF部の6BZ6の交換確認では新品に交換しても感度が悪くSメータも振らない状態だったため、Sメータが振る動作をしてくれる6AU6にしていました。データ上は6BZ6のほうが増幅度があるようにあったと思います。この記憶からもとの6BZ6に戻して、IFT1、IFT2、IFT3の調整をやり直しました。IFT1は第一混合(局発信号は全バンドDDS改造)とVFO(5.500-4.900MHz)の第2混合間にあるIFT(5.955MHz〜5.355MHz)です。
■画像の真ん中上段がIFT2、中間右側がIFT3です。(斜めからの画像)
基板の汚れも落としてあります。
■ほぼ真上からの画像
驚くことに、感度は取れるようになったことは勿論ですが、なによりS/Nが凄く良くなりました。弱い信号とともにザーというノイズがありましたが、改善された点として、弱い信号だけ聞こえて、ノイズは信号がなくなるまで、わからないという音声だけが前に出て聞こえるという素晴らしい状態です。やはり真空管も、餅屋は餅屋でRF段用はRF段用です。ちなみに6AU6は高周波でも使われていますが、過去の使用情報を見ているとAFアンプとしてメインで使われていた真空管だったようです。高周波では、ある程度ゲインが取れてもS/Nは良くない状態ということかもしれません。確かにノイズが大きくなると感度が上がったと勘違いしますよね!6BZ6はやはり高周波増幅段用で力を発揮してくれる球の様です。
間違いなく受信感度の変化、悪化が改善されて、原因が取り除かれた状態であることの確認のため、前と同じように感度が良い状態で、電源を切ってあります。2、3時間後にもう一度電源を入れて、感度維持してるかの確認、問題なければ、確認後電源をきり、明日の朝、電源を入れてどうかの確認を行います。
この感度の変化する状態が改善しないと受信機として、次のステップへ移れません。次のステップはESP32DevKitCでのDDS化ですが、今のままでのアナログVFOでも特に受信は楽しめそうで問題なさそうですが...
しかし、思うに、真空管なしのジャンクから、真空管用意、取り付け、チューニング機構のゴムをチェーン化、、局発用のクリスタルをすべてDDS化で対応、SSB用のフィルター追加、そしてFM受信追加(只今基板保留中)、問題も数々出たりしていますが、時間こそかかれなんとかクリヤーできています。古い受信機ならではの近代化への追従は、実現できそうなアイデアを考えながら、楽しみながら、続きます。
つづく?
JR-310プチレストアその33
(2023/11/25 23:08:14)
i-phone用1USBとAndoroid用1USBはほぼ同じ回路構成のようです。i-phone用は壊れているのか、端子が違うのか?電圧5Vが出てないようで動作できませんでした。Andoroid用1USBのDCアダプタからArduinoNANOのUSBでの接続ではDDSがうまく表示され、動作も問題ありませんでした。
JR-310の第1局発周波数発生のキャリア周波数はクリスタルの代わりとなるDDS(ArduinoNANO)
で代用しています。このDDSの電源は、JR-310に組み込見した状態では、パソコンのUSB端子へ電源供給として接続し動作させていました。実際はWindows10のデスクトップPCです。ArduinoNANOのスケッチはLinux(Ubuntu22.04.3LTS)でのUSB接続です。プログラム(スケッチ)開発はLinuxで行っています。Windows10にUSBケーブルでつなぐのは汎用性にかけるので、ArduinoNANOへの電源供給方法を模索していました。今まで、JR-310のAFアンプの6BM8のカソードの電圧DC10Vを電圧変換レギュレータでDC5Vにダウンバードして使用を試みたりしましたが、JR-310の電源を入れてからのじわじわ真空管が動作するまでに電圧が発生しないことや、電圧レギュレータ自体が入力側の電流不足からDC電圧の5Vを供給できなかったりとうまく行っていませんでした。つい最近、USBでの充電用としてダイソーで売られているアダプターを買っていたことを思い出し、i-phone用1USBとAndroid用1USBとAndroid用2USBを引き出してきてDDSへつないでDCアダプタとして使用できるかを確認してみました。
■i-phone用のDC出力基板
■基板は挟んでいるだけなので、取り外しは簡単にできます。
ところが、写真は取り忘れてありませんが、Android用2USBではArduinoNANOが2箇所のUSBでは液晶が表示だけはしましたが、入力コントロール等一切動作しない状態のままでした。結果より、Android用1USB端子のアダプターを分解して、JR-310に組み込みすることにしました。
■JR-310の電源トランスのAC100Vに並列に接続です。
2mmの銅線でトランス端子へ半田付けしてます。
(銅線は硬いので、基板は固定されています。)
JR-310の電源SWを入れるとDC5Vが発生
■基板の裏面の、IC、整流器、各小型チップ部品とパターン
■基板のJR-310への組み込み状態(スペースが十分有るので取り付けは楽にできます。)
安全の為に一応セルロイドのカバーでも後で付けたいと思っています。
上記のUSBアダプタからのDC5V供給でArduinoNANOは無事動作する状態にて組み込みできました。
今までPCへ接続していたケーブルがJR-310内部組み込みのDC電圧供給のUSB接続に変わり厄介な線がなくす事が出来ました。ダイソーのアダプターも大活躍です。Hi!
今までPCへ接続していたケーブルがJR-310内部組み込みのDC電圧供給のUSB接続に変わり厄介な線がなくす事が出来ました。ダイソーのアダプターも大活躍です。Hi!
つづく?
execution time : 0.069 sec