2400MHz レピーター装置整備中 その2

もうすぐ完成ですよ

f:id:JP3MFK:20171007090644j:plain

受信にアイソレーターはフィルターの特性を強力に補完します。

プロの機材のおこぼれは良く効きます。

 

マチュア的な事に強固な主張する人より、しおらしい真面目な方のお話の方が信頼ありますね。

2400MHz レピーター装置整備中

2400MHzのレピーター装置整備中

f:id:JP3MFK:20170724045542j:plain

近傍スプリアス調整には気を使います。

 

古い1200MHzのレピータが親機を使っているのですがコレ自体の高周波品質どうなん?

て思うことがあります。

f:id:JP3MFK:20170716230130j:plain

コレ、トラップが良く効きます。

VOIP運用の物言いもこれでトラップしたいですね。

 

ADF4350 ボードをPICでコントーロールして局発に

中華通販サイトを見ていたら面白い高周波基板を発見

f:id:JP3MFK:20170429211949j:plain

おーお値段もお手頃。コントロール信号を与えるだけで任意の周波数を出力できそうで

数枚注文して、ほったらかしにしていました。

最近になって、クラブで運用している2.4GHzレピータの局発(1134MHz)

ノイズ不良の改修が来ましたので早速この基板を使おうとなったわけです。

 

 

f:id:JP3MFK:20170429213249g:plain

まず、どんなデータを入れたらいいのかなとDATAシート見てたら4バイト区切りの

レジスターが6個もあり、内容と目的周波数の設定にどう対応したらいいのか

わからず!!

と思ってたら、アナデバのサイトにそれらを支援してくれるソフトがあった!ので

早速インストール

f:id:JP3MFK:20170429213905g:plain

瞬時に、目的周波数に対しての6個のレジスタ入力値を表示してくれた。

出力の強さやなんかも設定できるようです。

ただ、

 

f:id:JP3MFK:20170429214623g:plain

PLL回路の設計でいつも苦労する位相比較から出る信号のLPFの定数をどうするかで

基板の回路図がない事やアナデバのソフトにそれらの値をセットする所が不明で

どうするか悩んでいたのですが、まーとりあえずPICでデータを入れてみようになり

 

 

f:id:JP3MFK:20170429215201g:plain

PIC12F683で制御するプログラムを書いてみました。

 

f:id:JP3MFK:20170430095137j:plain

あっさり

f:id:JP3MFK:20170429215520g:plain

発振しました

AR5000でFMモニターでは1133.99MHz ノイズも目立ったものがないので

CNもよく、この基板の位相比較のLPFとセットしたデータ値は問題なさそうです。

周波数のずれは基板にマウントされている基準25MHzの水晶の精度だと

思います。手持ちのTCXO12.8MHzでも交換してみようかと思います。

基準の周波数が変わってもアナデバのソフトで対応できますので問題ありません。

 

最後にCのソース貼っときます。下手なものかもしれませんが参考になればと思います 

(メインルーチンで同じことを2回やってますが1回ではダメだったです。 誰か理由を教えてください)

 



#include <stdio.h>
#include <stdlib.h>
#include <xc.h>
#include <pic.h>
#include <pic12f683.h>
/*
 *
 */
// CONFIG
#pragma config FOSC = INTOSCIO  // Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA4/OSC2/CLKOUT pin, I/O function on RA5/OSC1/CLKIN)
#pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = ON       // Power-up Timer Enable bit (PWRT enabled)
#pragma config MCLRE = OFF      // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#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 BOREN = ON       // Brown Out Detect (BOR enabled)
#pragma config IESO = ON        // Internal External Switchover bit (Internal External Switchover mode is enabled)
#pragma config FCMEN = ON       // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.


#define _XTAL_FREQ  8000000                                //  __delay用  8MHz
#define __delay_us(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000000.0)))      //  __delay用
#define __delay_ms(x) _delay((unsigned long)((x)*(_XTAL_FREQ/4000.0)))      //  __delay用
#define  LEpin          GP0  //out
#define  DATApin        GP1 //out
#define  CLKpin         GP2 //out
#define                 GP3 //out
#define                 GP5 //out


