無線機の製作記録の全てを公開してます。 https://sites.google.com/view/ja2gqpから必要なファイルをダウンロードできます。 このBlogは、詳細な説明は一切行っておらず、ある程度のスキルが要求されます。 質問に応じますが、カスタマイズは対応しません。尚、コメントは誰でも出来る様に変更しました。
2013年5月25日土曜日
VXO coil
可変VXO coilである。50Mhz水晶の時、VXO coil 10uH前後が良い。従来、カットアンドトライで固定インダクターを周波数カウンターを眺めながらの交換作業の為、煩雑であった。今回、調整作業の簡略化のため、可変インダクターをテストした。コアは、サトー電気製 鼓10sボビン小大タイプである。ベースとコアをホットボンドで固定し、UEW0.1φを巻いた。LCメータで測定した結果、16t 11.44uH~6.44uH。18t 13.0uH~7.3uH。20t 16.0uH~9.4uHであった。測定結果から16t~20tが良いと思われる。コアの個体差を考慮し、18tとした。
評価用回路である。50Mhz VXO回路で、50.75Mhz水晶と組合せた時、50.60Mhz~50.71Mhz可変する事ができ、満足できる結果となった。
2013年4月17日水曜日
AVR VI_meter
ATmega88を使った電圧計/電流計である。試験用電源を考慮し、測定範囲 電圧max27.5V、電流 max2.27Aとした。電圧・電流とも、OPアンプに接続した抵抗で11倍にスケーリングしている。ゲインを固定とした為、10kと100kは、金属皮膜抵抗がベターである。
回路図を示す。電圧と電流の取込み位置を含めてた全体のイメージを書いてある。
プリントパターン 38×81
' AVR VI_meter(BASCOM AVR)
' 2013.04.13 JA2GQP
'
'
' Vref=2.5V
' shunt=0.1 OHM
'
'Update
' 2013.06.09 Average processing voltage and current
' 2013.10.24 Voltage over flow bug FIX
'
'**********************************************************
$regfile = "m88adef.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2
Config Lcdpin = Pin , Db6 = Portd.1 , Db7 = Portd.0
Config Lcdpin = Pin , E = Portd.4 , Rs = Portd.5
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Aref
Dim A As Word
Dim B As Dword
Dim V1 As Single
Dim V2 As String * 4
Dim Cnt As Byte
Cursor Off
Cls
Locate 1 , 10
Lcd "JA2GQP"
Start Adc
Do
A = 0
B = 0 'Measurement Voltage
For Cnt = 1 To 100
A = Getadc(5)
B = A + B
Next Cnt
B = B / 100
V1 = B * 0.02685546875 'A*2.5V/1024*11
V2 = Fusing(v1 , "#.##")
V2 = Format(v2 , " 000")
Locate 1 , 2
Lcd V2 ; "V"
A = 0
B = 0 'Mesurement Current
For Cnt = 1 To 100
A = Getadc(4)
B = A + B
Next Cnt
B = B / 100
V1 = B * 0.002219460227 'A*2.5V/1024/11*10
V2 = Fusing(v1 , "#.##")
V2 = Format(v2 , " 000")
Locate 2 , 2
Lcd V2 ; "A"
Wait 1
Loop
End
回路図を示す。電圧と電流の取込み位置を含めてた全体のイメージを書いてある。
プリントパターン 38×81
BASOM AVR Program
'**********************************************************
' AVR VI_meter(BASCOM AVR)
' 2013.04.13 JA2GQP
'
'
' Vref=2.5V
' shunt=0.1 OHM
'
'Update
' 2013.06.09 Average processing voltage and current
' 2013.10.24 Voltage over flow bug FIX
'
'**********************************************************
$regfile = "m88adef.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.2
Config Lcdpin = Pin , Db6 = Portd.1 , Db7 = Portd.0
Config Lcdpin = Pin , E = Portd.4 , Rs = Portd.5
Config Lcd = 16 * 2
Config Adc = Single , Prescaler = Auto , Reference = Aref
Dim A As Word
Dim B As Dword
Dim V1 As Single
Dim V2 As String * 4
Dim Cnt As Byte
Cursor Off
Cls
Locate 1 , 10
Lcd "JA2GQP"
Start Adc
Do
A = 0
B = 0 'Measurement Voltage
For Cnt = 1 To 100
A = Getadc(5)
B = A + B
Next Cnt
B = B / 100
V1 = B * 0.02685546875 'A*2.5V/1024*11
V2 = Fusing(v1 , "#.##")
V2 = Format(v2 , " 000")
Locate 1 , 2
Lcd V2 ; "V"
A = 0
B = 0 'Mesurement Current
For Cnt = 1 To 100
A = Getadc(4)
B = A + B
Next Cnt
B = B / 100
V1 = B * 0.002219460227 'A*2.5V/1024/11*10
V2 = Fusing(v1 , "#.##")
V2 = Format(v2 , " 000")
Locate 2 , 2
Lcd V2 ; "A"
Wait 1
Loop
End
2013年3月2日土曜日
50Mhz M57735 Linear AMP
2013年2月27日水曜日
50Mhz RD16HHF1 Single AMP

