This is a remix from the BLV mgn Cube - 3d printer https://www.thingiverse.com/thing:3382718. So you need to start from there first.
Thirst of all many thanks to Ben. I'm impressed from people who are taking the time and have the skills to setup and build such projects.
Second it is a lot of work and you need patience (especially with the progress of this documentation :-)). I will update this from time to time and enrich details of the build, additional parts (STL files) and the Klipper configuration.
Compared to the original I have changed some major things in the electronics and some minor on the mechanical side.
My decision was to build the largest Z height version with 665mm. So specially the mechanical construction needs to take care.
I decided to use OctoPrint in combination with the Klipper firmware. What components I used:
- a Raspberry Pi 3
- 3 Arduino Mega 2560 in combination with 3 RAMPS 1.4 (upgraded to 24 Volts, simply google for a howto there a lot of youtube videos and descriptions)
- TMC2130 stepper driver with software configuration
- optical end stops for both Z steppers
- 2 Power Supplies one with 24V/10A and one 24V/15A (Hotend/Heated Bed only).
cost savings in comparison to the DuetWifi
The cost I had were around 125,- Euro for:
- 3 RAMPS 1.4 - 27,22 € (bought from a local vendor at double price vs. Aliexpress but easy to upgrade to a 24V version)
- 3 original Arduino Mega 2560 (not clones) - 23,11 € (via Aliexpress)
- 5 TMC2130 as SPI version - 30,41 € (via Aliexpress)
- Raspberry Pi 3B+ - 34,49 € (Amazon)
- 32 GB SDCard for the Raspi - 7,13 € (Amazon)
So the savings to an original DuetWifi would be around 50-60,-€.
I went for version 1.4. I had the luck to get ones were I only needed to remove D1 for the 24V upgrade. The fuses were versions with up to 30V.
Why I use 3?
It is simply the possibility Klipper offers and it is flexible and scalable. They are splittet into:
- Extruder controller, heated bed, hotend
- XY axis controller
- Dual Z axis controller
All RAMPS boards needs active cooling due to the fact that the TMC2130 will become very hot. I used the following housing which make it possible to use 80mm fans: https://www.thingiverse.com/thing:737701
The fans are temperature controlled via Klipper (easy setup, see config). The temperature sensor is the same like for the hotend or the heated bed (easy to get and cheap). I plugged it into the hitsink of one TMC2130 per RAMPS board. This is possible due to the grouping of the drivers via the 3 RAMPS.
TMC2130 from FYSETC specials
I bought modules from FYSETC. These modules have a white coating which is not useful for efficient cooling even with the heat sink attached. I recognized that the RAMPS cooling fans turned on fast and often. Therefore I took a sharp screwdriver and scratched the coating from the back of the module. Underneath the chip is the plain copper plate for cooling. (see below in the pictures) I attached the heat sink directly to the copper plate. This is much better for efficient. The fan does not run so often as before and the chips have a much better cooling.
As OctoPrint is part of the configuration the plugin "RGB Status" in OctoPrint will be implemented. The plugin controls the LED rings via the GPIO 10 from the Raspberry Pi. The data wire for the 3 rings is connect thru all 3 rings as a stack. Each ring has a data out which is connected to the data in from the following one. The first ring is connected to GPIO 10 of the Raspi. So the count of the LEDs are added to 48. Consequently in the configuration 48 LEDs will be controlled individually. The plugin has 3 modes:
- OctoPrint startup
- OctPrint idle
- OctoPrint printing (progress bar)
Each of them can be configured individually (color and effect). My decision was rainbow colors on startup, blue in idle mode, printing white base color and progress bar in green.
I added a picture which shows the progress bar while printing. This moves thru all three rings until the print is finished. So one ring is one third of the duration. Within the ring you see the green gauge which shows how much from this third was reached.
Octoprint Plugin Setting RGB Status
cable chains for the wiring of the bed and the print head
weak but quick version (not recommended)
There are 2 STLs for the holders of the top cable chain. The one for the X carriage is designed for the direct drive extruder. It is tied with 2 strong cable ties on the left side of the extruder motor mount. I added a picture for better visuality.
The cable chain for Z its simply tied to the cable connector plug to the heated bed and mounted on the surface. There is not so much force on it. I'm still thinking of a better solution.
fix the chain with cable ties to the direct extruder mount
new BMG direct drive mount with chain holder - strong & recommended version
I made a re-design of the BMG direct drive mount with an direct attached cable chain holder for a 10x20 chain which should be stronger than the cable tie version. I replaced my direct extruder mount as the cable time version was weak. It fits perfect and is strong.
This build has the direct extruder version. To save weight on the X-axis the extruder stepper which will be used is the smallest NEMA 17 and not the one suggested for the original. I bought an stepping motor from Usongshine model: 17HS4023. In the Klipper settings I defined a current of 0.4 A which works fine and the motor will not dissipate to much heat. During test I need to setup a current of 0.6 A. This is my current setting.
The TMC2130s makes it possible to save endstops for X and Y. The configuration is in the Klipper config. Please keep in mind you need to connect the DIAG_1 PIN from the stepper board to an end stop PIN on the RAMPS. Please look at the TMC2130 stepper section (for ex. "[tmc2130 stepper_x]")in the Klipper config where you need to setup this. For X in the section [stepper_x] needs then to set to endstop_pin: tmc2130_stepper_x:virtual_endstop and for Y equivalent. During the homing procedure the TMC identify when knocking the frame and triggers the endstop on the RAMPS.
Simply follow this guide: https://github.com/KevinOConnor/klipper/blob/master/docs/Sensorless_Homing.md
I added for each Z stepper one. An end stop flag is added in the files section and need simply to mount on top of the left and right bed frame. To mount the endstops on the frame I used this thing: https://www.thingiverse.com/thing:2512807. I added a picture for better visuality. Please print the flag in black color so that the endstop will secure trigger.
Z-Wobble and how to significant reduce it
Because of the possible print height of over 600mm and the length of the lead screws I expected issues regarding wobble and it became true during the first tests. The quality of the screws is only one side the other side is centering the screws with the shaft of each stepper motor. I recognized that the aluminium couplers didn't solve Z wobble in my build as based on their construction with the 2 small screws to fix the lead screw on the one and the motor shaft on the other end, I was not able to exact center screw and shaft. The screws wobbled like hell and as a result it became part of each printed object. (see photo below with the silver cube)
I needed a coupler which has a self centering mechanism and I found a simple solution and the best it is printable, cheap and easy. :-)
I found his nice thing: https://www.thingiverse.com/thing:602481
The wobble was not complete eliminated but significant reduced. I'm sure based on the length of the lead screws and as a hobbyist I have not the tools and material to solve it completely. See how it looks in the picture.
At the end it results in stunning prints no more wobble visible in the walls of the printed object. Unfortunately my silver filament was out so I had to use a yellow one for further test. In the photo with the yellow cube any wobble is not visible anymore.
self centering coupler
without wobble, don't take care about the corners that is something like filament is curling during print over the edge
custom thermistor setting for NTC 3950 100k
During the first hours printing I had challenges with the print quality which not came from the mechanics. It figured out that something with the temperature in the hotend does not match with the measurements and values which are shown in the Octprint GUI. The filament warped and often the print failed with layer shifts. The cause was that the nozzle run into warped layers during print and moved the magnetic print plate from the origin. (I wasted a lot of time to find the root cause, "sitting like a cat waiting for the mouse in front of the hole")
So I had done some investigations and came to the conclusion that the settings for the thermistor which is a NTC 3950 100k in the firmware does not match the physical values. This caused an error of up to 20 Kelvin less to the real temperature. In my case the firmware measured 200C but in the hotend were around 190C. The higher the temperature the higher was the error (246C measured but in real 230C).
In Klipper is the ability to setup an custom thermistor. In my case the following definition worked fine:
In the section [extruder] the sensor_type needs to set accordingly like this:
PLEASE keep in mind this might not be the right setting for your thermistor. Setting wrong values here can cause damage like melting the PTFE tube inside the hotend due to higher temperatures from wrong settings!!