Shop OBEX P1 Docs P2 Docs Learn Events
Difficulty transmitting to PMB-648 GPS — Parallax Forums

Difficulty transmitting to PMB-648 GPS

Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
edited 2012-11-20 10:25 in General Discussion
I need to be able to reconfigure my PMB-648 GPS so it will not latch onto a fixed position when it's not moving. I tried using the command strings provided here by Diego Potones to no avail. Further investigation shows that the logic-level receive line (blue wire) on the PMB-648 is either being driven high to +5V or pulled up with a very stiff pull-up resistor (although no resistance can be measured when the unit is powered down). When powered, a 1K pull-down results in only a 1V decrease in the voltage on the pin. I have two of these GPS units, and they both exhibit the same behavior, so I don't think it's due to a defective part. Both units function properly transmitting NMEA sentences with the correct coordinates.

I would like to be able to communicate via the PropBOE's servo headers, which have series protection resistors, but have thus far been prevented from doing so. Has anyone else experienced this issue? If so, how did you overcome it? I'm reluctant to force the issue with a transistor buffer until I know that it won't harm the GPS.

Thanks,
-Phil

Footnote: It occurs to me that the logic-level input may be being driven by the RS232 input interface. Perhaps there's something that needs to be done with the RS232 input line to disable the input driver? It's hard to find much technical info about this module -- especially from Polstar.

Footnote 2: Yep, this is definitely the case. If I connect the RxD pin to +3.3V, the Rx pin goes low.

