dual extrusion offset error

i have been using my corexy on repetier for over a  year now with no trouble... yesterday i added a removable second extruder which is offset from the main extruder on the y axis by 50 mm and on x it is 0mm.. I put these values in the firmware and reloaded.. everything works fine and i even printed from the second extruder . the trouble is that now everthing is offsetted on the y by 50mm..if i issue a t0 followed by g1 x50y50 the head is actually at x50y100 but the printer still shows x50y50 when i query m114. when i give a t1 the head moves back by -50 on y.. so what is wrong here? Is this normal for a dual extruder ? 

thanks 

Comments

  • ok i think i now understand and it is normal behavior i guess..  on another note is it possible to make the printer from dual to single extruder on a flick of a toggle switch? Basically if one pin goes high the printer thinks it is a single extruder and increase the build area.. can a variable be added to the second extruder and the build limits to change on turning the switch on? if i need to do it should i add a #ifdef?

    thanks again
  • 1. Yes it is normal behaviour. That way you calibrate offsets in firmware and position is always where you extruder, hence the move on extruder switch.
    2. No, number of extruders is deeply compiled in. If you want to remove second extruder make a fake thermistor with e.g. 100K resistor you put on sensor pins. That way firmware continues to work as long as you do not heat second extruder.
  • ekaggrat said:
    i have been using my corexy on repetier for over a  year now with no trouble... yesterday i added a removable second extruder which is offset from the main extruder on the y axis by 50 mm and on x it is 0mm.. I put these values in the firmware and reloaded.. everything works fine and i even printed from the second extruder . the trouble is that now everthing is offsetted on the y by 50mm..if i issue a t0 followed by g1 x50y50 the head is actually at x50y100 but the printer still shows x50y50 when i query m114. when i give a t1 the head moves back by -50 on y.. so what is wrong here? Is this normal for a dual extruder ? 

    thanks 
    Why is that normal behaviour? I have the same and don't understand what happens.

    Only setting an offset makes the homing position shift a same amount. Selecting the second extruder afterwards moves the extruders ANOTHER times the offset. That way the head crashes into the mechanical end stop, not obeying the software limits. Puzzled.
  • Position is where you want to extrude and the offsets are used to add extra move so the nozzle of active extruder is over the defined position. And since you should be allowed to switch extruders after homing it might add a offset depending on homing direction and active extruder.
  • Still there is behaviour I cannot comprehend in some aspects:

    * Giving Ext1 an offset of 10mm invokes a 10mm move after homing.
    * Giving Ext0 an offset of -10mm (suggested fix elsewhere in the forum) has the same result.
    * After homing, selecting the Ext1 does nothing. Then selecting Ext0 again nothing. Selecting Ext1 the second time invokes a move.
    * When doing a tool change (see code below) T1 works as expected. Calling T0 makes all the moves, except the last move stops before the desired position is reached.

    It seems like the selection of the extruder changes the positions in the coordinate system, but not in a controlled moment. Or at least I do not understand when the position change happens and I do not know how to get a grip on it.

      if(com->hasT())
      {
        if(currentExtruder == (int)com->T)
        {
          return true;
        }
        else
        {
          currentExtruder = (int)com->T;
        }
        switch(com->T)
        {
          case 0:
            GCode::executeFString(PSTR("G1 X528 F6000\n"));
            GCode::executeFString(PSTR("G1 Y496 F6000\n"));
            GCode::executeFString(PSTR("G1 Y506 F2000 S1\n"));
            GCode::executeFString(PSTR("G1 X518 F2000\n"));
            GCode::executeFString(PSTR("G1 Y496 F2000 S0\n"));
            GCode::executeFString(PSTR("G1 X0 F6000\n"));
            GCode::executeFString(PSTR("G92 E0\n"));
            return true;
            break;
          case 1:
            GCode::executeFString(PSTR("G0 X0 F6000\n"));
            GCode::executeFString(PSTR("G0 Y496 F6000\n"));
            GCode::executeFString(PSTR("G0 Y506 F2000 S1\n"));
            GCode::executeFString(PSTR("G0 X10 F2000\n"));
            GCode::executeFString(PSTR("G0 Y496 F2000 S0\n"));
            GCode::executeFString(PSTR("G0 X574 F6000 S0\n"));
            GCode::executeFString(PSTR("G92 E0\n"));
            return true;
            break;
          default:
            return false;
            break;
        }
        return false;
      }
  • What's the sense of the c++ code you show? It is not ok to switch extruders that way. YOu need to explicitly call selectExtruder function, otherwise it will not adjust to offsets. That function also sets currentExtruder.
  • The c++ code is to change extruders. They need to be parked. Maybe not neat to write it here but it's a first try.
    What's really difficult to understand is the behaviour of homing and offsets for Ext0 and Ext1. Please give me some clue of how it should work.
    When homing with an offset for any extruder, there is a movement in the offset direction. After selecting the other extruder back and forth twice, the extruders end up way off the home position. Why does Ext0 go so far off the home position?
    You say it is meant to function like this, but the effect is that I'm not able to configure the movement of both extruders correctly. I feel stupid.
  • Ok, simple example 2 extruder. X offset E0 has 0, E1 = 40
    Homing with E0: home x then move 40mm right so selecting E1 which moves 40mm left is no problem.
    Homing with E1: home x then no move since 40-40 is 0. Activating E0 will move 40mm right

    Regarding your parking code, each extruder has a select and deselect command in config where you can add gcodes to be run when it gets activated or deactivated. If this is some kind of pick extruder all offsets are 0. If you have dual x axis then offsets have different meanings.
Sign In or Register to comment.