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
- Tools for troubleshooting
- Motors vibrate erratically during movement
- Motors don’t move at all
- One of the motors is not moving or causing trouble
- Motor pins are not correctly mapped in firmware
- One of the motors move slower than the rest
- Motor movement distances are not correct
- The X & Y axis appear to be inverted
- Motors continues to move after hitting limit switch
- Printer head digs into build plate
- 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.
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.
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.
- Open Repetier Host and switch to the manual control tab.
- Take a driver out from a working motor and install it into the one that is not working.
- Run the G28 command (home button) and get ready to press the emergency stop as you do this.
- If the faulty motor works again, then the problem is in the driver that was replaced. Get a new driver and test again.
- 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.
- Run the G28 command again and get ready to press the emergency stop as you do this.
- If the motor still doesn’t move, then the motor is dead and needs to be replaced.
- 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.
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.
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.
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.
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.
- Y_MAX: Open
- X_MAX: Open
- Z_Min: Triggered (This is your probe switch)
- Z_Max: Open
When all of them are on, they should show the following.
- Y_MAX: Triggered
- X_MAX: Triggered
- Z_Min: Open
- 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.
- The home command G28 REMOVES auto probing data. You need to auto calibrate after homing.
- 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.
- 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!
Pingback: Troubleshooting the Mini Kossel 3D Printer | The Robot Fish
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