Welcome! Log In Create A New Profile

Advanced

Problems with Z-axis moving in one direction, pls help!!

Posted by Durac3ll 
Problems with Z-axis moving in one direction, pls help!!
December 17, 2014 02:55PM
Hi everyone!

To make a long story short..

6 months ago i bought a e-maker Huxley (indigogo) from a co-worker for 100$. He was building it and couldn´t get the Sanguinololu board to work, seems like there was some issue with it.
When i bought it i also bought a Melzi 2.0 board, since i am not that good in electronics i wanted something that was "plug and play".

When i started it up the first time with the sanguninololu board, i could move all the axis in positive and negative direction, no problems there.

On my Melzi on the other hand, i can´t get the Z-axis to go in both directions. Y and X is fine.

I have tried:
*Tried different firmware settings on the endstops (Noob on firmware)
*Swapped the endstops to Y and X
*Re-wiring the motors
*Checking motor currents
*Holding endstops "triggered" and moving in proterface at the same time
*Checked all the wiring
*Changed the wiring on Z-axis endstop.


I have been trying to solve this problem for many days now, i am such a noob on this and i want your help to solve the problem so i can learn more about my Huxley.

Here is a short gallery of pictures on my Melzi board, in case you can see bad solderings: My Melzi board pictures

Here is my firmware settings (marlin):

___________________________________________________________________________________________________

#ifndef CONFIGURATION_H
#define CONFIGURATION_H

// ==============================================================================

// For instructions on setting these constants, see:
// Mendel: [reprap.org]
// Huxley: [reprap.org]

// Uncomment ONE of the next three lines - the one for your RepRap machine
#define REPRAPPRO_HUXLEY
//#define REPRAPPRO_MENDEL //Legacy Mendel
//#define REPRAPPRO_MENDEL2 // Mono Mendel

// Uncomment ONE of the next two lines - the one for your master controller electronics
#define REPRAPPRO_MELZI
//#define REPRAPPRO_SANGUINOLOLU

// Uncomment ONE of the next two lines - the one for the series resistors on your controller
//#define SERIAL_R 4700
#define SERIAL_R 10000


// -------------------------------------------------------------------------------

#ifndef REPRAPPRO_HUXLEY
#ifndef REPRAPPRO_MENDEL
#ifndef REPRAPPRO_MENDEL2
#error Uncomment one of #define REPRAPPRO_HUXLEY, REPRAPPRO_MENDEL, or REPRAPPRO_MENDEL2 at the start of the file Configuration.h
#endif
#endif
#endif

#ifndef REPRAPPRO_MELZI
#ifndef REPRAPPRO_SANGUINOLOLU
#error Uncomment one of #define REPRAPPRO_MELZI or REPRAPPRO_SANGUINOLOLU at the start of the file Configuration.h
#endif
#endif

#ifndef SERIAL_R
#error Uncomment one of #define SERIAL_R 10000 or 4700 at the start of the file Configuration.h
#endif

// ==============================================================================

// Uncomment this if you are experimenting, know what you are doing, and want to switch off some safety
// features, e.g. allow extrude at low temperature etc.
//#define DEVELOPING

// This configurtion file contains the basic settings.
// Advanced settings can be found in Configuration_adv.h
// BASIC SETTINGS: select your board type, temperature sensor type, axis scaling, and endstop configuration

//User specified version info of THIS file to display in [Pronterface, etc] terminal window during startup.
//Implementation of an idea by Prof Braino to inform user that any changes made
//to THIS file by the user have been successfully uploaded into firmware.
#define STRING_VERSION_CONFIG_H "1.2 changed z stops" //Personal revision number for changes to THIS file.
#define STRING_CONFIG_H_AUTHOR "RRP" //Who made the changes.

// This determines the communication speed of the printer
//#define BAUDRATE 250000
#define BAUDRATE 115200

//// The following define selects which electronics board you have. Please choose the one that matches your setup
// Sanguinololu 1.2 and above = 62
// Melzi 63

#ifdef REPRAPPRO_SANGUINOLOLU
#define MOTHERBOARD 62
#endif

#ifdef REPRAPPRO_MELZI
#define MOTHERBOARD 63
#endif



