2013年7月12日金曜日

AD9834 DDS VFO PCB

AD9834 DDS VFO(7Mhz IF=10Mhz Upper Heterodyne VFO)。先に紹介したユニバーサル基板をプリントパターン化したのもである。全般的に見直し、バッファアンプ追加、オシレター変更、エンコーダーレスポンス改善を行った。DDSチップは、変換基板を使って容易なものに仕上げた。オシレターは、ハーフサイズも実装可能である。  
LCDを外した実装基板。レギュレータに小型フィンを付けているが、発熱量が多いので大型化したい所である。オシレターは、8pinタイプも実装可能。  
基板サイズ 71×57。  



回路図。オシレターを容易に入手できる50Mhzに変更。バッファアンプを追加。DDSコントロールPINを基板パターン引き回しの都合で変更。 











'********************************************************
'AD9834 DDS VFO program
'
'     7.000Mhz to 7.200Mhz Limitted!
'     (VFO frequency = IF frequency - Frequency)
'                                       2013/07/05
'                                           JA2GQP
' BASCOM AVR 2.0.7.5(DEMO version) Compiled
'--------------------------------------------------------
'  Function
'
'     1.Upper heterodyne
'     2.RIT operation(-10khz to +10khz)
'     3.STEP(10000,1000,100,10)
'     4.Memory operation is push RIT
'       (Frequency and Step)
'     5. Protection operation at the time of transmission
'--------------------------------------------------------
'  Modification
'     1.Oscillator 67.108864Mhz -> 50.000Mhz
'     2.Clock 8Mhz -> 0.8Mhz(Encoder response improvement)
'     3.DDS conrol PIN assign
'********************************************************
'
$regfile = "m88adef.dat"
$crystal = 800000                       '0.8Mhz clock
'--- config port ---
Config Portb = &B00000000               '0=TX,1-6=none
Config Portd = &B00001111               '0=FSYNC,1=SCLK,2=SDATA,3=none
                                         '4=ENC B,5=ENC A,6=STEP,7=RIT
'--- port pullup ---
Portb = &B11111111                      'All
Portd = &B11110000                      'RIT,STEP,ENC A,ENC B
'--- debounce set ---
Config Debounce = 1
'---LCD port assign ---
Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1
Config Lcdpin = Pin , Db5 = Portc.2 , Db4 = Portc.3
Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
'--- constant data ---
Const If_frq = 9999600                  'IF frequency
Const Lw_frq = 7000000                  'Lower limit operation frequency
Const Hi_frq = 7200000                  'Upper limit operation frequency
Const Def_frq = 7050000                 'Operation frequency(initial)
Const Lw_vfo = If_frq - Lw_frq          'VFO lower limit
Const Hi_vfo = If_frq - Hi_frq          'VFO upper limit
Const Def_vfo = If_frq - Def_frq        'VFO operation frequency(initial)
Const Enc_dir = -1                      '1:CW up count,-1:CW down count
Const Lw_rit = -10000                   'RIT lower limit
Const Hi_rit = 10000                    'RIT upper limit
Const Scal = 5.36870912                 '2^28/50000000 (X'tal 50.000Mhz)
'--- define subrutine ---
Declare Sub Enc_sub                     'Encorder
Declare Sub Dds_sub                     'DDS
Declare Sub Lcd_sub                     'LCD
Declare Sub Stp_sub                     'STEP
Declare Sub Rit_sub                     'RIT
Declare Sub Rx_sub                      'RX
Declare Sub Tx_sub                      'TX
'--- define memory ---
Dim Vfo_dat As Long                     'VFO freqency data
Dim Dds_dat As Long                     'DDS frequency data
Dim Str_frq As String * 10              'String frequency
Dim Dsp_frq As String * 10              'Display frequency
Dim Sng_wrk As Single                   'main channel
Dim Lng_wk1 As Long                     'Long work1
Dim Lng_wk2 As Long                     'Long work2
Dim Wrd_wk1 As Word                     'Word work1
Dim Wrd_wk2 As Word                     'Word work2
Dim Wrd_wk3 As Word                     'Word work3
Dim Enc_stp As Integer                  'Encorder step
Dim Rit_dat As Integer                  'RIT data
Dim Int_wrk As Integer                  'Integer work
Dim Flg_rit As Byte                     'RIT flag
Dim Flg_tx As Byte                      'TX flag
Dim Frq_eep As Eram Long                'power off frequency A
Dim Stp_eep As Eram Integer             'EEP STEP data
Dim Flg_enc As Byte                     'Encorder dir flag
'--------------
'Main roution
'--------------
Main:
   Flg_tx = 0
   Flg_rit = 0                          'RIT flag
   If Frq_eep =< 0 Then                 'EEP VFO data check
      Vfo_dat = Def_vfo                 'Initialize VFO data
      Frq_eep = Vfo_dat
      Else
         Vfo_dat = Frq_eep              'Restore VFO data
         End If
   If Stp_eep =< 0 Then                 'EEP STEP data check
      Enc_stp = 1000
      Stp_eep = Enc_stp                 'Initialize STEP data
      Else
         Enc_stp = Stp_eep
         End If                         'Restore STEP data
   Cursor Off
   Cls
   Call Lcd_sub                         'LCD
   Do
      If Flg_tx = 0 Then
         Debounce Pind.5 , 0 , Enc_sub , Sub       'Encorder
         Debounce Pind.6 , 0 , Stp_sub , Sub       'Step
         Debounce Pind.7 , 0 , Rit_sub , Sub       'RIT
         End If
         Debounce Pinb.0 , 1 , Rx_sub , Sub       'RX
         Debounce Pinb.0 , 0 , Tx_sub , Sub       'TX
         If Flg_rit = 1 Then
            Dds_dat = Vfo_dat - Rit_dat
            Else
               Dds_dat = Vfo_dat
               End If
         If Flg_tx = 1 Then
            Dds_dat = Vfo_dat
            End If
         Call Dds_sub
   Loop
