/* This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . */ /* battery model for electric aircraft */ #pragma once #include namespace SITL { /* class to describe a motor position */ class Battery { public: void setup(float _capacity_Ah, float _resistance, float _max_voltage); void init_voltage(float voltage); void set_current(float current_amps); float get_voltage(void) const; private: float capacity_Ah; float resistance; float max_voltage; float voltage_set; float remaining_Ah; uint64_t last_us; // 10Hz filter for battery voltage LowPassFilterFloat voltage_filter{10}; float get_resting_voltage(float charge_pct); void set_initial_SoC(float voltage); }; }