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.
Eenvoudige projecten voor de microchip microcontrollers geschreven in picbasic, proton+.
zaterdag 19 mei 2012
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
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
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.
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
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
Abonneren op:
Posts (Atom)