エントリー

Si4732レシーバー(ATS-20+)のファーム改造

前回ファームを(現時点で)最新のV3.0.8に更新したが操作性が自分に合わないので改造

改造のポイントとしては日本向けの実用的な受信機にすることにして実験用の多機能受信機は別途

画面

IMG_20230531_204106.jpg

基本操作になるが,ロータリーエンコーダを回すと周波数が変わり,ロータリーエンコーダを押すと周波数の変更桁を変えることができる様にした

機能別操作
機能 ボタン V3.0.8の操作 改造後の操作 備考
周波数変更   ロータリーエンコーダの回転で周波数ステップ分の周波数が上下,サブ時はサブ周波数の上下 ロータリーエンコーダの回転で設定桁の周波数が上下  
周波数ステップ STEP ボタン押下,ロータリーエンコーダの回転で周波数ステップ変更(1/5/9/10/50/100kHz),サブ時はサブ周波数ステップ変更 ロータリーエンコーダのスイッチを押下,回転して周波数の変更桁を設定,再度押下か操作なしで(自動)解除

SW時のみで,MWは9kHz,FMは0.1MHz固定

AGC/アッテネータ AGC ボタン押下,ロータリーエンコーダの回転で変更(AT0/AGC/AT1-36) 変更なし 選択肢が多いので変更なしとした
バンド切替 BAND+ ボタン押下,ロータリーエンコーダの回転でバンド変更 ボタン押下でバンドアップ 前回更新した日本向けバンドと同じ
Soft Mute control BAND- ボタン押下,ロータリーエンコーダの回転で変更 ボタン押下でバンドダウン 機能は未対応
音量 VOL+ ボタン押下,ロータリーエンコーダの回転で音量を調整,長押しで連続可変 ボタン押下で音量アップ,長押しで連続可変  
Automatic Volume Control VOL- ボタン押下,ロータリーエンコーダの回転で変更,長押しで音量ダウン連続可変 ボタン押下で音量ダウン,長押しで連続可変 変更は未対応だが機能はON
帯域変更 BW ボタン押下,ロータリーエンコーダの回転で変更 ボタン押下で順に帯域変更 受信モードで設定帯域が異なる
受信モード MODE ボタン押下,ロータリーエンコーダの回転で変更(AM/LSB/USB) ボタン押下で順にモード変更(AM/LSB/USB) WMはAM,FMバンドはFMのみ
周波数SCAN Rotry ロータリーエンコーダのスイッチでSCAN開始/停止,SCAN周波数の方向は事前のロータリーエンコーダ操作に準じる STEPボタンでSCAN開始/停止,SCAN周波数の方向は事前のロータリーエンコーダ操作に準じる 周波数SCANは周波数変更でも停止
サブ周波数切替 Rotry 受信モードがSSB時(LSB/USB)ロータリーエンコーダのスイッチのトグルで切替 なし(SSBで自動的に使用) STS-20ではBFOのON/OFF
消音 Rotry ロータリーエンコーダのスイッチを長押しでトグル 変更なし  
  • 機能別にボタン押下してロータリーエンコーダで変更が面倒(操作の一貫性はあるが良く使う機能は簡単に操作したい)
  • ロータリーエンコーダのみで周波数変更可能(周波数合わせを重視した操作性)
  • 機能ボタン押下,ロータリーエンコーダの回転による操作は2~3秒操作なしで自動解除(V3.0.8では10秒)
バンド別画面

(MW画面)

IMG_20230531_204009.jpg

(FM画面)

IMG_20230531_203945.jpg

(SW画面(AM))

IMG_20230531_204036.jpg

周波数変更桁の変更

ロータリーエンコーダのスイッチ押下で桁マーク設定時表示が出るのでロータリーエンコーダを回転させ左右に周波数変更桁マークを移動(100kHz~1Hz)

IMG_20230531_204121.jpg

ロータリーエンコーダのスイッチ押下または2~3秒操作なしで桁マーク設定時表示が消える

AGC/アッテネータ

AGCボタンを押下するとAGC/アッテネータ表示部がリバース表示(V3.0.8と同じ)

IMG_20230531_204201.jpg

機能の操作

機能ボタン通りに変更(V1.1.5と同じ)

Sメーター

Sメータの基準でS9を指す状態は30MHz以下の場合コネクタへの入力電圧は100μV,アンテナ端子の入力インピーダンス50Ωとして終端時の電圧は50μVとのこと

ライブラリの値は「0-127 (dBμV)」と記載されていた(μVと思って良いのかな)→ dBなので0-127で良いのでした勘違いしていた

50でS9になるようにしてみた(rssi * 9 / 50)

S9オーバーは+dB10/+dB20/+dB30と示されるが現状は未対応

当初は表示バーをスペースのリバースで表現していたが無信号(S0)状態だと何だか判らないので目印的に文字を表示した(グラフィック表示は処理性能的に最初からやる気なし)

