mirror of
https://github.com/PX4/PX4-Autopilot.git
synced 2026-05-26 09:26:25 +08:00
px4io delete old v1 battery current and voltage
This commit is contained in:
committed by
Lorenz Meier
parent
04fa54a077
commit
2a6f915dfe
@@ -74,7 +74,6 @@
|
||||
#include <systemlib/param/param.h>
|
||||
#include <systemlib/circuit_breaker.h>
|
||||
#include <systemlib/mavlink_log.h>
|
||||
#include <systemlib/battery.h>
|
||||
|
||||
#include <uORB/topics/actuator_controls.h>
|
||||
#include <uORB/topics/actuator_outputs.h>
|
||||
@@ -83,7 +82,6 @@
|
||||
#include <uORB/topics/vehicle_control_mode.h>
|
||||
#include <uORB/topics/vehicle_command.h>
|
||||
#include <uORB/topics/rc_channels.h>
|
||||
#include <uORB/topics/battery_status.h>
|
||||
#include <uORB/topics/servorail_status.h>
|
||||
#include <uORB/topics/parameter_update.h>
|
||||
#include <uORB/topics/multirotor_motor_limits.h>
|
||||
@@ -183,14 +181,6 @@ public:
|
||||
*/
|
||||
int set_update_rate(int rate);
|
||||
|
||||
/**
|
||||
* Set the battery current scaling and bias
|
||||
*
|
||||
* @param[in] amp_per_volt
|
||||
* @param[in] amp_bias
|
||||
*/
|
||||
void set_battery_current_scaling(float amp_per_volt, float amp_bias);
|
||||
|
||||
/**
|
||||
* Push failsafe values to IO.
|
||||
*
|
||||
@@ -275,7 +265,6 @@ private:
|
||||
/* advertised topics */
|
||||
orb_advert_t _to_input_rc; ///< rc inputs from io
|
||||
orb_advert_t _to_outputs; ///< mixed servo outputs topic
|
||||
orb_advert_t _to_battery; ///< battery status / voltage
|
||||
orb_advert_t _to_servorail; ///< servorail status
|
||||
orb_advert_t _to_safety; ///< status of safety
|
||||
orb_advert_t _to_mixer_status; ///< mixer status flags
|
||||
@@ -287,15 +276,9 @@ private:
|
||||
bool _lockdown_override; ///< allow to override the safety lockdown
|
||||
bool _armed; ///< wether the system is armed
|
||||
|
||||
float _battery_amp_per_volt; ///< current sensor amps/volt
|
||||
float _battery_amp_bias; ///< current sensor bias
|
||||
float _battery_mamphour_total;///< amp hours consumed so far
|
||||
uint64_t _battery_last_timestamp;///< last amp hour calculation timestamp
|
||||
bool _cb_flighttermination; ///< true if the flight termination circuit breaker is enabled
|
||||
bool _in_esc_calibration_mode; ///< do not send control outputs to IO (used for esc calibration)
|
||||
|
||||
Battery _battery;
|
||||
|
||||
int32_t _rssi_pwm_chan; ///< RSSI PWM input channel
|
||||
int32_t _rssi_pwm_max; ///< max RSSI input on PWM channel
|
||||
int32_t _rssi_pwm_min; ///< min RSSI input on PWM channel
|
||||
@@ -303,7 +286,6 @@ private:
|
||||
bool _analog_rc_rssi_stable; ///< true when analog RSSI input is stable
|
||||
float _analog_rc_rssi_volt; ///< analog RSSI voltage
|
||||
|
||||
float _last_throttle; ///< last throttle value for battery calculation
|
||||
bool _test_fmu_fail; ///< To test what happens if IO looses FMU
|
||||
|
||||
/**
|
||||
@@ -504,7 +486,6 @@ PX4IO::PX4IO(device::Device *interface) :
|
||||
_t_vehicle_command(-1),
|
||||
_to_input_rc(nullptr),
|
||||
_to_outputs(nullptr),
|
||||
_to_battery(nullptr),
|
||||
_to_servorail(nullptr),
|
||||
_to_safety(nullptr),
|
||||
_to_mixer_status(nullptr),
|
||||
@@ -513,20 +494,14 @@ PX4IO::PX4IO(device::Device *interface) :
|
||||
_primary_pwm_device(false),
|
||||
_lockdown_override(false),
|
||||
_armed(false),
|
||||
_battery_amp_per_volt(90.0f / 5.0f), // this matches the 3DR current sensor
|
||||
_battery_amp_bias(0),
|
||||
_battery_mamphour_total(0),
|
||||
_battery_last_timestamp(0),
|
||||
_cb_flighttermination(true),
|
||||
_in_esc_calibration_mode(false),
|
||||
_battery{},
|
||||
_rssi_pwm_chan(0),
|
||||
_rssi_pwm_max(0),
|
||||
_rssi_pwm_min(0),
|
||||
_thermal_control(-1),
|
||||
_analog_rc_rssi_stable(false),
|
||||
_analog_rc_rssi_volt(-1.0f),
|
||||
_last_throttle(0.0f),
|
||||
_test_fmu_fail(false)
|
||||
{
|
||||
/* we need this potentially before it could be set in task_main */
|
||||
@@ -1054,21 +1029,6 @@ PX4IO::task_main()
|
||||
io_set_rc_config();
|
||||
}
|
||||
|
||||
/* re-set the battery scaling */
|
||||
int32_t voltage_scaling_val = 10000;
|
||||
param_t voltage_scaling_param;
|
||||
|
||||
/* set battery voltage scaling */
|
||||
param_get(voltage_scaling_param = param_find("BAT_V_SCALE_IO"), &voltage_scaling_val);
|
||||
|
||||
/* send scaling voltage to IO */
|
||||
uint16_t scaling = voltage_scaling_val;
|
||||
int pret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_VBATT_SCALE, &scaling, 1);
|
||||
|
||||
if (pret != OK) {
|
||||
mavlink_log_critical(&_mavlink_log_pub, "IO vscale upload failed");
|
||||
}
|
||||
|
||||
/* send RC throttle failsafe value to IO */
|
||||
int32_t failsafe_param_val;
|
||||
param_t failsafe_param = param_find("RC_FAILS_THR");
|
||||
@@ -1080,7 +1040,7 @@ PX4IO::task_main()
|
||||
if (failsafe_param_val > 0) {
|
||||
|
||||
uint16_t failsafe_thr = failsafe_param_val;
|
||||
pret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_RC_THR_FAILSAFE_US, &failsafe_thr, 1);
|
||||
int pret = io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_RC_THR_FAILSAFE_US, &failsafe_thr, 1);
|
||||
|
||||
if (pret != OK) {
|
||||
mavlink_log_critical(&_mavlink_log_pub, "failsafe upload failed, FS: %d us", (int)failsafe_thr);
|
||||
@@ -1259,9 +1219,6 @@ PX4IO::task_main()
|
||||
param_get(parm_handle, ¶m_val);
|
||||
(void)io_reg_set(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_MOTOR_SLEW_MAX, FLOAT_TO_REG(param_val));
|
||||
}
|
||||
|
||||
// Also trigger param update in Battery instance.
|
||||
_battery.updateParams();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1371,11 +1328,6 @@ PX4IO::io_set_control_state(unsigned group)
|
||||
regs[i] = FLOAT_TO_REG(ctrl);
|
||||
}
|
||||
|
||||
// save last throttle for battery calculation
|
||||
if (group == 0) {
|
||||
_last_throttle = controls.control[3];
|
||||
}
|
||||
|
||||
if (!_test_fmu_fail) {
|
||||
/* copy values to registers in IO */
|
||||
return io_reg_set(PX4IO_PAGE_CONTROLS, group * PX4IO_PROTOCOL_MAX_CONTROL_COUNT, regs, _max_controls);
|
||||
@@ -2255,17 +2207,7 @@ PX4IO::print_status(bool extended_status)
|
||||
/* now clear alarms */
|
||||
io_reg_set(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_ALARMS, 0xFFFF);
|
||||
|
||||
if (_hardware == 1) {
|
||||
printf("vbatt mV %u ibatt mV %u vbatt scale %u\n",
|
||||
io_reg_get(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_VBATT),
|
||||
io_reg_get(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_IBATT),
|
||||
io_reg_get(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_VBATT_SCALE));
|
||||
printf("amp_per_volt %.3f amp_offset %.3f mAh discharged %.3f\n",
|
||||
(double)_battery_amp_per_volt,
|
||||
(double)_battery_amp_bias,
|
||||
(double)_battery_mamphour_total);
|
||||
|
||||
} else if (_hardware == 2) {
|
||||
if (_hardware == 2) {
|
||||
printf("vservo %u mV vservo scale %u\n",
|
||||
io_reg_get(PX4IO_PAGE_STATUS, PX4IO_P_STATUS_VSERVO),
|
||||
io_reg_get(PX4IO_PAGE_SETUP, PX4IO_P_SETUP_VSERVO_SCALE));
|
||||
@@ -3041,13 +2983,6 @@ PX4IO::set_update_rate(int rate)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
PX4IO::set_battery_current_scaling(float amp_per_volt, float amp_bias)
|
||||
{
|
||||
_battery_amp_per_volt = amp_per_volt;
|
||||
_battery_amp_bias = amp_bias;
|
||||
}
|
||||
|
||||
extern "C" __EXPORT int px4io_main(int argc, char *argv[]);
|
||||
|
||||
namespace
|
||||
@@ -3634,18 +3569,6 @@ px4io_main(int argc, char *argv[])
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (!strcmp(argv[1], "current")) {
|
||||
if ((argc > 3)) {
|
||||
g_dev->set_battery_current_scaling(atof(argv[2]), atof(argv[3]));
|
||||
|
||||
} else {
|
||||
errx(1, "missing argument (apm_per_volt, amp_offset)");
|
||||
return 1;
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
if (!strcmp(argv[1], "safety_off")) {
|
||||
int ret = g_dev->ioctl(NULL, PWM_SERVO_SET_FORCE_SAFETY_OFF, 0);
|
||||
|
||||
@@ -3822,7 +3745,7 @@ px4io_main(int argc, char *argv[])
|
||||
|
||||
out:
|
||||
errx(1, "need a command, try 'start', 'stop', 'status', 'test', 'monitor', 'debug <level>',\n"
|
||||
"'recovery', 'limit <rate>', 'current', 'bind', 'checkcrc', 'safety_on', 'safety_off',\n"
|
||||
"'recovery', 'limit <rate>', 'bind', 'checkcrc', 'safety_on', 'safety_off',\n"
|
||||
"'forceupdate', 'update', 'sbus1_out', 'sbus2_out', 'rssi_analog' or 'rssi_pwm',\n"
|
||||
"'test_fmu_fail', 'test_fmu_ok'");
|
||||
}
|
||||
|
||||
@@ -127,8 +127,6 @@
|
||||
#define PX4IO_P_STATUS_ALARMS_PWM_ERROR (1 << 6) /* PWM configuration or output was bad */
|
||||
#define PX4IO_P_STATUS_ALARMS_VSERVO_FAULT (1 << 7) /* [2] VServo was out of the valid range (2.5 - 5.5 V) */
|
||||
|
||||
#define PX4IO_P_STATUS_VBATT 4 /* [1] battery voltage in mV */
|
||||
#define PX4IO_P_STATUS_IBATT 5 /* [1] battery current (raw ADC) */
|
||||
#define PX4IO_P_STATUS_VSERVO 6 /* [2] servo rail voltage in mV */
|
||||
#define PX4IO_P_STATUS_VRSSI 7 /* [2] RSSI voltage */
|
||||
#define PX4IO_P_STATUS_PRSSI 8 /* [2] RSSI PWM value */
|
||||
@@ -195,7 +193,6 @@
|
||||
#define PX4IO_P_SETUP_PWM_ALTRATE 4 /* 'high' PWM frame output rate in Hz */
|
||||
#define PX4IO_P_SETUP_RELAYS_PAD 5
|
||||
|
||||
#define PX4IO_P_SETUP_VBATT_SCALE 6 /* hardware rev [1] battery voltage correction factor (float) */
|
||||
#define PX4IO_P_SETUP_VSERVO_SCALE 6 /* hardware rev [2] servo voltage correction factor (float) */
|
||||
#define PX4IO_P_SETUP_DSM 7 /* DSM bind state */
|
||||
enum { /* DSM bind states */
|
||||
|
||||
@@ -84,8 +84,6 @@ volatile uint16_t r_page_status[] = {
|
||||
[PX4IO_P_STATUS_CPULOAD] = 0,
|
||||
[PX4IO_P_STATUS_FLAGS] = 0,
|
||||
[PX4IO_P_STATUS_ALARMS] = 0,
|
||||
[PX4IO_P_STATUS_VBATT] = 0,
|
||||
[PX4IO_P_STATUS_IBATT] = 0,
|
||||
[PX4IO_P_STATUS_VSERVO] = 0,
|
||||
[PX4IO_P_STATUS_VRSSI] = 0,
|
||||
[PX4IO_P_STATUS_PRSSI] = 0,
|
||||
@@ -635,10 +633,6 @@ registers_set_one(uint8_t page, uint8_t offset, uint16_t value)
|
||||
pwm_configure_rates(r_setup_pwm_rates, r_setup_pwm_defaultrate, value);
|
||||
break;
|
||||
|
||||
case PX4IO_P_SETUP_VBATT_SCALE:
|
||||
r_page_setup[PX4IO_P_SETUP_VBATT_SCALE] = value;
|
||||
break;
|
||||
|
||||
case PX4IO_P_SETUP_SET_DEBUG:
|
||||
r_page_setup[PX4IO_P_SETUP_SET_DEBUG] = value;
|
||||
isr_debug(0, "set debug %u\n", (unsigned)r_page_setup[PX4IO_P_SETUP_SET_DEBUG]);
|
||||
|
||||
@@ -31,15 +31,6 @@
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
/**
|
||||
* Scaling factor for battery voltage sensor on PX4IO.
|
||||
*
|
||||
* @min 1
|
||||
* @max 100000
|
||||
* @group Battery Calibration
|
||||
*/
|
||||
PARAM_DEFINE_INT32(BAT_V_SCALE_IO, 10000);
|
||||
|
||||
/**
|
||||
* Scaling from ADC counts to volt on the ADC input (battery voltage)
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user