Posted by John Haine on 19/02/2023 17:15:48:
Well I got the unit connected to the picPET and a bit of Pi code written to acquire some numbers, "measuring" the 1pps period. Good news, to 7 places of decimals it's 0.9999999s +/1 a bit. Bad news 1: hardly any perceptible change with the pot setting! Bad news 2: the GPS is very flaky, regularly losing lock. I get a decent position using "GPS Monitor" on my phone inside just next to the equipment, but I have the GPS antenna on the end of a piece of 3m cable on the windowsill / on top of the green wheely-bin outside the window. The antenna nominally has 30 dB gain, I think it's going back to Amazon!
I've found the M8Q works better than my Adafruit Ultimate GPS, probably because the M8Q picks up GLONASS (Russian) satellites as well as GPS(USA).
Even with an active antenna the Adafruit is fussy about location. Inside the house and looking out a North facing window are both unsatisfactory. Looking out my south facing dining room it works with occasional drop-outs. West facing upstairs windowsill it seems to work 100%.
I also had trouble with the pot setting and wish I'd bought a multi-turn one rather than using a cheapo trimmer. The trimmer turns in jumps and starts, and is pressure sensitive. I can get the 10MHz waveform stable by carefully turning it with an oscilloscope compensation screwdriver, but frequency slides as soon as I let go.
My 40+ year old Racal 7-digit counter only measures in microseconds. It counts 1000000 OCXO pulses in 1 GPS second, but the last digit jitters a little.
Haven't tried PET yet. The plan is to set the M8Q PPS to 0.25Hz (by setting period to 4000000uS), and see what ardPET makes of a 5MHz input. (I've wired my OCXO to a 7490 divide by 2 chip). I'll also try modifying ardPET to count more input pulses by extending the timing period to 'n' GPS pulses.
Meanwhile I've nearly cracked how to change ublox TP frequency with a Python program. The bUblox TP5 spec isn't wrong as I suspected, I misread it! The mismatch was because message length is sent as a 16 bit integer, not 8 bit as I'd assumed.
Code not quite working yet because I assumed duty cycle was sent as an integer, and it's not. 50.0% encodes to 0x80 (128), and 60% to 0x9a999999. I suspect the duty ratio is sent as a single precision float.
Dave