//===========================================================================
//=============================Thermal Settings ============================
//===========================================================================

// Set this if you want to define the constants in the thermistor circuit
// and work out temperatures algebraically - added by AB.

// See [en.wikipedia.org]

// BETA is the B value
// RS is the value of the series resistor in ohms
// R_INF is R0.exp(-BETA/T0), where R0 is the thermistor resistance at T0 (T0 is in kelvin)
// Normally T0 is 298.15K (25 C). If you write that expression in brackets in the #define the compiler
// should compute it for you (i.e. it won't need to be calculated at run time).

// If the A->D converter has a range of 0..1023 and the measured voltage is V (between 0 and 1023)
// then the thermistor resistance, R = V.RS/(1023 - V)
// and the temperature, T = BETA/ln(R/R_INF)
// To get degrees celsius (instead of kelvin) add -273.15 to T

// This DOES assume that all extruders use the same thermistor type.


#define ABS_ZERO -273.15
#define AD_RANGE 16383


#ifdef REPRAPPRO_HUXLEY

// Bed thermistor: VISHAY BC COMPONENTS NTCS0603E3104FXT - All Huxleys with heated bed PCB
#define BED_BETA 4100.0
#define BED_NTC 100000.0

// Extruder thermistor: RS 198-961 100k ohm 10% DO-35 NTC thermistor - All Huxleys before 25/2/14
#define E_BETA 3960.0
#define E_NTC 100000.0

// Extruder thermistor: Digikey 480-3137-ND - All Huxleys shipped after 25/2/14
//#define E_BETA 4138.0
//#define E_NTC 100000.0

#endif


#ifdef REPRAPPRO_MENDEL

// Extruder thermistor: RS 198-961 100k ohm 10% DO-35 NTC thermistor - All Mendels before 1/4/13
//#define E_BETA 3960.0
//#define E_NTC 100000.0

// Bed thermistor: RS 484-0149; EPCOS B57550G103J - All Mendels before 1/4/13
//#define BED_BETA 3480.0
//#define BED_NTC 10000.0

#endif


#ifdef REPRAPPRO_MENDEL2

// Bed thermistor: Rapid 61-0446 ; Semitec 103GT-2 - All Mendel2 shipped after 1/4/13 (launch)
// #define BED_BETA 4126.0
// #define BED_NTC 10000.0

// Bed thermistor: Farnell 1299930 ; EPCOS B57863S103F040 - All Mendel2 shipped after 29/5/14
//#define BED_BETA 3988.0
//#define BED_NTC 10000.0

// Extruder thermistor: RS 198-961 100k ohm 10% DO-35 NTC thermistor - All Mendel2 shipped after 1/4/13 (launch)
// #define E_BETA 3960.0
// #define E_NTC 100000.0

// Extruder thermistor: Digikey 480-3137-ND - All Mendels shipped after 25/2/14
//#define E_BETA 4138.0
//#define E_NTC 100000.0

#endif


#define E_RS SERIAL_R
#define E_R_INF ( E_NTC*exp(-E_BETA/298.15) )

#define BED_RS SERIAL_R
#define BED_R_INF ( BED_NTC*exp(-BED_BETA/298.15) )



#define BED_USES_THERMISTOR
#define HEATER_0_USES_THERMISTOR
#define HEATER_1_USES_THERMISTOR
#define HEATER_2_USES_THERMISTOR



// Actual temperature must be close to target for this long before M109 returns success
#define TEMP_RESIDENCY_TIME 5 // (seconds)
#define TEMP_HYSTERESIS 5 // (C°) range of +/- temperatures considered "close" to the target one
#define TEMP_WINDOW 2 // (degC) Window around target to start the recidency timer x degC early.

// The minimal temperature defines the temperature below which the heater will not be enabled It is used
// to check that the wiring to the thermistor is not broken.
// Otherwise this would lead to the heater being powered on all the time.
#define HEATER_0_MINTEMP 1
#ifdef REPRAPPRO_MULTIMATERIALS
#define HEATER_1_MINTEMP 1
#define HEATER_2_MINTEMP 1
#endif
#define BED_MINTEMP 1

