Forum Replies Created
-
AuthorPosts
-
uRADMonitor
KeymasterHello Cane,
Sorry to hear about your health issues.
The BME680 is a mems sensor, but for detecting VOC it operates on the same principle like any other semiconductor / metal oxide sensor. Read on that here: http://www.edaphic.com.au/gas-detection-encyclopedia/semiconductor-sensors/
The sensor initiates REDOX chemical reactions on a heated filament, resulting in ionised local air and as a result modified electrical resistance. A cleaner air will produce less such reactions, resulting in poor conductivity and increased resistance, while a polluted air will increase conductivity resulting in lower resistance.Given the existence of many different gases / vapours / chemicals, any ppm would be an approximation for a particular class of substances. Their molar mass / burn rate / ionising resulting compounds and multiple other properties and complicated chemistry, make it impossible to compute an absolute ppm level, or to identify the substances.
On the other hand it offers a clear indication of changes in the air composition, and since the uRADMonitor records all data online, you have access to a history chart and you can correlate that to your condition. It will help you link the numbers to various emissions and their effect on your health.
Please have a look on the uRADMonitor A3, here. There is also the uRADMonitor INDUSTRIAL, that has 4 slots where we can install 4 sensors for 4 different gases, there’s a big list at the bottom, see it here.
uRADMonitor
KeymasterThank you for your report @asobig, I hope to have an answer soon.
uRADMonitor
KeymasterThat is correct. You also need to select the unit you wish to view.
uRADMonitor
KeymasterHi Moz, welcome to the network!
uRADMonitor
KeymasterExcellent! Please share a few screenshots with all this.
uRADMonitor
KeymasterHello Peter,
uRADMonitor has gathered an impressive amount of data since the project started. Public access is granted to the last 2 months of data only. For each data call, you should request not more than 30 days of data. What this means is that for any active unit on the map, you can look at radiation data for December or January.
Access to full database is possible.
uRADMonitor
KeymasterThat robot looks awesome! Yes, for O2, the return is the percentage. As for ppm, I will get back to you on email.
uRADMonitor
KeymasterAwesome,
Let me know if there is anything I can do to help.
uRADMonitor
KeymasterHi, I just sent it via email. Please make sure your usbAsp is set to 3.3V! This is important, or you risk damaging the model A board.
uRADMonitor
KeymasterThanks for the “hands-on” data . I can confirm CO2 is bad, especially when you need to do sensitive work as it’s getting harder to concentrate.
Flag changed to the right one.
uRADMonitor
KeymasterHi Jeff,
It’s no bug, but the server does additional compensation over the measured data. Here, the internal heating of the electronics produces a drift. Therefore, the correct info is displayed on the server. The best way to get the data is via the server API, presented ni the Dashboard.
In later firmware versions, the local data is set to match the server data. Would you like to update your unit’s firmware? It’s easy, see: https://www.uradmonitor.com/uradmonitor-model-a3-firmware-upgrade/
uRADMonitor
KeymasterYes, that would work too. Something similar was added in firmware v130 as a fix:
// an uint16_t stores 16 bits, we use first bit for sign, and following 15 bits for number (0..32767) // result is divided by 100 for a real with 2 decimals, max is 327.00 uint16_t di(double val) { uint16_t res = 0; uint16_t mask = 1<<15; if (val > 327 || val < -327) return res; if (val < 0) { val *= -1000; res = val / 10; // fix double approximation issue res |= mask; } else { val *= 1000; res = val / 10; // fix double approximation issue } return res; }
and
// an uint16_t stores 16 bits, we use first bit for sign, and following 15 bits for number (0..32767) // result is divided by 100 for a real with 2 decimals, max is 327.00 double id(uint16_t val) { double res = 0; uint16_t mask = 1<<15; // check negative number if (val & mask) { val &= ~mask; // remove sign bit res = val; res = -res; } else { res = val; } res /= 100.0; // restore the 2 decimals return res; }
It’s pretty much the same thing.
uRADMonitor
KeymasterGreat to see this working! You can use http://uradmonitor.com/?open=8200009C or the new beta dashboard https://uradmonitor.com/tools/dashboard-04/?open=8200009C
uRADMonitor
KeymasterSwitching the autocalibration off and automatic calibration every month at a quit moment ?
That’s a very good idea!
uRADMonitor
KeymasterI’ve provided more details on email, please check it. But for the continuity of the topic, the bug becomes apparent when you decode the “converted” values. Please add the decoding function:
double int2double(uint16_t val) { int8_t d = (val >> 8) & 0xFF; int8_t i = (val & 0xFF) - 127; if (i < 0) d *= -1; return i + d / 100.0; }
The if (i < 0) d *= -1; won't trigger when i is 0. The problem with this algorithm is that we have no way of knowing the sign, when the integer byte is 0. Exactly the bug you have spotted. Try this code to the "converted" values, and check the more details I sent on your email. I tried to see if this is fixable on the server side, but apparently information is lost on the conversion. A new encoding scheme has been added to the firmware. We will need to install this new firmware on all affected units.
-
AuthorPosts