Shop OBEX P1 Docs P2 Docs Learn Events
Propagating Prop — Parallax Forums

Propagating Prop

g3cwig3cwi Posts: 262
edited 2012-07-02 12:43 in Propeller 1
Dear all

The large triangular waveform on the attached plot is my Prop coupled to an antenna being received in Italy.

Cheers
ARGO_10MHz.jpg


Richard
1000 x 802 - 382K

Comments

  • Heater.Heater. Posts: 21,230
    edited 2012-06-24 09:04
    I didn't know the Prop had such serious problems with EMI:)
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 09:23
    Dreadful EMI problems. That's 800 miles away and all from one single Prop pin waggling about. Imagine the havoc all 32 could cause.

    Amazing stuff RF.

    Cheers

    Richard
  • SapiehaSapieha Posts: 2,964
    edited 2012-06-24 09:25
    Hi.

    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

    g3cwi wrote: »
    Dear all

    The large triangular waveform on the attached plot is my Prop coupled to an antenna being received in Italy.

    Cheers
    ARGO_10MHz.jpg


    Richard
  • jazzedjazzed Posts: 11,803
    edited 2012-06-24 09:26
    g3cwi wrote: »
    Amazing stuff RF.

    Indeed.

    Can you describe your hardware configuration and/or show us a picture of it?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-24 09:29
    What kind of antenna? How was it coupled? Estimated power output? How are you sure that was you? Enquiring minds want to know! TM

    -Phil
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 09:35
    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
  • Mike GreenMike Green Posts: 23,101
    edited 2012-06-24 09:42
    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?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-24 09:45
    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
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 09:58
    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
    
  • LeonLeon Posts: 7,620
    edited 2012-06-24 10:21
    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:

    http://www.qsl.net/qrp/tx/logi-tx.htm
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 10:45
    Using all the pins of the prop it should be easy enough to send pixels to give a 32 x N picture.

    Cheers

    Richard

    Live frequency grabber here:

    http://www.stmb.it/grabber/
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-24 11:28
    In case you are concerned (and you should be) here's what the spectrum of your program's output looks like (from 0 to 200 MHz):

    attachment.php?attachmentid=93717&d=1340562445

    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
    800 x 480 - 25K
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 12:00
    Thanks Phil

    I'm less concerned than you might imagine as the Propellor is coupled to the antenna via a low pass filter.

    Cheers

    Richard
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-24 12:53
    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:

    attachment.php?attachmentid=93720&d=1340567433

    At least that's better than what it would have been with just the NCO output (no PLL):

    attachment.php?attachmentid=93719&d=1340567432

    For comparison, here's a 10 MHz signal using just the NCO output:

    attachment.php?attachmentid=93718&d=1340567432

    And one using PLL:

    attachment.php?attachmentid=93721&d=1340567433

    This is one case where the PLL actually adds power to the side lobes.

    -Phil
    800 x 480 - 19K
    800 x 480 - 22K
    800 x 480 - 22K
    800 x 480 - 18K
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-24 13:03
    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:

    attachment.php?attachmentid=93722&d=1340568222

    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
    800 x 480 - 22K
  • Heater.Heater. Posts: 21,230
    edited 2012-06-24 13:05
    Yep, looks like EMI.
  • g3cwig3cwi Posts: 262
    edited 2012-06-24 13:38
    1000 x 698 - 182K
    argo.jpg 181.7K
  • g3cwig3cwi Posts: 262
    edited 2012-06-25 10:21
    @PhiPi

    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
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-25 11:16
    Here's how the U.S. FCC regs read:
    "§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.

    -Phil
  • g3cwig3cwi Posts: 262
    edited 2012-06-25 11:51
    Thanks 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
  • Dave HeinDave Hein Posts: 6,347
    edited 2012-06-25 12:12
    Here's how the U.S. FCC regs read:
    "§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?
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-25 12:45
    Dave, here's how the regs read:
    "§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.

    -Phil
  • Mark_TMark_T Posts: 1,981
    edited 2012-06-26 03:16
    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.
  • g3cwig3cwi Posts: 262
    edited 2012-06-29 10:15
    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.

    Cheers

    Richard
    ARGO_10MHz1.jpg
    980 x 612 - 163K
  • g3cwig3cwi Posts: 262
    edited 2012-06-30 02:13
    Starting to do some measurements.

    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
  • g3cwig3cwi Posts: 262
    edited 2012-06-30 02:34
    prop1.jpg


    Unfiltered RF output from Propellor on 10.140MHz.

    Cheers

    Richard
    1024 x 549 - 48K
  • g3cwig3cwi Posts: 262
    edited 2012-06-30 04:50
    QRSS Code now in OBEX:

    http://obex.parallax.com/objects/874/

    Cheers

    Richard
  • g3cwig3cwi Posts: 262
    edited 2012-07-01 02:14
    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.

    ggg0001.jpg


    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.

    lopshot1.jpg
    ARGO_10MHz.jpg
    1000 x 594 - 75K
    1024 x 598 - 100K
    1000 x 602 - 84K
  • g3cwig3cwi Posts: 262
    edited 2012-07-02 12:43
    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.

    http://obex.parallax.com/objects/874/

    Cheers

    Richard
    G3CWI
Sign In or Register to comment.