// When temperature exceeds max temp, your heater will be switched off.
// This feature exists to protect your hotend from overheating accidentally, but *NOT* from thermistor short/failure!
// You should use MINTEMP for thermistor short/failure protection.
#define HEATER_0_MAXTEMP 399
#ifdef REPRAPPRO_MULTIMATERIALS
#define HEATER_1_MAXTEMP 275
#define HEATER_2_MAXTEMP 275
#endif
#define BED_MAXTEMP 150


// PID settings:
// Comment the following line to disable PID and enable bang-bang.
#define PIDTEMP
#define PID_MAX 255 // limits current to nozzle; 255=full current
#define FULL_PID_BAND 150 // Full power is applied when pid_error[e] > FULL_PID_BAND
#ifdef PIDTEMP
//#define PID_DEBUG // Sends debug data to the serial port.
#define PID_INTEGRAL_DRIVE_MAX 125 //limit for the integral term
#define K1 0.95 //smoothing factor withing the PID
#define PID_dT 0.122 //sampling period of the PID


// RepRapPro Huxley + Mendel
#define DEFAULT_Kp 12.0
#define DEFAULT_Ki (2.2*PID_dT)
#define DEFAULT_Kd (80/PID_dT)

#endif // PIDTEMP

#ifndef DEVELOPING
//this prevents dangerous Extruder moves, i.e. if the temperature is under the limit
//can be software-disabled for whatever purposes by
#define PREVENT_DANGEROUS_EXTRUDE
#define EXTRUDE_MINTEMP 170
#define EXTRUDE_MAXLENGTH (200) //prevent extrusion of very large distances.
#else
#define BOGUS_TEMPERATURE_FAILSAFE_OVERRIDE
#endif

//===========================================================================
//=============================Mechanical Settings===========================
//===========================================================================

// Endstop Settings
#define ENDSTOPPULLUPS // Comment this out (using // at the start of the line) to disable the endstop pullup resistors

// The pullups are needed if you directly connect a mechanical endswitch between the signal and ground pins.
const bool X_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.
const bool Y_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.
const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops.

// For Inverting Stepper Enable Pins (Active Low) use 0, Non Inverting (Active High) use 1
#define X_ENABLE_ON 0
#define Y_ENABLE_ON 0
#define Z_ENABLE_ON 0
#define E_ENABLE_ON 0 // For all extruders

// Disables axis when it's not being used.
#define DISABLE_X false
#define DISABLE_Y false
#define DISABLE_Z false
#define DISABLE_E false // For all extruders

#ifdef REPRAPPRO_MENDEL
//#define AXES_MAX_LENGTHS {210, 210, 140}
//#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
//#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false
//#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
//#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
//#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
//#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
#endif

#ifdef REPRAPPRO_MENDEL2
//#define AXES_MAX_LENGTHS {210, 210, 140}
//#define INVERT_X_DIR true // for Mendel set to false, for Orca set to true
//#define INVERT_Y_DIR true // for Mendel set to true, for Orca set to false
//#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true
//#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
//#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
//#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
#endif

#ifdef REPRAPPRO_HUXLEY
#define AXES_MAX_LENGTHS {155, 150, 90}
#define INVERT_X_DIR false // for Mendel set to false, for Orca set to true
#define INVERT_Y_DIR false // for Mendel set to true, for Orca set to false
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
#define INVERT_E0_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E1_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
#define INVERT_E2_DIR true // for direct drive extruder v9 set to true, for geared extruder set to false
#endif


// ENDSTOP SETTINGS:
// Sets direction of endstops when homing; 1=MAX, -1=MIN
#define X_HOME_DIR -1
#define Y_HOME_DIR -1
#define Z_HOME_DIR 1

#define min_software_endstops true //If true, axis won't move to coordinates less than zero.
#define max_software_endstops true //If true, axis won't move to coordinates greater than the defined lengths below.

// The position of the homing switches. Use MAX_LENGTH * -0.5 if the center should be 0, 0, 0
#define X_HOME_POS 0
#define Y_HOME_POS 0
#define Z_HOME_POS 0

//// MOVEMENT SETTINGS
#define NUM_AXIS 4 // The axis order in all axis related arrays is X, Y, Z, E

