From d7d87f827e6ed2f20347a37a6f5cef64e92a4dbf Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 5 Jun 2013 08:24:20 +1000 Subject: [PATCH] HAL_PX4: support voltage monitoring on multi-connector pin 5 --- libraries/AP_HAL_PX4/AnalogIn.cpp | 7 +++++++ libraries/AP_HAL_PX4/AnalogIn.h | 1 + 2 files changed, 8 insertions(+) diff --git a/libraries/AP_HAL_PX4/AnalogIn.cpp b/libraries/AP_HAL_PX4/AnalogIn.cpp index 2deda41890..efb5127896 100644 --- a/libraries/AP_HAL_PX4/AnalogIn.cpp +++ b/libraries/AP_HAL_PX4/AnalogIn.cpp @@ -19,6 +19,10 @@ // for a range of known inputs from 1.3V to 5.0V #define PX4_AIRSPEED_VOLTAGE_SCALING (6.76f/4096.0f) +// the FMU battery mon port has some additional scaling to make it +// safe for up to 18.68V. +#define PX4_FMU_BATTERY_VOLTAGE_SCALING (18.68f/4096.0f) + // pin4 in the SPI port is analog input 13, marked as analog3 on the // PX4IO schematic v1.3, and is scaled quite strangely #define PX4_ANALOG3_VOLTAGE_SCALING (16.88f/4096.0f) @@ -73,6 +77,9 @@ float PX4AnalogSource::read_latest() */ float PX4AnalogSource::voltage_average() { + if (_pin == PX4_ANALOG_FMU_BATTERY) { + return PX4_FMU_BATTERY_VOLTAGE_SCALING * read_average(); + } if (_pin == PX4_ANALOG_AIRSPEED_PIN) { return PX4_AIRSPEED_VOLTAGE_SCALING * read_average(); } diff --git a/libraries/AP_HAL_PX4/AnalogIn.h b/libraries/AP_HAL_PX4/AnalogIn.h index e79c36487c..ed4395e47d 100644 --- a/libraries/AP_HAL_PX4/AnalogIn.h +++ b/libraries/AP_HAL_PX4/AnalogIn.h @@ -14,6 +14,7 @@ #define PX4_ANALOG_BATTERY_VOLTAGE_PIN 100 #define PX4_ANALOG_BATTERY_CURRENT_PIN 101 +#define PX4_ANALOG_FMU_BATTERY 10 // on multi-connector pin 5 #define PX4_ANALOG_AIRSPEED_PIN 11 #define PX4_ANALOG_ANALOG2_PIN 12 // on SPI port pin 3 #define PX4_ANALOG_ANALOG3_PIN 13 // on SPI port pin 4