Connecting BLTOUCH to KFB2.0

A quick tutorial on how to connect a BLTOUCH to KFB2.0. The reason this is slightly different from other boards is because KFB2.0 is missing dedicated Servo pins.

In order to figure this out I ordered a genuine BLTOUCH from Amazon, so if you’re using a clone, this should probably still work but no guarantees.

The BLTOUCH consists of 2 sets of wires. The end stop wires and the servo wires.

The end stop wires will go into the regular end stop connectors but for the servo wires we need to use an alternative to get around the missing servo pins

There are many parts required to wire up a KFB2.0 but for this instructable you will need at least

BLTOUCH Amazon $37.98 (no extended wires, get extended if you need them)

KFB2.0 Amazon $19.57

For this setup we’re going to use/abuse the Z-Max end stop connector to run the servo on the BLTOUCH

Z-Min is used as the actual end stop

The picture says it all. Connect all 5 wires from your BLTOUCH according to the image with the Servo wires being handled by the Z-Max connector.

In the software setup we’ll redirect the pins

A few changes have to be made to enable the BLTOUCH and redirect the pins

In Configuration.h

Pick the MKS_GEN_L board for the KFB2.0

#ifndef MOTHERBOARD<br>  #define MOTHERBOARD BOARD_MKS_GEN_L
#endif

Practically all of the following settings are a matter of uncommenting/commenting your code by adding/removing // (adding these will disable code)

For this setup it is assumed you will be using the Z-Min for the Z endstop

#define USE_XMIN_PLUG<br>#define USE_YMIN_PLUG
#define USE_ZMIN_PLUG

define your ENDSTOPPULLUPs, make sure it uses ENDSTOPPULLUP_ZMIN_PROBE

#define ENDSTOPPULLUPS<br>#if DISABLED(ENDSTOPPULLUPS)
  // Disable ENDSTOPPULLUPS to set pullups individually
  //#define ENDSTOPPULLUP_XMAX
  //#define ENDSTOPPULLUP_YMAX
  //#define ENDSTOPPULLUP_ZMAX
  #define ENDSTOPPULLUP_XMIN
  #define ENDSTOPPULLUP_YMIN
  //#define ENDSTOPPULLUP_ZMIN
  #define ENDSTOPPULLUP_ZMIN_PROBE
#endif

for my BLTOUCH installation I have the inversion set to false

#define Z_MIN_PROBE_ENDSTOP_INVERTING false // set to true to invert the logic of the probe.

let the system know it uses the probe for Z-min

#define Z_MIN_PROBE_USES_Z_MIN_ENDSTOP_PIN

turn on BLTOUCH

#define BLTOUCH
#if ENABLED(BLTOUCH)
  #define BLTOUCH_DELAY 100   // (ms) Enable and increase if needed
#endif

The following setting are going to depend on where you have mounted your BLTOUCH. Measure the distance from your BLTOUCH pin to your extruder. These values make sure you remain on top of your bed when auto leveling. The values below may (and probably won’t) match your setup

#define X_PROBE_OFFSET_FROM_EXTRUDER 48  // X offset: -left  +right  [of the nozzle]
#define Y_PROBE_OFFSET_FROM_EXTRUDER -2  // Y offset: -front +behind [the nozzle]
#define Z_PROBE_OFFSET_FROM_EXTRUDER 0   // Z offset: -below +above  [the nozzle]

set probe speed

#define XY_PROBE_SPEED 8000

IF you want the probe to do a double touch (or more)

#define MULTIPLE_PROBING 2

The following setting will position your extruder prior to during and after probing

#define Z_CLEARANCE_DEPLOY_PROBE   15 // Z Clearance for Deploy/Stow
#define Z_CLEARANCE_BETWEEN_PROBES  10 // Z Clearance between probe points
#define Z_CLEARANCE_MULTI_PROBE     5 // Z Clearance between multiple probes
//#define Z_AFTER_PROBING           5 // Z position after probing is done

Make the system aware of at least this servo

#define NUM_SERVOS 1 // Servo index starts with 0 for M280 command
#define SERVO_DELAY { 300 }

If you are going to use the BLTOUCH for Auto Bed Leveling set the next values

#define AUTO_BED_LEVELING_BILINEAR

Since the KFB 2.0 does not have its dedicated Servo pins we using the X-Max plug to power the servo that is inside the BLTOUCH.

For this we need to tell the Marlin firmware to redirect some pins.

It is assumed you have selected BOARD_MKS_GEN_L in the configuration.h

open the file pins_MKS_GEN_L.h

in it add the following Make sure you add this AFTER the line #include “pins_RAMPS.h”:

#include "pins_RAMPS.h"
//redirect the servo pin to the X-Max plug
#define SERVO0_PIN 19

If you want to test the pins with g-code m43 you’ll need to enable #define PINS_DEBUGGING in configuration_adv.h

#define PINS_DEBUGGING

Once you’ve uploaded the updated Marlin FW to the board you can test the BLTOUCH.

If your firmware is setup for Safe Z-homing (meaning you can’t home z before having homed X or Y) you either need to turn this feature off in the firmware

in configuration.h comment out Z_SAFE_HOMING

//#define Z_SAFE_HOMING

or have your X and Y end stops connected.

First test is to see what happens with you turn on/power up your board. In this setup the BLTOUCH lights up when powering on and does two servo action. The probe pin comes out twice and retracts

As far as lights is concerned I see the orange light and a small purple led on. (not quite clear in the photo)

connect to the board with something like PronterFace or OCtoPrint and send it g-code m43 (if you’ve enabled PINS_DEBUGGING in the last step)

Check to see if pin 19 is indeed set to SERVO0_pin

Next check out this video for testing the BLTOUCH setup

If this was useful to you in anyway, please consider supporting me through Patreon  or making a small donation here.

3D Printer 24 Volt Upgrade

The Core XY I built and have been gradually upgrading is a beast but it still runs on 12 volts. It runs on a plain RAMPS 1.4 recently upgraded with TMC2130 stepper drivers.

