From 3fa1eadb91eea001342d2d357d7aaf661e8a2a5d Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 11 Jun 2017 22:46:01 -0700 Subject: [PATCH 1/1] altoslib: Handle EasyMini v2.0 ADC values Different from EasyMini v1.0 Signed-off-by: Keith Packard --- altoslib/AltosConvert.java | 18 ++++++++++++++++-- altoslib/AltosEepromRecordMini.java | 12 ++++++++---- altoslib/AltosEepromRecordSet.java | 3 ++- altoslib/AltosLib.java | 3 ++- 4 files changed, 28 insertions(+), 8 deletions(-) diff --git a/altoslib/AltosConvert.java b/altoslib/AltosConvert.java index 0d25c6d7..9eb8d16a 100644 --- a/altoslib/AltosConvert.java +++ b/altoslib/AltosConvert.java @@ -270,7 +270,15 @@ public class AltosConvert { return 3.3 * mega_adc(raw) * (5.1 + 10.0) / 10.0; } - static double easy_mini_voltage(int sensor, int serial) { + static double easy_mini_2_adc(int raw) { + return raw / 4095.0; + } + + static double easy_mini_1_adc(int raw) { + return raw / 32767.0; + } + + static double easy_mini_1_voltage(int sensor, int serial) { double supply = 3.3; double diode_offset = 0.0; @@ -284,7 +292,13 @@ public class AltosConvert { if (serial < 1665) diode_offset = 0.150; - return sensor / 32767.0 * supply * 127/27 + diode_offset; + return easy_mini_1_adc(sensor) * supply * 127/27 + diode_offset; + } + + static double easy_mini_2_voltage(int sensor) { + double supply = 3.3; + + return easy_mini_2_adc(sensor) * supply * 127/27; } public static double radio_to_frequency(int freq, int setting, int cal, int channel) { diff --git a/altoslib/AltosEepromRecordMini.java b/altoslib/AltosEepromRecordMini.java index 4b3a564e..22bd073a 100644 --- a/altoslib/AltosEepromRecordMini.java +++ b/altoslib/AltosEepromRecordMini.java @@ -42,8 +42,10 @@ public class AltosEepromRecordMini extends AltosEepromRecord { private double battery_voltage(int sensor) { int log_format = log_format(); - if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI) - return AltosConvert.easy_mini_voltage(sensor, eeprom.config_data().serial); + if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI1) + return AltosConvert.easy_mini_1_voltage(sensor, eeprom.config_data().serial); + if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI2) + return AltosConvert.easy_mini_2_voltage(sensor); if (log_format == AltosLib.AO_LOG_FORMAT_TELEMINI2) return AltosConvert.tele_mini_2_voltage(sensor); if (log_format == AltosLib.AO_LOG_FORMAT_TELEMINI3) @@ -53,8 +55,10 @@ public class AltosEepromRecordMini extends AltosEepromRecord { private double pyro_voltage(int sensor) { int log_format = log_format(); - if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI) - return AltosConvert.easy_mini_voltage(sensor, eeprom.config_data().serial); + if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI1) + return AltosConvert.easy_mini_1_voltage(sensor, eeprom.config_data().serial); + if (log_format == AltosLib.AO_LOG_FORMAT_EASYMINI2) + return AltosConvert.easy_mini_2_voltage(sensor); if (log_format == AltosLib.AO_LOG_FORMAT_TELEMINI2) return AltosConvert.tele_mini_2_voltage(sensor); if (log_format == AltosLib.AO_LOG_FORMAT_TELEMINI3) diff --git a/altoslib/AltosEepromRecordSet.java b/altoslib/AltosEepromRecordSet.java index 7b111ed3..1f10e677 100644 --- a/altoslib/AltosEepromRecordSet.java +++ b/altoslib/AltosEepromRecordSet.java @@ -75,7 +75,8 @@ public class AltosEepromRecordSet implements AltosRecordSet { break; case AltosLib.AO_LOG_FORMAT_TELEMINI2: case AltosLib.AO_LOG_FORMAT_TELEMINI3: - case AltosLib.AO_LOG_FORMAT_EASYMINI: + case AltosLib.AO_LOG_FORMAT_EASYMINI1: + case AltosLib.AO_LOG_FORMAT_EASYMINI2: record = new AltosEepromRecordMini(eeprom); break; case AltosLib.AO_LOG_FORMAT_TELEGPS: diff --git a/altoslib/AltosLib.java b/altoslib/AltosLib.java index 6c1729df..6cf875a9 100644 --- a/altoslib/AltosLib.java +++ b/altoslib/AltosLib.java @@ -354,7 +354,7 @@ public class AltosLib { public static final int AO_LOG_FORMAT_TELEMETRY = 3; public static final int AO_LOG_FORMAT_TELESCIENCE = 4; public static final int AO_LOG_FORMAT_TELEMEGA_OLD = 5; - public static final int AO_LOG_FORMAT_EASYMINI = 6; + public static final int AO_LOG_FORMAT_EASYMINI1 = 6; public static final int AO_LOG_FORMAT_TELEMETRUM = 7; public static final int AO_LOG_FORMAT_TELEMINI2 = 8; public static final int AO_LOG_FORMAT_TELEGPS = 9; @@ -362,6 +362,7 @@ public class AltosLib { public static final int AO_LOG_FORMAT_DETHERM = 11; public static final int AO_LOG_FORMAT_TELEMINI3 = 12; public static final int AO_LOG_FORMAT_TELEFIRETWO = 13; + public static final int AO_LOG_FORMAT_EASYMINI2 = 14; public static final int AO_LOG_FORMAT_NONE = 127; public static boolean isspace(int c) { -- 2.30.2