Jam control BED temperature

Hi
This relates to  REPETIER_VERSION "1.0.0dev" fairly recent download of the github development branch

I am experiencing a very funny issue with JAM_ACTION 1.
Say I print at nozzle= 240C and bed=105C
When a jam is detected the head moves to the filament change area and cools down as expected,  the nozzel target temp then displays as -240C and the bed stays at 105C.
When I click on the encoder to reheat the extruder the nozzle target temp then displays 240C and the bed displays -105C and starts cooling down.

How do I fix this?

Comments

  • negative temperatures is just a trick to store original temperature while extruders are off. So first part is correct. At the end unpauseExtruders in Extruder.cpp is called:

    void Extruder::unpauseExtruders(bool wait) {

    #if NUM_EXTRUDER > 0

        // activate temperatures

        for(fast8_t i = 0; i < NUM_EXTRUDER; i++) {

            if(extruder[i].tempControl.targetTemperatureC < 0)

                extruder[i].tempControl.targetTemperatureC = -extruder[i].tempControl.targetTemperatureC;

        }

    #endif

    #if HAVE_HEATED_BED

        bool waitBed = false;

        if(heatedBedController.targetTemperatureC < 0) {

            heatedBedController.targetTemperatureC = -heatedBedController.targetTemperatureC;

            waitBed = true;

        }

    #endif

        if(wait) {

    #if NUM_EXTRUDER > 0

            for(fast8_t i = 0; i < NUM_EXTRUDER; i++)

                extruder[i].tempControl.waitForTargetTemperature();

    #endif

    #if HAVE_HEATED_BED

            if(waitBed) {

                heatedBedController.waitForTargetTemperature();

            }

    #endif

        }

    }

    As you see only with a negative target temperature the bed or extruder is inverted so it always becomes positive afterwards. So from this I do not see how it happens. You could write instead of

    heatedBedController.targetTemperatureC = -heatedBedController.targetTemperatureC;

    using fabs

    heatedBedController.targetTemperatureC = fabs(heatedBedController.targetTemperatureC);

    Will try tomorrow if I can reproduce it or if you have some special condition causing this. Please try the fabs solution as well to see if this line is responsible for it or the problem lies somewhere else.

  • Thanks, will give it a try.
    I will upload the changed firmware as soon as my print is done. Will let you know in about 15 hours.

  • That did the trick! Thank you, working now.
  • Ok, glad that it works also it makes no sense:-)

    I mean that part is only executed when target < 0 and then sets - negative value which should also be negative. 
  • I have found that a lot of things in arduino world and sometimes in ARM world does not make sense. "It's not working, why?" or "It's working, why?"
Sign In or Register to comment.