Prusa-MMU-Private
PrusaMultiMaterialUpgradev3firmwareforMK3SMK4
|
Define Debug mode to add additional serial output. More...
Classes | |
struct | AxisConfig |
Axis configuration data. More... | |
struct | AxisLimits |
Phisical limits for an axis. More... | |
Typedefs | |
typedef AxisLimits< Millimeter > | PulleyLimits |
Pulley axis limits. | |
typedef AxisLimits< Millimeter > | SelectorLimits |
Selector axis limits. | |
typedef AxisLimits< Degree > | IdlerLimits |
Idler axis limits. | |
Enumerations | |
enum | MRes : uint8_t { MRes_256 = 0 , MRes_128 = 1 , MRes_64 = 2 , MRes_32 = 3 , MRes_16 = 4 , MRes_8 = 5 , MRes_4 = 6 , MRes_2 = 7 , MRes_1 = 8 } |
Available microstepping resolutions. | |
enum | Axis : uint8_t { Pulley , Selector , Idler , _Axis_Last = Idler } |
List of available axes. | |
Variables | |
static constexpr uint8_t | NUM_AXIS = Axis::_Axis_Last + 1 |
Number of available axes. | |
static constexpr const uint8_t | toolCount = 5U |
static constexpr const uint16_t | fsensorDebounceMs = 2 |
static constexpr uint16_t | ledBlinkPeriodMs = 1024U |
static constexpr const uint16_t | findaDebounceMs = 100 |
static constexpr const uint8_t | buttonCount = 3 |
number of buttons currently supported | |
static constexpr const uint16_t | buttonsDebounceMs = 20 |
tuned with a pack of highly trained monkeys :) | |
static constexpr const uint16_t | buttonADCLimits [buttonCount][2] = { { 0, 50 }, { 80, 100 }, { 160, 180 } } |
static constexpr const uint16_t | buttonADCMaxValue = 1023 |
used in unit tests | |
static constexpr const uint8_t | buttonsADCIndex = 5 |
ADC index of buttons input. | |
static constexpr const uint8_t | VCCADCIndex = 30 |
ADC index of scaled VCC input. | |
static constexpr const uint16_t | VCCADCThreshold = 274 |
static constexpr const uint8_t | VCCADCReadCnt = 10 |
Number of ADC reads to perform, only the last one being used. More... | |
static constexpr uint8_t | dropSegments = 0 |
Do not plan moves equal or shorter than the requested steps. | |
static constexpr uint16_t | maxStepFrequency = 40000 |
Max step frequency 40KHz. | |
static constexpr uint16_t | minStepRate = 120 |
Minimum stepping rate 120Hz. | |
static constexpr uint8_t | blockBufferSize = 4 |
Size for the motion planner block buffer size. | |
static constexpr uint8_t | stepTimerFrequencyDivider = 8 |
Step timer frequency divider (F = F_CPU / divider) | |
static constexpr uint16_t | stepTimerQuantum = 256 |
static constexpr uint8_t | feedToBondtechMaxRetries = 2 |
Max retries of FeedToBondtech used in LoadFilament. | |
static constexpr U_mm | pulleyToCuttingEdge = 33.0_mm |
Distances. | |
static constexpr U_mm | filamentMinLoadedToMMU = 20.0_mm |
static constexpr U_mm | ejectFromCuttingEdge = 40.0_mm |
Limit of retraction. | |
static constexpr U_mm | cuttingEdgeRetract = 5.0_mm |
Eject should ignore FilamentMinLoadedToMMU and retract. | |
static constexpr U_mm | cuttingEdgeToFinda = 18.5_mm |
Cutting retraction distance (filament should be flush with outlet) | |
static constexpr U_mm | findaTriggerDistance = 4.5_mm |
Cutting edge to FINDA MMU side -1mm tolerance should be ~18.5. FINDA shouldn't trigger here. | |
static constexpr U_mm | cuttingEdgeToFindaMidpoint = 22.85_mm |
FINDA trigger distance +1.0_mm tolerance. | |
static constexpr U_mm | findaToCoupler = 12.0_mm |
Cutting edge to Midpoint of FINDA should be 22.85_mm. | |
static constexpr U_mm | couplerToBowden = 3.5_mm |
FINDA Coupler side to coupler screw. | |
static constexpr U_mm | defaultBowdenLength = 360.0_mm |
FINDA Coupler screw to bowden mmu side (in coupling). | |
static constexpr U_mm | minimumBowdenLength = 341.0_mm |
~360.0_mm - Default Bowden length. | |
static constexpr U_mm | maximumBowdenLength = 1000.0_mm |
~341.0_mm - Minimum bowden length. | |
static constexpr U_mm | feedToFinda = cuttingEdgeToFindaMidpoint + filamentMinLoadedToMMU |
~1000.0_mm - Maximum bowden length. | |
static constexpr U_mm | maximumFeedToFinda = feedToFinda + 20.0_mm |
allow for some safety margin to load to FINDA | |
static constexpr U_mm | pulleyHelperMove = 10.0_mm |
Helper move for Load/Unload error states - when the MMU should slowly move the filament a bit. | |
static constexpr U_mm | cutLength = 8.0_mm |
static constexpr U_mm | fsensorToNozzle = 30.0_mm |
~20mm from MK4's filament sensor through extruder gears into nozzle | |
static constexpr U_mm | fsensorToNozzleAvoidGrind = 5.0_mm |
static constexpr U_mm | fsensorUnloadCheckDistance = 40.0_mm |
Check the state of FSensor after this amount of filament got (hopefully) pulled out while unloading. | |
static constexpr AxisConfig | pulley |
Begin: Pulley axis configuration. More... | |
static constexpr PulleyLimits | pulleyLimits |
Pulley motion limits. More... | |
static constexpr U_mm_s | pulleyUnloadFeedrate = 95._mm_s |
static constexpr U_mm_s | pulleyLoadFeedrate = 95._mm_s |
static constexpr U_mm_s | pulleySlowFeedrate = 20._mm_s |
static constexpr AxisConfig | selector |
End: Pulley axis configuration. More... | |
static constexpr uint8_t | selectorCutIRun = 40 |
660mA | |
static constexpr SelectorLimits | selectorLimits |
Selector motion limits. More... | |
static constexpr U_mm | SelectorSlotDistance = 14.0_mm |
static constexpr U_mm | SelectorOffsetFromMax = 1.0_mm |
Selector distance between two slots. | |
static constexpr U_mm | SelectorOffsetFromMin = 75.5_mm |
Selector offset from home max to slot 0. | |
static constexpr U_mm | selectorSlotPositions [toolCount+1] |
Selector offset from home min to slot 0. More... | |
static constexpr U_mm_s | selectorFeedrate = 45._mm_s |
static constexpr U_mm_s | selectorHomingFeedrate = 30._mm_s |
static constexpr AxisConfig | idler |
End: Selector configuration. More... | |
static constexpr IdlerLimits | idlerLimits |
Idler motion limits. More... | |
static constexpr U_deg | IdlerSlotDistance = 40.0_deg |
static constexpr U_deg | IdlerOffsetFromHome = 18.0_deg |
Idler distance between two slots. | |
static constexpr U_deg | idlerSlotPositions [toolCount+1] |
Idler offset from home to slots. More... | |
static constexpr U_deg | idlerIntermediateSlotPositions [toolCount+1] |
Intermediate positions for Idler's slots: 0-4 are the real ones, the 5th index is the idle position. More... | |
static constexpr U_deg | idlerParkPositionDelta = -IdlerSlotDistance + 5.0_deg / 2 |
static constexpr U_deg_s | idlerFeedrate = 300._deg_s |
static constexpr U_deg_s | idlerHomingFeedrate = 265._deg_s |
static constexpr uint32_t | tmc2130_coolStepThreshold = 450 |
End: Idler configuration. More... | |
static constexpr uint32_t | tmc2130_PWM_AMPL = 240 |
static constexpr uint32_t | tmc2130_PWM_GRAD = 4 |
static constexpr uint32_t | tmc2130_PWM_FREQ = 0 |
static constexpr uint32_t | tmc2130_PWM_AUTOSCALE = 1 |
static constexpr uint32_t | tmc2130_freewheel = 1 |
Define Debug mode to add additional serial output.
Enable DEBUG_LOGIC to compile debugging and error messages (beware of code base size ;) ) for the logic layer Enable DEBUG_MODULES to compile debugging and error messages (beware of code base size ;) ) for the modules layer Enable DEBUG_HAL to compile debugging and error messages (beware of code base size ;) ) for the HAL layer Wrangler for assorted compile-time configuration and constants.
|
staticconstexpr |
33.0_mm /// Pulley to cutting edge. Case 1: FINDA working: This should be the max retraction after FINDA un-triggers. Case 2: FINDA not working: calculate retraction from printer to this point.
|
staticconstexpr |
End: Selector configuration.
Begin: Idler configuration
Intermediate positions for Idler's slots: 0-4 are the real ones, the 5th index is the idle position.
|
staticconstexpr |
Idler motion limits.
Idler offset from home to slots.
Absolute positions for Idler's slots: 0-4 are the real ones, the 5th index is the idle position Home ccw with 5th idler bearing facing selector
|
staticconstexpr |
The complete period of LED's blinking (i.e. ON and OFF together) Beware - in order to keep the blink periods "handle" millis overflow seamlessly keep the period a power of 2 (i.e. 256, 512, 1024). If you don't, one of the LED unit tests will fail.
|
staticconstexpr |
Begin: Pulley axis configuration.
|
staticconstexpr |
Pulley motion limits.
|
staticconstexpr |
120mm_s is too much, the printer cannot send the status of fsensor that fast and false fsensor_not_triggered errors start to occur
|
staticconstexpr |
End: Pulley axis configuration.
Begin: Selector configuration
|
staticconstexpr |
Selector motion limits.
Selector offset from home min to slot 0.
slots 0-4 are the real ones, the 5th is the farthest parking positions selector.dirOn = true = Home at max: selector hits left side of the MMU body selector.dirOn = false = Home at min: selector POM nut hit the selector motor
|
staticconstexpr |
Smallest stepping ISR scheduling slice (T = 1 / (F_CPU / divider) * quantum) 25us is the max frequency interval per maxStepFrequency attainable for a single axis while accelerating: with 3 axes this yields a required minimum of 75us
|
staticconstexpr |
End: Idler configuration.
step-based 20bit uint
|
staticconstexpr |
Freewheel options for standstill: 0: Normal operation (IHOLD is supplied to the motor at standstill) 1: Freewheeling (as if the driver was disabled, no braking except for detent torque) 2: Coil shorted using LS drivers (stronger passive braking) 3: Coil shorted using HS drivers (weaker passive braking)
|
staticconstexpr |
Max number of extruders/tools/slots Beware - if you change this, the EEPROM structure will become invalid and no migration procedures have been implemented. So if you really have to change this, erase your EEPROM content then.
|
staticconstexpr |
Number of ADC reads to perform, only the last one being used.
We are measuring the bandgap voltage, Vb=1.1V. To compute the threshold value: VAL = 1125.3 / AVCC
So for AVCC=4.1V, you get VAL=274.46
|
staticconstexpr |
ADC value for triggering the UV_VCC error