|3DR uBlox LEA-6 GPS + secret sauce|
At first the GPS could not obtain a fix. Here's how I brought the GPS from no fix to a 10-satellite fix. From my basement!
Wayne H (2012 and 2013 AVC competitor) put together sample code and wrote an evaluation on his website. I ported his code from Arduino to mbed (http://mbed.org/users/shimniok/code/ublox_demo/)
The code works great, but I and immediately ran into problems with RF interference. The GPS could not get a fix.
Even taking it outside, it would lose fix going under a tree or in the garage. By contrast my Venus can get a 8-9 satellite lock in my basement with ease. Indoors, basements, garages, all a cakewalk for modern highly sensitive GPS receivers. Like the uBlox. So what gives?
Experimentation revealed that the GPS would work fine directly off an FTDI breakout board, and would also work fine when connected to my Arduino Pro. Anytime it was powered off Data Bus' mbed baseboard, no joy.
In fact, I could power it off the baseboard without the mbed plugged in and it would work. The mbed was the source of some type of interference.
I tried various combinations of...
- RC-filtering the power supply on the baseboard and GPS end
- Ferrite bead on both, then only one power line.
- 470uF bypass cap on the baseboard
- power GPS off the second regulator supply line
Then I built a 5V linear regulator using one of my eeZee Power boards and a 5V NCP1117 chip I had laying around.
|Purple eeZee Power board with 5V regulator|
A trip to Radio Shack scored some RF snap choke cores (p/n 273-0069) around which I wrapped the GPS TX line several times. That did the trick.
|Eight wraps around a choke for RX and TX|
NAV-STATUS: gpsFix = 3, dgpsFix
NAV-POSLLH: lon = -104.9330273, lat = 39.5976185, vAcc = 2964 mm, hAcc = 2015 mm
NAV-SOL: week = 1740, gpsFix = , pDOP = 1.6, pAcc = 359 cm, numSV = 10
NAV-SVINFO: channels = 16
id = 3 (30) ******
id = 4 ( 0)
id = 6 (23) ****
id = 7 (28) *****
id = 10 (17) ***
id = 13 (37) *******
id = 16 (25) *****
id = 20 (40) ********
id = 23 (40) ********
id = 27 ( 0)
id = 30 (20) ****
id = 31 (19) ***
id = 32 (31) ******
id = 133 (27) *****
id = 134 ( 0)
id = 138 (30) ******
Not that it's pulling in 10 sats all the time. It's getting 8 almost always, and once I was up to 11.
Clearly the chokes and dedicated linear power supply helped. I don't know why I didn't see these problems with the Venus board.
But if you're trying to get a 3DR uBlox (or really any GPS) working and noise is a factor, now you know what to do.