4.3 KiB
4.3 KiB
| title | description | keywords |
|---|---|---|
| Extruder Component | Documentation for the Extruder component which manages VFD-controlled extrusion with joystick and potentiometer control | extruder, VFD, joystick, potentiometer, torque monitoring, jam detection |
Extruder
Path: src/components/Extruder.h
Revision History: Initial documentation
The Extruder component provides control over a SAKO VFD-driven extruder motor. It supports both manual and automatic extrusion modes, with configurable speed and overload protection via potentiometers. The component integrates with a joystick for manual control and features jam detection based on motor torque feedback.
Requirements
Hardware
- SAKO VFD (Variable Frequency Drive) for motor control
- Joystick for manual control (optional)
- Potentiometer for speed control (optional)
- Potentiometer for overload threshold control (optional)
Pins
- No direct pin requirements (manages components that have their own pin requirements)
Features
- Dual operating modes: manual (joystick-controlled) and auto (timed operation)
- Configurable extrusion speed via potentiometer
- Adjustable overload/jam detection threshold
- Automatic jam detection based on motor torque feedback
- Modbus TCP interface for remote control and monitoring
- Safety features including maximum runtime limits
- Auto-mode activation via joystick hold
Dependencies
- Component - Base component class
- SAKO_VFD - VFD motor controller
- Pos3Analog - 3-position analog input (joystick)
- POT - Potentiometer interface
- ModbusTCP - Modbus interface
graph TD
Extruder --> Component
Extruder --> SAKO_VFD
Extruder --> Pos3Analog
Extruder --> POT
Extruder --> ModbusTCP
Behaviour
The Extruder component implements a state machine with the following states:
stateDiagram-v2
[*] --> IDLE
IDLE --> EXTRUDING_MANUAL: Joystick UP
EXTRUDING_MANUAL --> EXTRUDING_AUTO: Hold joystick UP for set duration
EXTRUDING_MANUAL --> IDLE: Release joystick
EXTRUDING_AUTO --> STOPPING: Auto time complete or manual stop
EXTRUDING_MANUAL --> JAMMED: Torque exceeds threshold
EXTRUDING_AUTO --> JAMMED: Torque exceeds threshold
STOPPING --> IDLE: VFD stopped
JAMMED --> RESETTING_JAM: Reset command
RESETTING_JAM --> IDLE: Reset complete
TODOs
Performance
- Consider implementing acceleration/deceleration ramps for smoother operation
- Optimize VFD polling frequency based on system requirements
- Evaluate the potential for predictive jam detection using torque trend analysis
Security
- Implement authentication for Modbus commands that control the extruder
- Consider adding physical emergency stop integration
- Validate input values from potentiometers to prevent unexpected behavior
Compliance
- Ensure conformance with industrial safety standards for automated machinery
- Implement proper error handling and logging for diagnostic purposes
- Consider adding UL/CE compliance features if required for deployment environment
Recommendations
- Add temperature monitoring to prevent motor overheating
- Consider implementing a material feed sensor to detect material availability
- Implement a maintenance tracking system based on operation hours
- Add visual feedback (e.g., LED indicators) for different states, especially jammed condition
Example
The following example shows how to create and configure an Extruder component:
#ifdef ENABLE_EXTRUDER
// First ensure required components exist
if (sakoVFD && joystick && speedPot && overloadPot) {
extruder = new Extruder(
this, // owner
sakoVFD, // VFD controller
joystick, // joystick for manual control
speedPot, // potentiometer for speed control
overloadPot // potentiometer for overload threshold
);
if (extruder) {
components.push_back(extruder);
Log.infoln(F("Extruder initialized"));
} else {
Log.errorln(F("Extruder initialization failed"));
}
} else {
Log.warningln(F("Extruder not initialized - missing dependencies"));
}
#endif