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

zaterdag 19 mei 2012

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

Natuurlijk doet iets het nooit meteen, de wet van Murphy gaat altijd op.
Maar na een avond zitten knutselen werkt iig de ontvangst,  het zendgedeelte  is nog even wat uitzoekwerk.
Maar dat komt vast wel goed.
In eerste instantie deed de schakeling het helemaal niet, achteraf logisch. maar ja dat is achteraf.
Ik had al pech met de low budget ic voet van de tsa, volgende keer koop ik toch wat duurdere nu zijn er
twee pootjes gebroken van de tsa, gelukkig de ref freq en wat minder pootje 1, maar met een drupje tin tussen 1 en 2 was dat ook op te lossen. Ook in het voetje zijn twee pinnetjes totaal verbogen. Het werkt nu maar het kan wel een bron van storingen zijn.
Ik had alles aangesloten maar de pll lockte niet. ik dacht eerst te weinig input. dus een buffertje er tussen.
ook dat bood geen oplossing, dan maar rechtstreeks op de uitgang van het vco. software aanpassen.
Bij het deeltal 8192 (8192*1.25 = 10.24mhz) optellen, maar ook deed werkte niet. tsa in fm mode gezet.
schakeling iets veranderd. maar ook dat  werkte niet.
Ik heb nog een pos150 vco liggen, die werkt tussen de ongeveer tussen de 70 en 130 mhz, zou ik ooit gebruiken voor een hf ontvanger met een mf van 70mhz. De pos150 maar aan de tsa dan dat werkte toen d prima, nu dus niet. Das vreemd toch maar eens kijken naar de software.
de tsa programmeer ik met busout tsa6057,0,[data,data,data,data]. zonder een start en stop.
dit gewijzigd in

bstart
busout tsa6057
busout 0
busout data
busout data
busout data
busout data
bstop.




ja!! de pos150 lock op 70.45 mhz.das handig een meetzendertje voor 4m,
Software weer terug naar 16mhz / am mode ook daar een lock. maar als ik de freq verander gebeurt er  niks. Das vreemd. Toen dacht ik o ja stom van me had ik ooit niet ergens gelezen bij een xtal van 8mhz of meer aan de microprocessor om de i2c bus in slowmode te zetten. om dat sommige i2c ic's anders bijna of
geheel niet werken.  Declare Slow_Bus On is zou dus de oplossing kunnen zijn commando toegevoegd
en alles werkt idd prima. Wat me wel opvalt is dat de pll een beetje sloom is. Je hoort hem bijsloffen
als je 10khz verschuift. Eerst maar eens de ontvangst afregelen zien hoe hoog we kunnen komen zonder
de nodige aanpassingen. De pll lockt in ieder geval wel tussen het hele frequentie gebied. das alweer een meevaller. Morgen maar weer eens kijken.

donderdag 17 mei 2012

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

Het schiet aardig op, hier wat foto's,

      





Verder vond ik op internet de CB2HAM groep met zeer veel info te vinden op
http://groups.yahoo.com/group/CB2HAM

zaterdag 5 mei 2012

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

Hier het schema van de pll met aansturing. Ik heb niet gelet op de i2c aansluitingen data en clock.
deze kunnen dus fout zitten in het schema.Hetzelfde geldt voor het display.
De vraag is ook of de tsa genoeg input krijgt om te locken, mocht dit niet zo zijn dan moet
er nog een buffertje tussen.
Nu nog uitzoeken hoe we het geheel moeten aansluiten in de 27mhz transceiver.

Schema is inmiddels aangepast en correct

dinsdag 1 mei 2012

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

Hier alvast een stuk van de source, het progje werkt op basis van interrupts,
voor de rotary encoder op port b0,b1 en voor de switches op port b4-b7.
Ik zal binnenkort het schema tekenen. Het zend gedeelte en het programmeren van de tsa6057
ontbreek nog. Verder gebruik ik een ds1307 voor het opslaan van gegevens,
dit ic heeft geen beperkte levensduur voor het lezen en schrijven naar het geheugen, dit in tegenstelling tot
het interne geheugen van de pic. En je hebt de mogelijkheid om een klokje toe te voegen.
Er zullen nog wel kleine dingen inzitten. Maar het werkt in eerste instantie.

