Troubleshooting the Mini Kossel 3D Printer

Patience serves as a protection against wrongs as clothes do against cold — Leonardo da Vinci

For the past few weeks I’ve been taking a break from my laser tag project to put together my Mini Kossel 3D printer. It took a while for me to get it working, but the final print result turned out well. I purchased this printer a few months ago from an on-line company called Mixshop. There was a long delay in their lead time, but they did deliver the product in the end. I basically followed their Kossel Manual for the assembly which is pretty good, but I find their instructions to be somewhat incomplete. This will be a troubleshooting guide for the Kossel based on my own experiences and by no means a comprehensive guide. Let’s start with the list of firmware/software for my build.

Contents

  1. Tools for troubleshooting
  2. Motors vibrate erratically during movement
  3. Motors don’t move at all
  4. One of the motors is not moving or causing trouble
  5. Motor pins are not correctly mapped in firmware
  6. One of the motors move slower than the rest
  7. Motor movement distances are not correct
  8. The X & Y axis appear to be inverted
  9. Motors continues to move after hitting limit switch
  10. Printer head digs into build plate
  11. Plastic sticks too well on bed plate

1. Tools for troubleshooting

Here are some tools I found to be very helpful for troubleshooting printing issues.

  • Needle nose pilers, useful for reaching into small spaces.
  • Ruler & measuring tape, for calibration.
  • Mini screwdriver set, for adjusting the potentiometers.
  • Manual mode in Repetier Host. This can be accessed by clicking the manual tab.
  • Advanced mode in Repetier Host. Allows you to type G-code in manual mode.
  • Electrical Tape, for quick mechanical fixes.
  • Krazy glue.

2. Motors vibrate erratically during movement

If you are using the default Marlin firmware, three jumpers need to be installed underneath all the motor drivers. If they are not installed, the timing of the steps will be wrong and it will cause the motors to vibrate.

Jumpers

3. Motors don’t move at all

Check to make sure all the motor drivers are working correctly. If you are using the Pololu A4988, the potentiometers should face away from the USB port of the Arduino Mega. Do a final check of the wiring, and make sure the colours for the stepper motor wires are in the right order. Then give each potentiometer a quarter clockwise turn and run the motors to make sure there is enough current going into the motors while it’s operating.

RAMPS board

4. One of the motors is not moving or causing trouble

Trying to figure out why one of the motors is not working can be a very frustrating. Follow the steps below to troubleshoot a faulty motor.

  1. Open Repetier Host and switch to the manual control tab.
  2. Take a driver out from a working motor and install it into the one that is not working.
  3. Run the G28 command (home button) and get ready to press the emergency stop as you do this.
  4. If the faulty motor works again, then the problem is in the driver that was replaced. Get a new driver and test again.
  5. If the motor still doesn’t work then it could be a motor issue. To test this, plug the motor into a known working port.
  6. Run the G28 command again and get ready to press the emergency stop as you do this.
  7. If the motor still doesn’t move, then the motor is dead and needs to be replaced.
  8. If the motor moves again, the issue is in the software pin mapping.

5. Motor pins are not correctly mapped in firmware

Strange motor behaviours can exist when the pins on the actual hardware is incorrectly mapped to the pins in the firmware. The first thing you need to do is to find the pin connections from the Arduino Mega to the RAMPS board. The version I’m using is RAMPS 1.4, and connection diagram is shown below.

15-02-12-01

To correct the pin mapping, you will have to modify the firmware. If you are using the firmware Marlin, look for the header file named pins.h in the main directory. Inside you will find the pin mapping for many types of boards. The lines we are concerned with here is for MOTHERBOARD == 33, which is around line 360. Replace the existing pin mapping with the correct ones below. Save and upload the new firmware.

    #define X_STEP_PIN         54
    #define X_DIR_PIN          55
    #define X_ENABLE_PIN       38
    #define X_MIN_PIN          -1 // unused for deltabot, was 3
    #define X_MAX_PIN           2

    #define Y_STEP_PIN         60
    #define Y_DIR_PIN          61
    #define Y_ENABLE_PIN       56
    #define Y_MIN_PIN          -1 // unused for deltabot, was 14
    #define Y_MAX_PIN          15

    #define Z_STEP_PIN         46
    #define Z_DIR_PIN          48
    #define Z_ENABLE_PIN       62
    #define Z_MIN_PIN          18 // autolevel for deltabot
    #define Z_MAX_PIN          19

    #define Z2_STEP_PIN        -1//36
    #define Z2_DIR_PIN         -1//34
    #define Z2_ENABLE_PIN      -1//30

    #define E0_STEP_PIN        26
    #define E0_DIR_PIN         28
    #define E0_ENABLE_PIN      24