Comments

  • xanaduxanadu Posts: 3,347
    edited 2012-06-25 13:14
    I was googling around about your position locking and found this thread - http://www.avrfreaks.net/index.php?name=PNphpBB2&file=viewtopic&p=606508

    About 2/3 of the way down the post by 'jerry_s - PostPosted: Aug 14, 2009 - 09:39 AM' has something about 'static navigation'. Maybe just search the page for 'static navigation'. Hope that helps!

    EDIT: This part inparticular - "Unfortunately, my GPS unit doesn't go into this mode after powerdown and powerup, so it seems like I always have to switch to binary sirf mode, turn off static navigation and jump back into NMEA mode."
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-25 14:01
    Thanks. That part I understand. It's just the electrical interface to the PropBOE that's proving problematic at the moment. Here's what I've inferred as the PMB-648 interface:

    attachment.php?attachmentid=93736&d=1340657978

    The problem is that the Logic Data In pin is connected to the output of the RS232 level translator, so it has a very low impedance, which I'm not sure whether I should breach. I tried the RS232 input, but the Prop output through the PropBOE's 3.9K series resistor is too wimpy to drive it. If I knew it was safe to drive the Logic Data In pin low while the level translator is driving it high, I could use this emitter follower circuit, soldered right onto the servo plug:

    attachment.php?attachmentid=93737&d=1340657979

    -Phil
    467 x 246 - 3K
    334 x 167 - 1K
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-06-25 14:59
    Okay, I decided to bite the bullet and try the transistor circuit. It works! Here's a photo of the cable connection that plugs into the PMB-648 and the PropBOE's servo connector for P16/P17:

    attachment.php?attachmentid=93741&d=1340661572

    -Phil
    555 x 444 - 27K
  • geometrixgeometrix Posts: 27
    edited 2012-11-13 12:59
    Phil,

    I am having the exact same problems. I am using a PIC24F microcontroller and have tried hundreds of things to get this to work with NO AVAIL!!! I am going to try to connect this to an RS-232 port on an old computer to figure out if I can reprogram this offline before placing it back into the enclosure in which it belongs.
    I need to be able to reconfigure my PMB-648 GPS so it will not latch onto a fixed position when it's not moving. I tried using the command strings provided here by Diego Potones to no avail. Further investigation shows that the logic-level receive line (blue wire) on the PMB-648 is either being driven high to +5V or pulled up with a very stiff pull-up resistor (although no resistance can be measured when the unit is powered down). When powered, a 1K pull-down results in only a 1V decrease in the voltage on the pin. I have two of these GPS units, and they both exhibit the same behavior, so I don't think it's due to a defective part. Both units function properly transmitting NMEA sentences with the correct coordinates.

    I would like to be able to communicate via the PropBOE's servo headers, which have series protection resistors, but have thus far been prevented from doing so. Has anyone else experienced this issue? If so, how did you overcome it? I'm reluctant to force the issue with a transistor buffer until I know that it won't harm the GPS.

    Thanks,
    -Phil

    Footnote: It occurs to me that the logic-level input may be being driven by the RS232 input interface. Perhaps there's something that needs to be done with the RS232 input line to disable the input driver? It's hard to find much technical info about this module -- especially from Polstar.

    Footnote 2: Yep, this is definitely the case. If I connect the RxD pin to +3.3V, the Rx pin goes low.
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-11-13 13:51
    geometrix,

    AFAIK, you have have either to use the transistor circuit shown above to drive the TTL pin or to go the RS232 route.

    -Phil
  • Nick ErnstNick Ernst Posts: 138
    edited 2012-11-19 14:55
    Hey Phil,
    Do you by chance have the program that you used to change the PMB-648 from static to constant nav mode? I am looking to do the same with an identical setup to the one that you have. Thanks!

    -Nick
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-11-19 15:12
    Nick,

    It's in this program that I used to record GPS data:
    CON
    
      _clkmode      = xtal1 + pll16x
      _xinfreq      = 5_000_000
    
    'SD Card pins:
    
      DO_PIN        = 22
      CLK_PIN       = 23
      DI_PIN        = 24
      nCS_PIN       = 25
    
    'Serial I/O pins:
    
      GPS_IN        = 16
      GPS_OUT       = 17
      PC_IN         = 31
      PC_OUT        = 30
    
    'Write indicator:
    
      LED_PIN       = 26
    
    'Unit ID:
    
      UNIT          = "0"
    
    'ASCII constants:
    
      CR            = 13
      LF            = 10
    
    OBJ
    
      sio   : "FullDuplexSerial"
      gps   : "FullDuplexSerial"
      sd    : "fsrw"
    
    PUB start | ch, i
    
      gps.start(GPS_IN, GPS_OUT, 0, 4800)
      sio.start(PC_IN, PC_OUT, 0, 9600)
      sd.mount_explicit(DO_PIN, CLK_PIN, DI_PIN, nCS_PIN)
      filename[7] := UNIT
      dira[26]~~
    
      waitcnt(cnt + clkfreq)
      gps.str(string("$PSRF100,0,4800,8,1,0*0F", CR, LF))   'Switch to SiRF binary protocol at 4800,8,N,1
       
      'Diable Static Navigation
      
      waitcnt(clkfreq + cnt)
      repeat i from 0 to 9
        gps.tx(DisStatNav[i])
       
      'Switch back To NMEA Protocol Message ID 129, leave only GGA and RMC strings and keep speed at 4800
      
      waitcnt(clkfreq / 2 + cnt)
      repeat i from 0 to 31
        gps.tx(BackToNMEA[i]) 
       
      repeat
        waitstr(string("$GPRMC,"))
        getstr(@time, 10)
        'if (time[5] == "0" or time[5] == "5")
          gps.rx
          if (gps.rx == "A")
            gps.rx
            getstr(@lat, 9)
            waitstr(string("N,"))                           'Change to "S" for southern hemisphere.
            getstr(@lon, 10)
            sio.str(@time)
            outa[26]~~                                      'Turn LED on during write, so it won't be interrupted by flipping off the power.
            sd.popen(@filename, "a")                        'Open the file to append data.
            sd.pwrite(@time, strsize(@time))                'Write the time and position line to the file.
            sd.pclose                                       'Do a close to stat the file.
            outa[26]~                                       'Turn off the LED.
          else
            sio.tx("*")
          
    PUB waitstr(strptr) | ptr, match
    
      ptr := strptr
      repeat while match := byte[ptr++]
        if (gps.rx <> match)
          ptr := strptr
    
    PUB getstr(strptr, len)
    
      repeat len
        byte[strptr++] := gps.rx
    
    DAT
    
    filename      byte      "gpsdata_.txt"
    time          byte      "dddddd.ddd,"
    lat           byte      "ddmm.mmmm,"
    lon           byte      "dddmm.mmmm",13,0
    
    'SiRF Disable Static Navigation, Message ID 143
    
    DisStatNav    byte      $A0,$A2,$00,$02,$8F,$00,$00,$8F,$B0,$B3
    
    'Switch back To NMEA Protocol Message ID 129 at 4800 bauds, leave on GGA and RMC strings updating oce per second.
    
    BackToNMEA    byte      $A0,$A2,$00,$18,$81,$02,$01,$01,$00,$01
                  byte      $00,$01,$00,$01,$01,$01,$00,$01,$00,$01
                  byte      $00,$01,$00,$01,$00,$01,$12,$C0,$01,$61
                  byte      $B0, $B3  
    

    -Phil
  • Nick ErnstNick Ernst Posts: 138
    edited 2012-11-20 09:47
    Phil,
    I think it's because it's still early, (at least that's what I'm telling myself!), but how did you connect both pins 16 and 17 on the PropBOE to the GPS cable/transistor circuit that you made? From the picture of the cable, it looks as if you would only be able to connect on pin to the GPS. I know I am missing something here, but I cant quite grab at what it is!
  • Phil Pilgrim (PhiPi)Phil Pilgrim (PhiPi) Posts: 23,514
    edited 2012-11-20 10:13
    Nick,

    Here's the complete schematic for the cable I built. The BOE end is a 2x3 header receptacle that connects to both P16 and P17:

    attachment.php?attachmentid=97174&d=1353435170

    -Phil
    506 x 146 - 2K
  • Nick ErnstNick Ernst Posts: 138
    edited 2012-11-20 10:25
    As the light bulb turns on! The part I was missing was that you were using a 2x3 header. Makes perfect sense now. Thanks Phil!
Sign In or Register to comment.