Device 18F2620
Xtal 20                                  

' i2c
SDA_Pin    = PORTA.0          
SCL_Pin    = PORTA.1 
   
'lcd op port c      
LCD_DTPin PORTC.0
LCD_ENPin PORTC.4
LCD_RSPin PORTC.5

All_Digital = TRUE
 0 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 band        As Byte
Dim bandold     As Byte
Dim addr        As Byte
Dim zend        As Byte

'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:

bandold  = band
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)

   band = PORTB & %11000000
   band = band >> 6             '6 verschuiven voor 0-3
   If band = 3 Then band = 0
  
   zend = PORTB & 100000
   zend = zend >> 5
  
   Stap = PORTB & 010000
   Stap = Stap >> 4
   Stap = Stap + 4

' indien int door b4-b7 kijken welke switch

   Select Case INTCON.0
       Case 1   
          If bandold <> band Then Call chband
          If stapold <> Stap Then Call chstap
          If zend = 0 Then Call zenden
       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.

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

' haal freq uit ds1307

addr = band * 2 + $20
BusIn ds1307,addr,[freq]

' indien ds leeg dan rotzooi in mem, nog aanpassen

Select Case band
          Case 0
              If freq > 480 Then freq = 400
          Case 1   
              If freq > 600 Then freq = 400
          Case 2                       
              If freq > 200 Then freq = 180
End Select

Stap = PORTB & 010000
Stap = Stap >> 4
Stap = Stap + 4

Select Case Stap
     Case 4
        Call chk10stap
     Case 5
        Call chk12stap
End Select
                               
Call showfreq
Return

omlaag:
freq = freq - Stap
Select Case band
    Case 0
       If freq > 480 Then freq = 480
    Case 1
       If freq > 600 Then freq = 600
    Case 2
       If freq > 200 Then freq = 200
End Select
Call progds
Return

omhoog:
freq = freq + Stap
Select Case band
    Case 0
       If freq > 480 Then freq = 0
    Case 1
       If freq > 600 Then freq = 0
    Case 2
       If freq > 200 Then freq = 0  
End Select
Call progds
Return

progds:
addr = band * 2 + $20
BusOut ds1307,addr,[freq]
Call showfreq
Return


showfreq:

lcdfreq = freq * 250
lcdfreq = lcdfreq / 10

Select Case band
   Case 0
      lcdfreq = 285000+lcdfreq
      Print At 2,14,"10m"
   Case 1
      lcdfreq = 505000+lcdfreq
      Print At 2,14," 6m"
   Case 2
      lcdfreq = 700000+lcdfreq
      Print At 2,14," 4m"
End Select
Print At 1,1,"Frq ", Dec2 lcdfreq / 10000,".",Dec4 lcdfreq // 10000," Mhz"
Print At 2,1,"Stp ", Dec2 (Stap * 25) / 10,".",Dec1 (stap*25) // 10," Khz"
Return

chstap:
Select Case Stap
    Case 4
        Call chk10stap
    Case 5
        Call chk12stap
End Select
stapold = Stap
Return
           
chk10stap:
freq = freq / 4
freq = freq * 4
Stap = 4
Call progds
Return

chk12stap:
freq = (freq + 4) / 5
freq = freq * 5 
Stap = 5
Call progds
Return


chband:
addr = band * 2 + $20
BusIn ds1307,addr,[freq]
Select Case band
          Case 0
              If freq > 480 Then freq = 400
          Case 1   
              If freq > 600 Then freq = 400
          Case 2                       
              If freq > 200 Then freq = 180
End Select
Call chstap
bandold = band
Return

zenden:   
Return

dinsdag 24 april 2012

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