/*
We've shipped a number of different configurations of belt and pulley now, so probably need some ifdef statements! At the moment, they all get the same.

White polyurethane belt (T2.5), 14-tooth printed pulley: 91.4286 step per mm (Original Huxley, Legacy Mendel)
Black rubber belt (MXL), 17-tooth printed pulley: 92.635 step per mm (Huxley, Mendel Mono and Tri since 1/4/2013)
Black rubber belt (MXL), 18-tooth aluminium pulley: 87.489 step per mm (Huxley, Mendel Mono and Tri since 1/1/2014)

Also, two different extruders:

Original eMaker/RepRapPro-style: 920 steps per mm (Original Huxley, Legacy Mendel)
New version (NEMA14 and NEMA17): 660 steps per mm (Huxley, Mendel Mono and Tricolour since 1/4/2013)
*/

#ifdef REPRAPPRO_MENDEL

//#define X_MAX_LENGTH 210
//#define Y_MAX_LENGTH 210
//#define Z_MAX_LENGTH 110
//#define HOMING_FEEDRATE {10*60, 10*60, 1*60, 0} // set the homing speeds (mm/min)
//#define FAST_HOME_FEEDRATE {50*60, 50*60, 1*60, 0} // set the homing speeds (mm/min)
//#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 45}
//#define DEFAULT_MAX_FEEDRATE {300, 300, 3, 45} // (mm/sec)
//#define DEFAULT_MAX_ACCELERATION {800,800,30,250} // X, Y, Z, E maximum start speed for accelerated moves. E default values

// X, Y, Z, E steps per mm

//#define DEFAULT_AXIS_STEPS_PER_UNIT {91.4286, 91.4286, 4000, 920.0} // <- 14 tooth T2.5 belt + original extruder drive

#else

#ifdef REPRAPPRO_MENDEL2

//#define X_MAX_LENGTH 210
//#define Y_MAX_LENGTH 210
//#define Z_MAX_LENGTH 110
//#define HOMING_FEEDRATE {10*60, 10*60, 1*60, 0} // set the homing speeds (mm/min)
//#define FAST_HOME_FEEDRATE {50*60, 50*60, 1*60, 0} // set the homing speeds (mm/min)
//#define DEFAULT_MAX_FEEDRATE {500, 500, 3, 45}
//#define DEFAULT_MAX_FEEDRATE {300, 300, 3, 45} // (mm/sec)
//#define DEFAULT_MAX_ACCELERATION {800,800,30,250} // X, Y, Z, E maximum start speed for accelerated moves. E default values

// X, Y, Z, E steps per mm

//#define DEFAULT_AXIS_STEPS_PER_UNIT {87.489, 87.489, 4000, 660.0} // <- 18-tooth aluminium pulley
//#define DEFAULT_AXIS_STEPS_PER_UNIT {92.635, 92.635, 4000, 660} // <- 17-tooth printed pulley

#else

#define X_MAX_LENGTH 155
#define Y_MAX_LENGTH 150
#define Z_MAX_LENGTH 90
#define HOMING_FEEDRATE {10*60, 10*60, 1*60, 0} // set the homing speeds (mm/min)
#define FAST_HOME_FEEDRATE {80*60, 80*60, 4*60, 0} // set the homing speeds (mm/min)
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec)
#define DEFAULT_MAX_FEEDRATE {500, 500, 5, 45} // (mm/sec)
#define DEFAULT_MAX_ACCELERATION {1000,1000,50,250} // X, Y, Z, E maximum start speed for accelerated moves. E default values

// X, Y, Z, E steps per mm

//#define DEFAULT_AXIS_STEPS_PER_UNIT {87.489, 87.489, 4000, 660.0} // <- 18-tooth aluminium pulley
//#define DEFAULT_AXIS_STEPS_PER_UNIT {92.635, 92.635, 4000, 660} // <- 17-tooth printed pulley
#define DEFAULT_AXIS_STEPS_PER_UNIT {91.4286, 91.4286, 4000, 920.0} // <- 14 tooth T2.5 belt + original extruder drive


#endif
#endif



// Defaults changed by the G10 command

#define X_EXTRUDER_OFFSET 0
#define Y_EXTRUDER_OFFSET 0
#define Z_EXTRUDER_OFFSET 0
#define STANDBY_TEMP 140
#define PLA_TEMP 205
#define ABS_TEMP 250
#define DEFAULT_TEMP PLA_TEMP


