I assume AT You have some pins don't connected ---> (left-open !) don't any thing connected to them else spare ones not have resistors connected to pull UP them.
In that case that is wanted --- As Propeller pins are build to be sensitive for Analog usage ( Them have internal resistors as NOT sufficient to close that transient's
Doublet (140 ft top), antenna matching unit. Coupled with a capacitor. I know it's me as I have tried a few different waveforms - and it stops when I turn the prop off !!
I have an accurate microwatt meter so I can measure the power output although it will be the total power including harmonics/spurious etc.
Considering that an I/O pin can source/sink on the order of 40mA, that's 132mW at 3.3V and many QSOs have been done over longer paths with less power than that into a good antenna. Amazing isn't it?
I guess the lesson is that, using a good antenna, you can work the world with milliwatts. I don't suppose you sent your call sign with it ...
-Phil
Ahh but that's where you are wrong. It sends my callsign in CW at the bottom of each triangle.
CON
_clkmode = xtal1 + pll16x
_xinfreq = 5_000_000
dotrate = 4000000 '
LED = 0 'LED repeater
TX_Pin = 4
VAR
' counter vars
long curr_cnt, end_cnt
long TX_Freq
word jx, ix, ltr, pntr, letter[60], count, sendltr , strlen
OBJ
BEEP : "synth" 'Sound/rf Driver
PUB Main
Load_Chr_Pointers
TX_Freq := 10_140_000
Repeat
repeat TX_Freq From 10_140_000 to 10_140_050 step 1
BEEP.synth("A", TX_Pin, TX_Freq)
waitcnt(clkfreq+cnt)
BEEP.synth("A", TX_Pin, 0)
repeat TX_Freq From 10_140_050 to 10_140_000 step 1
BEEP.synth("A", TX_Pin, TX_Freq)
waitcnt(clkfreq+cnt)
BEEP.synth("A", TX_Pin, 0)
waitcnt(clkfreq/3+cnt)
send("G")
send("3")
send("C")
send("W")
send("I")
TX_Freq := 10_140_000
PUB Send(send_key)
pntr:=0
case send_key
"A", "a" : pntr:=1
"B", "b" : pntr:=2
"C", "c" : pntr:=3
"D", "d" : pntr:=4
"E", "e" : pntr:=5
"F", "f" : pntr:=6
"G", "g" : pntr:=7
"H", "h" : pntr:=8
"I", "i" : pntr:=9
"J", "j" : pntr:=10
"K", "k" : pntr:=11
"L", "l" : pntr:=12
"M", "m" : pntr:=13
"N", "n" : pntr:=14
"O", "o" : pntr:=15
"P", "p" : pntr:=16
"Q", "q" : pntr:=17
"R", "r" : pntr:=18
"S", "s" : pntr:=19
"T", "t" : pntr:=20
"U", "u" : pntr:=21
"V", "v" : pntr:=22
"W", "w" : pntr:=23
"X", "x" : pntr:=24
"Y", "y" : pntr:=25
"Z", "z" : pntr:=26
" " : pntr:=27
"1" : pntr:=28
"2" : pntr:=29
"3" : pntr:=30
"4" : pntr:=31
"5" : pntr:=32
"6" : pntr:=33
"7" : pntr:=34
"8" : pntr:=35
"9" : pntr:=36
"0" : pntr:=37
"." : pntr:=38
"," : pntr:=39
"?" : pntr:=40
"+" : pntr:=41
"!" : pntr:=42
"=" : pntr:=43
"/" : pntr:=44
":" : pntr:=45
";" : pntr:=46
"-" : pntr:=47
"_" : pntr:=48
"(" : pntr:=49
")" : pntr:=50
"'" : pntr:=51
$22 : pntr:=52 ' quotation mark - hexadecimal value
"$" : pntr:=53
"&" : pntr:=54
"@" : pntr:=55
'
' This portion of the routine reads the string for each letter, number or
' punctuation and sends the appropriate dots or dashes to the light and
' sound.
'
DIRA[LED] := 1
ix:=0
ltr:=BYTE[letter[pntr]]
repeat
if (ltr=="1")
Dot
if (ltr=="2")
Dash
ltr:=BYTE[letter[pntr]][++ix]
until (ltr==0)
Endletter
if (send_key == " ") ' If you have a space, then let another two dot times go by.
Endletter ' This increases separation between Morse letters indication
' that an end of word has occurred.
Pri Dot ' This routine sends a dot or "dit" followed by a space the same length
BEEP.synth("A", TX_Pin, TX_Freq)
OUTA[LED] := 1
waitcnt(CNT + dotrate)
BEEP.synth("A", TX_Pin, 0)
OUTA[LED] := 0
waitcnt(CNT + dotrate)
Pri Dash 'This routine sends a dash or "dah" followed by a space as long as a dot
BEEP.synth("A", TX_Pin, TX_Freq)
OUTA[LED] := 1
waitcnt(CNT + 3 * dotrate)
BEEP.synth("A", TX_Pin, 0)
OUTA[LED] := 0
waitcnt(CNT + dotrate)
Pri EndLetter ' This routine waits for two dots worth of time - no sound, no light
OUTA[LED] := 0
waitcnt(CNT + 2 * dotrate)
Pri Load_Chr_Pointers
' get and store the address of each letter string into the letter array
' each letter has a string of letters where 1 equals a dot and 2 equals a dash
' each string ends in a zero - since the length of letters in Morse Code
' varies (an "e" is a single dot, and a "j" is one dot followed by three dashes)
' the address of the start of each string does not occur at a regular spacing
' so this array is an array of pointers to the start of each letter.
letter[0]:=0
letter[1]:=@A
letter[2]:=@B
letter[3]:=@C
letter[4]:=@D
letter[5]:=@E
letter[6]:=@F
letter[7]:=@G
letter[8]:=@H
letter[9]:=@I
letter[10]:=@J
letter[11]:=@K
letter[12]:=@L
letter[13]:=@M
letter[14]:=@N
letter[15]:=@O
letter[16]:=@P
letter[17]:=@Q
letter[18]:=@R
letter[19]:=@S
letter[20]:=@T
letter[21]:=@U
letter[22]:=@V
letter[23]:=@W
letter[24]:=@X
letter[25]:=@Y
letter[26]:=@Z
letter[27]:=@Space
letter[28]:=@N1
letter[29]:=@N2
letter[30]:=@N3
letter[31]:=@N4
letter[32]:=@N5
letter[33]:=@N6
letter[34]:=@N7
letter[35]:=@N8
letter[36]:=@N9
letter[37]:=@N0
letter[38]:=@Pperiod
letter[39]:=@Pcomma
letter[40]:=@Pquestion
letter[41]:=@Pplus
letter[42]:=@Pexclam
letter[43]:=@Pequals
letter[44]:=@Pslash
letter[45]:=@Pcolon
letter[46]:=@Psemicolon
letter[47]:=@Phyphen
letter[48]:=@Punderscore
letter[49]:=@Popenparen
letter[50]:=@Pcloseparen
letter[51]:=@Papostrophe
letter[52]:=@Pquote
letter[53]:=@Pdollar
letter[54]:=@Pampersand
letter[55]:=@Pat_sign
DAT
' Letters in Morse
'
A byte "12",0
B byte "2111",0
C byte "2121",0
D byte "211",0
E byte "1",0
F byte "1121",0
G byte "221",0
H byte "1111",0
I byte "11",0
J byte "1222",0
K byte "212",0
L byte "1211",0
M byte "22",0
N byte "21",0
O byte "222",0
P byte "1221",0
Q byte "2212",0
R byte "121",0
S byte "111",0
T byte "2",0
U byte "112",0
V byte "1112",0
W byte "122",0
X byte "2112",0
Y byte "2122",0
Z byte "2211",0
'
' Numbers in Morse
'
N1 byte "12222",0
N2 byte "11222",0
N3 byte "11122",0
N4 byte "11112",0
N5 byte "11111",0
N6 byte "21111",0
N7 byte "22111",0
N8 byte "22211",0
N9 byte "22221",0
N0 byte "22222",0
'
' Punctuation in Morse
'
Pperiod byte "121212",0
Pcomma byte "221122",0
Pquestion byte "112211",0
Pplus byte "12121",0
Pexclam byte "212122",0 ' Exclaimation mark
Pequals byte "21112",0 ' Double Dash or Prosign BT
Pslash byte "21121",0
Pcolon byte "222111",0
Psemicolon byte "212121",0
Phyphen byte "211112",0
Punderscore byte "112212",0
Popenparen byte "21221",0 ' Open Parenthesis (
Pcloseparen byte "212212",0 ' Closed Parenthesis )
Papostrophe byte "122221",0
Pquote byte "121121",0 ' Quotation Mark
Pdollar byte "1112112",0 ' Dollar Sign $
Pampersand byte "12111",0 ' Ampersand "&" or Wait
Pat_sign byte "122121",0 'The @ sign
Space byte 0,0
Simple CW transmitters have been built from a single CMOS logic chip, with one gate used for an oscillator, and the others wired in parallel. Here is an example:
The lowpass filter will take care of harmonics but not the birdies that result from phase jitter. Here's your signal at 10.140 MHz over a 4 MHz bandwidth, centered on 10 MHz:
At least that's better than what it would have been with just the NCO output (no PLL):
For comparison, here's a 10 MHz signal using just the NCO output:
And one using PLL:
This is one case where the PLL actually adds power to the side lobes.
Things can be much worse, BTW, the farther you deviate from a Prop-friendly frequency. Here's what a Prop PLL-generated carrier at 7.030 MHz (40-meter QRP frequency) looks like:
The side lobes are only 25 dB down from the carrier frequency!
To summarize, transmitting directly from the Propeller is not a good idea, due to phase jitter and the birdies it produces.
Thanks for the plots. I will put my on to my SpecAn soon. While I agree that -25dB spurious is not a great performance, the actual power levels of the spurious are still well down on those that would be within spec for a typical 100W transceiver. Connecting a prop to an HF amplifier would be a bad move but unamplified, and with even a simple filter, it is unlikely to cause problems. I feel that my licence is safe for the moment.
"§97.307 Emission standards: (d) For transmitters installed after January 1, 2003, the mean power of any spurious emission from a station transmitter or external RF amplifier transmitting on a frequency below 30 MHz must be at least 43 dB below the mean power of the fundamental emission."
The same standard applies whether it's a flea-power QRP transmitter or a 1500W PEP SSB rig.
"§97.307 Emission standards: (d) For transmitters installed after January 1, 2003, the mean power of any spurious emission from a station transmitter or external RF amplifier transmitting on a frequency below 30 MHz must be at least 43 dB below the mean power of the fundamental emission."
Does that apply if the fundamental is above 30 MHz, or is it independent of the frequency of the fundamental?
"§97.307 Emission standards: (e) The mean power of any spurious emission from a station transmitter or external RF power amplifier transmitting on a frequency between 30-225 MHz must be at least 60 dB below the mean power of the fundamental. For a transmitter having a mean power of 25 W or less, the mean power of any spurious emission supplied to the antenna transmission line must not exceed 25 µW and must be at least 40 dB below the mean power of the fundamental emission, but need not be reduced below the power of 10 µW. A transmitter built before April 15, 1977, or first marketed before January 1, 1978, is exempt from this requirement.
They appear to be a lot more stringent above 30 MHz.
They are more stringent above 30MHz because in the shortwave band ionospheric propagation variations mean that the main problem is interference from stations thousands of miles away and varies with times of day, solar storms etc - local station interference isn't so crucial. At VHF and above this variability isn't an issue so that local interference is predictable and improving spectral purity means more stations can occupy the airwaves. Its also technically easier to filter low-power high-frequency transmitters as the LC components are less unwieldy.
The trace below shows the prop at 800 miles. Single pin wobbling about and producing the diamonds and triangles at the very bottom of the screen. This weekend I will put the system on a spectrum analyser.
The total output at fundamental freq of 10.140MHz (straight from the Prop pin) is +11dBm (Boonton RF Power meter). The useful output at the fundamental frequency will be less of course as the measurement includes the power of the harnonics, spurious etc.
Update: I have now added slow speed graphics support. See screen shot for what my current 10MHz signal looks like here. The FSK to the right is slow speed Morse code.
If anyone is interested, let me know and I will update the OBEX object.
heers
Richard
PS My transmission received this morning in Norway and Italy.
A new version of the QRSS object is in the OBEX. This includes full fonts and numbers so that it is quick and easy for anyone to configure for their own callsign.
Comments
Amazing stuff RF.
Cheers
Richard
I assume AT You have some pins don't connected ---> (left-open !) don't any thing connected to them else spare ones not have resistors connected to pull UP them.
In that case that is wanted --- As Propeller pins are build to be sensitive for Analog usage ( Them have internal resistors as NOT sufficient to close that transient's
Indeed.
Can you describe your hardware configuration and/or show us a picture of it?
-Phil
Doublet (140 ft top), antenna matching unit. Coupled with a capacitor. I know it's me as I have tried a few different waveforms - and it stops when I turn the prop off !!
I have an accurate microwatt meter so I can measure the power output although it will be the total power including harmonics/spurious etc.
Cheers
Richard
-Phil
Ahh but that's where you are wrong. It sends my callsign in CW at the bottom of each triangle.
http://www.qsl.net/qrp/tx/logi-tx.htm
Cheers
Richard
Live frequency grabber here:
http://www.stmb.it/grabber/
I don't think I'd be connecting such a large antenna to my Propeller. At least if I did, I wouldn't be broadcasting my call sign.
-Phil
I'm less concerned than you might imagine as the Propellor is coupled to the antenna via a low pass filter.
Cheers
Richard
At least that's better than what it would have been with just the NCO output (no PLL):
For comparison, here's a 10 MHz signal using just the NCO output:
And one using PLL:
This is one case where the PLL actually adds power to the side lobes.
-Phil
The side lobes are only 25 dB down from the carrier frequency!
To summarize, transmitting directly from the Propeller is not a good idea, due to phase jitter and the birdies it produces.
-Phil
http://dl.dropbox.com/u/57842512/Argocaptures/grabber.htm
Thanks for the plots. I will put my on to my SpecAn soon. While I agree that -25dB spurious is not a great performance, the actual power levels of the spurious are still well down on those that would be within spec for a typical 100W transceiver. Connecting a prop to an HF amplifier would be a bad move but unamplified, and with even a simple filter, it is unlikely to cause problems. I feel that my licence is safe for the moment.
Cheers
Richard
The same standard applies whether it's a flea-power QRP transmitter or a 1500W PEP SSB rig.
-Phil
I await the extradition papers with interest!
As I said "even [with] a simple filter, it is unlikely to cause problems. I feel that my licence is safe for the moment."
Cheers
Richard
They appear to be a lot more stringent above 30 MHz.
-Phil
Cheers
Richard
The total output at fundamental freq of 10.140MHz (straight from the Prop pin) is +11dBm (Boonton RF Power meter). The useful output at the fundamental frequency will be less of course as the measurement includes the power of the harnonics, spurious etc.
Cheers
Richard
Unfiltered RF output from Propellor on 10.140MHz.
Cheers
Richard
http://obex.parallax.com/objects/874/
Cheers
Richard
If anyone is interested, let me know and I will update the OBEX object.
heers
Richard
PS My transmission received this morning in Norway and Italy.
http://obex.parallax.com/objects/874/
Cheers
Richard
G3CWI