maandag 4 juni 2012

Ombouw 27mhz cb 27mc van 11m naar 10m

Alles werkt, ook het zenden, om wat een groter bereik te krijgen heb ik de varicap van het vco veranderd.
Nu zijn we toe aan het ombouwen van het ontvangst en zend gedeelte naar 10 meter. Om te testen heb ik
de software aangepast zodat we werken van 26-30 mhz, In de jaren 80 hadden ze het wiel al eens uit gevonden, Met een zoektocht op internet kwam ik de site van PA3DRQ tegen, daar vond ik de beschrijvingen
die ooit in de cq-pa hebben gestaan. Die wijzigingen die daar in staan ga eerst eens doorvoeren. Maar ik zag op de site van Roelof ook een sm2010 staan die de hele 10 meter bestrijkt. Dat vond ik niet terug in die beschrijvingen uit de cq-pa, nieuwsgierigheid gewekt, maar even mailen met Roelof, deze was toevallig druk bezig om dit in een pdf te zetten, Ik begreep dat hij de ombouw heeft gedaan met een pll02a. En min of meer de schema's van de ham international jumbo heeft gebruikt. Zeer interessant en ben zeer benieuwd naar de beschrijving van dit alles, ook heeft hij er nog een transverter in zitten voor 70cm. Ik heb een filmpje gemaakt wel wat kort, de kaart was vol, het in ieder geval zien dat we ontvangen.


Hier de source van de testversie dus inclusief zenden,

Device 18F2620
Xtal 20                                  

' i2c

Declare Slow_Bus On
SDA_Pin    = PORTA.1          
SCL_Pin    = PORTA.0 
   
'lcd op portb b0 en b2 vrij voor interrupt       
LCD_DTPin PORTC.0
LCD_ENPin PORTC.4
LCD_RSPin PORTC.5

All_Digital = TRUE

'PORTB rb0 en rb1 Input encoder b4-b7 input

TRISB = %11110011

' portb pullups aan verplicht bij int on change

PortB_Pullups On

'interrupts rb0,rb1 falling, rb4-7 on change

INTCON.3 = 1
INTCON.4 = 1
INTCON2.6 = 0
INTCON2.7 = 0  
INTCON2.5 = 0
INTCON3.3 = 1

' i2c adressen

Symbol tsa6057      = %11000100
Symbol ds1307       = %11010000  

' variabelen

Dim rotaryold   As Byte
Dim rotary      As Byte
Dim freq        As Word
Dim Stap        As Byte
Dim stapold     As Byte
Dim lcdfreq     As Dword
Dim addr        As Byte
Dim zend        As Byte
Dim tsadeeltal  As Word


'lcd init

DelayMS 100
Cls

' haal freq uit ds1307 eerste keer kan er rotzooi in zitten

Call startup

' lus voor schakelaars en encoder via sleep

main:

stapold = Stap

rotaryold = PORTB & $3
rotary=rotaryold

While  rotary = 3

   INTCON.0  = 0
   INTCON.1  = 0
   INTCON3.0 = 0

   nap 7

' verwerk portb waarden rot encoder

   rotary = PORTB & $3

' verwerk portb waarden switches (wil niet in select case intcon.0)

   Stap = PORTB & %11000000
   Stap = Stap >> 6             '6 verschuiven voor 0-3
   If Stap = 3 Then Stap = 0

   Select Case Stap
         Case 0
             Stap = 2
         Case 1
             Stap = 4
         Case 2
             Stap = 40
   End Select
  
   zend = PORTB.5
  
' indien int door b4-b7 kijken welke switch

   Select Case INTCON.0
       Case 1   
          If zend = 0 Then Call zenden
          If stapold <> Stap Then Call chstap
       End Select
Wend

' rustand rot enc 3, draaien we omlaag dan 2-1-3 omhoog 1-2-3 na int = dus oml een 1 en omh een 2

Select Case rotary
    Case 0
        GoTo main
    Case 1
        If rotaryold = 3 Then Call omlaag
    Case 2
        If rotaryold = 3 Then Call omhoog
End Select

GoTo main


startup:
' bepaal stand band schakelaar.

Stap = PORTB & %11000000
Stap = Stap >> 6
If Stap = 3 Then Stap = 0

Select Case Stap
        Case 0
           Stap = 2  ´5khz
        Case 1
           Stap = 4  ´10khz
        Case 2
           Stap = 40  ´100khz
End Select
                    
' haal freq uit ds1307

addr = $20
BusIn ds1307,addr,[freq]

' indien ds leeg dan rotzooi in mem

If freq > 1600 Then freq = 0

                              
Call showfreq
Call progtsa
Return

omlaag:
freq = freq - Stap
If freq > 1600 Then freq = 1600
Call progds
Return

omhoog:
freq = freq + Stap
If freq > 1600 Then freq = 0
Call progds
Return

progds:
addr = $20
BusOut ds1307,addr,[freq]
Call showfreq
Call progtsa
Return


showfreq:

lcdfreq = freq * 250
lcdfreq = lcdfreq / 10
lcdfreq = 260000+lcdfreq
Print At 1,1,"Frq ", Dec2 lcdfreq / 10000,".",Dec4 lcdfreq // 10000," Mhz"
Print At 2,1,"Stp ", Dec3 (Stap * 25) / 10,".",Dec1 (stap*25) // 10," Khz"
Print At 2,16,"R"

Return

chstap:
stapold = Stap
Call showfreq
Call progtsa
Return

           
´deeltal = ( freq - 10.695 - 10.240 ) / 1.25
' voor 26mhz dus 4052

progtsa:
tsadeeltal = 4052 + freq * 2
tsadeeltal = tsadeeltal << 1 ' alles 1 opschuiven voor bit0  charge pump
tsadeeltal.0 = 1             ' charge pump 1 fast
'byte2.4 moet 1 (AM mode) verder geen bits voor deeltal rest kan 0
BusOut tsa6057,0,[tsadeeltal.Byte0,tsadeeltal.Byte1,010000,0]
DelayMS 10
Return


'deeltal = ( freq / 2 - 10.240) / 1.25
'voor 26mhz dus 2208
                 
zenden:   
tsadeeltal = 2208 + freq
' repeatershift 100khz
If tsadeeltal > 3650 And tsadeeltal < 3686 Then tsadeeltal = tsadeeltal - 40
tsadeeltal = tsadeeltal << 1tsadeeltal.0 = 1
BusOut tsa6057,0,[tsadeeltal.Byte0,tsadeeltal.Byte1,010000,0]

Print At 2,16,"T"

While PORTB.5 = 0
Wend

' terug naar ontvangst

Call progtsa

Return

Geen opmerkingen:

Een reactie posten