#define DEFAULT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for printing moves
#define DEFAULT_RETRACT_ACCELERATION 1000 // X, Y, Z and E max acceleration in mm/s^2 for r retracts

//
#define DEFAULT_XYJERK 15.0 // (mm/sec)
#define DEFAULT_ZJERK 0.4 // (mm/sec)
#define DEFAULT_EJERK 15.0 // (mm/sec)

//===========================================================================
//=============================Additional Features===========================
//===========================================================================

// EEPROM
// the microcontroller can store settings in the EEPROM, e.g. max velocity...
// M500 - stores paramters in EEPROM
// M501 - reads parameters from EEPROM (if you need reset them after you changed them temporarily).
// M502 - reverts to the default "factory settings". You still need to store them in EEPROM afterwards if you want to.
//define this to enable eeprom support
#define EEPROM_SETTINGS
//to disable EEPROM Serial responses and decrease program space by ~1700 byte: comment this out:
// please keep turned on if you can.
#define EEPROM_CHITCHAT

//LCD and SD support
//#define ULTRA_LCD //general lcd support, also 16x2
#define SDSUPPORT // Enable SD Card Support in Hardware Console

//#define ULTIPANEL
#ifdef ULTIPANEL
//#define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT
#define ULTRA_LCD
#define LCD_WIDTH 20
#define LCD_HEIGHT 4

// Preheat Constants
#define PLA_PREHEAT_HOTEND_TEMP 180
#define PLA_PREHEAT_HPB_TEMP 70
#define PLA_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255

#define ABS_PREHEAT_HOTEND_TEMP 240
#define ABS_PREHEAT_HPB_TEMP 100
#define ABS_PREHEAT_FAN_SPEED 255 // Insert Value between 0 and 255

#else //no panel but just lcd
#ifdef ULTRA_LCD
#define LCD_WIDTH 16
#define LCD_HEIGHT 2
#endif
#endif

// Enable uM-FPU support:
#define UMFPUSUPPORT 1

// M240 Triggers a camera by emulating a Canon RC-1 Remote
// Data from: [www.doc-diy.net]
// #define PHOTOGRAPH_PIN 23

#include "Configuration_adv.h"


#endif //__CONFIGURATION_H

___________________________________________________________________________________________________


Thanks a lot for all the reading, hope you can help me! smiling smiley
Sorry for my bad english, i am from Sweden smileys with beersmileys with beer

Best Regards,
Johannes
Re: Problems with Z-axis moving in one direction, pls help!!
December 19, 2014 02:15PM
1. Check your Z endstop wiring and make sure the wires are soldered on the side pins (the one in the middle should be not connected.

In MECHANICAL SETTINGS...

2. Modify
const bool Z_ENDSTOPS_INVERTING = true; // set to true to invert the logic of the endstops.
to
const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of the endstops.

3. Under
#ifdef REPRAPPRO_HUXLEY
modiffy
#define INVERT_Z_DIR true // for Mendel set to false, for Orca set to true
to
#define INVERT_Z_DIR false // for Mendel set to false, for Orca set to true

4. Modify
#define Z_HOME_DIR 1
to
#define Z_HOME_DIR -1

5. Upload and check.

Should work now smiling smiley

Edited 1 time(s). Last edit at 12/19/2014 02:16PM by 3Dmaker4U.
Re: Problems with Z-axis moving in one direction, pls help!!
January 04, 2015 06:01AM
Yeah Agree with 3Dmaker4U. Does it work now? If not, I can send you my firmware to you which works fine with Melzi 2.0.


Everything of 3D printer. www.3dminions.com
[www.facebook.com]
Re: Problems with Z-axis moving in one direction, pls help!!
January 04, 2015 09:40AM
Hi there,

Sorry guys for the late respond.
I have tried all the things with the firmware and soldering the endstops, did not work unfortunately sad smiley

I would really appriciate if you can send me the firmware "peter xm" smiling smiley

Do you guys think the board is the problem here?
Tried to go into reprap.me and send them an e-mail, but the site seems to be down..

Thanks in advance.
Br Durac3ll
Sorry, only registered users may post in this forum.

Click here to login