End
'-----------------------------
'Encoder check,Create DDS data
'-----------------------------
Sub Enc_sub
   If Pind.4 = 1 Then
      Flg_enc = 0                       'Up
      Else
         Flg_enc = 1                    'down
         End If
   Int_wrk = Enc_stp * Enc_dir
   If Flg_enc = 0 Then
      Lng_wk1 = Vfo_dat + Int_wrk       'Up
      Lng_wk2 = Rit_dat + Enc_stp
      Else
         Lng_wk1 = Vfo_dat - Int_wrk    'down
         Lng_wk2 = Rit_dat - Enc_stp
         End If
   If Flg_rit = 1 Then
      Rit_dat = Lng_wk2
      Else
         Vfo_dat = Lng_wk1
         Rit_dat = 0
         End If
   If Vfo_dat > Lw_vfo Then             'VFO lower limit check
      Vfo_dat = Lw_vfo
      End If
   If Vfo_dat < Hi_vfo Then             'VFO upper limit check
      Vfo_dat = Hi_vfo
      End If
   If Rit_dat < Lw_rit Then             'RIT lower limit check
      Rit_dat = Lw_rit
      End If
   If Rit_dat > Hi_rit Then             'RIT upper limit check
      Rit_dat = Hi_rit
      End If
   Call Lcd_sub
End Sub
'-----------------------------
'AD9834(DDS) Data write
'-----------------------------
Sub Dds_sub
   Sng_wrk = Dds_dat * Scal
   Lng_wk1 = Sng_wrk
   Wrd_wk1 = Lng_wk1 And &H3FFF
   Wrd_wk2 = Wrd_wk1 Or &H4000
   Shift Lng_wk1 , Right , 14
   Wrd_wk3 = Lng_wk1 Or &H4000
   Wrd_wk1 = &H2000
   Reset Portd.2
   Shiftout Portd.0 , Portd.1 , Wrd_wk1 , 0
   Shiftout Portd.0 , Portd.1 , Wrd_wk2 , 0
   Shiftout Portd.0 , Portd.1 , Wrd_wk3 , 0
   Set Portd.2
End Sub
'-----------------------------
'LCD Data write
'-----------------------------
Sub Lcd_sub
   Locate 1 , 1
   Lng_wk1 = If_frq
   Lng_wk1 = If_frq - Vfo_dat
   Str_frq = Str(lng_wk1)
   Str_frq = Format(str_frq , "00.000000")
   Dsp_frq = Left(str_frq , 3) + Mid(str_frq , 4 , 3) + "." + Mid(str_frq , 7 , 3)
   Lcd "F:" ; Dsp_frq ; "Mhz"
   Locate 2 , 1
   Lcd "S:     "
   Locate 2 , 3
   Lcd Enc_stp
   If Flg_rit = 1 Then
      Locate 2 , 8
      Lcd "R:       "
      Str_frq = Str(rit_dat)
      Str_frq = Format(str_frq , "00.000")
      Locate 2 , 10
      Lcd Str_frq
      Else
         Locate 2 , 8
         Lcd "   JA2GQP"
         End If
