I am using ArduCopter V2.9.1. I am programming with Arduino 1.0.4.
I have placed the following lines into the APM_Config.h.
#ifndef BATT_MONITOR
#define BATT_MONITOR 4
#endif
#ifndef LOW_VOLTAGE
#define LOW_VOLTAGE 11.1
#endif
#ifndef VOLT_DIV_RATIO
#define VOLT_DIV_RATIO 3.56
#endif
#ifndef CURR_AMP_PER_VOLT
#define CURR_AMP_PER_VOLT 27.32
#endif
#ifndef CURR_AMPS_OFFSET
#define CURR_AMPS_OFFSET 0.0
#endif
#ifndef HIGH_DISCHARGE
#define HIGH_DISCHARGE 6400 //mah of battery
#endif
// Battery failsafe
#ifndef FS_BATTERY
#define FS_BATTERY DISABLED
#endif
#ifndef INPUT_VOLTAGE
#define INPUT_VOLTAGE 5.13
#endif
But when I open up the serial monitor and go to test it, it displays 0's for everything. When I open up the Mission Planner, it says the monitor is disabled, sensor is 0:other, APM Ver 1. However, it has stored the values below for everything else.
Am I doing something wrong? I have verified that the 3DR power module is working by using the mission planner to configure it. For my project, I need to have everything configured without using the Mission Planner.
Replies
So since no one responded, I tracked down the issue myself.
Apparently the values in Parameters.ino were not matching the Config.h values.
GSCALAR(battery_monitoring, "BATT_MONITOR", BATT_MONITOR),
// @Param: FS_BATT_ENABLE
// @DisplayName: Battery Failsafe Enable
// @Description: Controls whether failsafe will be invoked when battery voltage or current runs low
// @Values: 0:Disabled,1:Enabled
// @User: Standard
GSCALAR(failsafe_battery_enabled, "FS_BATT_ENABLE", FS_BATTERY),
// @Param: VOLT_DIVIDER
// @DisplayName: Voltage Divider
// @Description: Used to convert the voltage of the voltage sensing pin (BATT_VOLT_PIN) to the actual battery's voltage (pin voltage * INPUT_VOLTS/1024 * VOLT_DIVIDER)
// @User: Advanced
GSCALAR(volt_div_ratio, "VOLT_DIVIDER", VOLT_DIV_RATIO),
// @Param: AMP_PER_VOLT
// @DisplayName: Current Amps per volt
// @Description: Used to convert the voltage on the current sensing pin (BATT_CURR_PIN) to the actual current being consumed in amps (curr pin voltage * INPUT_VOLTS/1024 * AMP_PER_VOLT )
// @User: Advanced
GSCALAR(curr_amp_per_volt, "AMP_PER_VOLT", CURR_AMP_PER_VOLT),
// @Param: INPUT_VOLTS
// @DisplayName: Max internal voltage of the battery voltage and current sensing pins
// @Description: Used to convert the voltage read in on the voltage and current pins for battery monitoring. Normally 5 meaning 5 volts.
// @User: Advanced
GSCALAR(input_voltage, "INPUT_VOLTS", INPUT_VOLTAGE),
// @Param: BATT_CAPACITY
// @DisplayName: Battery Capacity
// @Description: Battery capacity in milliamp-hours (mAh)
// @Units: mAh
GSCALAR(pack_capacity, "BATT_CAPACITY", HIGH_DISCHARGE),
// @Param: LOW_VOLT
// @DisplayName: Low Voltage
// @Description: Set this to the voltage you want to represent low voltage
// @Range: 0 20
// @Increment: .1
// @User: Standard
GSCALAR(low_voltage, "LOW_VOLT", LOW_VOLTAGE),
// @Param: BATT_VOLT_PIN
// @DisplayName: Battery Voltage sensing pin
// @Description: Setting this to 0 ~ 13 will enable battery current sensing on pins A0 ~ A13.
// @Values: -1:Disabled, 0:A0, 1:A1, 13:A13
// @User: Standard
GSCALAR(battery_volt_pin, "BATT_VOLT_PIN", BATTERY_VOLT_PIN),
// @Param: BATT_CURR_PIN
// @DisplayName: Battery Current sensing pin
// @Description: Setting this to 0 ~ 13 will enable battery current sensing on pins A0 ~ A13.
// @Values: -1:Disabled, 1:A1, 2:A2, 13:A13
// @User: Standard
GSCALAR(battery_curr_pin, "BATT_CURR_PIN", BATTERY_CURR_PIN),
I went through and double checked that all of the #defines in the Config.h matched the third item in each ()
The Config.h over writes the values in the Parameters.ino. Likewise, anything in the APM_Config.h over writes the Config.h, which ultimately over rights the Parameters.ino
If you are using the 3DR Power Module, you must define BATTERY_VOLT_PIN as 13 and BATTERY_CURR_PIN as 12