Timestamp difference between two anchors

Hi all,

Let me explain my test communication:
I have

  • one tag (it sends data for two times)
  • two nodes (Anc_1 and Anc_2) which receives data from the tag above

At first send, anhors record the timestemp (Anc_1.timestamp_1 and Anc_2.timestamp_1).
At second send, they record the timestamp again (Anc_1.timestamp_2 and Anc_2.timestamp_2).
Here is the results:

Anchor_1
Anc_1.timestamp_1 = 233315269862
Anc_1.timestamp_2 = 252472487965
Difference_Anc_1 = 19157218103

Anchor_2
Anc_2.timestamp_1 = 1071654892960
Anc_2.timestamp_2 = 1090811755398
Difference_Anc_2 = 19156862438

I think, the difference between Difference_Anc_1 and Difference_Anc_2 must be close to zero.
But (Difference_Anc_1 - Difference_Anc_2) = 355665,
and then (355665 x 15,6) = 5,334975 uS

The difference between timestmaps are increasing with time, it starting with 4,22264uS and goes to 5,33542uS after 2-3 minutes?
And the value is very changeable?
First packets’ time difference is 4,22264uS, second packets’ is 4,30253uS. This is nearly 20nS between two packets and this mean is 6 meter? How can i fix it?

Metin…

This will be the oscillators not being equal and thus having different frequencies.

When you calculate the relative difference between the clock readings, they are only

1.8566e-05

which is exactly within the boundaries of the 20 ppm spec of the oscillator(s). In worst case you could actually have an error of twice the maximum deviation per oscillator, which would be 4e-5.

You could do the following two things:

  1. keep the time between messages short. You wait 0.3 seconds, which is a huge amount of time for the 64 GHz oscillator.
  2. if you do ranging, do double-sided two way ranging. This is explained in the user manual. It compensates for the error in the measurement due to the waiting time at each node.

Kind regards,
Adrian

Hey,

you can fix it by reading a documentation. Do you use synchronized clock? You want to measure time with ps accuracy, while your crystal oscillator has few ppm of an error. If you have two anchors with two crystals, then error caused by crystal grows to great values…

Regards,
Bartosz

Hi Adrian,

Thank you for fast response,
I use DWM1000, in DWM1000 datasheet
“DWM1000 modules are calibrated at production to minimise initial frequency error to reduce carrier frequency offset between modules and thus improve receiver sensitivity. The calibration carried out at module production will trim the initial frequency offset to less than 2 ppm, typically.”
Could it be the oscilator’s error?

Metin…

Hi Adrian,

Thank you for fast response,
I use DWM1000, in DWM1000 datasheet
“DWM1000 modules are calibrated at production to minimise initial frequency error to reduce carrier frequency offset between modules and thus improve receiver sensitivity. The calibration carried out at module production will trim the initial frequency offset to less than 2 ppm, typically.”
Could it be the oscilator’s error?

Metin…

Hi Bartosz,

Thank you for fast response

How can i synchronize the clock?

Regards
Metin…

www.decawave.com -> downloads -> APS007

I don’t want to use wires between anchors.
Did you try wirelessly?

Metin…

I haven’t tried yet, and I wouldn’t reccomend that for the beginning. The easiest way for you to obtain the distance is to implement SDS-TWR ( symetric double side two way ranging). About more details you can read in the end of User Manual.

Regards,
Bartosz

Thanks for help, my application will contain more than hundred tags

Regards
Metin…

That is not a problem. You can still do double-sided two way ranging. You just send one message more per tag (total of three)

It will not be a problem unless you need high position data rate. If you need to get all the distances not more than few times per second, then it is possible with SDS-TWR. If you need more, then just TDOA method can be used (with synchronization over the air).

Regards,
Bartosz

Hi @deca_admin

the same problem continues. Time difference is constantly increasing. please help me.

I have the same problem too. System clock does not work properly I think. I read the system time periodically. Between 2 readings, differences are not same. For example, readings are like this 1-11-22-31-40-48-61 for Anchor-1 and 1-10-19-29-38-45-55 for Anchor-2. Difference keeps rising and that causes problems. I’m keeping the tag still, sending messages to 2 anchors and saving their timestamps. I’ll tell you through actual measurements. Timestamps are;

Anchor-1
t0: 296213694500
t1: 332546260200
t2: 415457750311
t3: 446588270687

Anchor-2
t0’: 295389797241
t1’: 331722267405
t2’: 414633539582
t3’: 445763978141

t0 and t0’ values are reference points. Delta values are;

Δ1 = t1-t0 = 36332565700
Δ2 = t2-t0 = 119244055811
Δ3 = t3-t0 = 150374576187

Δ1’ = t1’-t0’ = 36332470164
Δ2’ = t2’-t0’ = 119243742341
Δ3’ = t3’-t0’ = 150374180900

Differences between delta values should be constant because tag device is staying still. But differences are;

Δ1’ - Δ1 = -95536
Δ2’ - Δ2 = -313470
Δ3’ - Δ3 = -395287

For further t and Δ values, difference keeps rising and it causes wrong distance calculations.

How can I fix this problem ? I am waiting for your solution advices. Please, please consider the question.

Regards,

Feyzi

Could you please specify “periodically”? I mean, at what frequency does your tag send the blink signal?