End Sub
'-----------------------------
'Step
'-----------------------------
Sub Stp_sub
   Select Case Enc_stp
      Case 10000:
         Enc_stp = 1000                 '1000
      Case 1000:
         Enc_stp = 100                  '100
      Case 100:
         Enc_stp = 10                   '10
      Case 10:
         Enc_stp = 10000                '10000
      Case Else:
         Enc_stp = 1000                 '1000(initial)
   End Select
   Call Lcd_sub
End Sub
'-----------------------------
'RIT
'-----------------------------
Sub Rit_sub
   If Flg_rit = 0 Then
      Rit_dat = 0
      Flg_rit = 1
      Frq_eep = Vfo_dat                 'Save VFO data
      Stp_eep = Enc_stp                 'Save STEP data
      Else
         Flg_rit = 0
         End If
   Call Lcd_sub
End Sub
'-----------------------------
'RX
'-----------------------------
Sub Rx_sub
   If Flg_tx = 1 Then
      Flg_tx = 0                        'TX flag rest
      Locate 1 , 1
      Lcd "F"
      End If
End Sub
'-----------------------------
'TX
'-----------------------------
Sub Tx_sub
   If Flg_tx = 0 Then
      Flg_tx = 1                        'TX flag set
      Locate 1 , 1
      Lcd "T"
      End If
End Sub





 

2013年7月5日金曜日

AD9834 BASCOM AVR source program

BASCOM AVR(DEMO版)で書いた、AD9834DDS VFO。Upperヘテロダイ用にプログラムを書いてある。機能は、ソースに書いてある為、特にコメントしない。

'********************************************************
'AD9834 DDS VFO program
'
'     7.000Mhz to 7.200Mhz Limitted!
'     (VFO frequency = IF frequency - Frequency)
'                                       2013/07/05
'                                           JA2GQP
' BASCOM AVR 2.0.7.5(DEMO version) Compiled
'--------------------------------------------------------
'  Function
'
'     1.Upper heterodyne
'     2.RIT operation(-10khz to +10khz)
'     3.STEP(10000,1000,100,10)
'     4.Memory operation is push RIT
'       (Frequency and Step)
'     5. Protection operation at the time of transmission
'********************************************************
'
$regfile = "m88adef.dat"
$crystal = 8000000                      '8Mhz clock
'--- config port ---
Config Portb = &B00000000               '0=TX,1-6=none
Config Portd = &B00001111               '0=FSYNC,1=SCLK,2=SDATA,3=none
                                         '4=ENC B,5=ENC A,6=STEP,7=RIT
