TS-2000SDX用基準発振器の製作 15.600000MHz
実装すると問題ありです 検討中^^;
一台で1.9MHzから1200MHzまでカバーするトランシーバーはいいですね。
この無線機のノイズリダクションのNR2が凄い。
CW運用に最高のパフォーマンスを提供してくれています。
しかし、VUHFでのFM運用なら問題ありませんが、144MHzでのGT65やFT8運用、430MHz、1200MHzなどでのCW・SSBでは周波数確度が心配なこの頃です。
そこで、外部のGPSでロックした発振器やルビジューム発振器で精度を高める基準発振器を製作しました。
外部からの入力で自動切り替えをします。
内部発振器TCVCXOはIQXT-220-2を使用しています。
ルビジューム発振器で制御(ルビジューム発振器の精度になります) 内部発振器の時(0.5Hz以内に収まるようです)
CE3回路図 水魚堂の回路図エディタで作成しています
MB3パターン図 Minimal Board Editor(MBE)で作成しています
プログラム
/* * AD9851 DDS 1point oscillator * File: dds1posc.c * Author: ja7eif * * Created on 2023/04/23, 10:31 * Version 1.00 * Int OSC 4MHz * DDSへの送信フォーマットは下記順序 * W0 Freq bit0(LSB) * W1 Freq bit1 * ------------ * W31 Freq bit31(MSB) * W32 x6 REFCLK Multiplier Enable * W33 0 * W34 Power Down at 1 * W35 Phase bit0(LSB) 360度/32で指定 * -------------- * W39 Phase bit4(MSB) * * クロックは10MHz×6=60MHz * 設定値=(2の32乗(4,294,967,296)÷クロック周波数(60000000)x出力周波数 → 71.58278827x出力周波数 * 出力周波数は15.600MHzなので設定値は1116691497 */ // PIC12F629 Configuration Bit Settings // 'C' source line config statements // CONFIG #pragma config FOSC = INTRCIO // Oscillator Selection bits (INTOSC oscillator: I/O function on GP4/OSC2/CLKOUT pin, I/O function on GP5/OSC1/CLKIN) #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled) #pragma config PWRTE = OFF // Power-Up Timer Enable bit (PWRT disabled) #pragma config MCLRE = OFF // GP3/MCLR pin function select (GP3/MCLR pin function is digital I/O, MCLR internally tied to VDD) #pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD disabled) #pragma config CP = OFF // Code Protection bit (Program Memory code protection is disabled) #pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled) // #pragma config statements should precede project file includes. // Use project enums instead of #define for ON and OFF. #include <xc.h> #include <stdio.h> #include <stdlib.h> #define _XTAL_FREQ 4000000 #define _RESET GP5 #define W_CLK GP0 #define FQ_UD GP1 #define SDATA GP4 #define TP GP2 unsigned long Frequency = 1116691497; //15600000Hz void serial_out(unsigned long Freq); void main(void) { __delay_ms(2000); TRISIO = 0; OPTION_REG = 0; W_CLK = 0; FQ_UD = 0; SDATA = 0; __delay_us(1); // RESET _RESET = 1; __delay_us(1); _RESET = 0; W_CLK = 1; //シリアルモードに変換 W_CLK = 0; FQ_UD = 1; //シリアルモードイネーブル FQ_UD = 0; serial_out(Frequency); SLEEP(); } /************************************************************** シリアル送信関数 **************************************************************/ void serial_out(unsigned long Freq) { int i, j; unsigned int w0 = 1; // x6 // 周波数値32ビット出力する for(i=0; i<4; i++) { for(j=0; j<8; j++){ SDATA = Freq & 1; W_CLK = 1; W_CLK = 0; Freq = Freq >> 1; } } // 設定制御8ビット出力 for(j=0; j<8; j++){ SDATA = w0 & 1; W_CLK = 1; W_CLK = 0; w0 = w0 >> 1; } FQ_UD = 1; //周波数設定 FQ_UD = 0; }