# 🔌 Universal Voron Power & CAN HAT (EWS)

> 🌍 **Sprachen:** [English](README.md) | [Deutsch](README.de.md)

Ein universelles Interface-Board (HAT) für Raspberry Pi 4/5 und Radxa Rock 5B zur Verwendung in Voron 3D-Druckern. Bietet eine leistungsstarke 5V-Versorgung (8A), CAN-Bus-Interface (USB-Bridge oder Native) und USB-Hub.

![Universal Voron Power & CAN HAT](img/EWS.png)

## 📚 Inhalt

<!-- @import "[TOC]" {cmd="toc" depthFrom=1 depthTo=6 orderedList=false} -->

<!-- code_chunk_output -->

- [🔌 Universal Voron Power & CAN HAT (EWS)](#-universal-voron-power--can-hat-ews)
  - [📚 Inhalt](#-inhalt)
  - [🎯 Über EWS](#-über-ews)
  - [🚨 Gelöste Probleme](#-gelöste-probleme)
  - [✨ Features](#-features)
    - [🔋 Stromversorgung (24V Eingang)](#-stromversorgung-24v-eingang)
    - [⚡ DC/DC Wandler (5V Ausgang)](#-dcdc-wandler-5v-ausgang)
    - [🔌 Logik-Spannungsversorgung (Power Path)](#-logik-spannungsversorgung-power-path)
    - [💻 MCU & CAN Interface](#-mcu--can-interface)
    - [📡 USB Hub](#-usb-hub)
  - [📋 Klipper Konfiguration](#-klipper-konfiguration)
    - [Basis MCU Setup](#basis-mcu-setup)
  - [🔌 Pinout & Steckerbelegung](#-pinout--steckerbelegung)
    - [Stromeingang](#stromeingang)
    - [CAN-Bus Anschlüsse](#can-bus-anschlüsse)
    - [USB Anschlüsse](#usb-anschlüsse)
  - [🛠️ PCB Spezifikationen](#️-pcb-spezifikationen)
  - [⚠️ Fertigungsempfehlungen](#️-fertigungsempfehlungen)
    - [PCB-Fertigung](#pcb-fertigung)
    - [Bestückungshinweise](#bestückungshinweise)
    - [Bauteilbeschaffung](#bauteilbeschaffung)
  - [🛠️ Technische Spezifikationen](#️-technische-spezifikationen)
  - [📚 Weitere Ressourcen](#-weitere-ressourcen)
  - [📝 Changelog](#-changelog)
  - [Lizenz](#lizenz)

<!-- /code_chunk_output -->

## 🎯 Über EWS

**EWS** steht für "Eierlegende Wollmilchsau" - ein humorvoller Begriff für eine Universallösung, die alles kann. Dieses HAT wird seinem Spitznamen gerecht, indem es mehrere essentielle Funktionen für Voron 3D-Drucker-Steuerungssysteme in einem einzigen, kompakten Board vereint.

Das Board adressiert häufige Problemstellen in Voron-Builds durch robuste Stromverteilung, zuverlässige CAN-Kommunikation und praktische USB-Konnektivität bei gleichzeitiger Kompatibilität mit Raspberry Pi und Radxa Rock 5B Single-Board-Computern.

## 🚨 Gelöste Probleme

Dieses Board wurde entwickelt, um mehrere kritische Probleme zu lösen, die häufig bei Hochleistungs-3D-Drucker-Setups auftreten:

### ⚡ **Strom- & Versorgungsprobleme**
- **Instabile SBC-Stromversorgung** - Viele Setups leiden unter Spannungsabfällen und Strominstabilität
- **Separate Power Injection erforderlich** - USB-C-Touchscreens benötigen oft zusätzliche Netzteile
- **Komplexe Stromverteilung** - Mehrere Stromquellen erschweren die Verkabelung

### 🔗 **CAN-Kommunikationsprobleme**
- **USB-CAN-Adapter** - Schwer zu montieren, unzuverlässige Verbindungen, zusätzliche Fehlerquellen
- **Controller-Board-Limitationen** - Spider/Octopus als CAN-Bridge haben oft eingebaute Abschlusswiderstände
- **CAN-Topologie-Konflikte** - CAN-Toolheads und ADXL-Boards können nicht gleichzeitig an vielen Controller-Boards betrieben werden
- **Native CAN nicht verfügbar** - Die meisten SBC-Setups nutzen keine nativen CAN-Interfaces

### 🔥 **Sicherheitsbedenken**
- **Brandgefahr durch Thermal Runaway** - Keine Möglichkeit, Toolhead-Strom bei Notfällen zu trennen
- **Unkontrollierte Stromversorgung** - Toolheads bleiben auch bei Fehlern unter Strom
- **Begrenzte Notabschaltung** - Schwierig, umfassende Sicherheitsabschaltungen zu implementieren

### 🔌 **Verkabelung & Installation**
- **Komplexes Kabelmanagement** - CAN und 24V-Strom beginnen an verschiedenen Stellen
- **Mehrere Anschlusspunkte** - Erhöht Fehlermöglichkeiten und Installationskomplexität
- **Unzureichende Steckernormen** - Mix verschiedener Steckertypen schafft Verwirrung

### 🖥️ **USB- & Peripherie-Probleme**
- **Begrenzte USB-Anschlüsse** - SBCs haben oft unzureichende Hochleistungs-USB-Konnektivität
- **USB-Hub-Limitationen** - Externe Hubs erhöhen Komplexität und potentielle Fehlerquellen
- **Power-Delivery-Standards** - Inkonsistente USB-C-Stromversorgung für moderne Touchscreens

## ✨ Features

### 🔋 Stromversorgung (24V Eingang)

- **Eingangsspannung:** 24V DC nominal
- **Anschlüsse:** XT30PW-F (liegend) oder 5.08mm Schraubklemme
- **Toolhead-Schaltung:** 2x P-Channel MOSFETs (CJAC70P06, -60V, -70A, RDSon ca. 8mΩ) gesteuert durch PB2 und PA5 zum Ein-/Ausschalten der Toolheads (Sicherheitsfeature, falls PWM-FET am Toolhead durchlegiert)
- **Überspannungsschutz:** TVS-Diode (SMAJ26A, 26V Standoff, Unidirektional) gegen GND
- **Eingangssicherung:** Verteilte Absicherung (5A für DC/DC, je 5A für CAN-Anschlüsse)

### ⚡ DC/DC Wandler (5V Ausgang)

- **Controller:** MaxLinear XR76208 (Synchroner Step-Down, 8A, COT)
- **Eingangssicherung:** 5A SMD 1812 Slow Blow
- **Verpolschutz:** SS56 Schottky-Diode
- **Ausgangsspannung:** 5.1V (eingestellt über Feedback-Teiler: R_Top=15kΩ, R_Bottom=2.0kΩ)
- **Schaltfrequenz:** ca. 600kHz (eingestellt über Ron=30kOhm)
- **Induktivität:** 3.3µH Shielded (Sunlord MDA1050-3R3M, Isat ca. 17A)
- **Eingangskondensatoren:** 4x 10µF 1206 Keramik + 1x 100µF Elektrolyt/Polymer (Bulk)
- **Ausgangskondensatoren:** 4x 22µF 1206 Keramik
- **Stabilität:** Feed-Forward Kondensator (Cff) 1nF parallel zum oberen Feedback-Widerstand
- **Soft-Start:** 100nF an Pin SS (ca. 6ms Anlaufzeit)
- **Stromlimit:** 5.1kΩ Widerstand (~10.2A Grenzwert)
- **Enable:** Spannungsteiler von 24V (100kΩ oben, 22kΩ unten) = ca. 4.3V am Pin

### 🔌 Logik-Spannungsversorgung (Power Path)

- **Konzept:** Trennung in +5V_PWR (Hochstrom für Screen/Webcam) und +5V_LOGIC (für MCU/Hub)
- **Dioden-Weiche (ORing):** 2x Schottky-Dioden (1N5819WS, 1A)
  - Quelle 1: USB_VBUS (vom Pi/PC) → Diode → +5V_LOGIC
  - Quelle 2: +5V_BUCK (vom 8A Regler) → Diode → +5V_LOGIC
- **Zweck:** Board ist per USB flashbar ohne 24V-Versorgung, kein Rückstrom in den PC
- **3.3V Erzeugung:** LDO (XC6206) gespeist aus +5V_LOGIC

### 🧠 MCU & CAN Interface

- **Mikrocontroller:** STM32G0B1KBU6 (UFQFPN-32)
- **Taktung:** Crystal-less (Interner HSI48 mit Clock Recovery System CRS über USB)
- **Pi-Verbindung:**
  - USB (PA11/PA12) an USB-Hub
  - UART (PA9/PA10) an Pi-Header (Pin 8/10) über Jumper trennbar
  - NRST an Pi GPIO 22 (via 1kΩ) + Taster gegen GND + 100nF Cap
  - BOOT0 (Pin 24/PA14 shared mit SWCLK) an Pi GPIO 27 (via 1kΩ) + Taster gegen 3.3V + 10kΩ Pull-Down
- **CAN-Transceiver:** MCP2542WFD (oder kompatibel)
- **Muxing:** Jumper wählbar zwischen STM32 (USB-CAN Bridge) und Rock/Pi Native GPIOs (Pin 3/5). Bei ROCK 5B/5B+ kann über Jumper gewählt werden, ob CAN vom Onboard-STM32G0B1 kommt oder nativ an den Rockchip geht (über GPIO-Leiste Pin 3 (CAN-RX) und Pin 5 (CAN-TX))
- **Terminierung:** 120 Ω Widerstand, zuschaltbar per Jumper (direkt an den Buchsen)
- **CAN-Anschlüsse:** 2x Molex Micro-Fit 3.0 (2x2)
- **Micro-Fit Pinout:** Pin 1=24V, Pin 2=GND (Obere Reihe), Pin 3=CAN_H, Pin 4=CAN_L (Untere Reihe)
- **CAN-Stromabsicherung:** Je 5A SMD 1812 Slow Blow pro Port

### 📡 USB Hub

- **Controller:** WCH CH334F (QFN-24)
- **Geschwindigkeit:** USB 2.0 High Speed (480 Mbit/s) mit MTT
- **Taktung:** Intern (Crystal-less), XI/XO Pins offen gelassen
- **Versorgung:** V5 an +5V_LOGIC
- **Upstream:** Zum Raspberry Pi Header (USB Loopback Kabel erforderlich) oder USB-C Input
- **Downstream Ports:**
  - STM32 (Intern)
  - USB-C Buchse (für Touchscreen)
  - USB-A Buchse (Vertikal, für Webcam)

**USB Port Absicherung:**
- **Konzept:** 100µF Elko als Tank an +5V_PWR, gefolgt von Polyfuse, gefolgt von 22µF Keramik an der Buchse
- **USB-C Port (Screen):**
  - Polyfuse: 4.0A Hold Current (Derating für Hot Chamber berücksichtigt)
  - CC-Leitungen: CC1 und CC2 jeweils mit eigenem 10kOhm Widerstand an VBUS (hinter der Sicherung) gezogen (Source 3A Advertisement)
  - ESD-Schutz: SRV05-4 TVS-Array
- **USB-A Port (Webcam):**
  - Polyfuse: 1.5A Hold Current
- **ESD-Schutz:** SRV05-4 TVS-Array

## 📋 Klipper Konfiguration

### Basis MCU Setup
```ini
[mcu hat]
canbus_uuid: your_uuid_here
# Alternative für USB-Verbindung:
# serial: /dev/serial/by-id/usb-katapult_stm32g0b1xx_your_id-if00

[temperature_sensor hat_mcu]
sensor_type: temperature_mcu
sensor_mcu: hat
```

## 🔌 Pinout & Steckerbelegung

### Stromeingang
- **XT30PW-F (liegend)** oder **5.08mm Schraubklemme**
  - Pin 1: +24V
  - Pin 2: GND

### CAN-Bus Anschlüsse
- **2x Molex Micro-Fit 3.0 (2x2, THT)**
  - Pin 1: +24V (obere Reihe, links)
  - Pin 2: GND (obere Reihe, rechts)
  - Pin 3: CAN_H (untere Reihe, links)
  - Pin 4: CAN_L (untere Reihe, rechts)

### USB Anschlüsse
- **USB-C:** Touchscreen-Verbindung (5V/3A Fähigkeit)
- **USB-A:** Webcam-Verbindung (vertikale Montage)

## 🛠️ PCB Spezifikationen

| Parameter | Spezifikation |
|-----------|---------------|
| **Formfaktor** | Standard HAT (65mm x 56mm) |
| **Lagenaufbau** | 4-Layer Multilayer |
| **Layer 1 (Top)** | Signal/Power |
| **Layer 2** | GND Plane |
| **Layer 3** | 5V Power Plane |
| **Layer 4 (Bottom)** | Signal/GND |
| **Lötstopplack** | Schwarz Matt |
| **Oberfläche** | ENIG (Gold) |
| **Silkscreen** | Weiß |
| **Montage** | Innere Montagelöcher (Pi/Rock kompatibel) |
| **EMV-Design** | Montagelöcher via Stitching-Vias mit GND-Planes verbunden (Layer 2 & Bottom), isoliert von 5V-Plane (Layer 3) |

## ⚠️ Fertigungsempfehlungen

### PCB-Fertigung
- **Kupferdicke:** **2oz Kupfer empfohlen** für verbesserte thermische Leistung und Strombelastbarkeit
- **Via-Spezifikationen:** Minimum 12-20 Vias am DC/DC PGND für Thermal Management
- **Impedanzkontrolle:** 90 Ω Differentiell für USB-Leiterbahnen (D+/D- Paare)

### Bestückungshinweise
- **24V Pfad:** Minimum 3mm Leiterbahnbreite auf Top & Bottom Layern für 12A Gesamtstrom
- **5V Verteilung:** Nutzung der Layer 3 Plane mit massiven Anbindungen (keine Thermals) an Header und Kondensatoren
- **Thermal Management:** QFN GND-Pads mit Vias angebunden, Bottom Layer Routing berücksichtigt

### Bauteilbeschaffung
- Polyfuse-Derating für Kammertemperaturen bis 60°C berücksichtigen
- Induktivitäten mit ausreichendem Sättigungsstrom wählen (>15A empfohlen)
- Low-ESR Kondensatoren für Schaltregler verwenden

## 🛠️ Technische Spezifikationen

| Parameter | Wert | Einheit |
|-----------|------|---------|
| **Eingangsspannung** | 24 ± 2 | V |
| **5V Ausgangsstrom** | 8 | A |
| **Logik-Versorgungsstrom** | 2 | A |
| **CAN-Baudrate** | bis zu 1 | Mbit/s |
| **USB-Geschwindigkeit** | 480 | Mbit/s |
| **Betriebstemperatur** | -10 bis +70 | °C |
| **Abmessungen** | 65 x 56 | mm |

## 📚 Weitere Ressourcen

- [Klipper Dokumentation](https://www.klipper3d.org/Config_Reference.html)
- [CAN-Bus Setup Guide](https://www.klipper3d.org/CANBUS.html)
- [Voron Documentation](https://docs.vorondesign.com/)
- [STM32G0 Reference Manual](https://www.st.com/resource/en/reference_manual/rm0454-stm32g0x0-advanced-armbased-32bit-mcus-stmicroelectronics.pdf)
- [Katapult Firmware Flasher](https://github.com/Arksine/katapult)

## 📝 Changelog

Für detaillierte Informationen über Änderungen und Updates siehe [CHANGELOG.de.md](CHANGELOG.de.md).

## Lizenz

Dieses Projekt steht unter der **Creative Commons Namensnennung-Nicht kommerziell-Share Alike 4.0 International Lizenz** (CC BY-NC-SA 4.0).

[![License: CC BY-NC-SA 4.0](https://img.shields.io/badge/License-CC%20BY--NC--SA%204.0-lightgrey.svg)](https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de)

Dies bedeutet, Sie dürfen:
- **Teilen** — das Material in jedwedem Format oder Medium vervielfältigen und weiterverbreiten
- **Bearbeiten** — das Material remixen, verändern und darauf aufbauen

Unter folgenden Bedingungen:
- **Namensnennung** — Sie müssen angemessene Urheber- und Rechteangaben machen, einen Link zur Lizenz beifügen und angeben, ob Änderungen vorgenommen wurden
- **Nicht kommerziell** — Sie dürfen das Material nicht für kommerzielle Zwecke nutzen
- **Weitergabe unter gleichen Bedingungen** — Wenn Sie das Material remixen, verändern oder anderweitig direkt darauf aufbauen, dürfen Sie Ihre Beiträge nur unter derselben Lizenz wie das Original verbreiten

Den vollständigen Lizenztext finden Sie unter: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.de

---

> **Hinweis:** Dies ist die Originaldokumentation in deutscher Sprache. Eine englische Übersetzung finden Sie in [README.md](README.md).