The PPS signal is used by the sensor for subsecond accuracy. The sensor takes only the minutes and seconds part of the time supplied by the GPRMC sentence and converts that into a top-of-the-hour (TOH) counter value, which is the number of microseconds that has elapsed since the top of the hour. This range is from 0 to 3,599,999,999 us. This is also called a "timestamp", though that nomenclature is misleading because it doesn't actually contain a wallclock value. It is simply a timer.
Telemetry packets are sent on a "best effort" basis, meaning whenever the processor is not busy servicing other requests(i.e. sending data packets), then it will output a telemetry packet onto the network. In other words, sending telemetry packets is a second order process. This typically occurs every 12 to 14 firing data packets. The telemetry packet contains the TOH value as reported by the GPRMC sentence on the rising edge of the PPS signal. In other words, the TOH value will not be updated until it detects the rising edge of a PPS signal.
You can interpolate the firing data times per laser, based on the TOH value. The interpolation, however, is more than simply adding a PPS_timestamp offset.
Per the VPL-16 user manual, all 16 lasers are fired and recharged every 55.296 us. The cycle time between firings is 2.304 us. There are 16 firings (16 x 2.304 us), following by a recharge period of 18.43 us. The timing cycle to fire and recharge all 16 lasers is 55.296 us ( = (16 x 2.304 us) + 18.43 us.
To calculate the exact time, in microseconds, of each data point, first number the points in the firing sequence from 0 to 15. This becomes the data point index (aka, laser id) for your calculations. Next, number the firing sequences 0 to 23. This becomes your sequence index.
The TOH value in the packet indicates the time when the first data point fired. You'll need to calculate a time offset for each data point and then add that offset to the TOH value. The offset equation is given by:
TimeOffset = (55.296 us * SequenceIndex) + (2.304 us * DataPointIndex)
To calculate the exact time for a point , add the TimeOffset to the TOH value:
ExactPointTime = TOH_Value + TimeOffset
Comments
0 comments
Please sign in to leave a comment.