We’re running a PDoA setup for localization as follows:
- 1 EVB1000 running the two-way ranging firmware, as an anchor
- A custom PCB with 5 DWM1000 modules, all running under the same 38.4MHz clock from an oscillator and a clock buffer tree. One module is running the two-way ranging firmware as tag, and other 4 DWM1000 modules configured after the tag module send out the poll, to listen to the response from EVB1000 anchor. The modules are separated by wavelength/2.
Our goal is to obtain the AOA(angle of arrival) of the anchor to the PCB (tag and array of DWM1000s). So we extract out the CIR from accumulators in the array of 5 DWM1000 modules, find the FP(first peak) index and find the phase from the accumulator sample at that FP index. Then we calculate AOA from the phase difference across DWM1000 modules.
The idea of this setup is pretty similar to the PDoA kit. However one issue we have in our setup is that we observe a nonzero phase difference across adjacent chips when the anchor and our board are facing directly to each other (0 degree AOA). And we found out In order to calculate a reasonable AOA, this offset at 0 degree has to be subtracted out from all phase differences for all angles.
As we did more testing, we find out this offset is relatively consistent after the PCB is powered and stay powered. (Small drifts still exist). And once we power off the PCB and power on again, this offset changes to a random value.
Any ideas on where this offset come from? We thought it might be the PLL in DW1000 that’s causing this offset? However for the PDoA kit we didn’t see it need to be calibrated at 0 degree. How does the PDoA kit solve this offset problem?
And is the SYNC input on DW1000 related to / could help on this offset?