It’s possible to upgrade a RAMPS 1.4 to 24 Volt but it seems easier to go with a 24 Volt board off the shelf. In my case a KFB2.0 (very close relative to the MKS GEN L).

Why upgrade? Well, from all I’ve read, it provides more torque to the stepper motors and it also seems that TMC2130 don’t run well in spreadcycle with 12Volt. Supposedly, the Spreadcycle should get a bit more quiet with 24 Volt.

What will change

Power Switching Unit

Obviously the existing 12 Volt Power switch will be replaced with a 24 Volt one. $19.98 on Amazon: https://amzn.to/2JevH8i Other than the Sticker on the outside stating 24V/15A instead of 12Volt/30A, there is remarkable little difference between the two units (both outside and inside).

Once I ordered the 24Volt power switching unit and hooked it up, I noticed the cooling fan came on immediately. That’s annoying as I want my 3D printer to be quiet in Idle mode.

24 Volt heating cartridge

The heating cartridge inside my hot-end is rated for 12 Volt. It needs to be replaced with a 24 Volt Cartridge. From what I’ve read, on keeping a 12, Volt cartridge, it’s simply not worth the risk. Apparently, the power provided to the 12 Volt Cartridge would quadruple and thus could cause melting the entire heat block. There’s tricks that can be done with PWM sent to the heater but again it’s not worth the risk.

I own a genuine E3D Titan Extruder with E3D hot-end, so I ordered mine directly at e3d-online.com. There are plenty of knock-off on Amazon at $8.99 https://amzn.to/2sDa1s0 (I payed about the same ordering from e3d-online).

Heated Bed

My CoreXY printer runs a 110 Volt heated bed controlled though an SSR so there’s no issue upgrading to 24 Volt (See my instructable on this at instructables.com). The SSR input can handle 3-36 volt.

That said many of the MK2B beds can handle both 12 volt and 24 Volt. It’s just a matter of how to connect the wires.

Cooling Fans

