Hummingbird Flight Software
Flight software for the Hummingbird FCU quadcopter flight controller. Designed to run on the Teensy 4.1. Developed with VSCode+PlatformIO.
battery_monitor.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // INPUT VOLTAGE MONITOR
3 //
4 // Code By: Michael Wrona
5 // Created: 4 Sept 2021
6 // ----------------------------------------------------------------------------
7 // Read the HFCU's voltage divider to read the input voltage on the Teensy
8 // 4.1 Pin 22.
9 
10 
11 #pragma once
12 #include <Arduino.h>
13 #include <Wire.h>
14 #include "hummingbird_config.h"
15 #include "debugging.h"
16 #include "filters/median_filter.h"
17 
18 
19 // input_voltage = (SF * adc_output) + OFFSET
20 constexpr float BATTMONITOR_OFFSET = 0.343256f;
21 constexpr float BATTMONITOR_SF = 0.016926f;
22 
23 
24 
25 
27 {
28 public:
31 
32  // Do not allow copies (singleton)
33  static VoltageMonitor &GetInstance(); // accessor
34  VoltageMonitor(const VoltageMonitor &) = delete;
36 
37  void Update();
38  float GetVoltage();
39 
40  uint32_t prevMeasMillis;
41 
42 protected:
43 private:
44  float v;
46 };
47 
48 
49 // Only one instance
51 
52 
constexpr float BATTMONITOR_SF
Scale factor used to calibrate voltage measurements.
Definition: battery_monitor.h:21
constexpr float BATTMONITOR_OFFSET
Offset factor used to calibrate voltage measurements.
Definition: battery_monitor.h:20
VoltageMonitor & BattMonitor
Definition: battery_monitor.cpp:60
Definition: median_filter.h:19
Definition: battery_monitor.h:27
MedianFilter Filter
LPF to smooth out voltage.
Definition: battery_monitor.h:45
void Update()
Definition: battery_monitor.cpp:28
VoltageMonitor & operator=(const VoltageMonitor &)=delete
~VoltageMonitor()
Definition: battery_monitor.h:30
VoltageMonitor(const VoltageMonitor &)=delete
float GetVoltage()
Definition: battery_monitor.cpp:43
VoltageMonitor()
Constructor for a voltage monitor.
Definition: battery_monitor.cpp:16
uint32_t prevMeasMillis
Previous measurement time in millis()
Definition: battery_monitor.h:40
static VoltageMonitor & GetInstance()
Definition: battery_monitor.cpp:54
float v
Measured voltage [volts].
Definition: battery_monitor.h:44