Skip to content

Conversation

vedransi
Copy link

Description

Differential Extruder requires X and E steppers to work together as a differential mechanism:
  • When X and E move in the same direction they move the print carriage,
  • When X and E move in opposite directions they cause extrusion.

The setup is as follows:

  • X stepper moves the print head left and right as usual. No changes there.
  • E stepper drives a loop timing belt that is meshed around a timing pulley on the print head. That timing pulley is on the same shaft as the extruder wheel.
  • Stepper.cpp adds X steps to E steps and sends the sum (X + E) to the E stepper. This means that the E stepper rotates much more than it did when E stepper was just driving the extruder.
  • However, since X stepper moves the carriage left and right and E stepper moves almost as much as X stepper, only the difference between these two movements now matters in regards to extrusion.
  • Net extrusion is then: ( X + E ) - X = E

Please note that stepper.cpp performs all calculations "per block", which preserves Bresenham timing coordination

Requirements

This PR requires a differential setup of the X and E steppers. For example, the X stepper on my Creality Ender 3 v2 is mounted on the left side, as before. No changes there. However, the E stepper is mounted right above the X stepper on the X gantry and drives a "loop" timing belt that runs above and parallel the X belt. The loop belt is meshed around a timing pulley on the print head and is tensioned by the tensioner on the right side or the X gantry, similar to the X belt. The BOM of additional parts will be provided together with the STL files.

Benefits

This PR combines the speed of a Bowden extruder with the precision of the Direct Drive. It brings the extrusion wheel close to the hot end without the penalty of the heavy stepper motor on the print head (i.e. "direct drive'). As a result, you can print quickly as well as precisely, and you can print flexible filaments and abrasive filaments without the penalty of filament buckling and Bowden tube erosion, respectively.

Configurations

Other than my Configuration.h, no. Below are some photos and a video of a working setup:

Related Issues

No

IMG_3679
IMG_3680
IMG_3681
https://github.com/user-attachments/assets/f1eee3f1-655e-4860-b0a2-9c697800e109

Differential Extruder requires X and E steppers to work together as a differential mechanism: 
 - When X and E move in the same direction they move the print carriage,
 - When X and E move in opposite directions they cause extrusion.

All calculations are performed per block, preserving Bresenham timing coordination
Differential Extruder currently only works with one extruder. Nothing is really stopping us from applying it to multiple extruders, but right now it works with just one.
It also requires regular Cartesian kinematics (i3/RepRap only. No COREXY, DELTA, SCARA, etc.)"
Last, but not least, Differential Extruder requires a 32-bit CPU
Differential Extruder works fine on my Creality Ender 3 v2. The original configuration.h was for a different setup, so I replaced it with mine
@vedransi
Copy link
Author

Hardware requirements for differential extruder:

  • One extruder only (at this stage)
  • RepRap kinematics only (at this stage)
  • 32-bit motherboard

@vedransi
Copy link
Author

Hello!
@thinkyhead, when you find some time, could you or someone else who's looking after Marlin review my PR, please?
If you'd like to physically test this extruder, I'll send you the STL files of the additional fixtures. The rest are off-the-shelf parts. I'll send you the BOM, if you want.
I've been testing this extruder on my Ender 3 v2 and everything I throw at it works fine. This should be it. The code additions are the simplest of all that were attempted, which is a good sign. That said, the first layer must be spot-on. If the nozzle is too close to the bed, E and X will counter each other, X belt might skip and then you get layer shifts. Once you get the bed distance and levelling sorted out, it's a breeze.
Thanks heaps in advance
Vedran

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant