
IC2E ESC S50 DualSpool v1
AVIUS001/ic2e-esc-design-journey-public
Public-safe Aerial8/IC2E ESC design-journey overview (no manufacturable IP)

Gashebel Firmware
Gashebelboard is an open-source printed circuit board by WannSea, from the WannSea/throttle repository on GitHub. It is a 4-layer board of 45.5 × 58 mm with 20 parts on 29 nets, routed with 119 tracks and 22 vias.
It is built around the TJA1043T. Its parts include 4 capacitors, 4 connectors, 3 ICs, 2 resistors and 1 diode. It belongs with the SAM D and SAM boards of this library.
Dieses Projekt nutzt das https://github.com/rp-rs/rp2040-project-template als Template.
Rust über https://rustup.rs/ installieren und anschließend ausführen:
rustup target install thumbv6m-none-eabi
cargo install flip-link
cargo install --locked elf2uf2-rsEs gibt zwei Möglichkeiten:
Den RP2040 mit gedrückter BOOTSEL-Taste per USB verbinden und die Firmware direkt bauen und flashen:
cargo runEine UF2-Datei bauen, die später manuell auf das RP2040-USB-Laufwerk kopiert werden kann:
cargo build --release
elf2uf2-rs target/thumbv6m-none-eabi/release/rp2040-project-template throttle.uf2Green LED Blinking: Sending CAN throttle command Red LED: Lever Locked
Der verwendete Encoder mit dem 5-poligen Stecker ist ein AS5600 und wird über I2C gelesen:
SDA, SCL, PWM/OUT, GND, 3V3VCC -> 3V3, GND -> GND, SDA -> SDA, SCL -> SCLDIR habe ich fest mit VCC verbunden.OUT/PWM wird von der Firmware aktuell nicht benutzt.Die wichtigsten Parameter stehen am Anfang von src/main.rs:
MAX_CURRENT_A: maximal ausgegebener Strom bei vollständig ausgelenktem Gashebel, aktuell 500.0 A.DELAY_MS: Zeit zwischen zwei Ausgaben. 20 ms entsprechen 50 Hz.ENCODER_ZERO_RAW: Raw-Wert des Encoders in der neutralen Hebelposition.ENCODER_FORWARD_MAX_RAW: Raw-Wert bei vollständig nach vorne gedrücktem Gashebel.ENCODER_REVERSE_MAX_RAW: Raw-Wert bei vollständig nach hinten gedrücktem Gashebel.ENCODER_DEADZONE_COUNTS: Totzone von der Neutralstellung aus in jede Richtung. 50 bedeutet ungefähr 100 Counts Gesamttotzone.PRETEND_HALL_PIN_ON: Bei true wird der Hall-/Kill-Cord-Eingang für Tests als dauerhaft vorhanden behandelt.ENABLE_USB_LOGGING: Aktiviert bei true die Ausgabe der Encoderwerte über USB-Serial.Die Encoder-Endwerte dürfen je nach Einbaurichtung des Sensors größer oder kleiner als ENCODER_ZERO_RAW sein. Entscheidend ist, dass die Werte an den tatsächlichen Endpositionen des Hebels eingetragen werden.
Bei aktiviertem ENABLE_USB_LOGGING wird beispielsweise folgende Zeile ausgegeben:
encoder raw: 2237, throttle_milli: 0, can: 00000116#00000000Die drei Werte bedeuten:
encoder raw: unverarbeiteter 12-Bit-Messwert des AS5600 von 0 bis 4095.throttle_milli: aus Kalibrierung und Totzone berechnete Gasstellung. -1000 entspricht dem einen Endanschlag, 0 der Neutralstellung und +1000 dem anderen Endanschlag.can: Vorschau der tatsächlich gesendeten CAN-Nachricht im Format CAN-ID#Payload. 00000116 ist die SetCurrent-Nachricht für VESC-ID 22. Der achtstellige Payload enthält den vorzeichenbehafteten Stromwert als Ampere × 1.000. Im gesperrten Zustand ist dieser Payload immer 00000000.| SetDuty-Version | Aktuelle SetCurrent-Version |
|---|---|
VESC SetDuty, CAN-ID 0x16 | VESC SetCurrent, CAN-ID 0x116 |
| Payload: vorzeichenbehafteter Duty-Wert von −100.000 bis +100.000 | Payload: vorzeichenbehafteter Stromwert von −500.000 bis +500.000 (Ampere × 1.000) |
| 50 Werte großes Glättungsfenster | Keine Glättung und keine Rampe |
| Vollständige Rampe dauert ca. 1 Sekunde | Ausgang folgt dem Gashebel unmittelbar |
| Ausgabe alle 20 ms / 50 Hz | Ausgabe alle 20 ms / 50 Hz |
| Null und der gesperrte Zustand werden explizit gesendet | Null und der gesperrte Zustand werden explizit gesendet |
| Encoder- und Hall-Auswertung wie in der aktuellen Version | Encoder- und Hall-Auswertung unverändert |
| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | MountingHole_Pad | MountingHole:MountingHole_3.2mm_M3_Pad_TopBottom | H1, H2, H3, H4 |
| 2 | 10µ | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C1, C2 |
| 2 | 4.7nF | Capacitor_SMD:C_1206_3216Metric_Pad1.33x1.80mm_HandSolder | C3, C4 |
| 1 | 1.2K | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R2 |
| 1 | 120 | Resistor_SMD:R_1206_3216Metric_Pad1.30x1.75mm_HandSolder | R1 |
| 1 | 5V EN | Jumper:SolderJumper-2_P1.3mm_Open_Pad1.0x1.5mm | JP1 |
| 1 | BOOT BUS | gashebel:JST_B5B-XH-A | J2 |
| 1 | CAN T | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | JP3 |
| 1 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J4 |
| 1 | ENCODER | gashebel:JST_B5B-XH-A | J3 |
| 1 | Hall | gashebel:JST_B3B-XH-A | J1 |
| 1 | LM78M05_TO252 | Package_TO_SOT_SMD:TO-252-2 | U4 |
| 1 | SM712_SOT23 | Package_TO_SOT_SMD:SOT-23 | D1 |
| 1 | Seeed Studio XIAO SAMD21 | gashebel:XIAO-SAMD21-RP2040-14P-2.54-21X17.8MM (Seeeduino XIAO) | U2 |
| 1 | TJA1043T | Package_SO:SOIC-14_3.9x8.7mm_P1.27mm | U3 |
It measures 45.5 × 58 mm and has 4 copper layers, 1.6 mm thick.
20 parts, built around the TJA1043T. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the WannSea/throttle repository on GitHub, at the commit this page was made from: the board is gashebel/gashebelboard.kicad_pcb and its schematic gashebel/gashebelboard.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask WannSea before reusing the design.

AVIUS001/ic2e-esc-design-journey-public
Public-safe Aerial8/IC2E ESC design-journey overview (no manufacturable IP)



HubertD/SAMC21-Base
PCB holding a 36V DCDC, CAN Transceiver and ATSAMC21 microcontroller, meant for use with custom extension boards

luishutterli/starbridge
To make it easy for you to get started with GitLab, here's a list of recommended next steps.

hackclub/OnBoard
💡 Join 1,000 teenagers and make your first PCB with a $100 grant!

JanM321/esphome-lg-controller
Wired controller for LG HVAC units using ESPHome and ESP32
