X4 Question about a constant defined in x4driver.c

Discussion in 'X2 & X4 SoC' started by windchime, Aug 1, 2019.

1. I found something strange about a constant, X4DRIVER_METERS_PER_BIN defined in xdriver.c.

const double X4DRIVER_METERS_PER_BIN = 1*1.5e8/23.328e9;//0.00643004115226337448559670781893;

I guess that the constant, X4DRIVER_METERS_PER_BIN means the distance corresponding to one bin, as the name implies. Then I think the speed of light shall not be divided by 2, i.e. the constant shall be redefined as

const double X4DRIVER_METERS_PER_BIN = 1*3e8/23.328e9;

Furthermore if I'm right in that 1.5e8 is half of light speed, then you should use more precise value for light speed, 299 792 458 m / s. Otherwise it's meaningless to use long significant figures in other constants.

I would like to know if it's a mistake or defined intentionally like that.

Thanks,
Kyle Shim

2. Hi Kyle,
It is light speed, and if you use 299 792 458 m/s, it is true that the result will be more precise, but 1.5e8 is also acceptable. The sensor receives reflected single of the radar pulse, so it travels two times of real distance.

3. Thank you for your explanation, Charlie.

I understood. It makes sense in that the bins can be easily translated into distances by using that constant.

I have one more question about this constant. As far as I understandd the bins are samples, i.e. one bin corresponds to one sample, which means one bin represents the corresponding distance. Then the constant can be accepted as the maximum resolution in my thought. And the distance corresponding to one bin is 0.00643004115226337448559670781893 m, which is approximately 6.4 Cm.

I wonder how it's possible to detect 1mm movement with the resolution of 6.4 cm. I mean the periodic movement whose maximum amplitude is about 1mm. The closest example is respiration detection. I already have seen your video clip "x4m200 respiration sensor demonstration".

I believe that it can be detected by your chips. But I don't understand how it works. Would you please explain the mechanism of respiration detection?

Regards,
Kyle

Last edited: Aug 1, 2019
4. Hi Kyle,

I list the confusing concepts about XeThru radar data. X4M200 datasheet explained the algorithm on how to use pulse-doppler to extract RPM. The Detectable change below explains why the small chest or abdomen movement can be detected.

RangeBin Interval: The distance between sampling points or what we call range bins are 0.64cm for RF data and 5.14cm for baseband data. While the accuracy is not dictated by the system sampling rate, you can e.g. interpolate the RF data or use the phase information in the baseband data. The accuracy is mostly given by SNR and can be sub-millimeter. Longer integration time gives better precision, so you can increase the iteration or pulses per step to get high precision.
Resolution: According to http://www.radartutorial.eu/01.basics/Range Resolution.en.html The radar pulse used by X4 has bandwidth 1.4GHz or 1.5GHz, so its resolution is around 10cm, which means two targets cannot be distinguished if their distance is closer than 10cm. Accuracy can be calculated when SNR is evaluated for the specific condition.
reflected signal SNR is affected by object size, shape, material and so on, our primary tests show the accuracy for adult human (chest) in front of the sensor (around 1m)could be less 5cm compared with laser ruler, also considering body is a multi-points object.
Detectable change: We use phase shift(θ, 0~2 π) to calculate the chest movement(BreathPattern, mm). I got the formula from our algorithm:
BreathPattern = κ * θ
κ = 1000*λ/（4* π）
λ = c/fc = 3e8/7.29GHz
Let’s assume BreathPattern = 1mm, then the phase shift(θ) is around 0.3, which is around 17deg. According to observation from radar phase plotting, this phase shift can be caught by X4 easily.

5. Thank you, Charlie.