/*
* Sensor data conversion functions
*/
-package org.altusmetrum.altoslib_11;
+package org.altusmetrum.altoslib_14;
import java.util.*;
return altitude;
}
+ public static double degrees_to_radians(double degrees) {
+ if (degrees == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ return degrees * (Math.PI / 180.0);
+ }
+
+ public static double radians_to_degrees(double radians) {
+ if (radians == AltosLib.MISSING)
+ return AltosLib.MISSING;
+ return radians * (180.0 / Math.PI);
+ }
+
public static double
cc_battery_to_voltage(double battery)
{
return sensor / 32767.0 * supply * 127/27;
}
- static double tele_gps_voltage(int sensor) {
+ static double tele_gps_1_voltage(int sensor) {
double supply = 3.3;
return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0;
}
+ static double tele_gps_2_voltage(int sensor) {
+ double supply = 3.3;
+
+ return sensor / 4095.0 * supply * (5.6 + 10.0) / 10.0;
+ }
+
static double tele_bt_3_battery(int raw) {
if (raw == AltosLib.MISSING)
return AltosLib.MISSING;
return 3.3 * mega_adc(raw) * (5.1 + 10.0) / 10.0;
}
- static double easy_mini_voltage(int sensor, int serial) {
+ static double easy_timer_voltage(int sensor) {
+ return 3.3 * mega_adc(sensor) * (100.0 + 27.0) / 27.0;
+ }
+
+ static double easy_mini_2_adc(double raw) {
+ return raw / 4095.0;
+ }
+
+ static double easy_mini_1_adc(double raw) {
+ return raw / 32767.0;
+ }
+
+ static double easy_mini_1_voltage(int sensor, int serial) {
double supply = 3.3;
double diode_offset = 0.0;
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;
+ }
+
+ static double motor_pressure(double voltage) {
+ double base = 0.5;
+ double max = 4.5;
+ double full_scale_pressure = psi_to_pa(1600);
+
+ if (voltage < base)
+ voltage = base;
+ if (voltage > max)
+ voltage = max;
+ return (voltage - base) / (max - base) * full_scale_pressure;
+ }
+
+ static double easy_motor_2_motor_pressure(int sensor, double ground_sensor) {
+ double supply = 3.3;
+ double ground_voltage = easy_mini_2_adc(ground_sensor) * supply * 15.6 / 10.0;
+ double voltage = easy_mini_2_adc(sensor) * supply * 15.6 / 10.0;
+
+ return motor_pressure(voltage) - motor_pressure(ground_voltage);
}
public static double radio_to_frequency(int freq, int setting, int cal, int channel) {
}
public static double acceleration_from_sensor(double sensor, double plus_g, double minus_g, double ground) {
+
if (sensor == AltosLib.MISSING)
return AltosLib.MISSING;
double counts_per_g = (plus_g - minus_g) / 2.0;
double counts_per_mss = counts_per_g / gravity;
+
+ if (counts_per_mss == 0)
+ return AltosLib.MISSING;
+
return (sensor - ground) / counts_per_mss;
}
public static AltosPyroName pyro_name = new AltosPyroName();
- public static AltosUnits magnetic_field = null;
+ public static AltosUnits magnetic_field = new AltosGauss();
public static String show_gs(String format, double a) {
a = meters_to_g(a);