void init(){
 OPTION_REG = 0b00001111;
 OSCCON = 0b1110000; // 内蔵OSC 8MHz
 ANSEL = 0b00000000; // デジタル
 TRISIO = 0b000000;   //IO方向設定
 GPIO = 0b00000000;  // 0b00000000 = 0
 WPU = 0b00000000;  // プルアップなし
 TMR0 = 0x00;
 T0IE = 0;     // TMR0割り込み許可は=1 割り込み無し

}

void Delay_mS(unsigned int num){
     int i ;
     // で指定した回数だけ繰り返す
     for (i=0 ; i < num ; i++) {
          __delay_ms(1) ;     // 1msプログラムの一時停止
     }
}
void Delay_uS(unsigned int num){
     int i ;
     // で指定した回数だけ繰り返す
     for (i=0 ; i < num ; i++) {
          __delay_us(1) ;     // 1msプログラムの一時停止
     }
}





void data1(){
    GPIO = GPIO | 0b00000010;
    Delay_uS(1);
    GPIO = GPIO | 0b00000110;
    Delay_uS(1);
    GPIO = GPIO & 0b11111001;
    Delay_uS(1);     
}
void data0(){
    GPIO = GPIO | 0b00000000;
    Delay_uS(1);
    GPIO = GPIO | 0b00000100;
    Delay_uS(1);
    GPIO = GPIO & 0b11111001;
    Delay_uS(1);  
}
void LE(){
    Delay_uS(10);  
    GPIO = GPIO | 0b00000001;
    Delay_uS(1);   
    GPIO = GPIO & 0b11111110;
    Delay_uS(10);
    
}




int set32(unsigned long PLLdata){
    unsigned long j=0;


    for( char a = 0; a<32; ){
       
     j = PLLdata & 0x80000000;        
         
         if(j == 0x80000000) {
            data1();
            }
        else{
            data0();
            }
     PLLdata = PLLdata <<1;
     a++;      
    }

   LE();
    
 }

void main() {
    init();
    
    set32(0x02D0090);    //R0
    set32(0x80080C9);    //R1           
    set32(0x0004E42);    //R2
    set32(0x00004B3);    //R3
    set32(0x09C803C);    //R4
    set32(0x0580005);    //R5
 
    set32(0x02D0090);    //R0
    set32(0x80080C9);    //R1           
    set32(0x0004E42);    //R2
    set32(0x00004B3);    //R3
    set32(0x09C803C);    //R4
    set32(0x0580005);    //R5
                       
    while(1){
                                                         //halt
    }

}

 

 

 

Si5351A を水晶代わりにする その4 最終回

 

えー今回は、f:id:JP3MFK:20170306015449j:plain

依頼者に水晶を用意してもらいました!!

 

 

f:id:JP3MFK:20170306043446j:plain

創造と挫折を味わった「Si5351A を水晶代わりにする」でした。

終わり

新スプリアス制度

世界無線通信会議で新しいスプリアス規制が日本に来たのですが

これを利用して日本のお役所とメーカーの狙いは

f:id:JP3MFK:20170126203103j:plain

安い中華無線機の排除も大きな意味で入っていると思う。

自作派にとっては、迷惑千万。

 

どうなるのでしょうか?

Si5351A を水晶代わりにする その3

少しタイトル変えました。

測定環境を変えてみました。

f:id:JP3MFK:20170117095639j:plain

アンリツのスペアナで・・・・ GigaSTと変わって分解がよく細かく見えますが

酷さがよくわかります。

 

f:id:JP3MFK:20170117095850j:plain

これは、FT1D。流石にきれい・・・

 

si5351a自体が、矩形波出力なので送信てい倍基板に注入する前にLPFを

入れたのですが

f:id:JP3MFK:20170117095750j:plain

良い方向に変化していることが見えませんでした。

 

素直に、水晶を頼むか悩むところです。

 

Si5351A その2

なんとか希望の周波数に近づけられるようなりました。

レピータの原発水晶の値が目的の6倍なんで、どう設定しても割り切れない

数値になります。

 

f:id:JP3MFK:20170116100817j:plain

なんとか送受の水晶の所にSi5351Aの発振を注入!

受信=フロントエンドなど調整で若干オリジナルより感度が悪い程度

送信=(下の図)

f:id:JP3MFK:20170115222654p:plain

酷いスプリアス!

こりゃだめだ!!