- Python 99%
- Shell 1%
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015mWnVqjjccp9oMw3JUj3Wa |
||
|---|---|---|
| calc | ||
| docs | ||
| firmware | ||
| hardware | ||
| tools | ||
| .gitignore | ||
| CHANGES.md | ||
| Instructions.md | ||
| LICENSE | ||
| LICENSE-docs | ||
| LICENSE-firmware | ||
| README.md | ||
SANTELMO
Open-hardware, marine-grade 12 V to 48 V DC-DC battery charger.
SANTELMO charges a 15S or 16S LiFePO4 house bank (48 V nominal) from a 12 V lead-acid starter system driven by an engine alternator, without discharging the starter battery and without overloading the alternator. It covers the functions of a Victron Orion-Tr Smart 12/48-8 and adds a built-in web interface over WiFi and Ethernet, dual-stack, IPv6 first.
Design target 500 W; guaranteed rating 400 W until the thermal test at bring-up passes (ADR-0006).
Status
Milestone M1 (controller evaluation and calculations) delivered, awaiting
review. See docs/m1-report.md, docs/calculations.md and the work plan
in Instructions.md, section 10. Next: M2, schematics.
Design summary
- Two boards in one aluminum enclosure: PWR (power stage, analog control,
hardware safety ceilings) and CTRL (ESP32-S3, W5500 Ethernet, USB-C).
See
docs/adr/0001-two-boards.md. - Non-isolated, single-point-grounded, per ABYC E-11 practice.
See
docs/adr/0003-non-isolated.md. - 4-switch buck-boost controller LT8705A, 150 kHz; the BQ25756 was
evaluated and rejected on its 20 A input current limit.
See
docs/adr/0002-controller-choice.md. - Safety ceilings (output voltage, 45 A in, 10 A out, OV latch) are set by
resistor networks and an independent comparator. A bank switch on PWR
selects the 15S or 16S ceilings in hardware; firmware can only lower the
setpoints, never raise them. See
docs/adr/0005-bank-cell-count-selectable.mdanddocs/bank-voltages.md. - ESP32-S3-WROOM-1U + W5500 on ESP-IDF 5.x, dual-stack networking, IPv6
first. See
docs/adr/0004-esp32s3-w5500.md.
Full electrical specification: docs/spec.md.
Source Location
This notice is required by CERN-OHL-S-2.0 section 3.3.
https://git.pop.coop/sailstation/santelmo
The same URL goes on the PCB silkscreen of every board.
Licensing
| Part | License | File |
|---|---|---|
| Hardware (schematics, layout, libraries, enclosure) | CERN-OHL-S-2.0 | LICENSE |
| Firmware | GPL-3.0-or-later | LICENSE-firmware |
| Documentation | CC-BY-SA-4.0 | LICENSE-docs |
Modifications to the hardware are recorded in CHANGES.md as required by
CERN-OHL-S-2.0 section 3.3(b).
Repository layout
docs/ specification, ADRs, calculations, test results, manual
calc/ Python scripts that produce every number in the docs
hardware/ KiCad 9 projects (pwr, ctrl), libraries, enclosure, releases
firmware/ ESP-IDF 5.x project
tools/ kicad-cli export scripts, release script, flash script
Calculations
Every number in docs/ comes from a script in calc/ or a recorded
measurement. To run the scripts and their tests:
python -m venv .venv
source .venv/bin/activate
pip install numpy scipy matplotlib pandas skidl kicad-skip pytest
cd calc && python -m pytest -q
Working rules
Instructions.md is the contract for this project. Sections 2 and 3 are
closed decisions. Changing one requires a new ADR that supersedes the old one
and gives the three justifications in section 0.2. The working name MINUANO
used in that file was replaced by SANTELMO at kickoff
(docs/m0-kickoff-answers.md).
Git: main is protected, work happens on feature/* branches, merged with
merge commits. No squash, no rebase of shared history, no force-push.