2025-12-05 14:39:30 -05:00
|
|
|
|
# ⚙️ Samson eFit Module – Internal README (MVP Implementation)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🎯 Purpose
|
2025-12-05 14:34:29 -05:00
|
|
|
|
Build a compact, motor-controlled resistance unit with basic wireless control and encoder-based feedback.
|
|
|
|
|
|
Stay within MVP scope and avoid feature creep until core functionality works.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🧭 MVP Core Goals
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- Smooth electronic resistance using BLDC + driver
|
|
|
|
|
|
- Wireless control of load (ESP32 → PWM)
|
|
|
|
|
|
- Encoder-based feedback to maintain commanded resistance
|
|
|
|
|
|
- Basic safety limits (current/thermal)
|
|
|
|
|
|
- Minimal UI (phone/Pi/serial)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 📦 Current Components (Received)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
|
|
|
|
|
|
| # | Component | Purpose | Notes |
|
|
|
|
|
|
|---|-----------|---------|------|
|
|
|
|
|
|
| 1 | Waveshare 4" Round DSI Touch Display | UI | Use later; not MVP-critical |
|
|
|
|
|
|
| 2 | AS5600 Magnetic Encoders (5 pcs) | Angle/rep sensing | High priority for control loop |
|
|
|
|
|
|
| 3 | Milwaukee M18 Battery Adapters (2 pcs) | Power source | Portable demos; regulate as needed |
|
|
|
|
|
|
| 4 | 400W BLDC Motor Controllers (2 pcs) | Motor driving | PWM control with FWD/REV/Brake |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🧩 High-Level Architecture (MVP)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- **ESP32**: PWM output + encoder reading + wireless interface
|
|
|
|
|
|
- **BLDC Driver**: Drives motor phases based on PWM
|
|
|
|
|
|
- **AS5600 Encoder**: Shaft position/velocity feedback over I²C
|
|
|
|
|
|
- **Power**: 18V battery via adapter (regulate for ESP32)
|
|
|
|
|
|
- **UI**: Minimal (phone > Pi display for later)
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🛠️ Implementation Order (Milestones)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
1) Bench-test BLDC controller + motor (no load)
|
|
|
|
|
|
2) Read encoder position/velocity reliably
|
|
|
|
|
|
3) Close feedback loop (PWM adjusted from encoder)
|
|
|
|
|
|
4) Add safety limits (brake/stop/overcurrent handling)
|
|
|
|
|
|
5) Wireless interface to set target resistance
|
|
|
|
|
|
6) Optional: Pi display UI after stable MVP
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 💻 Firmware Tasks (ESP32)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- PWM generation + tuning
|
|
|
|
|
|
- Encoder I²C driver (AS5600)
|
|
|
|
|
|
- Resistance control loop (angle/speed → PWM adjust)
|
|
|
|
|
|
- Safety watchdogs (fault detection)
|
|
|
|
|
|
- Simple wireless command interface
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🔩 Hardware Tasks
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- Encoder magnet mounting on pulley/shaft
|
|
|
|
|
|
- Secure motor + driver on bench fixture
|
|
|
|
|
|
- Power routing + regulation
|
|
|
|
|
|
- Fusing + emergency stop provisions
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🔋 Power Notes
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- M18 battery: 18V nominal
|
|
|
|
|
|
- Driver acceptable: 6–60V
|
|
|
|
|
|
- ESP32 requires regulated 5V/3.3V
|
|
|
|
|
|
- Add DC-DC regulator if powering both from same source
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🚫 Scope Limiters (Avoid Feature Creep)
|
2025-12-05 14:34:29 -05:00
|
|
|
|
Not MVP:
|
|
|
|
|
|
- Full AI workout planning
|
|
|
|
|
|
- Cloud accounts or server database
|
|
|
|
|
|
- Advanced touchscreen interface
|
|
|
|
|
|
- Subscription model
|
|
|
|
|
|
|
|
|
|
|
|
MVP success = controllable electronic resistance + encoder feedback loop.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 🧪 Testing Targets
|
2025-12-05 14:34:29 -05:00
|
|
|
|
- Commanded resistance holds within stable margin
|
|
|
|
|
|
- Encoder data noise acceptable
|
|
|
|
|
|
- No uncontrolled torque spikes
|
|
|
|
|
|
- Safe stop behavior verified
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2025-12-05 14:39:30 -05:00
|
|
|
|
## 📝 Notes to Ourselves
|
2025-12-05 14:34:29 -05:00
|
|
|
|
If it does not directly help us **control and stabilize resistance**, it waits until after MVP.
|
|
|
|
|
|
|