Inmiddels de skyline uit elkaar gehaald en de kanalenkiezer er uit gesloopt.
De tsa6057 ligt klaar. Zie foto's.
De transceiver gaat werken tussen 28.380 en 29.880 mhz. Het signaal wat nu de pll08a ingaat.
is een mengproduct waarbij er verschil is tussen ontvangen en zenden.
Voor ontvangen geldt:
Ontv freq - 10.695(mf) - 10.240 dus dit wordt 7.445 tot 8,945 mhz.
Voor zenden geldt;
Zend freq / 2 - 10.240 en dit wordt dan 3.95 tot 4.7 mhz.
De tsa6057 doet stapjes van 1.25 khz dus de deler in de tsa moeten we voor
ontvangst instellen tussen:
5956 tot 7156
voor zenden:
3160 - 3760

De software kunnen we dan zo maken dat we de frq kunnen instellen tussen 0 en 600.
We kunnen het deeltal dan als volgt berekenen
zenden = 3160 + X
ontv = 5956 + 2X
De kleinste stap is dan 2.5 khz. Voor 10khz moeten we dus steeds 4 bij X optellen en voor 12.5khz 5.
Als we schakelen tussen 10 en 12.5 khz moeten we uitrekenen wat de dichtstbijzijnde correcte frequentie
is. Dit doen we heel simpel door X  te delen door 4 of 5 en dan weer te vermenigvuldigen met 4 of 5.
Dus bijv voor 10khz X = (X / 4) * 4.
X moet dan wel een word zijn. Zodat we geen decimalen hebben.
Nu kunnen we starten met de software.






maandag 23 april 2012

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

Het is een tijdje stil geweest, ben weer volledig aan het werk gegaan waardoor er voor het bijhouden van het blog minder tijd is. maar dit project ga ik volledig bijhouden op mijn blog.
Vanaf januari 2012 is er voor zendamateurs de 4m beschikbaar, Om hier op uit te komen
heb ik besloten om een oude 22 kanaals 27mc bakkie om te bouwen naar 10m, om dan met een transverter uit te komen op 4m. Op internet kun je wel wat ombouw beschrijvingen vinden maar niet zoals ik het wil.

Ik heb de volgende wensen:
De bak moet bruikbaar blijven voor 10m
stapgrootte 10khz en 12.5khz.
Naast 4m eventueel ook 6m.
Zendvermogen rond de 2 watt op alle banden

In mijn rommelbak vond ik de volgende kristallen 40.68 mhz en voor 6m 22.1184 mhz.
4m loopt van 70 tot 70.5 met 40.68  komen we dan 29.32 - 29.82 mhz, voor 6m met 22.12 mhz
(afgerond naar boven) kom ik als ik reken voor fm van 50.5 tot 52 mhz, 28.38 tot 29.80 mhz.
het bakkie laat ik daarom werken van 28.38 tot 29.88.
Als ik de diverse ombouwbeschrijvingen lees dan moet 1.5 mhz haalbaar zijn.
Ik ben inmiddels in het bezit van een skyline sm2010 basisbak.
Daar zit als we de voeding er ook nog uithalen ruimte genoeg in.
De deltatuneknop ga ik gebruiken voor het omschakelen van de banden.

Als volgt :
onderste stand: 10m van 28.5 tot 29.7 mhz
middelste stand: 6m van 50.5 tot 52 mhz
bovenste stand: 4m van 70 tot 70.5 mhz

De schakelaar er naast voor 10/12.5khz stapgrootte.
Waar nu de kanalenkiezer zit met het display kont een lcd 16x2.
En de rfgain word de afstemknop (rotary encoder).

In mijn rommelbakjes vond ik een TSA6057 pll ic.
programmeerbaar via i2c en met een 5mhz kristal is de kleinste stap 1.25khz.
perfect dus als vervanging van aanwezige pll de pll08a.
Nu eerst eens ff nadenken over hoe we de software willen.
dat de volgende keer.