6. One of the motors move slower than the rest

By default, most Cartesian style printers sets the Z axis to have a lower steps/min than the X or Y axis. On a delta robot however, all three motors need to move at the same speed. Open the EEPROM menu in Repetier Host, which can be found in Config -> firmware EEPROM configuration. Make sure that the steps/min is the same for every axis. When done, click Save to EEPROM.

15-02-18-01

The step above will save the steps/min values into the programmable memory of the Arduino Mega. If you want to make these values appear by default, you will have to modify the firmware. Open the header file, Configuration.h, in the main directory of the Marlin firmware. Look for the line as shown below. Replace the first 3 values with your desired steps/min. The fourth value is for the extruder. Save and upload your new firmware.

#define DEFAULT_AXIS_STEPS_PER_UNIT   {106.67, 106.67, 106.67, 200}

7. Motor movement distances are not correct

Make sure you have the correct steps/min value for the three stepper motors. This is a calculation based on the number of teeth on the pulley and belt. There are calculators online that can do this, but a pro tip is to use the tool available on Repetier Host. Access this tool through, Tools -> Belt Calculator. When done, open the EEPROM menu in Repetier Host and adjust the values accordingly.

15-02-18-02

8. The X & Y axis appear to be inverted

If the motors are correctly installed, the coordinates of the printer should match the diagram below. If any axes are inverted, then the motors are not installed into their correct port.

15-02-12-02

One way to fix this problem is to physically switch the motors AND the limits switches so they can match the correct configuration. The easier method however, is to switch the motors in firmware. Begin by opening the pins.h header file found in the main directory of the marlin firmware. Go to the lines involving the Arduino Mega (MOTHERBOARD == 33). Then simply swap motor pins by changing the #define constants. In the example below, I have switched the X and Z motors by renaming the constants

	//renamed! used to be X axis
    #define Z_STEP_PIN         54
    #define Z_DIR_PIN          55
    #define Z_ENABLE_PIN       38
    #define Z_MIN_PIN          -1 // unused for deltabot, was 3
    #define Z_MAX_PIN           2

    #define Y_STEP_PIN         60//36
    #define Y_DIR_PIN          61//34
    #define Y_ENABLE_PIN       56//30
    #define Y_MIN_PIN          -1 // unused for deltabot, was 14
    #define Y_MAX_PIN          15

	//renamed! used to be Z axis
    #define X_STEP_PIN         46
    #define X_DIR_PIN          48
    #define X_ENABLE_PIN       62
    #define X_MIN_PIN          18 // autolevel for deltabot
    #define X_MAX_PIN          19

9. Motors continues to move after hitting limit switch

Check that the limit switches match up with the correct stepper motor. It is common to have them in the wrong locations after modifications. Then make sure the limit switches are not installed incorrectly. You can use the G-code command M119 to get a status of the limit switches. When all the limit switches are off, you should get this status.

  1. Y_MAX: Open
  2. X_MAX: Open
  3. Z_Min: Triggered (This is your probe switch)
  4. Z_Max: Open

When all of them are on, they should show the following.

  1. Y_MAX: Triggered
  2. X_MAX: Triggered
  3. Z_Min: Open
  4. Z_Max: Triggered

10. Printer head digs into build plate

This is caused by an incorrect association of height in the firmware. The first thing to do is a manual calibration of the height. There’s a good comprehensive guide from Build a 3D Printer that shows you how to do this. When you get to auto probing part, there’s a few things to be aware of.

  1. The home command G28 REMOVES auto probing data. You need to auto calibrate after homing.
  2. By default, Slic3r homes at the start of each print. Modify the custom G-code to do a auto probing command G29 after the homing proceedure. There’s a good guide for this in Solidoodle Wiki.
  3. It is crucial that the offset of the Z probe is correct. Go the Configuration.h and modify the line with #define Z_PROBE_OFFSET. The Z offset should be negative. If it still hits the plate, increase the Z offset.

11. Plastic sticks too well on bed plate

If you are printing with PLA plastic, it sticks very well to the acrylic. My solution is to sand the plate till it’s rough, and apply some olive oil.

Final Result

Here are just some of the things I printed!

IMG_20150206_150408

2 thoughts on “Troubleshooting the Mini Kossel 3D Printer

  1. Pingback: Troubleshooting the Mini Kossel 3D Printer | The Robot Fish

  2. Hey Anderson

    I just wanted to thank you for sharing this post. I was going crazy with my new FLSUN Kossel mini that was simply not working. With the help of this post I was able to figure out that one of the stepper modules were faulty. Thanks again.

    Regards
    Dirk

Feedback

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s