summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--altoslib/AltosConvert.java17
-rw-r--r--altoslib/AltosSensorEMini.java8
2 files changed, 18 insertions, 7 deletions
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) {
}
}