正式な定義ではないがS1毎に+6dBが一般的でS9オーバーはdBμVの場合+20,+40,+60となる(Vの場合は20log,Wは10log)

スプラッシュ

改造版かどうか判断できなくなるので起動時のスプラッシュが「V3.0.8-By PU2CLR」の表示の後「Update Edition X」と変わる

「X」は「A」から始まる版数としている

IMG_20230531_204331.jpgIMG_20230531_204312.jpg

スケッチ

更新は以下の1ファイルのみで,V3.0.8のスケッチに入れ替えてコンパイル

SI473X_ALL_IN_ONE_OLED_RDS_CHINESE_V8.ino(UTF-8N, LF, TAB4)

自分が見易いようにコーディングスタイルを変更(全部ではない)しているが冗長など削除していないので判りにくい部分もあるかも

不具合修正や更に改造したら連絡もらえると幸い,予告なく更新することがあるので了承を

注意事項

kHzより上をメイン周波数(もしくは単に周波数),下をサブ周波数(もしくは単にサブ)と記載

ATA-20の取説やスケッチでは「BFO」と記載されているが厳密には「BFO」ではないのでサブ周波数とした(BFOはSSBを復調するためのキャリア生成器でデジタルでは使用しない)

メイン周波数の変更時は一時的に受信周波数なしになるためか「ザー」と音がする(SDRでも発生することだが周波数値を変更する際のArduino・Si4732間の通信時間が関係するのかと思われる)

周波数を連続的に扱うためサブ周波数を「0 - 999Hz」で使用し1kHz超で基準周波数をアップ(逆はマイナス時にダウン)するように対応したところ1kHzの切れ目で周波数が連続しないことに気付く

どうやら周波数のズレがあるのだろうと思われるが厳密に調査はしていない(例えばVFOで調べてはいない)

※)基準周波数が7101kHzと基準周波数7100kHz+サブ(+1000Hz)は同じ(周波数を受信)ではないということ

影響するのはSWL(アマチュア無線局の受信)のみで,通常はkHz単位の使用すると想定し(-500 - +500Hz)で切り替えるようにした

同様に500Hz単位でも連続しないようだ

上記の対応変更によりSSBからAMに切り替えた際に1kHzの間引きが発生する場合がある

また周波数の終了指定端で問題あるかも(未確認および対応しない)

Sメーター対応は上記(S9オーバーは未対応)

LWバンドはなし

RDSは対応未

Automatic Volume Control は設定変更は未対応だがSSBなどの音量が少ないので機能はONにしている

ロータリーエンコーダの回転方向が当方の基板の場合のみか逆になっていたので回転方向の判定を修正している(648~696行あたり)

// Use Rotary.h and Rotary.cpp implementation to process encoder via interrupt
void rotaryEncoder()
{
// rotary encoder events
uint8_t encoderStatus = encoder.process();
if(encoderStatus) {
if(encoderStatus == DIR_CCW) { //was DIR_CW
encoderCount = 1;
} else {
encoderCount = -1;
}
}
}

FMで周波数SCANを途中で終了させると,稀に変更できない(SCAN単位である)10kHz位置で止まることがある(最後に補正しているのに)

周波数SCANはMW:9kHz, SW:1kHz, FM:10kHzの固定

拙者は縦横が基板と同じの最小サイズで厚みは30㎜の筐体で使用中

IMG_20230602_104011.jpg

ページ移動

コメント

ボブ

ATS-20に関する記事,参考にさせていただいております.ありがとうございます.
一つ疑問なのですが,ATS-20に使われているArduino NANOの電源は5Vが必要だと思ううのですが,なぜ3.3Vでも動かすことができるのでしょうか?8MHzで動作するように設定された物を使用しているのでしょうか?もしご存じでしたら,お教えいただけるとありがたいです.よろしくお願いします.

  • 2024/04/24 09:14:57

admin

ご質問の件ですが判らないですね
私が所有しているATS-20のArduino Nanoには5Vが印加されてます
しかしPU2CLRさんの回路図を見ると3.3Vで16MHzになってのがあるようです
もしかするとSMDパッケージだと3.3Vでも16MHz動作するのかもしれませんが仕様にはないようです

  • 2024/04/24 15:53:04

ボブ

ご回答いただき,ありがとうございました.やはり,16MHzを3.3Vで動作させているのですね.16MHzの場合,電源は4.5~5.5Vが必要なはずのに.....謎は深まるばかりです.

  • 2024/04/25 08:45:25

admin

クロックを分周操作すれば16MHz構成でも8MHz動作になるようです
clock_prescale_set(clock_div_2)
これを使用してるのかもしれまんが,ブート時は16MHzなので起動するのかとヒューズビットは変更されてないのでタイマー関係はどうなんでしょうね

  • 2024/04/25 20:41:13

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed