aboutsummaryrefslogtreecommitdiff
path: root/hw/hank
diff options
context:
space:
mode:
authorSelene ToyKeeper2024-09-22 18:01:28 -0600
committerSelene ToyKeeper2024-09-22 18:01:28 -0600
commit7994bb2b6bfc1586b4a53e0d72ebb1da93733333 (patch)
tree54cccbc3a89ef4d3765f4b1ea16558bc0adf7d53 /hw/hank
parenthank-lume-x1 cleanup and calibration, part 1: (diff)
downloadanduril-7994bb2b6bfc1586b4a53e0d72ebb1da93733333.tar.gz
anduril-7994bb2b6bfc1586b4a53e0d72ebb1da93733333.tar.bz2
anduril-7994bb2b6bfc1586b4a53e0d72ebb1da93733333.zip
hank-lume-x1: minor calibration and cleaning
- calibrated party strobe - removed duplicate or commented-out code - added a basic readme
Diffstat (limited to '')
-rw-r--r--hw/hank/lume-x1/anduril.h84
-rw-r--r--hw/hank/lume-x1/readme.md34
2 files changed, 39 insertions, 79 deletions
diff --git a/hw/hank/lume-x1/anduril.h b/hw/hank/lume-x1/anduril.h
index 521d4b1..c409e43 100644
--- a/hw/hank/lume-x1/anduril.h
+++ b/hw/hank/lume-x1/anduril.h
@@ -58,60 +58,9 @@
#define RAMP_DISCRETE_STEPS 7
#define SIMPLE_UI_FLOOR 10
-#define SIMPLE_UI_CEIL 110 // about ~12W, (119 for 160 levels)
+#define SIMPLE_UI_CEIL 110 // about ~12W
#define SIMPLE_UI_STEPS 5
-#if 0
-// 150 levels:
-#define PWM1_LEVELS 1, 2, 10, 31, 77, 159, 295, 504, 807, 504, 737, 1023, 14, 19, 25, 32, 41, 52, 65, 79, 96, 116, 139, 164, 194, 226, 263, 305, 351, 401, 458, 520, 588, 662, 744, 832, 929, 423, 470, 520, 574, 632, 694, 761, 832, 909, 991, 25, 27, 30, 33, 36, 39, 42, 45, 48, 51, 55, 59, 63, 67, 71, 76, 81, 86, 91, 96, 102, 108, 114, 121, 128, 135, 142, 149, 157, 165, 174, 183, 192, 201, 211, 221, 232, 242, 254, 265, 277, 289, 302, 315, 329, 343, 357, 372, 387, 403, 419, 435, 452, 470, 488, 506, 525, 545, 565, 586, 607, 628, 651, 673, 697, 721, 745, 770, 796, 822, 849, 877, 905, 934, 963, 994, 420, 432, 446, 459, 473, 487, 501, 516, 531, 546, 562, 578, 594, 610, 627, 644, 662, 680, 698, 716, 735, 754, 774, 794, 814, 835, 856
-// 160 levels:
-// #define PWM1_LEVELS 1, 2, 8, 24, 59, 123, 228, 389, 623, 950, 569, 807, 11, 15, 19, 25, 32, 40, 50, 61, 74, 90, 107, 127, 150, 175, 203, 235, 271, 310, 354, 401, 454, 512, 575, 643, 718, 798, 886, 980, 443, 488, 536, 588, 643, 702, 765, 832, 904, 980, 28, 30, 32, 35, 37, 40, 43, 46, 49, 52, 56, 59, 63, 67, 71, 76, 80, 85, 90, 95, 100, 106, 111, 117, 123, 130, 137, 144, 151, 158, 166, 174, 182, 191, 199, 208, 218, 227, 237, 248, 258, 269, 281, 292, 304, 316, 329, 342, 355, 369, 383, 398, 413, 428, 444, 460, 476, 493, 510, 528, 546, 565, 584, 603, 623, 644, 665, 686, 708, 730, 753, 777, 800, 825, 850, 875, 901, 927, 954, 982, 1010, 425, 437, 450, 462, 475, 487, 501, 514, 528, 541, 556, 570, 585, 599, 615, 630, 646, 662, 678, 694, 711, 728, 745, 763, 780, 799, 817, 836, 856
-
-// PWM2_LEVELS - used to set the internal voltage reference for the DAC
-// Makes use the of concept of dynamic Vref for higher resolution output
-// despite DAC being only 10 bits.
-// Bits 2:0 of register ADC0REF set the reference voltage:
-// 0x0 - 1.024V - ..000
-// 0x1 - 2.048V - ..001
-// 0x2 - 4.096V - ..010
-// 0x3 - 2.500V- ..011
-// 0x5 - VDD - ..101
-// 0x6 - VREFA - ..111
-// Bit 7 controls if the reference is always on or not.
-// Hence set PWM2_LEVELS to be 1xxx000 (0d64) for 1.024V DAC vref (V10)
-// set PWM2_LEVELS to be 1xxx011 (0d67) for 2.500V DAC vref (V25)
-// Other references are not so important since we have a 10-bit DAC
-
-// 150 levels:
-#define PWM2_LEVELS V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V25, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25
-// 160 levels:
-// #define PWM2_LEVELS V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V10, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25, V25
-
-// Enable usage of multiple power paths
-//#define USE_MULTIPLE_POWER_PATH (no longer required, defined in hwdef.c for >2023 Anduril)
-#define LED_PATH1_PIN_LEVEL_MIN 1
-#define LED_PATH2_PIN_LEVEL_MIN 13
-#define LED_PATH3_PIN_LEVEL_MIN 48 // 51 for 160 levels
-
-#define HALFSPEED_LEVEL 50
-#define QUARTERSPEED_LEVEL 40 // check with TK about the mechanics of this
-
-#define DEFAULT_LEVEL 59 // about same as 1 AMC7135, (61 for 160 levels)
-#define MAX_1x7135 59 // about same as 1 AMC7135
-// MIN_THERM_STEPDOWN defined as MAX_1x7135 in ramp-mode.h if not otherwise defined
-
-#define RAMP_SMOOTH_FLOOR 8
-#define RAMP_SMOOTH_CEIL 124 // about ~18-20W (Turbo ~40W), (132 for 160 levels)
-
-#define RAMP_DISCRETE_FLOOR RAMP_SMOOTH_FLOOR
-#define RAMP_DISCRETE_CEIL RAMP_SMOOTH_CEIL
-#define RAMP_DISCRETE_STEPS 6
-
-#define SIMPLE_UI_FLOOR 13
-#define SIMPLE_UI_CEIL 112 // about ~12W, (119 for 160 levels)
-#define SIMPLE_UI_STEPS 5
-#endif
-
// don't blink mid-ramp
#ifdef BLINK_AT_RAMP_MIDDLE
#undef BLINK_AT_RAMP_MIDDLE
@@ -122,24 +71,8 @@
//***************************************
// stop panicking at 6W (not sure of this numbers yet since it depends on the host..)
-#define THERM_FASTER_LEVEL 98 // about 6W
-#define MIN_THERM_STEPDOWN 62 // similar to single amc7135 in a 3V light
-
-// extra boost during turbo, lower when temp = temp_ceil + extra
-//#define TURBO_TEMP_EXTRA 0
-
-//***************************************
-//** USER INTERFACE **
-//***************************************
-
-// Allow 3C in Simple UI for switching between smooth and stepped ramping
-#define USE_SIMPLE_UI_RAMPING_TOGGLE
-
-// double click while on goes to full-power turbo, not ramp ceiling
-#define DEFAULT_2C_STYLE 1
-
-#define BLINK_BRIGHTNESS (MAX_LEVEL/5) // increase blink brightness from max/6
-#define BLINK_ONCE_TIME 32 // increase from 10 to make brighter
+#define THERM_FASTER_LEVEL 100 // about 6W
+#define MIN_THERM_STEPDOWN 60 // similar to single amc7135 in a 3V light
//***************************************
//** AUX LEDs and MISC **
@@ -167,22 +100,15 @@
#undef USE_INDICATOR_LED_WHILE_RAMPING
#endif
-#define PARTY_STROBE_ONTIME 4 // slow down party strobe
+#define PARTY_STROBE_ONTIME 1 // slow down party strobe
#define STROBE_OFF_LEVEL 1 // keep the regulator chips on between pulses
// smoother candle mode with bigger oscillations
-#define CANDLE_AMPLITUDE 30 // default 25
+#define CANDLE_AMPLITUDE 30 // default 25
// avr32dd20 has enough space to smooth out voltage readings
#define USE_VOLTAGE_LOWPASS
-// added for convenience
-#define USE_SOFT_FACTORY_RESET
-
// enable long-blink as negative sign
#define USE_LONG_BLINK_FOR_NEGATIVE_SIGN
-// Uncomment to use Microphone mode
-//#define USE_MICROPHONE_MODE
-//#define MICROPHONE_SCALER 10
-
diff --git a/hw/hank/lume-x1/readme.md b/hw/hank/lume-x1/readme.md
new file mode 100644
index 0000000..eba5949
--- /dev/null
+++ b/hw/hank/lume-x1/readme.md
@@ -0,0 +1,34 @@
+# Hank / loneoceans Lume X1 40W
+
+Regulated boost driver for Hank lights (Emisar / Noctigon) by loneoceans.
+
+Second Hank light to use the new avr32dd20 MCU. Performs better than older
+MCUs and provides more space for extra features and future firmware updates.
+
+Originally from https://github.com/loneoceans/anduril
+
+Features UDR (Ultra Dynamic Range) for smooth dimming all the way down to
+*literally zero*, meaning an effectively infinite dimming ratio:
+
+- 3 power paths or "gears" for the regulator chip's sense resistors:
+ - Firefly "gear": 0 to ~0.1 lm
+ - Low "gear": ~0.1 to ~40 lm
+ - High "gear": ~40 lm to full power (2k or 3k lm?)
+- Internal resolution of 2500 steps per "gear" allows very precise control over
+ brightness. Anduril's 150 step ramp does not fully take advantage of this.
+- Constant current, no pulsing or flicker or ripple
+- No preflash
+- No need for jump start; regulator has a quick response at all levels
+
+The firefly part of the ramp is compressed to just a few levels, to avoid
+making the rest of the ramp artificially low. It aims to be reasonably
+consistent compared to the ramp shape of Hank's other lights, but a few levels
+at the bottom are set aside for moon and firefly modes.
+
+The regulator can go much, much lower than the brightness of the button LEDs,
+but there isn't much point because the glowing button overpowers the main LEDs.
+The button and aux LEDs (on low) also use significantly less power despite
+being brighter, because they do not require the MCU to be awake. So that part
+of the ramp is mostly omitted. However, it can be added with a firmware
+modification if desired.
+