Comments (31)
Hey @crosvera. Just wanted to let you know that NodeFeatures::inputRanges()
now returns a vector of InputRangeEntry
objects.
An InputRangeEntry
has the WirelessTypes::InputRange
enumeration, as well as the gain
associated with that input range, if applicable.
from mscl.
Yea, Hardware Gain has been changed out in favor of Input Range. So you will see a getInputRange() function.
There is no current way to get the bit resolution, although that has come up in the past.
I will add it to our internal backlog for MSCL. In the meantime, do you have specific questions about bit resolution for certain products that I might be able to answer for you?
from mscl.
I will take a look into getInputRange(). About the bit resolution, I'm
looking a way to get the range resolution in bits, so I can get the actual
offset-scale value.
offset-scale = bit_resolution * autobalance percentage
Thanks,
Best regards.
On Wed, Nov 9, 2016 at 12:12 PM, Richard Stoneback <[email protected]
wrote:
Yea, Hardware Gain has been changed out in favor of Input Range. So you
will see a getInputRange()
http://lord-microstrain.github.io/MSCL/Documentation/MSCL%20API%20Documentation/index.html#File:MicroStrain/Wireless/WirelessNode.h:WirelessNode.getInputRange
function.There is no current way to get the bit resolution, although that has come
up in the past.
I will add it to our internal backlog for MSCL. In the meantime, do you
have specific questions about bit resolution for certain products that I
might be able to answer for you?—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#18 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AANxZoUJ62MEhi4WOaqeRz7HZeN6zXvHks5q8eLIgaJpZM4KtoF9
.
Carlos Ríos V.
Ing. (E) en Computación e Informática.
Concepción, Región del Bío-Bío, Chile.
http://www.crosvera.info
Linux user number 425502
from mscl.
Are you looking for the resolution of the offset voltage? That would be 10-bits for all current products.
If you're looking for the resolution of the actual product, that can be found on the product data sheets on our website. Typically, this is 12, 16, or 18-bit.
from mscl.
Yeah I know that I can check the datasheet to get the product resolution,
just I thought it could be a great idea to get it from something like
wirelessNode().getBitResolution(), because sometimes I have to deal with
several nodes and not always are the same.
Thanks.
On Wed, Nov 9, 2016 at 12:48 PM, Richard Stoneback <[email protected]
wrote:
Are you looking for the resolution of the offset voltage? That would be
10-bits for all current products.
If you're looking for the resolution of the actual product, that can be
found on the product data sheets on our website. Typically, this is 12, 16,
or 18-bit.—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#18 (comment),
or mute the thread
https://github.com/notifications/unsubscribe-auth/AANxZoJ8UcmvSJ9uFJeXMg4RWp-svisTks5q8etSgaJpZM4KtoF9
.
Carlos Ríos V.
Ing. (E) en Computación e Informática.
Concepción, Región del Bío-Bío, Chile.
http://www.crosvera.info
Linux user number 425502
from mscl.
Definitely a good idea. I've created a ticket to do this, but there is some stuff ahead of it, so it won't be an immediate add.
from mscl.
@rwslord is there anyway to transform the getInputRange()
result into hardware Gain?
For example from 2.5mV that I get as InputRange from NodeCommander (I get 2mV as InputRange in MSCL) how can I transform that into 569 (the gain value that is shown in NodeCommander).
Best Regards.
from mscl.
Unfortunately, there is no explicit way at this time in MSCL to convert to a hardware gain value.
from mscl.
So there is no way to set or get the hardware gain?
from mscl.
Not the hardware gain value itself...but just to be clear, setting the input range is adjusting the hardware gain. It's the same setting, just a different way of looking at it.
from mscl.
Well, I don't know how to look it then.
Now I tried to autobalance a SG-Link node, but node.getInputRange()
returns "Invalid Input Range".
From NodeCommander I see the following difference:
SG-Link Gain configuration:
V-Link Gain configuration:
As you can see the input is different, one is accepting the hardware gain and the other the Input Range.
How should I configure the SGLink gain (input range) value?
Best Regards.
from mscl.
calling WirelessNode.features.inputRanges()
will give you a list of allowed input ranges for the ChannelGroup
that you pass in to the function.
Also, it might be worth using SensorConnect instead of Node Commander for comparing to, as SensorConnect directly uses MSCL for everything.
from mscl.
@rwslord, I've compared the input range options that SensorConnect gives me with a SG-Link node, which are:
14mV, 10mV, 7mV, 4mV, 2mV, 1.5mV, 1mV, 812uV
I have autobalanced the the node with each of these input-ranges, then I compared what NodeCommander returns as gain values, which are respectively:
104, 147, 198, 372, 750, 997, 1505, 1800
Now, we used to use 503 as gain value in SG-Link nodes, but this configuration throws me an "Invalid Input Range". So I wondering, how can I set a custom gain value? or I'm just missing something?
According to the MicroStrain LXRS Node EEPROM Map I can use the following equation to calculate the gain values to be setted via EEPROM commands:
In this equation appears the Bit value
variable, but what refers to? Because trying to solving the equation (for sg-link nodes) using the gain values:
104, 997, 147, 198
I obtain the following Bit values
: 14.006, 137.035, 19,987, 27.010
Any toughs?
Best regards.
from mscl.
Yes, some Nodes in the past allowed for custom hardware gain values. We've gone away from this model and now just allow an Input Range from a list of predefined values. Is there not a range/gain that gets close enough for you?
from mscl.
@rwslord and what about write directly into the EEPROM using the equation from above?
Thanks.
from mscl.
Yes, that should still work.
from mscl.
@rwslord In that case, what refers to Bit value
in the equation?
Best regards
from mscl.
That's a value between 0 and 255 which is what goes into the eeprom location.
from mscl.
@rwslord Worked perfect with SG-Link!!
For V-Link, NodeCommander and SensorConnect, gives the following gain options: 21, 30, 75, 147, 291, 569, 1214, 2222, 3799, 13074
. Reading the Eeprom, those gain values correspond with the following bits values: 5, 76, 184, 219, 237, 246, 251, 253, 254, 255
respectively.
In the python console I ran the following snippet:
for i in [5, 76, 184, 219, 237, 246, 251, 253, 254, 255]:
print i, 10.0 - (1020000.0 / ((20.0 *i)-5151.0))
What I'm trying to do here is to check calculate the gain values from the bits obtained before, I used the equation shown before, these are the results:
bits gain
5 211.940209859
76 290.914348664
184 703.405846363
219 1332.95719844
237 2491.75182482
246 4425.58441558
251 7796.25954198
253 11218.7912088
254 14376.1971831
255 20010.0
As you can see, I'm not getting correct gain values. Do you know if the equation it is ok? If not, can you share the good one?
Thanks,
Best regards.
from mscl.
Can you tell me the model number of your V-Link? We've had a few different versions, so I want to make sure I'm giving you the correct information.
from mscl.
@rwslord the V-Link model number is: 1000-37416.
Best regards.
from mscl.
Ok, I'm guessing it is a 6312-1000? That first number tells me the most, but I believe that is what you have. Please correct me if not.
The formula that I actually have for that Node is:
double HardwareGain::bitsToGain_vLink(uint16 bits)
{
return 21.0 * (99609.375 / (160.0 + (( (255.0 - bits) / 256.0) * 100000.0)));
}
The EEPROM map that you are referencing is our legacy version. The new one can be found on our Protocols page, although the hardware gain formulas are no longer in it. I will add a request to get them added to that document.
from mscl.
Sorry, I should have clarified. The link you want on the Protocols page is LORD MicroStrain Wireless Configuration
from mscl.
@rwslord Thanks for the equation and yes it was that model number 💃 . About the link, I knew the existence of that file, but it doesn't contains any equation or value for the hardware gain configuration.
Best regards.
from mscl.
Gotcha. Yea, I will work on getting details of hardware gain / input range conversion publicly accessible.
from mscl.
@rwslord I'm doing some tests with SG-Link OEM nodes, and I'm wondering if you have another equation to calculate the Gain, like the one shown above, but exclusively for sg-link oem.
Best regards.
from mscl.
Yes, here is the conversion for the SG-Link-OEM:
double HardwareGain::bitsToGain_sgLinkOem(uint16 bits)
{
return std::pow(2.0, bits + 1) * 10.0;
}
from mscl.
@rwslord excellent news, I will try it!
from mscl.
@rwslord I'm trying to use inputRanges()
method but I'm stuck. I'm using a SG-Link-200-OEM node:
features = node.features()
chngroups = features.channelGroups()
for c in chngroups:
mask = c.channels()
try:
print(features.inputRanges(mask))
except:
print('error', mask.name())
I get the following:
('error', 'Differential (ch1)')
('error', 'Single-ended (ch2)')
('error', 'Pulse Frequency (ch5)')
('error', 'Total Pulses (ch6)')
('error', 'Differential (ch1)')
('error', 'Single-ended (ch2)')
('error', 'Pulse Input (ch5-ch6)')
What I'm doing wrong here?
By the way, as previously we talked, is there any convertion formula for this node model (sn: 6305-4200-85393)?
Best regards.
from mscl.
In your except
, you should be able to catch the mscl.Error
and print out the error message that you are getting. This might help you for further debugging.
It looks like there are a couple issues in your code that I can spot. The SG-Link-200-OEM actually requires you to use a different version of the inputRanges()
function, because it supports configuration of excitation voltage. There is an overloaded version that you should be using which is documented here. Essentially, you have to pass the excitation voltage that you want to get the list of input ranges for, as a second parameter. You can check if you need to use this overloaded version of inputRanges by calling features.supportsExcitationVoltageConfig()
.
Another issue I see is that you are iterating over all the channel groups and assuming that each group supports the input range functionality. Before you call features.inputRanges(mask)
, you should check c.hasSetting(mscl.WirelessTypes.chSetting_inputRange)
is true.
Once you get this working, the inputRanges()
function will return a container of InputRangeEntry
objects, which should have gain()
as an option.
from mscl.
A bit late, but just wanted to add some new info in case anyone is looking for it -
The output bit resolutions for many of our current products are now available for lookup. The following properties were added to the WirelessChannel
objects returned by NodeFeatures::channels()
:
adcResolution()
- the bit resolution for the channeladcMaxValue()
- the maximum uncalibrated value this channel is able to output
I'm a little unclear about what you were originally using this value for (offset-scale = bit_resolution * autobalance percentage) but if it was related to determining desired calibration values we have added a few new tools to SensorConnect to assist with this. I'll look into publishing the underlying formulas used in calculating these calibration values if that would be helpful. If I've misunderstood let me know and if you're interested in clarifying and I can look into making relevant info/formulas generally available!
Thanks!
from mscl.
Related Issues (20)
- node connection (WSDA-200-USB with node adress 57233) HOT 2
- Problem using 3DMCV7-AHRS with Raspberry Pi 3B+ HOT 3
- 3DM-GV7-AHRS Supported Commands and Pulling RPY
- Failed to read the Model Number (EEPROM 46) from Node HOT 2
- Datalog Download from Nodes fail despite generous amount of retries and timeouts
- Read ed estract data from device with script python
- [3DM-CV7-AHRS] Serial communication with raspberry pi using usb cable
- 3DM CV7-AHRS activate trigger HOT 2
- 3DMGQ7 cdc_adm: failed to set dtr/rts, then Error: Failed to communicate with device
- [3DMCV7-AHRS] PPS in GPIO setup HOT 2
- 3DMCV7-AR with setSensorToVehicleRotation_matrix issue HOT 1
- GNSS Heading Updates API call failure
- Raspberry pi5 | ImportError: /_mscl.so: ELF load command address/offset not page-aligned HOT 2
- Error: openssl related issue
- gv7 question HOT 4
- [Question] transmitRate and number of channels in SG-Link-200-OEM
- Support for BeiDou Ephemeris
- How can I use the MSCL C++ library on an ARM Cortex M4 microcontroller?
- Using Communication protocol command sets HOT 3
- question about getting "CH_FIELD_SENSOR_RAW_GYRO_VEC"
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mscl.