'--- port pullup ---
Portb = &B11111111                      'All
Portd = &B11110000                      'RIT,STEP,ENC A,ENC B
'--- debounce set ---
Config Debounce = 1
'---LCD port assign ---
Config Lcdpin = Pin , Db7 = Portc.0 , Db6 = Portc.1
Config Lcdpin = Pin , Db5 = Portc.2 , Db4 = Portc.3
Config Lcdpin = Pin , E = Portc.4 , Rs = Portc.5
Config Lcd = 16 * 2
'--- constant data ---
Const If_frq = 9999700                  'IF frequency
Const Lw_frq = 7000000                  'Lower limit operation frequency
Const Hi_frq = 7200000                  'Upper limit operation frequency
Const Def_frq = 7050000                 'Operation frequency(initial)
Const Lw_vfo = If_frq - Lw_frq          'VFO lower limit
Const Hi_vfo = If_frq - Hi_frq          'VFO upper limit
Const Def_vfo = If_frq - Def_frq        'VFO operation frequency(initial)
Const Enc_dir = -1                      '1:CW up count,-1:CW down count
Const Lw_rit = -10000                   'RIT lower limit
Const Hi_rit = 10000                    'RIT upper limit
Const Scal = 4.00000                    '2^28/2^26  2^26(X'tal 67.108864Mhz)
'--- define subrutine ---
Declare Sub Enc_sub                     'Encorder
Declare Sub Dds_sub                     'DDS
Declare Sub Lcd_sub                     'LCD
Declare Sub Stp_sub                     'STEP
Declare Sub Rit_sub                     'RIT
Declare Sub Rx_sub                      'RX
Declare Sub Tx_sub                      'TX
'--- define memory ---
Dim Vfo_dat As Long                     'VFO freqency data
Dim Dds_dat As Long                     'DDS frequency data
Dim Str_frq As String * 10              'String frequency
Dim Dsp_frq As String * 10              'Display frequency
Dim Sng_wrk As Single                   'main channel
Dim Lng_wk1 As Long                     'Long work1
Dim Lng_wk2 As Long                     'Long work2
Dim Wrd_wk1 As Word                     'Word work1
Dim Wrd_wk2 As Word                     'Word work2
Dim Wrd_wk3 As Word                     'Word work3
Dim Enc_stp As Integer                  'Encorder step
Dim Rit_dat As Integer                  'RIT data
Dim Int_wrk As Integer                  'Integer work
Dim Flg_rit As Byte                     'RIT flag
Dim Flg_tx As Byte                      'TX flag
Dim Frq_eep As Eram Long                'power off frequency A
Dim Stp_eep As Eram Integer             'EEP STEP data
Dim Flg_enc As Byte                     'Encorder dir flag
'--------------
'Main roution
'--------------
Main:
   Flg_tx = 0
   Flg_rit = 0                          'RIT flag
   If Frq_eep =< 0 Then                 'EEP VFO data check
      Vfo_dat = Def_vfo                 'Initialize VFO data
      Frq_eep = Vfo_dat
      Else
         Vfo_dat = Frq_eep              'Restore VFO data
         End If
   If Stp_eep =< 0 Then                 'EEP STEP data check
      Enc_stp = 1000
      Stp_eep = Enc_stp                 'Initialize STEP data
      Else
         Enc_stp = Stp_eep
         End If                         'Restore STEP data
   Cursor Off
   Cls
   Call Lcd_sub                         'LCD
   Do
      If Flg_tx = 0 Then
         Debounce Pind.5 , 0 , Enc_sub , Sub       'Encorder
         Debounce Pind.6 , 0 , Stp_sub , Sub       'Step
         Debounce Pind.7 , 0 , Rit_sub , Sub       'RIT
         End If
         Debounce Pinb.0 , 1 , Rx_sub , Sub       'RX
         Debounce Pinb.0 , 0 , Tx_sub , Sub       'TX
         If Flg_rit = 1 Then
            Dds_dat = Vfo_dat - Rit_dat
            Else
               Dds_dat = Vfo_dat
               End If
         If Flg_tx = 1 Then
            Dds_dat = Vfo_dat
            End If
         Call Dds_sub
   Loop
End
'-----------------------------
'Encoder check,Create DDS data
'-----------------------------
Sub Enc_sub
   If Pind.4 = 1 Then
      Flg_enc = 0                       'Up
      Else
         Flg_enc = 1                    'down
         End If
   Int_wrk = Enc_stp * Enc_dir
   If Flg_enc = 0 Then
      Lng_wk1 = Vfo_dat + Int_wrk       'Up
      Lng_wk2 = Rit_dat + Enc_stp
      Else
         Lng_wk1 = Vfo_dat - Int_wrk    'down
         Lng_wk2 = Rit_dat - Enc_stp
         End If
   If Flg_rit = 1 Then
      Rit_dat = Lng_wk2
      Else
         Vfo_dat = Lng_wk1
         Rit_dat = 0
         End If
   If Vfo_dat > Lw_vfo Then             'VFO lower limit check
      Vfo_dat = Lw_vfo
      End If
   If Vfo_dat < Hi_vfo Then             'VFO upper limit check
      Vfo_dat = Hi_vfo
      End If
   If Rit_dat < Lw_rit Then             'RIT lower limit check
      Rit_dat = Lw_rit
      End If
   If Rit_dat > Hi_rit Then             'RIT upper limit check
      Rit_dat = Hi_rit
      End If
   Call Lcd_sub