RD16HHF1を使った50Mhzリニアアンプである。 当初RD06HVF1で設計したが、AM変調のアンプとして使うと、キャリア出力1.5W程度である。この為、パワー倍増を目指しデバイス交換で3.5W得た。単純にデバイスを交換したのみではミスマッチとなる。再シュミレーションを行い定数変更した。50Mhzに於けるRD16HHF1のR+jxは、入力12.50-j26.43出力19.90-j27.05である。入力側のみLCマッチング回路を使用し、出力側はT型フィルタでのマッチングを期待し、LCマッチング回路なしとした。入力側LCマッチング回路定数は、153nHと110pFである。このアンプは、NFBにより安定動作している。写真には冗長な回路があるが、開発当時、回路安定化の為に付加したものである。AM変調時、数100mW入力で3.5W出力であった。
2013年2月1日金曜日
50Mhz AM LA1600シングルスーパー受信機
2013年1月17日木曜日
TC9256の他周波数への応用
プログラムを他周波数へ応用する場合の要点。
1.PLL ICへのコマンド(Main)
PLL制御範囲、基準周波数(Step)、TC9256の基準クロック(水晶発振子の周波数)を設定しなければならない。Stepは、PLLループ時間、CN(キャリアノイズ)などに影響するので特に注意。他の条件で使う時は、TC9256データシートを参照されたい。
Pll_cmd b7、b6、b5、b4、b3、b2、b1、b0
基準周波数(Step) 5khz b7、b6、b5、b4=0、1、1、0
10khz b7、b6、b5、b4=0、1、0、1
12.5khz b7、b6、b5、b4=1、1、0、1
25khz b7、b6、b5、b4=0、0、1、1
分周方式設定 パルススワロー方式 HF(1-40Mhz) b3、b2=0、1
FML(30-150Mhz) b3、b2=1、0
水晶発振子 b1、b0
4.5Mhz b1、b0=1、0
7.2Mhz b1、b0=0、1
例1.基準周波数 5khz、HF(1-40Mhz範囲内)、水晶発振子 4.5Mhz
Pll_cmd=&B01100110
例2.基準周波数 10khz、FML(30-150Mhz範囲内)、水晶発振子 4.5Mhz
Pll_cmd=&B01011010
2.メモリーチャンネル(Main)
VFOチャンネル(0及び1)以外に、メモリーチャンネル(1ch)がある。メモリーチャンネルはプログラムした値であり、ソースコードを書替ない限り、変更できない。EEPメモリーの初期化を行ってない為、VFO初期値として有用である。
Frq_man=(送信周波数-IF周波数)/基準周波数
IF周波数は、プリミックス方式の時、混合周波数の意味。
例1.送信周波数 50.6Mhz、IF周波数 10.7Mhz、基準周波数 5khz
Frq_man=7980 ’(50.6Mhz-10.7Mhz)/5khz
例2.送信周波数 28.315Mhz、IF周波数 455khz、基準周波数 5khz
Frq_man=5572 ’(28.315Mhz-455khz)/5khz
3.VFO範囲の制限(Enc_sub)
目的周波数以外の帯域への制限をすべきである。この為の範囲設定を行う。
例. 下限周波数 50.1Mhz、IF周波数 10.7Mhz、基準周波数 5khz
If Pll_dat <= 7880 Then ’(50.1Mhz-10.7Mhz)/5khz
Pll_dat = 7881 ’50.105Mhzを下限周波数に設定
End If
例. 上限周波数 50.9Mhz、IF周波数 10.7Mhz、基準周波数 5khz
If Pll_dat >= 8040 Then ’(50.9Mhz-10.7Mhz)/5khz
Pll_dat = 8039 ’50.895Mhzを上限周波数に設定
End If
4.表示データの修正(Lcd_sub)
PLL周波数計算
例1.基準周波数 5khz
Frq_wrk=Pll_dat*5
例2.基準周波数 10khz
Frq_wrk=Pll_dat*10
表示周波数計算
例1.IF周波数 455khz
frq_wrk=Frq_wrk+455
例2.IF周波数 10.7Mhz
frq_wrk=Frq_wrk+10700
LCD表示部
LCDに表示する為の書式を設定する。
例.メガ表示2桁.キロ表示3桁
Dsp_frq=Format(dsp_frq,”00.000”)
1.PLL ICへのコマンド(Main)
PLL制御範囲、基準周波数(Step)、TC9256の基準クロック(水晶発振子の周波数)を設定しなければならない。Stepは、PLLループ時間、CN(キャリアノイズ)などに影響するので特に注意。他の条件で使う時は、TC9256データシートを参照されたい。
Pll_cmd b7、b6、b5、b4、b3、b2、b1、b0
基準周波数(Step) 5khz b7、b6、b5、b4=0、1、1、0
10khz b7、b6、b5、b4=0、1、0、1
12.5khz b7、b6、b5、b4=1、1、0、1
25khz b7、b6、b5、b4=0、0、1、1
分周方式設定 パルススワロー方式 HF(1-40Mhz) b3、b2=0、1
FML(30-150Mhz) b3、b2=1、0
水晶発振子 b1、b0
4.5Mhz b1、b0=1、0
7.2Mhz b1、b0=0、1
例1.基準周波数 5khz、HF(1-40Mhz範囲内)、水晶発振子 4.5Mhz
Pll_cmd=&B01100110
例2.基準周波数 10khz、FML(30-150Mhz範囲内)、水晶発振子 4.5Mhz
Pll_cmd=&B01011010
2.メモリーチャンネル(Main)
VFOチャンネル(0及び1)以外に、メモリーチャンネル(1ch)がある。メモリーチャンネルはプログラムした値であり、ソースコードを書替ない限り、変更できない。EEPメモリーの初期化を行ってない為、VFO初期値として有用である。
Frq_man=(送信周波数-IF周波数)/基準周波数
IF周波数は、プリミックス方式の時、混合周波数の意味。
例1.送信周波数 50.6Mhz、IF周波数 10.7Mhz、基準周波数 5khz
Frq_man=7980 ’(50.6Mhz-10.7Mhz)/5khz
例2.送信周波数 28.315Mhz、IF周波数 455khz、基準周波数 5khz
Frq_man=5572 ’(28.315Mhz-455khz)/5khz
3.VFO範囲の制限(Enc_sub)
目的周波数以外の帯域への制限をすべきである。この為の範囲設定を行う。
例. 下限周波数 50.1Mhz、IF周波数 10.7Mhz、基準周波数 5khz
If Pll_dat <= 7880 Then ’(50.1Mhz-10.7Mhz)/5khz
Pll_dat = 7881 ’50.105Mhzを下限周波数に設定
End If
例. 上限周波数 50.9Mhz、IF周波数 10.7Mhz、基準周波数 5khz
If Pll_dat >= 8040 Then ’(50.9Mhz-10.7Mhz)/5khz
Pll_dat = 8039 ’50.895Mhzを上限周波数に設定
End If
4.表示データの修正(Lcd_sub)
PLL周波数計算
例1.基準周波数 5khz
Frq_wrk=Pll_dat*5
例2.基準周波数 10khz
Frq_wrk=Pll_dat*10
表示周波数計算
例1.IF周波数 455khz
frq_wrk=Frq_wrk+455
例2.IF周波数 10.7Mhz
frq_wrk=Frq_wrk+10700
LCD表示部
LCDに表示する為の書式を設定する。
例.メガ表示2桁.キロ表示3桁
Dsp_frq=Format(dsp_frq,”00.000”)
2012年12月31日月曜日
28Mhz AM TA7358 PLL control TRX
28Mhz AM TRXで、PLL TC9256でコントロールした物です。既に公開の50Mhz AM TA7358 PLL control TRXの28Mhz版です。AM変調時のキャリア出力 150mW(無変調時の最大キャリア 600mW)で、特に違いは有りません。T型フィルタ(LPF)のコンデンサ容量 設計値52pF
TC9256 PLL control program
50Mhz control programと異なる点は、周波数制限、PLLへのコントロールコマンド、Debounceの値である。Debounce変更理由は、誤表示した為である。コンパイラー自体のバグと思われるが、現在の環境(BASCOM 2.0.7.5.003 DEMO Version)では、OKとした。
'********************************************************
'28Mhz AM Tranceiver TC9256 PLL program
' Single super version(IF 455khz) 5khz step
' Frequency 28.215Mhz to 28.355Mhz Limitted!
' 2012/12/25
' BASCOM AVR JA2GQP
'********************************************************
'
$regfile = "attiny2313.dat"
$crystal = 800000
Declare Sub Enc_sub 'define subrutine
Declare Sub Pll_sub
Declare Sub Lcd_sub
Declare Sub Vfo_sub
Declare Sub Tx_sub
Declare Sub Mem_sub
'define memory
Dim Pll_adr As Byte 'PLL command adress
Dim Pll_dat As Word ' freqency data
Dim Pll_cmd As Byte ' command
Dim Frq_wrk As Word 'freqency
Dim Dsp_frq As String * 6 'Display frequency
Dim Frq_man As Word 'main channel
Dim Flg As Byte 'flag
Dim Flg_tx As Byte 'TX flag
Dim Frqa_eep As Eram Word 'power off frequency A
Dim Frqb_eep As Eram Word 'power off frequency B
Dim Flg_eep As Eram Byte
'--------------
'Main roution
'--------------
Main:
Disable Interrupts
Config Lcdpin = Pin , Db7 = Portb.0 , Db6 = Portb.1
Config Lcdpin = Pin , Db5 = Portb.2 , Db4 = Portb.3
Config Lcdpin = Pin , E = Portb.4 , Rs = Portb.5
Config Lcd = 16 * 2
Config Porta.1 = Output 'Period
'None,D6=TX,D5=VFO,D4=ENC B,D3=ENC A,D2=Main ch,D1=Clock,D0=Data
Config Portd = &B00000011
'None,Input=D6,D5,D4,D3,D2,Output=D0,D1
Portd = &B01111100 'pull up input pin
Config Debounce = 2
'PLL initial data set
Pll_adr = &B11010000 'pll CMD address
Pll_cmd = &B01100110 'Xtal 4.5Mhz,5khz step,HF
Frq_man = 5572 '(28.315Mhz-455khz)/5khz
Flg_tx = 0 'initial TX flag
Flg = Flg_eep 'Restore memory
If Flg = 0 Then
Pll_dat = Frqa_eep
Else
Pll_dat = Frqb_eep
End If
Cursor Off
Cls
Call Pll_sub 'Dummy write
Call Pll_sub 'PLL write
Call Lcd_sub 'LCD write
Enable Interrupts
Do
If Flg_tx = 0 Then 'TX?
Debounce Pind.2 , 0 , Mem_sub , Sub ' no,recive!
Debounce Pind.3 , 0 , Enc_sub , Sub
Debounce Pind.5 , 0 , Vfo_sub , Sub
Debounce Pind.6 , 0 , Tx_sub , Sub
Else
If Pind.6 = 1 Then 'Send SW off?
Flg_tx = 0
Call Pll_sub
Locate 2 , 7
Lcd " "
End If
End If
Loop
End
'-----------------------------
'Memory channel set
'-----------------------------
Sub Mem_sub
Pll_dat = Frq_man
Call Pll_sub
Call Lcd_sub
If Flg = 0then
Frqa_eep = Pll_dat
Else
Frqb_eep = Pll_dat
End If
While Pind.2 = 0
Wend
End Sub
'-----------------------------
'Encoder counts and PLL set
'-----------------------------
Sub Enc_sub
If Pind.4 = 1 Then 'Up
Pll_dat = Pll_dat + 1
Else 'down
Pll_dat = Pll_dat - 1
End If
If Pll_dat <= 5551 Then 'pll_data <= (28.210Mhz-455khz)/5khz ?
Pll_dat = 5552
End If
If Pll_dat >= 5581 Then 'pll_data >= (28.360Mhz-455khz)/5khz ?
Pll_dat = 5580
End If
Call Pll_sub
Call Lcd_sub
If Flg = 0then
Frqa_eep = Pll_dat
Else
Frqb_eep = Pll_dat
End If
End Sub
'-----------------------------
'TC9256 Data write
'-----------------------------
Sub Pll_sub
Set Portd.0 'Data is High
Set Portd.1 'Clock is High
Set Porta.1 'period is High
Reset Porta.1 'period is Low
Shiftout Portd.0 , Portd.1 , Pll_adr , 2 , 8 , 1 'ADDRESS set
Set Porta.1
Shiftout Portd.0 , Portd.1 , Pll_dat , 2 , 16 , 1 'PLL data set
Shiftout Portd.0 , Portd.1 , Pll_cmd , 2 , 8 , 1
Reset Porta.1
End Sub
'-----------------------------
'LCD Data write
'-----------------------------
Sub Lcd_sub
Cls
Locate 1 , 1
Frq_wrk = Pll_dat * 5
Frq_wrk = Frq_wrk + 455 'pll_dat+455khz
Dsp_frq = Str(frq_wrk)
Dsp_frq = Format(dsp_frq , "00.000")
Lcd "FREQ:" ; Dsp_frq ; "Mhz"
Locate 2 , 1
Lcd "VFO:" ; Flg
Locate 2 , 7
Lcd " "
Locate 2 , 10
Lcd "JA2GQP"
End Sub
'-----------------------------
'VFO
'-----------------------------
Sub Vfo_sub
If Flg = 0then
Flg = 1
Pll_dat = Frqb_eep
Else
Flg = 0
Pll_dat = Frqa_eep
End If
Flg_eep = Flg
Call Pll_sub
Call Lcd_sub
While Pind.5 = 0
Wend
End Sub
'-----------------------------
'TX
'-----------------------------
Sub Tx_sub
If Flg_tx = 0 Then
Flg_tx = 1
Frq_wrk = Pll_dat
Pll_dat = Pll_dat + 91 'pll_dat+455khz
Call Pll_sub 'PLL data write
Pll_dat = Frq_wrk
Locate 2 , 7
Lcd "TX"
End If
End Sub
登録:
コメント (Atom)









