Angle of Arrival (AoA) Calculation Producing Unexpected Values

Hi,

I'm working on an indoor positioning system using an nRF5340 and a CHW1010-ANT1 antenna array. I'm receiving IQ samples from BLE CTE packets and using them to calculate the AoA. 

When I manually input IQ values, the AoA is correct and stable. However, when I use live IQ samples from the receiver, the AoA values fluctuate significantly, even though the transmitter and receiver are stationary.

As I understood it, the first 8 samples are from the reference period and should not be used to calculate the AoA and the first sample to be used (at index 8) is from antenna idx 1 and not 0 since 0 is used in the reference period. So the pattern goes 0 - 0 - 0 - 0 - 0- 0 - 0 - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 0 - 1 - etc. Am I missing something here?

Below are some of the IQ samples I get.

Setup:

  • Transmitter - nRF5340 sending BLE CTE signals
  • Receiver - nRF5340 with CHW1010-ANT1 antenna array
  • Antenna patches spacing - 5 cm
  • UART - 115200 baud
  • Antenna pattern - 0, 2, 4, 6, 8, 10, 12, 14

IQ sample values received:

Read from UART func:

Calculate AoA func:

Wavelength, Phase calc, and Phase wrap funcs:

I assume that the logic is correct since manually set values are showing the correct AoA.

Grateful for any help!

Parents
  • Hi,

    Are you using just one reciever? 

    Our WP on DF typically clears up confusion regarding antenna switching patterns. Have you seen this?

    As I understood it, the first 8 samples are from the reference period and should not be used to calculate the AoA

    It should be used to calibrate.

    So the pattern goes 0 - 0 - 0 - 0 - 0- 0 - 0 - 0 - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 0 - 1 - etc. Am I missing something here?

    Yeah, although that depends a bit on your pattern length, and whether these numbers refer to antennas, or order to antenna pattern etc.

    What NCS version are you using? I guess all NCS versions should work, but we've only gotten the locator QDID (and therefore officially checked the locator) from NCS 2.2 with SDC, which I guess can be an argument for using that one. The zephyr controller also has a QDID for the locator that goes with NCS2.2.

    Regards,

    Elfving

  • It should be used to calibrate.

    And would that be by getting the frequency offset from the reference samples and then using it to correct the remaining samples? If so, I'm thinking of something like this:

    Yeah, although that depends a bit on your pattern length, and whether these numbers refer to antennas, or order to antenna pattern etc.

    In my cpunet.overlay I have set "dfe-antenna-num = <16>" since the antenna array consists of 8 antenna patches with polarization. Even numbers are horizontal and odd numbers are vertical.

    What NCS version are you using? I guess all NCS versions should work, but we've only gotten the locator QDID (and therefore officially checked the locator) from NCS 2.2 with SDC, which I guess can be an argument for using that one. The zephyr controller also has a QDID for the locator that goes with NCS2.2.

    I'm running NCS 2.9.

    Milad

  • miladflores said:

    In my cpunet.overlay I have set "dfe-antenna-num = <16>" since the antenna array consists of 8 antenna patches with polarization. Even numbers are horizontal and odd numbers are vertical.

    I guess that depends mainly on the antenna, so that might be fine. Did the WP clear things up for you regarding the antenna patterns?

    Regards,

    Elfving

  • Did the WP clear things up for you regarding the antenna patterns?

    Yes, thank you for the clarification!
    If I got it right, it means that the first antenna in the antenna pattern is used 8 times during the reference period and after the reference period the pattern goes on to the 2nd antenna in the pattern and loops through the whole pattern until all the samples have been collected. 

    Milad

Reply Children
Related