Lamp-Da 0.1
A compact lantern project
Loading...
Searching...
No Matches
constants.h
Go to the documentation of this file.
1
5#ifndef SYSTEM_UTILS_CONSTANTS_H
6#define SYSTEM_UTILS_CONSTANTS_H
7
8#include <cmath>
9#include <cstdint>
10
11#ifdef USE_TINYUSB // For Serial when selecting TinyUSB
12#include <Adafruit_TinyUSB.h>
13#endif
14
15#include <stdint.h>
16
17#include "src/user/constants.h"
18
19namespace lampda {
20
22#define HARDWARE_VERSION_MAJOR 1
24#define HARDWARE_VERSION_MINOR 0
25
26// define hardware constants
27#if HARDWARE_VERSION_MAJOR == 1 && HARDWARE_VERSION_MINOR == 0
28#define IS_HARDWARE_1_0
29#endif
30#if HARDWARE_VERSION_MAJOR == 1 && HARDWARE_VERSION_MINOR == 1
31#define IS_HARDWARE_1_1
32#endif
33
36#define EXPECTED_FIRMWARE_VERSION_MAJOR 1
38#define EXPECTED_FIRMWARE_VERSION_MINOR 3
39
42static constexpr uint8_t BASE_SOFTWARE_VERSION_MAJOR = 1;
45static constexpr uint8_t BASE_SOFTWARE_VERSION_MINOR = 8;
46
47using byte = uint8_t;
48
49static constexpr uint8_t ADC_RES_EXP = 12;
50static const uint32_t ADC_MAX_VALUE = static_cast<uint32_t>(pow(2, ADC_RES_EXP));
51static constexpr float internalReferenceVoltage = 3.0f;
52
54static constexpr uint8_t batteryCount = 3;
55
56// define position of imu to the circuit center
57static constexpr float imuToCircuitRotationX_rad = 0.0f * c_degreesToRadians;
58static constexpr float imuToCircuitRotationY_rad = 0.0f * c_degreesToRadians;
59#ifdef IS_HARDWARE_1_0
60static constexpr float imuToCircuitRotationZ_rad = -9.0f * c_degreesToRadians;
61#else
62static constexpr float imuToCircuitRotationZ_rad = -4 * c_degreesToRadians;
63#endif
64
65static constexpr float imuToCircuitPositionX_m = 8.915f / 1000.0f;
66static constexpr float imuToCircuitPositionY_m = -5.769f / 1000.0f;
67static constexpr float imuToCircuitPositionZ_m = 0.0f / 1000.0f;
68
69// battery specific constants
70static constexpr float batteryChargeC_Rate = 0.33f;
71static constexpr float batteryDischargeC_Rate = 1.0f;
72static constexpr uint32_t batteryCapacity_mAH = 4850;
73
74static constexpr uint16_t minLiionVoltage_mV = 2500;
75static constexpr uint16_t typicalLiionVoltage_mV = 3630;
76static constexpr uint16_t maxLiionVoltage_mV = 4200;
77
78// safe single cell voltage to use
79static constexpr uint16_t minSafeLiionVoltage_mV = 3100;
80static constexpr uint16_t maxSafeLiionVoltage_mV = 4100;
81
82static constexpr uint16_t minSingularBatteryVoltage_mV =
83 static_cast<uint16_t>(minLiionVoltage_mV * 0.9f);
84static constexpr uint16_t maxSingularBatteryVoltage_mV =
85 static_cast<uint16_t>(maxLiionVoltage_mV * 1.01f);
86
87// max temp setting
88static constexpr float maxSystemTemp_c = 70.0f;
89static constexpr float criticalSystemTemp_c = 80.0f;
90
91// battery settings
92static constexpr uint16_t batteryCritical = 300;
93static constexpr uint16_t batteryLow = 500;
94
95// watchdog ids
96static constexpr uint8_t USER_WATCHDOG_ID = 0;
97static constexpr uint8_t POWER_WATCHDOG_ID = 2;
98
106static constexpr float loopDeltaTime = MAIN_LOOP_UPDATE_PERIOD_MS / 1000.0f;
107
118
119// physical parameters computations
121static constexpr float totalCons_Watt = consWattByMeter * ledStripLength_mm / 1000.0f;
123static constexpr float maxStripConsumption_A = 1000.0f * totalCons_Watt / stripInputMaxVoltage_mV;
124
126static constexpr uint32_t batteryMaxChargeCurrent_mA =
127 static_cast<uint32_t>(batteryChargeC_Rate * batteryCapacity_mAH); // mA
129static constexpr uint32_t batteryMaxDischargeCurrent_mA =
130 static_cast<uint32_t>(batteryDischargeC_Rate * batteryCapacity_mAH); // mA
133
138inline bool is_cell_voltage_valid(const uint16_t cellVoltage_mv)
139{
140 return
141 // minimum limit is not a hard stop, battery can be deeply discharged
142 // cellVoltage_mv > minSingularBatteryVoltage_mV &&
143 cellVoltage_mv < maxSingularBatteryVoltage_mV;
144}
145
147using brightness_t = uint16_t;
148namespace brightness {
151// min brightness is always zero
152} // namespace brightness
153
154// asserts
155static_assert(maxSystemTemp_c < criticalSystemTemp_c, "max system temp must be less than critical temp");
156
157} // namespace lampda
158
159#endif
Program scope.
Definition: control_fixed_modes.hpp:12
bool is_cell_voltage_valid(const uint16_t cellVoltage_mv)
check battery cell voltage against min/max limits
Definition: constants.h:138
static constexpr uint16_t minSingularBatteryVoltage_mV
with added margins to avoid wrong detection
Definition: constants.h:82
static constexpr uint8_t USER_WATCHDOG_ID
user thread watchdog
Definition: constants.h:96
static constexpr uint8_t BASE_SOFTWARE_VERSION_MINOR
Base minor software version, common to all systems. increment for every release.
Definition: constants.h:45
static constexpr uint8_t BASE_SOFTWARE_VERSION_MAJOR
Base major software version, common to all systems. increment for every release.
Definition: constants.h:42
static constexpr uint32_t batteryTypicalPower_mWH
Battery standard power, in milliWatt*Hours.
Definition: constants.h:132
static constexpr float c_degreesToRadians
convert degrees to radians
Definition: constants.h:24
static constexpr float batteryChargeC_Rate
Maximum charge rate.
Definition: constants.h:70
static constexpr uint16_t maxSafeLiionVoltage_mV
maximum allowed li-ion voltage safe zone
Definition: constants.h:80
static constexpr uint16_t maxLiionVoltage_mV
Absolute maximum allowed Li-ion voltage.
Definition: constants.h:76
static constexpr uint32_t batteryCapacity_mAH
Battery capacity, in mA*hours.
Definition: constants.h:72
static constexpr uint16_t batteryMinVoltage_mV
min voltage of a single li-ion cell
Definition: constants.h:115
static const uint32_t ADC_MAX_VALUE
corresponding ADC max value
Definition: constants.h:50
static constexpr float internalReferenceVoltage
internal voltage reference
Definition: constants.h:51
static constexpr float criticalSystemTemp_c
absolute maximum microcontroler temperature, in degrees
Definition: constants.h:89
static constexpr float maxSystemTemp_c
maximum microcontroler temperature, in degrees
Definition: constants.h:88
static constexpr uint16_t minSafeLiionVoltage_mV
minimum allowed li-ion voltage safe zone
Definition: constants.h:79
static constexpr uint16_t minLiionVoltage_mV
minimum Li-ion voltage
Definition: constants.h:74
static constexpr uint8_t batteryCount
number of batteries for this model
Definition: constants.h:54
static constexpr uint16_t batteryCritical
in % *100, critical battery level
Definition: constants.h:92
static constexpr float batteryDischargeC_Rate
Typical discharge rate.
Definition: constants.h:71
static constexpr uint16_t batteryLow
in % *100, low battery level
Definition: constants.h:93
static constexpr uint8_t POWER_WATCHDOG_ID
power thread watchdog
Definition: constants.h:97
static constexpr uint32_t batteryMaxDischargeCurrent_mA
Battery maximum discharge current, in milliAmps.
Definition: constants.h:129
static constexpr float loopDeltaTime
EXPECTED delta time for each loop run.
Definition: constants.h:106
static constexpr uint16_t batteryTypicalVoltageSafe_mV
typical pack voltage
Definition: constants.h:113
static constexpr uint8_t ADC_RES_EXP
resolution of the ADC, in bits (can be 8, 10, 12 or 14)
Definition: constants.h:49
static constexpr float totalCons_Watt
Total maximum power usage of the led strip.
Definition: constants.h:121
static constexpr uint32_t batteryMaxChargeCurrent_mA
Battery maximum charge current, in milliAmps.
Definition: constants.h:126
uint16_t brightness_t
Define the type of the brightness parameters.
Definition: constants.h:147
static constexpr float maxStripConsumption_A
Maximum led strip current usage, in Amps.
Definition: constants.h:123
static constexpr uint16_t typicalLiionVoltage_mV
standard 50% charge Li-ion voltage
Definition: constants.h:75
static constexpr uint16_t batteryMaxVoltageSafe_mV
max voltage of a li-ion cell to maximise lifetime
Definition: constants.h:111
static constexpr uint16_t batteryMinVoltageSafe_mV
min voltage of a li-ion cell to maximise lifetime
Definition: constants.h:117
static constexpr uint16_t maxSingularBatteryVoltage_mV
with added margins to avoid wrong detection
Definition: constants.h:84
static constexpr uint16_t batteryMaxVoltage_mV
max voltage of a single li-ion cell
Definition: constants.h:109
static constexpr brightness_t absoluteMaximumBrightness
Maximum brigthness value.
Definition: constants.h:150
User defined constants, relative to specific lamp types.