End Sub
'-----------------------------
'AD9834(DDS) Data write
'-----------------------------
Sub Dds_sub
   Sng_wrk = Dds_dat * Scal
   Lng_wk1 = Sng_wrk
   Wrd_wk1 = Lng_wk1 And &H3FFF
   Wrd_wk2 = Wrd_wk1 Or &H4000
   Shift Lng_wk1 , Right , 14
   Wrd_wk3 = Lng_wk1 Or &H4000
   Wrd_wk1 = &H2000
   Reset Portd.0
   Shiftout Portd.2 , Portd.1 , Wrd_wk1 , 0
   Shiftout Portd.2 , Portd.1 , Wrd_wk2 , 0
   Shiftout Portd.2 , Portd.1 , Wrd_wk3 , 0
   Set Portd.0
End Sub
'-----------------------------
'LCD Data write
'-----------------------------
Sub Lcd_sub
   Cls
   Locate 1 , 1
   Lng_wk1 = If_frq
   Lng_wk1 = If_frq - Vfo_dat
   Str_frq = Str(lng_wk1)
   Str_frq = Format(str_frq , "00.000000")
   Dsp_frq = Left(str_frq , 3) + Mid(str_frq , 4 , 3) + "." + Mid(str_frq , 7 , 3)
   Lcd "F:" ; Dsp_frq ; "Mhz"
   Locate 2 , 1
   Lcd "S:    "
   Locate 2 , 3
   Lcd Enc_stp
   If Flg_rit = 1 Then
      Locate 2 , 8
      Lcd "R:"
      Str_frq = Str(rit_dat)
      Str_frq = Format(str_frq , "00.000")
      Locate 2 , 10
      Lcd Str_frq
      Else
         Locate 2 , 8
         Lcd "   JA2GQP"
         End If
End Sub
'-----------------------------
'Step
'-----------------------------
Sub Stp_sub
   Select Case Enc_stp
      Case 10000:
         Enc_stp = 1000                 '1000
      Case 1000:
         Enc_stp = 100                  '100
      Case 100:
         Enc_stp = 10                   '10
      Case 10:
         Enc_stp = 10000                '10000
      Case Else:
         Enc_stp = 1000                 '1000(initial)
   End Select
   Call Lcd_sub
End Sub
'-----------------------------
'RIT
'-----------------------------
Sub Rit_sub
   If Flg_rit = 0 Then
      Rit_dat = 0
      Flg_rit = 1
      Frq_eep = Vfo_dat                 'Save VFO data
      Stp_eep = Enc_stp                 'Save STEP data
      Else
         Flg_rit = 0
         End If
   Call Lcd_sub
End Sub
'-----------------------------
'RX
'-----------------------------
Sub Rx_sub
   If Flg_tx = 1 Then
      Flg_tx = 0                        'TX flag rest
      Locate 1 , 1
      Lcd "F"
      End If
End Sub
'-----------------------------
'TX
'-----------------------------
Sub Tx_sub
   If Flg_tx = 0 Then
      Flg_tx = 1                        'TX flag set
      Locate 1 , 1
      Lcd "T"
      End If
End Sub


回路図を示す。ロータリーエンコーダは、秋月電子製を使ったが、クリック外しの改造を施している。
電源ON時、メモリー復帰後のミスカウントもあるが、良しとした。

試作基板

2013年6月9日日曜日

Test power supply


LM723を使った試験用電源で、定電圧、定電流動作する。電圧:0-16V、電流:0-2Aで、公開したVIメータを搭載している。VIメータの具体的な配線を含めた回路を示す。+OUT端子、-OUT端子は、図面通り、+SENS、-SENS、+Vを直接端子に接続するのが正道である。 
電流調整VRと電圧調整VRがある。














VIメータのプログラムと全く同一である。
 
'**********************************************************
' 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年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とした。
ケースに収納した、VXO coil外観である。FCZ製VXOコイルより小型(高さが低い)。 
評価用回路である。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








 


 
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



  
 
Power moduleを使った50Mhz Linear AMPである。   50Mhz Power module M57735が入手できたので製作した。入手先Aliexpressで、送料含め約$20である。何ら苦労する事無く、出力が得られた。組合わせた親機は、50Mhz AM TA7358 PLL control TRXで、理屈通り5W。   















親機のRFoutputにDC重畳をする事により、SSB/CWでも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出力であった。     
                
回路図である。図中のR1,R2,R3は、インピーダンスを保障する為に入れてある。LCマッチング回路定数がシュミレーション値と異なるが、L1を伸縮するとピークが出る。