Added HOME_POS. This adds the posibility to make the center 0

Updated the Xsteps ... settings via the LCD menu
This commit is contained in:
Erik van der Zalm 2012-02-22 18:07:56 +01:00
parent df1437bd86
commit ae3e7586c6
5 changed files with 58 additions and 34 deletions

View file

@ -146,6 +146,11 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t
#define Y_MAX_LENGTH 185
#define Z_MAX_LENGTH 90
// 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
#define HOMING_FEEDRATE {1500, 1500, 80, 0} // {50*60, 50*60, 4*60, 0} // set the homing speeds (mm/min)
@ -182,7 +187,7 @@ const bool Z_ENDSTOPS_INVERTING = false; // set to true to invert the logic of t
//#define ULTRA_LCD //general lcd support, also 16x2
#define SDSUPPORT // Enable SD Card Support in Hardware Console
//#define ULTIPANEL
#define ULTIPANEL
#ifdef ULTIPANEL
#define NEWPANEL //enable this if you have a click-encoder panel
#define SDSUPPORT

View file

@ -509,7 +509,7 @@ bool code_seen(char code)
feedrate = homing_feedrate[LETTER##_AXIS]/2 ; \
plan_buffer_line(destination[X_AXIS], destination[Y_AXIS], destination[Z_AXIS], destination[E_AXIS], feedrate/60, active_extruder); \
\
current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? 0 : LETTER##_MAX_LENGTH;\
current_position[LETTER##_AXIS] = (LETTER##_HOME_DIR == -1) ? LETTER##_HOME_POS : LETTER##_MAX_LENGTH;\
destination[LETTER##_AXIS] = current_position[LETTER##_AXIS];\
feedrate = 0.0;\
st_synchronize();\
@ -577,8 +577,8 @@ void process_commands()
feedrate =homing_feedrate[Y_AXIS];
prepare_move();
current_position[X_AXIS] = (X_HOME_DIR == -1) ? 0 : X_MAX_LENGTH;
current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? 0 : Y_MAX_LENGTH;
current_position[X_AXIS] = (X_HOME_DIR == -1) ? X_HOME_POS : X_MAX_LENGTH;
current_position[Y_AXIS] = (Y_HOME_DIR == -1) ? Y_HOME_POS : Y_MAX_LENGTH;
plan_set_position(current_position[X_AXIS], current_position[Y_AXIS], current_position[Z_AXIS], current_position[E_AXIS]);
destination[X_AXIS] = current_position[X_AXIS];
destination[Y_AXIS] = current_position[Y_AXIS];

View file

@ -25,6 +25,7 @@
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
#define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
@ -52,6 +53,9 @@
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
#define MSG_XSTEPS " Xsteps/mm:"
#define MSG_YSTEPS " Ysteps/mm:"
#define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
@ -86,6 +90,7 @@
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
#define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
@ -113,6 +118,9 @@
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
#define MSG_XSTEPS " Xsteps/mm:"
#define MSG_YSTEPS " Ysteps/mm:"
#define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
@ -147,6 +155,7 @@
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
#define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
@ -174,6 +183,9 @@
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
#define MSG_XSTEPS " Xsteps/mm:"
#define MSG_YSTEPS " Ysteps/mm:"
#define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
@ -208,6 +220,7 @@
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
#define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
@ -235,6 +248,9 @@
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
#define MSG_XSTEPS " Xsteps/mm:"
#define MSG_YSTEPS " Ysteps/mm:"
#define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"
@ -269,6 +285,7 @@
#define MSG_PREHEAT " Preheat"
#define MSG_COOLDOWN " Cooldown"
#define MSG_EXTRUDE " Extrude"
#define MSG_MOVE_AXIS " Move Axis \x7E"
#define MSG_SPEED " Speed:"
#define MSG_NOZZLE " \002Nozzle:"
#define MSG_BED " \002Bed:"
@ -296,6 +313,9 @@
#define MSG_VTRAV_MIN " VTrav min:"
#define MSG_AMAX " Amax "
#define MSG_A_RETRACT " A-retract:"
#define MSG_XSTEPS " Xsteps/mm:"
#define MSG_YSTEPS " Ysteps/mm:"
#define MSG_ZSTEPS " Zsteps/mm:"
#define MSG_ESTEPS " Esteps/mm:"
#define MSG_MAIN_WIDE " Main \003"
#define MSG_TEMPERATURE_WIDE " Temperature \x7E"

View file

@ -446,9 +446,9 @@ void plan_buffer_line(float &x, float &y, float &z, float &e, float feed_rate, u
if (min_software_endstops) {
if (x < 0) x = 0;
if (y < 0) y = 0;
if (z < 0) z = 0;
if (x < X_HOME_POS) x = X_HOME_POS;
if (y < Y_HOME_POS) y = Y_HOME_POS;
if (z < Z_HOME_POS) z = Z_HOME_POS;
}
if (max_software_endstops) {

View file

@ -372,7 +372,7 @@ void MainMenu::showStatus()
if((currentz!=oldzpos)||force_lcd_update)
{
lcd.setCursor(10,1);
lcdprintPGM("Z:");lcd.print(ftostr32(current_position[2]));
lcdprintPGM("Z:");lcd.print(ftostr52(current_position[2]));
oldzpos=currentz;
}
static int oldfeedmultiply=0;
@ -411,7 +411,6 @@ void MainMenu::showStatus()
lcd.setCursor(7,2);
lcd.print(itostr3((int)percent));
lcdprintPGM("%SD");
}
#else //smaller LCDS----------------------------------
@ -485,7 +484,7 @@ void MainMenu::showPrepare()
MENUITEM( lcdprintPGM(MSG_DISABLE_STEPPERS) , BLOCK;enquecommand("M84");beepshort(); ) ;
break;
case ItemP_home:
MENUITEM( lcdprintPGM(MSG_AUTO_HOME) , BLOCK;enquecommand("G28 X0 Y0 Z0");beepshort(); ) ;
MENUITEM( lcdprintPGM(MSG_AUTO_HOME) , BLOCK;enquecommand("G28");beepshort(); ) ;
break;
case ItemP_origin:
MENUITEM( lcdprintPGM(MSG_SET_ORIGIN) , BLOCK;enquecommand("G92 X0 Y0 Z0");beepshort(); ) ;
@ -500,7 +499,7 @@ void MainMenu::showPrepare()
// MENUITEM( lcdprintPGM(" Extrude") , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E50");beepshort(); ) ;
// break;
case ItemP_move:
MENUITEM( lcdprintPGM(" Move Axis \x7E") , BLOCK;status=Sub_PrepareMove;beepshort(); );
MENUITEM( lcdprintPGM(MSG_MOVE_AXIS) , BLOCK;status=Sub_PrepareMove;beepshort(); );
break;
default:
break;
@ -664,7 +663,7 @@ void MainMenu::showAxisMove()
}
break;
case ItemAM_E:
MENUITEM( lcdprintPGM(" Extrude") , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ;
MENUITEM( lcdprintPGM(MSG_EXTRUDE) , BLOCK;enquecommand("G92 E0");enquecommand("G1 F700 E5");beepshort(); ) ;
break;
default:
break;
@ -703,7 +702,7 @@ void MainMenu::showTune()
if((activeline!=line) )
break;
if(CLICKED) //nalogWrite(FAN_PIN, fanpwm);
if(CLICKED) //AnalogWrite(FAN_PIN, fanpwm);
{
linechanging=!linechanging;
if(linechanging)
@ -1597,7 +1596,7 @@ void MainMenu::showControlMotion()
{
if(force_lcd_update)
{
lcd.setCursor(0,line);lcdprintPGM(" X steps/mm:");
lcd.setCursor(0,line);lcdprintPGM(MSG_XSTEPS);
lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[0]));
}
@ -1609,11 +1608,11 @@ void MainMenu::showControlMotion()
linechanging=!linechanging;
if(linechanging)
{
encoderpos=(int)axis_steps_per_unit[0];
encoderpos=(int)(axis_steps_per_unit[0]*100.0);
}
else
{
float factor=float(encoderpos)/100/float(axis_steps_per_unit[0]);
float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[0]);
position[X_AXIS]=lround(position[X_AXIS]*factor);
//current_position[3]*=factor;
axis_steps_per_unit[X_AXIS]= encoderpos/100.0;
@ -1634,8 +1633,8 @@ void MainMenu::showControlMotion()
{
if(force_lcd_update)
{
lcd.setCursor(0,line);lcdprintPGM(" Y steps/mm:");
lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[1]));
lcd.setCursor(0,line);lcdprintPGM(MSG_YSTEPS);
lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[1]));
}
if((activeline!=line) )
@ -1646,14 +1645,14 @@ void MainMenu::showControlMotion()
linechanging=!linechanging;
if(linechanging)
{
encoderpos=(int)axis_steps_per_unit[1];
encoderpos=(int)(axis_steps_per_unit[1]*100.0);
}
else
{
float factor=float(encoderpos)/float(axis_steps_per_unit[1]);
float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[1]);
position[Y_AXIS]=lround(position[Y_AXIS]*factor);
//current_position[3]*=factor;
axis_steps_per_unit[Y_AXIS]= encoderpos;
axis_steps_per_unit[Y_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
@ -1664,7 +1663,7 @@ void MainMenu::showControlMotion()
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;
@ -1672,8 +1671,8 @@ void MainMenu::showControlMotion()
{
if(force_lcd_update)
{
lcd.setCursor(0,line);lcdprintPGM(" Z steps/mm:");
lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[2]));
lcd.setCursor(0,line);lcdprintPGM(MSG_ZSTEPS);
lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[2]));
}
if((activeline!=line) )
@ -1684,14 +1683,14 @@ void MainMenu::showControlMotion()
linechanging=!linechanging;
if(linechanging)
{
encoderpos=(int)axis_steps_per_unit[2];
encoderpos=(int)(axis_steps_per_unit[2]*100.0);
}
else
{
float factor=float(encoderpos)/float(axis_steps_per_unit[2]);
float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[2]);
position[Z_AXIS]=lround(position[Z_AXIS]*factor);
//current_position[3]*=factor;
axis_steps_per_unit[Z_AXIS]= encoderpos;
axis_steps_per_unit[Z_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
@ -1702,7 +1701,7 @@ void MainMenu::showControlMotion()
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;
@ -1712,7 +1711,7 @@ void MainMenu::showControlMotion()
if(force_lcd_update)
{
lcd.setCursor(0,line);lcdprintPGM(MSG_ESTEPS);
lcd.setCursor(13,line);lcd.print(itostr4(axis_steps_per_unit[3]));
lcd.setCursor(11,line);lcd.print(ftostr52(axis_steps_per_unit[3]));
}
if((activeline!=line) )
@ -1723,14 +1722,14 @@ void MainMenu::showControlMotion()
linechanging=!linechanging;
if(linechanging)
{
encoderpos=(int)axis_steps_per_unit[3];
encoderpos=(int)(axis_steps_per_unit[3]*100.0);
}
else
{
float factor=float(encoderpos)/float(axis_steps_per_unit[3]);
float factor=float(encoderpos)/100.0/float(axis_steps_per_unit[3]);
position[E_AXIS]=lround(position[E_AXIS]*factor);
//current_position[3]*=factor;
axis_steps_per_unit[E_AXIS]= encoderpos;
axis_steps_per_unit[E_AXIS]= encoderpos/100.0;
encoderpos=activeline*lcdslow;
}
@ -1741,7 +1740,7 @@ void MainMenu::showControlMotion()
{
if(encoderpos<5) encoderpos=5;
if(encoderpos>9999) encoderpos=9999;
lcd.setCursor(13,line);lcd.print(itostr4(encoderpos));
lcd.setCursor(11,line);lcd.print(ftostr52(encoderpos/100.0));
}
}break;