techmannih/nema34-mounted-stepper-controller
A 48 V USB‑C PD 3.1 EPR NEMA‑34 stepper controller PCB combining STM32/TMC5160 control, external MOSFET motor bridges, protected power and regenerative braking, USB data, telemetry, diagnostics, status LEDs, and buzzer alarms.
- Version
- 0.3.92
- License
- unset
- Stars
- 1
firmware/include/control.h
#pragma once
#include <stdbool.h>
#include <stdint.h>
typedef struct {
bool pd_app_mode;
bool epr_contract;
uint16_t contract_mv;
uint16_t contract_ma;
bool pd_fault;
bool efuse_fault;
bool motor_power_good;
bool vmotor_in_range;
bool watchdog_healthy;
bool configuration_verified;
bool sample_fresh;
bool driver_ready;
bool brake_preflight_ok;
bool motion_wiring_verified;
bool stop_active;
bool temperature_valid;
int16_t temperature_deci_c;
} pd1180_inputs_t;
typedef struct {
bool power_permit;
bool mcu_run;
bool motor_commands_enabled;
uint32_t contract_stable_ms;
uint32_t motor_stable_ms;
uint32_t power_start_ms;
bool armed;
bool fault_latched;
uint16_t current_limit_permille;
} pd1180_control_t;
void pd1180_control_reset(pd1180_control_t *state);
void pd1180_control_tick(pd1180_control_t *state, const pd1180_inputs_t *inputs, uint32_t elapsed_ms);
bool pd1180_control_arm(pd1180_control_t *state, const pd1180_inputs_t *inputs);
void pd1180_control_disarm(pd1180_control_t *state);