-
Notifications
You must be signed in to change notification settings - Fork 288
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
extending the range of the dwm1000 #245
Comments
hi, kuek |
hi, i've found a solution that make the range a lot bigger, we have reached a range of 200m on open terrain and 30 meters inside a building. the signal transmit strength is configurable in the dw1000 chip according to the dw1000 user manual "7.2.31 Register file: 0x1E –Transmit Power Control". in the dw1000.cpp file this transmit strength caliblation is calibrated for every channel. this calibration is not right. i've set the transmit strength so high as possible. I don't understand why we need this calibration. so I've replaced if(_channel == CHANNEL_1 || _channel == CHANNEL_2) {
if(_pulseFrequency == TX_PULSE_FREQ_16MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x15355575L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x75757575L, LEN_TX_POWER);
}
} else if(_pulseFrequency == TX_PULSE_FREQ_64MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x07274767L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x67676767L, LEN_TX_POWER);
}
} else {
// TODO proper error/warning handling
}
} else if(_channel == CHANNEL_3) {
if(_pulseFrequency == TX_PULSE_FREQ_16MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x0F2F4F6FL, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x6F6F6F6FL, LEN_TX_POWER);
}
} else if(_pulseFrequency == TX_PULSE_FREQ_64MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x2B4B6B8BL, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x8B8B8B8BL, LEN_TX_POWER);
}
} else {
// TODO proper error/warning handling
}
} else if(_channel == CHANNEL_4) {
if(_pulseFrequency == TX_PULSE_FREQ_16MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x1F1F3F5FL, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x5F5F5F5FL, LEN_TX_POWER);
}
} else if(_pulseFrequency == TX_PULSE_FREQ_64MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x3A5A7A9AL, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x9A9A9A9AL, LEN_TX_POWER);
}
} else {
// TODO proper error/warning handling
}
} else if(_channel == CHANNEL_5) {
if(_pulseFrequency == TX_PULSE_FREQ_16MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x0E082848L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x48484848L, LEN_TX_POWER);
}
} else if(_pulseFrequency == TX_PULSE_FREQ_64MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x25456585L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x85858585L, LEN_TX_POWER);
}
} else {
// TODO proper error/warning handling
}
} else if(_channel == CHANNEL_7) {
if(_pulseFrequency == TX_PULSE_FREQ_16MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x32527292L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0x92929292L, LEN_TX_POWER);
}
} else if(_pulseFrequency == TX_PULSE_FREQ_64MHZ) {
if(_smartPower) {
writeValueToBytes(txpower, 0x5171B1D1L, LEN_TX_POWER);
} else {
writeValueToBytes(txpower, 0xD1D1D1D1L, LEN_TX_POWER);
}
} else {
// TODO proper error/warning handling
}
} else {
// TODO proper error/warning handling
} in this simple line of code edit: warning, read the comments in this post carefully! the max power of the dwm1000 can be higher than the regulatory limits of your country! |
Looks awesome. Maybe a patch?
…On Dec 6, 2017 07:22, "r-schouten" ***@***.***> wrote:
hi,
i've found a solution that make the range a lot bigger, we have reached a
range of 200m on open terrain and 30 meters inside a building.
the signal transmit strength is configurable in the dw1000 chip according
to the dw1000 user manual "7.2.31 Register file: 0x1E –Transmit Power
Control". in the dw1000.cpp file this transmit strength caliblation is
calibrated for every channel. this calibration is not right. i've set the
transmit strength so high as possible. I don't understand why we need this
calibration.
so I've replaced
if(_channel == CHANNEL_1 || _channel == CHANNEL_2) { if(_pulseFrequency ==
TX_PULSE_FREQ_16MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x15355575L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x75757575L, LEN_TX_POWER); } } else if(_pulseFrequency ==
TX_PULSE_FREQ_64MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x07274767L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x67676767L, LEN_TX_POWER); } } else { // TODO proper error/warning
handling } } else if(_channel == CHANNEL_3) { if(_pulseFrequency ==
TX_PULSE_FREQ_16MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x0F2F4F6FL, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x6F6F6F6FL, LEN_TX_POWER); } } else if(_pulseFrequency ==
TX_PULSE_FREQ_64MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x2B4B6B8BL, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x8B8B8B8BL, LEN_TX_POWER); } } else { // TODO proper error/warning
handling } } else if(_channel == CHANNEL_4) { if(_pulseFrequency ==
TX_PULSE_FREQ_16MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x1F1F3F5FL, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x5F5F5F5FL, LEN_TX_POWER); } } else if(_pulseFrequency ==
TX_PULSE_FREQ_64MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x3A5A7A9AL, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x9A9A9A9AL, LEN_TX_POWER); } } else { // TODO proper error/warning
handling } } else if(_channel == CHANNEL_5) { if(_pulseFrequency ==
TX_PULSE_FREQ_16MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x0E082848L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x48484848L, LEN_TX_POWER); } } else if(_pulseFrequency ==
TX_PULSE_FREQ_64MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x25456585L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x85858585L, LEN_TX_POWER); } } else { // TODO proper error/warning
handling } } else if(_channel == CHANNEL_7) { if(_pulseFrequency ==
TX_PULSE_FREQ_16MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x32527292L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0x92929292L, LEN_TX_POWER); } } else if(_pulseFrequency ==
TX_PULSE_FREQ_64MHZ) { if(_smartPower) { writeValueToBytes(txpower,
0x5171B1D1L, LEN_TX_POWER); } else { writeValueToBytes(txpower,
0xD1D1D1D1L, LEN_TX_POWER); } } else { // TODO proper error/warning
handling } } else { // TODO proper error/warning handling }
in this simple line of code
writeValueToBytes(txpower, 0x1F1F1F1FL, LEN_TX_POWER);
I hope that this helps for everyone that need a longer range! and I want
to know why this calibration is made.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<#245 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AExz3axjnCwTsD62vdah8ve2s1-BsJc5ks5s9ocTgaJpZM4Qs9Lm>
.
|
well, "patch". hm. make sure you stay in the regulatory limits by your country, which are usually -41.3 dBm/MHz PSD. otherwise regulatory may pay you a visit... and this is usually not cheap. |
Good point. My oversight. Sorry.
…On Dec 6, 2017 16:45, "kuek" ***@***.***> wrote:
well, "patch". hm. make sure you stay in the regulatory limits by your
country, which are usually -41.3 dBm/MHz PSD. otherwise regulatory may pay
you a visit... and this is usually not cheap.
instead of increasing output power, make sure your recevier is more
sensitive, your have high receiver gain, hardware is right. power is not
always a solution, instead it will mostly cause harm and not fulfill
regulations.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#245 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AExz3efgNTh4Q2rLK8r74W0SRvIh0njWks5s9wrdgaJpZM4Qs9Lm>
.
|
i measured a signal strength of -67db, that is far away of -41.3db |
the calibration used in the library is copied from table 18 and 19 of the dw1000 user guide. the dw1000 is the chip inside the dwm1000 module, I think the dwm1000 module have an other antenna than decawave have used to make this calibration. if the maximum tx power is too high we should make an new calibration. |
its -41.3 dBm/MHz. this is a power spectral density. -67 dBm (which you probably mean) with your power settings, then either you have measured wrong or your hardware is odd. just a warning, if regulations catch you with this, make sure you have a good explanation. |
is there a way we can make an new calibration, is there any way we can measure the real signal strength? this calibration was copied from the dw1000 user guide and not made for this specific antenna. in the dwm1000 product brief i saw this "Excellent communications range of up to 300m thanks to coherent receiver techniques*", why would they say that if only a range of 10m is permitted? |
i've think i've found the answer in the dwm1000 datasheet. "To achieve best results when using the DWM1000 with Deca wave’s DecaRanging software , you will need to adjust the default transmit power value programmed into the DWM1000 by the software. This is because DecaRanging software is targeted at Decawave’s EVB1000 evaluation board which has a different RF path compared to the DWM1000. You should increase the transmit power by approximately 3 dB." so, if we add 3dB to the calibration we use now that should be oke right? |
No, if you want to make it correct you need to go to a calibrated emc Chamber and make the measurements. 3dB is double, but in terms of range increase its not much. |
Hi, I want to set the PSD to -41.3dBm / MHz according to the regulation of my country. However, I am not sure how and where to set it. Can someone explain the meaning of the hex values in "writeValueToBytes"? |
With the default settings I get a maximum range of about ~4m for the dwm1000 modules, so I did a short test with gain=33.5dB.resulting resulting in a maximum range of ~10m outdoor. Looks like the advertised maximum range is a bit too exaggerated.. |
Me and @Sonic0 got the same results with the default settings, try to activate smart power and see if it gets better. We'll make an update as soon as possible. |
Already tested smartpower, gave me ~2m. Btw can someone please explain me why "MODE_LONGDATA_FAST_LOWPOWER" sends with more power then "MODE_LONGDATA_RANGE_ACCURACY"? MODE_LONGDATA_FAST_LOWPOWER sets PRF to 16MHz, on channel 5 the txpower is set to 16dB. MODE_LONGDATA_RANGE_ACCURACY sets PRF to 64MHz, on channel 5 the txpower is set to 8.5dB. |
Check the 2nd comment to this issue. I think that's the thing you are
looking for.
…On Tue, Jul 31, 2018, 7:45 PM nxdefiant ***@***.***> wrote:
Already tested smartpower, gave me ~2m.
Btw can someone please explain me why "MODE_LONGDATA_FAST_LOWPOWER" sends
with more power then "MODE_LONGDATA_RANGE_ACCURACY"?
MODE_LONGDATA_FAST_LOWPOWER sets PRF to 16MHz, on channel 5 the txpower is
set to 16dB. MODE_LONGDATA_RANGE_ACCURACY sets PRF to 64MHz, on channel 5
the txpower is set to 8.5dB.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
<#245 (comment)>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AWi_NgKxn7w34E5o_6f4KpMWN_JjOAyRks5uMJfRgaJpZM4Qs9Lm>
.
|
@nxdefiant remember that SmartPower is useful when you use short messages(short preamble). See Application Note APS023 from Decawave. |
Strange with same settings I got 20m or more today. I haven't changed anything in the setup. The only thing that notably changed is the weather.. I'm testing with the Localino v1.3 modules btw. |
Hi, |
can any one tell how to increase the dbm? |
@SATHYALAKSHMI123456 |
can you tell me a some syntex
…On Sun, Jun 23, 2019 at 7:19 PM Andrea Salvatori - IU6FZL < ***@***.***> wrote:
@SATHYALAKSHMI123456 <https://github.com/SATHYALAKSHMI123456>
In this driver is not disponible a method to set manually the transmission
power.
You should write the registry directly or modify functions as in the
beginning of this issue.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#245?email_source=notifications&email_token=AMMTFYR3WFJUCSR7ERIQFUTP355NDA5CNFSM4EFT2LTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYK674I#issuecomment-504754161>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AMMTFYXNFDPETZZW3A6UZODP355NDANCNFSM4EFT2LTA>
.
|
I recommend you to use a fork of this library, Arduino-sw1000-ng (search on GitHub but it is very different from this). There are two different public functions with witch you can set up the transmission power. |
IF U HAVE A CODING FOR THIS PLEASE SEND ME .WE ARE OBTAIN 50MTRRS
…On Mon, Jun 24, 2019 at 5:56 PM Andrea Salvatori - IU6FZL < ***@***.***> wrote:
can you tell me a some syntex
I recommend you to use a fork of this library, Arduino-sw1000-ng (search
on GitHub but it is very different from this). There are two different
public functions with witch you can set up the transmission power.
You should read the user manual (a transmission power part) before using
this setting.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#245?email_source=notifications&email_token=AMMTFYTGJTI4DIPOSUMML23P4C4N5A5CNFSM4EFT2LTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYMX74Q#issuecomment-504987634>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AMMTFYT4J5J7TF5AH5MV533P4C4N5ANCNFSM4EFT2LTA>
.
|
Please do not write in Uppercase. |
ok sir.i cant understand please help me
…On Tue, Jun 25, 2019 at 1:45 AM Andrea Salvatori - IU6FZL < ***@***.***> wrote:
Please do not write in Uppercase.
As in the third comment of this issue, I think you can call *writeValueToBytes(txpower,
, LEN_TX_POWER);* . See user manual to insert the desired value.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#245?email_source=notifications&email_token=AMMTFYWMHIVOJPT6KI62CZTP4ETPDA5CNFSM4EFT2LTKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGODYOCWIQ#issuecomment-505162530>,
or mute the thread
<https://github.com/notifications/unsubscribe-auth/AMMTFYSCN35ENE5RXNNAMCLP4ETPDANCNFSM4EFT2LTA>
.
|
The dwm1000 modules only works within a range of 10 meters. That is very short because the dwm1000 product brief and the dw1000 datasheet says that it will work far over 100 meter outside and 20-50 meters inside a building.
i've tried to change the channel and the mode of the dwm1000, but it doesn't make the range longer.
does anyone know a solution?
The text was updated successfully, but these errors were encountered: