# Speed Control Documentation

## Injection Speed States Diagram

```mermaid
stateDiagram-v2
    [*] --> IDLE
    
    IDLE --> PLUNGING: Start Button/Forward Switch
    IDLE --> HOMING: Reverse Switch
    
    PLUNGING --> IDLE: Stop/Emergency
    PLUNGING --> JAMMED: Motor Overload
    
    state PLUNGING {
        [*] --> NormalSpeed
        NormalSpeed --> LowSpeed: HOME_LOW_SPEED
        LowSpeed --> MediumSpeed: HOME_MEDIUM_SPEED
    }
    
    HOMING --> IDLE: Stop/Emergency
    HOMING --> JAMMED: End Switch/Overload
    
    state HOMING {
        [*] --> ReverseSpeed
        ReverseSpeed --> HomingLow: HOME_LOW_SPEED OFF
        HomingLow --> HomingMedium: HOME_MEDIUM_SPEED OFF
    }
    
    JAMMED --> IDLE: Reset/Direction Change
    
    note right of IDLE
        Default state waiting for input
    end note
    
    note right of PLUNGING
        Forward motion with speed control
        through VFD and relay pins
    end note
    
    note right of HOMING
        Reverse motion with controlled
        speed for safe return
    end note
    
    note right of JAMMED
        Safety stop state when overload
        or end switch triggered
    end note
```

## Speed Control Details

The system implements multiple speed levels controlled through:
- VFD (Variable Frequency Drive) for main motor control
- HOME_LOW_SPEED_PIN relay for low speed adjustment
- HOME_MEDIUM_SPEED_PIN relay for medium speed adjustment

Speed transitions are managed through:
1. Direction control (Forward/Reverse)
2. Speed relay controls
3. Safety monitoring (load, position sensors)

The system can operate in:
- Manual mode: Direct control through switches
- Auto mode: Self-managed speed control based on position and load
- Emergency stop: Immediate stop on overload or sensor triggers