From: Keith Packard Date: Thu, 3 Apr 2014 05:04:18 +0000 (-0700) Subject: altoslib: Fix EasyMini voltage computations X-Git-Tag: 1.3.2.2~157 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=21d584b9bf93b96a05ab374105493c0e17df320f;ds=sidebyside altoslib: Fix EasyMini voltage computations Early Em prototypes had a 3.0V regulator. Early v1.0 boards measured power past the blocking diode. Deal with both conditions to try and report more accurate voltages for EasyMini data. Signed-off-by: Keith Packard --- diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 8f214c8b..35923ec3 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -224,10 +224,21 @@ public class AltosConvert { return sensor / 32767.0 * supply * 127/27; } - static double easy_mini_voltage(int sensor) { - double supply = 3.0; + static double easy_mini_voltage(int sensor, int serial) { + double supply = 3.3; + double diode_offset = 0.0; - return sensor / 32767.0 * supply * 127/27; + /* early prototypes had a 3.0V regulator */ + if (serial < 1000) + supply = 3.0; + + /* Purple v1.0 boards had the sensor after the + * blocking diode, which drops about 150mV + */ + if (serial < 1665) + diode_offset = 0.150; + + return sensor / 32767.0 * supply * 127/27 + diode_offset; } public static double radio_to_frequency(int freq, int setting, int cal, int channel) { diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java index f888754c..5f43b3a9 100644 --- a/altoslib/AltosSensorEMini.java +++ b/altoslib/AltosSensorEMini.java @@ -31,10 +31,10 @@ public class AltosSensorEMini { if (sensor_emini == null) return; - state.set_battery_voltage(AltosConvert.easy_mini_voltage(sensor_emini.batt)); - state.set_apogee_voltage(AltosConvert.easy_mini_voltage(sensor_emini.apogee)); - state.set_main_voltage(AltosConvert.easy_mini_voltage(sensor_emini.main)); - + state.set_battery_voltage(AltosConvert.easy_mini_voltage(sensor_emini.batt, config_data.serial)); + state.set_apogee_voltage(AltosConvert.easy_mini_voltage(sensor_emini.apogee, config_data.serial)); + state.set_main_voltage(AltosConvert.easy_mini_voltage(sensor_emini.main, config_data.serial)); + } catch (TimeoutException te) { } }