mirror of
https://github.com/okalachev/flix.git
synced 2026-09-06 00:10:58 +00:00
Improve voltage measurement
Apply PWM_VOLT_PIN without reboot. Check if the voltage pin can be used with ADC when setting up. Set voltage to NAN, when it's unknown (including pyflix). pyflix@0.15. Don't send BATTERY_STATUS when voltage is unknown. Add dummy voltage to the simulator.
This commit is contained in:
+1
-1
@@ -46,7 +46,7 @@ void sendMavlink() {
|
||||
float remaining = constrain(mapf(voltage, 3.4, 4.2, 0, 1), 0, 1);
|
||||
mavlink_msg_battery_status_pack(mavlinkSysId, MAV_COMP_ID_AUTOPILOT1, &msg, 0, MAV_BATTERY_FUNCTION_ALL,
|
||||
MAV_BATTERY_TYPE_LIPO, INT16_MAX, voltages, -1, -1, -1, remaining * 100, 0, MAV_BATTERY_CHARGE_STATE_OK, voltagesExt, 0, 0);
|
||||
sendMessage(&msg);
|
||||
if (valid(voltage)) sendMessage(&msg);
|
||||
}
|
||||
|
||||
if (telemetryFast && mavlinkConnected) {
|
||||
|
||||
+1
-1
@@ -117,7 +117,7 @@ Parameter parameters[] = {
|
||||
{"MAV_RATE_SLOW", &telemetrySlow.rate},
|
||||
{"MAV_RATE_FAST", &telemetryFast.rate},
|
||||
// power
|
||||
{"PWR_VOLT_PIN", &voltagePin},
|
||||
{"PWR_VOLT_PIN", &voltagePin, setupPower},
|
||||
{"PWR_VOLT_SCALE", &voltageScale},
|
||||
{"PWR_VOLT_LPF_A", &voltageFilter.alpha},
|
||||
// safety
|
||||
|
||||
+3
-3
@@ -8,14 +8,14 @@
|
||||
#include "lpf.h"
|
||||
#include "util.h"
|
||||
|
||||
float voltage;
|
||||
float voltage = NAN;
|
||||
LowPassFilter<float> voltageFilter(0.2);
|
||||
int voltagePin = -1;
|
||||
float voltageScale = 2;
|
||||
|
||||
void setupPower() {
|
||||
// Disable reset on low voltage
|
||||
REG_CLR_BIT(RTC_CNTL_BROWN_OUT_REG, RTC_CNTL_BROWN_OUT_ENA);
|
||||
REG_CLR_BIT(RTC_CNTL_BROWN_OUT_REG, RTC_CNTL_BROWN_OUT_ENA); // disable reset on low voltage
|
||||
if (digitalPinToAnalogChannel(voltagePin) == -1) voltagePin = -1; // test ADC pin
|
||||
}
|
||||
|
||||
void readVoltage() {
|
||||
|
||||
Reference in New Issue
Block a user