The fan in the power unit is kinda loud so I wanted to replace that right away. I’m a huge fan of the Noctua 40mm cooling fans (their practically noiseless) (Amazon $13.95 https://amzn.to/2HsZdS8).

So I’m replacing all my fans with Noctua Fans. I have 2 80mm fans; one that cools the electronics compartment and one that sits about me stepper which provides for active cooling of my TMC2130 stepper drivers (amazon $15.95 https://amzn.to/2JpABLS).

Then there is the 60mm cooling fan that sits inside the power switching unit so I ordered a 60mm one (Amazon $14.95 https://amzn.to/2Jl49Ke).  Small problem with this fan is that it only comes in 60x25mm. It will not fit inside the power unit. Instead it will be mounted on top. Frankly, I was a bit disappointed at how, it is not as quiet as the 40mm ones. Little more measuring showed more than 12 Volt was passed through the fan. It works but looses it’s quiet quality. I’ll need to figure out something to remedy this.

The Board

My CoreXY has been chugging along on a knockoff RAMPS 1.4 controller board. Technically nothing wrong with it and there are ways of modifying the RAMPS 1.4 to handle 24 Volt but, for my printer I decided to replace the RAMPS with a KFB2.0. It’s a cheap alternative that is ready to take on 24 Volt and can even do a little more (Amazon $19.59 https://amzn.to/2M2Q7io).

The nice thing about the KFB 2.0 (or the very similar MKS GEN L) is that there only one pin difference with the RAMPS 1.4 (additional Pin 7 Output). Most of my Marlin configuration can remain the same.

Steppers

The voltage of stepper is entirely controlled by the drivers and therefor don’t need any change. One of the reasons I am moving to 24 volt is because there’s supposed to be more torque on the motors and with the TMC2130 driver’s it’s supposed to get quieter in Spread Cycle mode.

For this upgrade I replaced my Z-axis stepper motor as it was still a 0.4A (from my original build). I’m replacing it with a 1.7A (just because I have one lying around). Amazon $45.99 https://amzn.to/2JBBOms (5 Pack) .

Too much power

As soon as I clicked “Buy Now” button for the 24 Volt Power unit, it dawned on me that there’s a bunch of 12 Volt stuff left on the Printer.

You may have already figured it out when reading about the fan replacements. What I had overseen was the Noctua cooling fan, the parts cooling fan and my LED lighting. All 12 Volt.

Noctua does not sell 24 volt fans (smaller ones that is) but once you go Noctua, you don’t go back. As a matter of fact in this upgrade, I’ve doubled down on more Noctua(s).

There are a few options with the 24 Volt power and 12 volt fans. The case-cooling fan and hot-end cooling fan could be wired in series. Googling that immediately show an article not to do that.

Instead of trying things in series I’m going to use Step down LM2956 Buck converter (Amazon $7.99 https://amzn.to/2M0QppP).

I thought I would need for for the following:

  • Case cooling fans/controller fan
  • Hot-end cooling fan
  • Parts cooling fan
  • LED lights

One thing I noticed about connecting the parts cooling fan was that when I would send a command like M106 S127 I would expect to see a lower voltage but when I connected the LM2955 Buck converter, the output remained constant at 24 volt.  Someone please explain this to me.

So for the parts cooling fan which is controlled (variably) by the software, I altered the software to not exceed PWM 127 and divide any PWM to the cooling fan by 2 (not entirely 12 Volt but close enough).

Wiring

What you see here (above) is the original wiring. It’s a mess. As part of this upgrade I’m going to pay close attention to wiring and make it all look a bit cleaner.

For the wire management I purchased mini zip ties that allow me to bundle the wires together (and through the board everything is mounted on). Amazon $6.48 https://amzn.to/2HpMrDI

The before picture is above. Below is the new wiring

The old RAMPS 1.4 board uses Dupont connectors. The KFB2.0 does not. It uses JST-XHP 2.54 connectors. This meant a lot of the wires required new crimping.

The JST connectors were all 2/3/4 pin connectors. The following set will do: Amazon $9.87 https://amzn.to/2kRWUyY 

If you don’t have one yet, you’ll need a Crimping Tool. I personally use one like these:

Amazon $22.99 https://amzn.to/2sN1fXE

Conclusion

Upgrading to 12 Volt is one of those upgrades that really doesn’t add anything visually to printer. Torque should be higher so technically I can print at higher speeds. Speed and 3D printer in my opinion shouldn’t be used in the same sentence though. I’d rather wait a little longer, than have to deal with bad prints.

The printer is up and running again and it’s operation seems pretty much the same as before.

Certainly the exercise of wiring the printer properly makes things look much better. The CoreXY comes with a drawers style electronics case and no longer looks like the kitchen nick-nack messy drawer. None of this is related to the 24 Volt upgrade.

Would I do it again? Not sure. I’ve always felt my Corvette printer was running on a pinto engine. But, like many things in life you want; once you get them it’s meh.

I’ll keep you posted on whether the upgrade was worth it. In the meantime don’t forget to subscribe and if you like what you read consider supporting me through Patreon at https://www.patreon.com/Core3d_tech

Wiring the KFB2.0 3D Printer Controller board

The KFB2.0 3D printer controller board

I’m on my 3rd KFB2.0 now (for 3 different printers) and I like these little boards. For the price you pay for them, you really can’t go wrong with them. I found these on Amazon.com for less than $20.

It has everything on it, the RAMPS 1.4 has with the Arduino chip integrated on the board but it’s only a third of the height of a full RAMPS with Shield and LCD adapter attached.

Some other advantages over the RAMPS 1.4:

  • It can take 24V
  • There are two continuous voltage outputs 5Volt and 12Volt
  • It has the ICSP pins which allow you to go with TMC2130 without jumping through hoops for competing pins
  • It has a 4th controllable 12Volt output, which frankly I haven’t figured out yet.

It uses all JST-XHP 2.54 connectors which I think hold a bit better than the loose RAMPS 1.4 connections but it does mean you may have to do some crimping of your own.

The only major downside: It has NO Documentation, at all. I figured out most of it and tried to put it all together here.

It wasn’t overly difficult. It mimics the RAMPS 1.4 and all pin outputs are the same.

Getting Started

In the wiring setup described below I use the following parts. I am an Amazon Affiliate so you would support me by clicking and buying through these links.

I have used the KFB2.0 board on 2 of my printers. The C3Dt c and the low budget (build on a Netgear Case) Cantilever and am pleased with the way it operates.

The KFB2.0: $18.59 https://amzn.to/2G7xQB8

Here’s a list of all the items I have attached to the KFB2.0

Nema 17 1.7A (5 pack) $48.99 https://amzn.to/2pGlEwO

Mk8 Extruder:

V6 Hotend (12V): $18.99 https://amzn.to/2GfIt0U

For end stop control you can go with two different options:

Stepper Cables: $8.59 https://amzn.to/2I56yHY (JSP HX2.54, which fit the KFB2.0)

12V/30Amp Power supply 19.98: https://amzn.to/2pGXlPD

Heated Bed $31.99 https://amzn.to/2IU6NHp  (optional but I will explain the wiring)

Thermistors $8.99 https://amzn.to/2pG01vW

LCD 12864 $14.99 https://amzn.to/2IU7LU3

Stepper Drivers $10.99 https://amzn.to/2I3eCZS

Fans. I’m a huge fan of the Noctua Fans. They are a bit pricier but worth the SUPER quiet:

(If you want to go with the TMC2130, I recommend getting the real deal from trinamic through Filastruder.com). Cheaper knockoffs are available here. They tend to be not that much cheaper and there some bad reviews out there.

Putting the first pieces together

Like the RAMPS 1.4, the KFB2.0 takes the pluggable stepper drivers that run the stepper motors. The cheap option is to go with the a4988 drivers or the totally awesome TMC2130 (not affiliated, but my upgrade instructions can be found here).

If you go with the a4988 driver you first need to insert the 3 jumpers in each of the diver bays.

In the image above I’ve added the pin descriptions around the middle bay. These pins need to correspond with the pins on your driver circuit board (generally found at the bottom of the board

Insert all stepper drivers and make sure all pins went in on both sides (It’s easy to miss).  Once insert it would look something like this (for the a4988 drivers).

(don’t rely on the orientation of the pot meters in this image. TMC2130 and DRV8825 point the other direction. Look at the pin descriptions on the board and driver and orient accordingly).

Wiring the KFB2.0

Do not attach your board to any backing prior to wiring as all the useful information is found on the back of the board. Beyond that wiring is pretty straight forward. The KFB has the exact same pin outputs as the RAMP 1.4 and as a matter of fact, you select the RAMPS 1.4 board in Marlin when configuring the software.

The above image pretty much show all the different connections you might be making.

Your power source (either 12 Volt or 24 Volt) is attached to the XS 12-24V pins. Polarity is very important here, so make sure Positive and Negative and connected properly (there’s a + and – next to the inputs).

Connecting the Fans

As I mentioned earlier, the KFB2.0 has two continuous outputs for a possible fan. This fan would come on the moment you power up the board. It generally connects to the hot-end fan cooling the heat sink above your hot-end.

Polarity matters and fans should be connected accordingly. They generally come with one black and one red wire. Red = + , Black = –

I personally like the Noctua fans. They’re a bit pricey but it’s worth any every penny due to their quiet operation. The Heat sink fan comes on when you turn on your printer and may still on long after your print is done. With these quiet fans I can’t tell the printer is on by sound.

If you are planning on auto bed leveling, you’ll need the 12Volt output for that. In that case, I would recommend the 5 volt Noctua, leaving the 12Volt for other purposes.

Connecting the Heaters

This board has three outputs for heaters.

  • Hot Bed (Heated Bed)
  • Heater0 (primary extruder)
  • Heater1 (second extruder)

-The Hot bed and Heater0 outputs speak for themselves. Hot bed connects to a heated bed (if you use one); Heater0 connects to the hot-end for your first extruder. They don’t care about polarity but make sure you use wire of proper gauge (14-16) as these carry a lot of Amps.

Heater1 is not as straight forward. If you have double extruders you would expect to connect the second one to this channel. This is not the case (and the only flaw I’ve found on this board to date).  Output for the second extruder is sent to the  Fan  channel (not HEATER1). This is a problem if you choose to have dual extruder with a parts fan (then again you may end up needing more fans). I have not been able to get this to work (most of us won’t need it). I’ve tried tracing its pins back to the board but even after doing so I could not get it powered up.

Connecting the Thermistors

For each of the heated elements you use (beds and extruders) you’ll need to connect the thermistors for temperature feedback. 

Generally your hot-end is shipped with heating cartridge and thermistor but for heated beds this is not always the case. You can buy them loose at Amazon for $8.99 (5-pack).

In most cases you’ll be dealing with a hot-end and heated bed in which case you connect to the TEMP0 (hot-end 1) and TEMP-BED (the bed).

Note: any preliminary testing of your electronics requires at least one thermistor connected to the TEMP0 (without software changes). It’s always handy to have a spare thermistor lying around for such cases.

Connecting the end stops

Most 3D printers only need to have the min end stops attached. Reading the min stop along with specifying the dimensions of your printer will keep your axis within the allowed boundaries. For this setup we’ll connect the min end-stops only.

There’s a variety of end stops available ranging from the simple Micro switches to the wired up Makerbot style switches to optical and inducer type end stops. For this setup we’ll look at the simply micro switches and the Makerbot style end stops.

Given that price range is very similar (you can get micro switched for pennies but they tend to come in packs of 25), the only reason you would choose one of the other is the size. The Makerbot comes pre-wired with a little circuit board but you’ll have to account for more room required.

MakerBot style End Stops

The pre-wired Makerbot style end stops have 3 wires from them. Red, Black and Green.

You may have to crimp your own wires to use a JST-XHP 2.54 3 pin connector on both ends (out of the box they come with the plain pin connectors).

Make sure the Red wire is connected to the vcc pin. Connecting them the other way around will fry your board.

Micro switches

If you choose the micro switch, it’s my experience wiring is a bit easier; you only need two wires.

Solder the wires to the two outside pins of the Micro switch and connect them to the GND and Signal pin on the ramps. These are the two pins towards the outside of the board (GND and Signal)

 

Since in this configuration the connection is open you will have to flip the configuration in the Marlin software to reverse the signal.

Connecting the LCD

NOTE: Several reviewers for the KFB2.0 complained about LCD connectors soldered on backwards. This requires to cut of the notches from their cables. I ‘m not dismissing this, but I’ve used 3 boards and have not found this to be a problem. I’ve seen similar complaints using different board and wonder if this could be a wiring mixup issue.

The LCD connects to the two EXP1 and EXP2 connectors on the board via the 2 flat cables that most likely came with your LCD unit. You’re LCD board will have the corresponding EXP1 and EXP2 on the back.

 

Conclusion

I think that covers it. The main downside of the KFB2.0 board is it’s utter lack of specs and documentation. They probably thought they would get away with it because it is so similar to the RAMPS 1.4 (with all the same pin outputs).

What I like about the board is the fact is build much more compact than the RAMPS 1.4 and in fact does act the same.

Some other advantages are an easier means of using the TMC2130 stepper drivers, 12-24volt range ad the 5 and 12volt fan outputs.

I hope this instructional post will mitigate some of the lack of documentation.

If you like what you see here or more importantly if you’ve used some of the designs/instructions I’ve shared via multiple platforms, please consider supporting me via Patreon.com. A few extra dollars a month from enough patrons would certainly help.

Become my Patron at https://www.patreon.com/Core3d_tech

Thank you!!

 

 

Upgrading to SilentStepStick TMC2130

If you are subscribed to Instructables.com feel free to visit this as an instructable at https://www.instructables.com/id/Upgrading-RAMPS-14-With-TMC2130-Stepper-Drivers/ 

If not, read on.

Important Update: In order for this to work you need to install the Marlin bugfix-1.1.x.zip version of Marlin. The current release has some serious issues (travel distances are all out of wack).

https://github.com/MarlinFirmware/Marlin/archive/bugfix-1.1.x.zip

Spoiler alert, this is what the upgrade did for my printer:

Introduction

Tired of the constant noise your printer is making. Upgrading your RAMPS 1.4 (or most any AT Mega based controllers) with the TMC2130 stepper motors might do the trick.

In this instructable I will not go into the technical babble of PSI, Master/Slave and clock speeds. If you’re interested in that I refer you to

 https://toms3d.org/2017/12/09/tmc2130-guide/

or https://ru-clip.com/video/sPvTB3irCxQ/how-to-make-…

or https://hackaday.com/2016/09/30/3d-printering-trin…

Also if anything in this instructable seems unclear, check with those sites. To their credit, I’ve used them mainly as the source for my upgrade.

Here are some of the advantages I’ve been reading about:

  • Super quiet operation
  • Ability to configure via software
  • Proper alignment of controller which allows for proper cooling of the driver chips
  • Possibility of homing X and Y without End stops (diagnosis allows for the software to recognize the axis bumping into things). (this in a later instructable)
  • Potentially with future updates of Marlin the ability to act on missed steps during printing (like Prusa I3 MK3 can do today).

What it boils down to is that these new stepper drivers can be controlled via software and can run in an ultra silents mode (with 256 micro steps). With these new stepper drivers you no longer need to adjust the little pot meters on the driver but instead can tell it via g-codes at how many amps/volts to run.

When buying these steppers online be cautious about how they are delivered. Most of them (on amazon.com) already have all pins soldered to them which is a problem as 4 of the pins are pointing the wrong way.

I’ve ordered the steppers directly from the US distributor (Filastruder.com) and they come with pins but not soldered on.

In this instructable I will start with the bear stepper driver, solder the pins and create a wiring harness that connects all the right pins on the steppers to the proper pins on the RAMPS 1.4 board.

This instructable will be for the RAMPS 1.4 board but many derivatives use the exact same pin configurations (I will try this out on my KFB 2.0 board).

Things you need

Picture of Things Needed

The following items are pre-requisite to this project:

TMC2130 Stepper Driver: $13.99 per stepper from Filastruder (the official US Distributor)https://www.filastruder.com/products/silentstepsti…

In this project I’m replacing all 4 drivers but you could just replace X and Y as they do most of the work

Ramps 1.4 Board (or RAMPS 1.4 Compatible): (if you buy a kit will will get the A4988 drivers that you will be replacing but the price might still be right): $29.99 http://amzn.to/2FqmN51

Soldering Iron/Station: $39.70 http://amzn.to/2FYTgwU

Some fine solder: $9.98 http://amzn.to/2FgkwKe

Marlin Firmware: Free: http://marlinfw.org/ (I’m using version 1.1.8)

wire to connect SPI pins. I’m using old Stepper Wiring as it suits the problem (4 main pins on each driver): $10.59 for 10 http://amzn.to/2G067ii

Dupont wires Female to Female can be used for individual connections. $6.98 http://amzn.to/2FYRVpQ (all the wires you’ll ever need)

With all these wires you don’t have to do any crimping of your own (just some soldering).

heat shrink tubing for finishing the soldered wires: $7.99 http://amzn.to/2tlT4oN

Step 2: Assembling the Stepper Drivers

The TMC2130 drivers come un-assembled so first we need to prepare each stepper putting the all the pins in the right places.

Picture of Assembling the Stepper Drivers

Very important about steppers. Trinamic seems to be the only company to do it right. Adding the usual heatsinks on top of a chip is a bit of joke as heat travels below the chip through the board. These little boards are build such that the chip will be underneath the board when assembled and the heat sink can be applied on top of the board.

 

For this project I added the 4 PSI pins as well as the end stop pin (for end-stop-less homing).

I cut the strips of pins in the right size for assebly (row of 8 pointing down), 4 PSI up, 1 Diagnostic up, one down (En) and 2 down (Dir, Step)

Picture of Assembling the Stepper Drivers

First I will solder the top pins to the driver (I’m using a piece of double sided PCB board to place and rest the pins).

Picture of Assembling the Stepper Drivers

Picture of Assembling the Stepper Drivers

Picture of Assembling the Stepper Drivers

Next I place the bottom pins in place on the PCB board and lay the driver on top and solder the downward facing pins.

Picture of Assembling the Stepper Drivers

Once all pins are soldered simply rinse and repeat for the remaining chips.

Before putting the drivers in your RAMPS 1.4 please note that you can remove the three jumpers that used to set your stepping to 1/16th. It is now handled by the software. I removed mine but I’ve read you may leave them as they no longer are connected to anything (probably did something to the pins that are now pointing up).

Step 3: Wiring With AUX 3 Available

The common setup TMC2130 setup for marlin assumes that the both Aux 2 and Aux 3 on the RAMPS board are available (like the first image of this step). If your are using a LCD with SD Card adapter, Aux 3 is not available and wiring for that situation will be discussed in the next Step.

Picture of Wiring With AUX 3 Available

The wiring image shows how all wires go to the 2 Aux clusters. Also note that three of the 4 wires are all combined and end up on 1 pin on Aux 3

Picture of Wiring With AUX 3 Available

SDI for X/YZ/E0 all go to pin D51

SCK for X/YZ/E0 all go to pin D52

SDO for X/YZ/E0 all go to pin D50

CS for X goes to D53

CS for Y goes to D49

CS for Z goes to D40

CS for E0 goes to D42

For my project I created a wiring harness that consists of 4 repurposed Stepper wires.

I solder and combined all Black wires into one single black wire ending up with a female connector for a single pin

I solder and combined all Green wires into one single black wire ending up with a female connector for a single pin

I solder and combined all Blue wires into one single black wire ending up with a female connector for a single pin

Picture of Wiring With AUX 3 Available

The Red wires each end up with their own single female pin connector as they each have their own pins assigned on Aux.

Picture of Wiring With AUX 3 Available

 

Step 4: Wiring With LCD Installed (Aux 3 Not Available)

Picture of Wiring With AUX 3 Available

Okay, so browsing around the web I can’t find a real clean solution to this. It’s not that hard to reroute X CS and Y CS to other ports but the RAMPS 1.4 only seems to have one SCK and the two MISO pins which are used by the Card Reader on the LCD Unit.

The solution I’ve come up with for now is to extend the LCD connector with three pins on top. It’s not pretty but it seems pretty sturdy (if soldered well). If you screw it up a new adapter only costs a few dollars on Amazon.com (http://amzn.to/2oNVPdM).

Picture of Wiring With LCD Installed (Aux 3 Not Available)

In order to reroute the CS pins, you’ll need to update the pin_RAMPS.h file

Change the pins to

DEFINE X_CS_PIN 44
DEFINE Y_CS_PIN 64

// Steppers
//
#define X_STEP_PIN         54
#define X_DIR_PIN          55
#define X_ENABLE_PIN       38
#define X_CS_PIN           44
#define Y_STEP_PIN         60
#define Y_DIR_PIN          61
#define Y_ENABLE_PIN       56
#define Y_CS_PIN           64

Redirecting these pins works but I’m a bit concerned about some of the threads I’m reading on using the SD card in combination with the TMC2130 (now sharing the same pins as the SD Reader). I will have to runs some more testing once all installed.

The new schematic images will show the new wiring configurations. Just follow the lines.

Picture of Wiring With LCD Installed (Aux 3 Not Available)

Setting Up the Software

Once all the hardware is connected (in fairness, I did one Stepper at a time) you will need to make the software aware of the new Drivers. If you are rerouting some of the CS pins because you’re using an LCD (adapter) you’ve already made some changes to the pins_RAMPS.h file but for normal operation most changes occur in the Configuration_adv.h

If you have the latest (or a newer version) of Marlin (I’m using 1.1.8 as of this writing) you can open the configuration_adv.h and search for TMC2130. It will take you right to the TMC2130 section.

First thing you do is uncomment (remove // from in front of) #define HAVE_TMC2130

// @section TMC2130, TMC2208/**
 * Enable this for SilentStepStick Trinamic TMC2130 SPI-configurable stepper drivers.
 *
 * You'll also need the TMC2130Stepper Arduino library
 * (https://github.com/teemuatlut/TMC2130Stepper).
 *
 * To use TMC2130 stepper drivers in SPI mode connect your SPI2130 pins to
 * the hardware SPI interface on your board and define the required CS pins
 * in your `pins_MYBOARD.h` file. (e.g., RAMPS 1.4 uses AUX3 pins `X_CS_PIN 53`, `Y_CS_PIN 49`, etc.).
 */
#define HAVE_TMC2130

Next you un-comment those lines that represent the Stepper motors you will be controlling with the new TMC2130 drivers.

In this case I uncomment all three Axis and the Extruder (E0)

#if ENABLED(HAVE_TMC2130) || ENABLED(HAVE_TMC2208)  // CHOOSE YOUR MOTORS HERE, THIS IS MANDATORY
  #define X_IS_TMC2130
  //#define X2_IS_TMC2130
  #define Y_IS_TMC2130
  //#define Y2_IS_TMC2130
  #define Z_IS_TMC2130
  //#define Z2_IS_TMC2130
  #define E0_IS_TMC2130
  //#define E1_IS_TMC2130
  //#define E2_IS_TMC2130
  //#define E3_IS_TMC2130
  //#define E4_IS_TMC2130

The next section when you scroll down is where you define the power setting of all and each of the divers. In may case I’m pretty much leaving these as is. The first setting R_SENSE I believe has to do with any resistance the motor meets and when to do something with it. Some speculation as I haven’t found much on it (let me know if you do)

The second setting HOLD_MULTIPLIER will lower the current by half (or what value you set it to) when the motors are idle. It reduces heat but in some cases also handle the high pitched whining of idle motors.

The third setting INTERPOLATE is what gives the magic to these new drivers so leave it set to true. I will take the 16 steps your RAMPS sends the driver and turns it into 256, giving is the silent and smooth motion.

/**
* Stepper driver settings
*/ 
#define R_SENSE           0.11  // R_sense resistor for SilentStepStick2130 
#define HOLD_MULTIPLIER    0.5  // Scales down the holding current from run current
#define INTERPOLATE       true  // Interpolate X/Y/Z_MICROSTEPS to 256

In the following section you can set the Current and Micro Steps per motor. This is a really nice feature as you no longer have open up your electronics and mess with the little pot-meter on each driver. You can set this value in the configuration here but there’s also a way to change it on the fly with g-code M906 (M906 X900 sets the current for X to 900mA). You can play around with these values to figure out what works best for you.

The _MICROSTEPS setting is a bit confusing but, if you had 3 jumpers underneath your old driver leave it at 16, The interpolation will still bring it to 256.

The TMC2130 can run in two modes: spreadCycle of StealthChop. It’s the StealChop that’s making your printing invisible (to the ears that is). So most of you will install it for that reason. With StealthChop you also get less power and thus you can’t print as fast as you might have once wanted (personally I think speed is overrated).

In SpreadCycle Mode the drivers can run your prints faster as it can create more torque. It also get noisier though. If you’re interested in the TMC2130 for it’s lack of noise you will want to enable the StealthChop mode by uncommenting the following:

/**   
* Use Trinamic's ultra quiet stepping mode.
* When disabled, Marlin will use spreadCycle stepping mode.
*/
#define STEALTHCHOP

The next setting of MONITOR_DRIVER_STATUS I’m unfamiliar with (as of yet) so I’m going to leave it commented.

Should you wish to have the best of both worlds: Quiet when possible and powerful when needed you can choose to enable the hybrid mode:

/**
   * The driver will switch to spreadCycle when stepper speed is over HYBRID_THRESHOLD.
   * This mode allows for faster movements at the expense of higher noise levels.
   * STEALTHCHOP needs to be enabled.
   * M913 X/Y/Z/E to live tune the setting
   */
  #define HYBRID_THRESHOLD  <br>
  #define X_HYBRID_THRESHOLD     98  // [mm/s]
  #define X2_HYBRID_THRESHOLD    100
  #define Y_HYBRID_THRESHOLD     98
  #define Y2_HYBRID_THRESHOLD    100

You can set the speed at which the printer should switch from one mode to the next. The long and peaceful quiet may be gone.

As of this writing I will not go into sensorless homing yet as I’m quite happy with the homing I have today.

Before uploading the software I would recommend enabling the TMC debuggging option by un-commenting TMC_DEBUG. With the m122 command you can get useful information (especially when first trying out the new steppers).

/** Enable M122 debugging command for TMC stepper drivers.
   * M122 S0/1 will enable continous reporting.
   */
  #define TMC_DEBUG 

 

Testing the New TMC2130 Drivers

Picture of Testing the New TMC2130 Drivers
Picture of Testing the New TMC2130 Drivers
Picture of Testing the New TMC2130 Drivers

If you’re lucky like me you have enough spare parts laying around to do some testing. In this case I’m using a spare RAMPS 1.4 kit, and 4 steppers I had laying around.

I’ve inserted all four stepper drivers and hooked up the motors.

In order for you to test with RAMPS 1.4 you need to AT LEAST connect a thermistor to the TEMP0 (without Marlin does not like to operate, unless major code changes).

If you want to test the extruder stepper you will also need to disable the PREVENT_COLD_EXTRUSION or change the EXTRUDE_MINTEMP to room temperature (something like 18 Celcius)

in configuration.h

// This option prevents extrusion if the temperature is below EXTRUDE_MINTEMP.<br>// It also enables the M302 command to set the minimum extrusion temperature
// or to allow moving the extruder regardless of the hotend temperature.
// *** IT IS HIGHLY RECOMMENDED TO LEAVE THIS OPTION ENABLED! ***
//#define PREVENT_COLD_EXTRUSION
//#define EXTRUDE_MINTEMP 170

Hook up your RAMPS to a 12 Volt source (powerful enough to run the steppers) and upload your Marlin to the test board.

You can now connect to the board via USB with a program like Pronterface and test some things.

First off run the M122 command which, if you enabled the TMC_DEBUG (in previous step) will provide a bunch of information on the stepper drivers.

The following is a dump of the information of my drivers.

>>> m122
SENDING:M122
		X	Y	Z	E0
Enabled		false	false	false	false
Set current	800	800	800	800
RMS current	795	795	795	795
MAX current	1121	1121	1121	1121
Run current	25/31	25/31	25/31	25/31
Hold current	12/31	12/31	12/31	12/31
CS actual		12/31	12/31	12/31	12/31
PWM scale	128	128	40	39
vsense		1=.18	1=.18	1=.18	1=.18
stealthChop	true	true	true	true
msteps		16	16	16	16
tstep		1048575	1048575	1048575	1048575
pwm
threshold		0	0	0	0
[mm/s]		-	-	-	-
OT prewarn	false	false	false	false
OT prewarn has
been triggered	false	false	false	false
off time		5	5	5	5
blank time	24	24	24	24
hysterisis
-end		2	2	2	2
-start		3	3	3	3
Stallguard thrs	0	0	0	0
DRVSTATUS	X	Y	Z	E0
stallguard
sg_result		0	0	0	0
fsactive
stst		X	X	X	X
olb		X	X
ola		X	X
s2gb
s2ga
otpw
ot
Driver registers:
	X = 0xE0:0C:00:00
	Y = 0xE0:0C:00:00
	Z = 0x80:0C:00:00
	E0 = 0x80:0C:00:00

I’m not going to bore you with too much details (Still have to figure out a bunch myself) but if in the Driver registers at the bottom you see 0xFF… it means something is not connector properly for that stepper driver.

You can now start sending commands to the motors and see if they are running properly. in the video below you hear the Case fan of my CoreXY Printer (next project). The motors themselves, I cannot hear.

Conclusion

Picture of Conclusion

The installation of the new TMC2130 seems more daunting than it is. Yes, you will need to do some soldering, there are more wires than ever before but I can’t wait to install these permanently into my CoreXY printer. Once I have I will post the before and after video (and most importantly the audio).

Let me know what I got wrong, I’m here to learn myself. If you’re eager to learn more about the sensorless homing, please support me on Patreon.com. I will need to purchase a new set of Drivers for that one.

Upgrading the Core3D extruder assembly

When I built my first 3D printer which was based on the Prusa I3, I went with MK7 extruder clone from Aliexpress and it worked great. Great to my standards (at the time) that is. It is no longer available so when I designed the Core3D printer, I went with the MK8 extruder found on the same site. The dimensions are pretty much the same as those for the MK7.

MK8 design and issues with it.

I designed the extruder to be “suspended” underneath the extruder assembly. I went for mounting it under because the MK8 has the stepper motor mounted behind the actual extruder.  The design in Fusion 360 below shows the MK7 extruder as I never updated it to MK8. The specs remain the same though.

original MK7 extruder design for Core3D

Here is the actual implementation of the full extruder assembly.

A few things have bothered me with this design and implementation.

-Top to bottom the entire setup is 120 mm (4.72″) which is too much, the space below the X-axis used would make for close to 70 mm more build space (along the Z-axis).

-The use of aluminum and the shear size of the assembly, make it weigh close to 825 grams. Too much weight (in my opinion) to be accelerating/jerking around.

-The MK8 is a knock-off. A $1,200 printer (parts only) deserves better. I keep hearing how much better the E3d extruders are, compared to the knock-offs.

-Lots of issues loading new filament. The space between the top and the heater nozzle have too much room allowing for the filament to miss the hole.

Redesign with E3D titan extruder and hotend

Following are a few of things I wanted to achieve with the redesign:

  • Lower the height of the extruder assembly.
  • Lower the weight of the the assembly.
  • Possibly lower the width allowing for more motion along the X-axis
  • Achieve higher quality of prints.

Lowering the height

The E3D titan extruder (direct) has much more room between the stepper motor and actual hot end (Compared tot the MK8). The image below shows both extruder designs. Notice how the new Titan Extruder is much higher in height but what matters is the distance between Stepper and hot-end.

For the MK8, the distance between the bottom of the extruder and bottom of nozzle is about 25 mm.

For the Titan Extuder, this is closer to 46 mm. The difference means that I can mount the stepper motor/extruder above the X-axis rail and let the hot-end bridge the distance to below the rail.

The following image shows the true gains in Z-axis space when I place the two extuders in relationship to the X-axis rail they are riding on.

By “wrapping” the extruder around the rail, I gain about 45 mm more Z-axis to print at.

Interestingly, my bed wasn’t designed to go that high originally. It turns out the cable drag chain wasn’t put in place with that much height in mind. I had to remove some shackles to accommodate the extra gained space.

lack of room for wire drag chain

Lowering weight of Extruder Assembly

Here is the break down of what my old extruder assembly weighs:

Top Plate: 41 gr
Bottom plate: 41 gr
extruder bracket: 80 gr
plastic: 80 gr
belt clips:  11 gr
bolts/nut:  18 gr
Stepper: 280 gr
extruder:  96 gr
Hot end: 74 gr
Slider:  32 gr
cooling fan: 13 gr
fan duct:  11 gr
Inductive Sensor: 46 gr

Total:  823 gram

The numbers for the new extruder are as follows:

Top Plate: Gone
Bottom plate: Gone
extruder bracket: Gone
plastic: 27 gr
belt clips:  8 gr
bolts/nut:  8 gr
Stepper: 127 gr
extruder:  60 gr
Hot end: 44 gr
Slider:  32 gr
cooling fan: 16 gr
fan duct:  11 gr
Inductive Sensor: 46 gr

Total:  386 gram

By far the heaviest component is the stepper motor and since the Titan extruder has a 3:1 gear reduction, I can get away with a pancake stepper motor. This reduces the weight be an additional 140 grams.

New weight would come down to 386 grams

Bigger impact on rest of CoreXY

The nature of the Titan’s extruder allows me to “wrap” the entire extruder assembly around the X-axis rail. This “Wrapping will gain me close to 50 mm of additional Z-axis range.

All belts in the former Core3D design run over the X-axis as follows:

belt running atop the X-axis

in the new design the stepper motor mounted behind the extruder glides fairly closely to the rail so no more room for the belts.

The new extruder assembly required a new belt configuration. In the new implementation all belts will run underneath X-axis and inside the extrusion frame.

new belt placement below the x-axis rail

The most notable difference are:

Both X/Y stepper motors now have been turned upside down (had to figure out the firmware on that one).

The X-axis end-stop has been moved on top of the rail (in a adjustable slider)

New X Endstop on top of rail

The idlers opposite of the steppers have been placed on a single axis below/inside of extrusion frame.

Idlers before
Idlers after

A minor concern with this design is the idlers being held in place by an ABS printed corner bracket. The actual layers holding the idlers aren’t very thick. Since the belts are kept pretty tight, I wonder if this will break (it hasn’t yet).

When all is said and done

The new design has been up and running for a week now and I’m happy with the results. The new extruder operates as expected. The first 3D Benchy came out great.

This is what the new setup looks like:

New Core XY with E3d Titan Extuder

Here it is at work:

 

 

Upgrading the MK2A bed from 12 Volt to 110 Volt

For starters, everything I write about down below involves electricity. Working with electricity is dangerous. Do this at your own risk!!!

MK2a 300×200

Haha, first blog post about my brand new printer and I’m already upgrading, that’s what happens as you learn as you go. The first implementation for the heated bed on my Core3D printer was a “standard” 200x300mm MK2A bed with Borosilicate Glass,   purchased on Ebay. It worked fine for PLA but the intent of the Core3D printer was to print with ABS and if possible with a bed temperature of 110 C (still experimenting on whether that is the best temperature).

Original MK2a bed

The original bed took 12 minutes to get to 60C and I never even tried to get to 110C. It pretty much maxed out at 78 (even inside closed chamber). 12 volts for a 200x300mm bed simply does not seem to do it.

Faster hot and hotter

I needed faster and better heating so I decided to install a 110 volt heated bed. I figured it would get hotter and it would get hotter faster. It worked out. It gets HOT and it gets hot FAST  (See video below).

The other thing I recently changed was from a fixes Z-endstop to Auto Bed Leveling. The “old” Boro glass would not do for Auto bed leveling as it requires metal to detect so a new aluminum bed it was.

Original adjustable Z endstop designed in Fusion 360
Bed leveling Inducer, replacing Z-Endstop

 

 

 

 

 

 

For the aluminum bed, I chose the RepRap Champion 300x200mm Aluminum Heated Bed Build Plate 3D Printer RepRap Prusa i3 Upgrade Kit from Amazon.com.
For the heater I got the 200 X 300mm (8 ” x 12″ approx.) 110V 600W, with 3M PSA & NTC 100K thermistor, KEENOVO Silicone Heater Mat/Pad,3D Printer HeatBed

Pretty sure it came from China as it took over 2 weeks to arrive.

Since the Core3D currently uses RAMP 1.4 and the board puts out 12 volts for the bed, I also needed something to allow for the 110Volt bed so for that I installed a Solid State Relay. For this I got the uxcell SSR-25 DA 25A 3-32V DC / 24-380V AC Solid State Relay + Heat Sink 

 

Wiring the new bed

The wiring is fairly simple, yet a little intimidating. Practically everything on the Core3D (except for a chamber heater) is running at 12 Volt. It does not hurt when you touch the wrong wire running 12 Volts. 110 Volt DOES hurt. be careful. If you’re in Europe: 220 Volt HURTS EVEN MORE!!

I’ll be honest even now that it is all wired up, I have every intention to have someone with an electric engineering degree to look things over. When soldering some wire (printer was turned off but plugged in) I got a nasty zap when the solder iron touched the load wire. It shouldn’t have. To date I’m not sure it’s the printer or the solder iron that is defective (more on this later).

Applying the silicon heater to the bed

Be warned, I screwed up on this one (somewhat). The silicon heater I got came with the factory applied adhesive backing. First, clean off the surface to which you will apply the silicone heater. Make sure there is no dirt or grease on the plate. Next peel off the adhesive backing paper partially. It’s suggested you start at the opposite site from the wiring. You’re supposed to do this at an angle, possible with a roller of some sort.

WARNING: YOU ONLY GET ONE CHANCE!!!

I followed the instruction but was so focused on making sure there were no bubbles, I lost track of the alignment. My bed ended up somewhat crooked on on the aluminum bed. I was lucky it stayed within the bounds of the screw holes, but I didn’t miss them by much. You really only get one chance. I tried slowly backing out but the adhesive started separating from the silicone. I quickly back off from that. Everything, I’ve read seems to indicate that once you loosen the silicone, you’ll need to remove all glue and apply new one of your own. A messy procedure to say the least.

Am I happy?

Yes, I am. I love the aluminum bed and the fact that it allows me to use Auto Bed Leveling. The silicone pad looks fine, even though it got on a little crooked and it heats fast and gets hot. As a matter of fact the bed now heats faster than the hot-end.

new silicone heater
New Aluminum bed with already used Kapton tape

The bed heats up from 20C to 110C in 1:27 minutes (see video below at 4x speed). My old bed never made it past 78C and that took at least 15 minutes.

video is running at 4x speed

We’re not done yet

It’s been stated elsewhere that using the thin aluminum bed is not the best medium for this type of heater. It tends to warp as you heat it. I have not noticed this yet but it might be that the auto leveling is compensating for it.

What I definitely miss is the glass plate I can remove, treat and handle externally from the printer. For this reason I’ve ordered a second aluminum bed that I can lay on top (using the old paper clips). Once I get it, I’ll need to figure out if simply laying it on top will suffice or if warping of the bottom plate prevents proper contact. I’ll keep you posted on that.

Please note: I’m an affiliate to several vendors. Some of the products above link to the actual items from the vendors I purchased from. Do me a favor and use these links to purchase your items, I get a little kick back. Building 3D printers costs money.