Tuning cancelled because temperature is not falling (m303)



  • Using a duet3 (standalone) and RRF 3.01RC12 (thought I don't think this is a beta issue.)

    My heated bed (for the moment) is a stick on kapton heater under a thin sheet of aluminum, with a 6 mm thick plate of aluminum on that. Previously, I used the thermistor built in to the kapton heater, but knowing the temp of the heater wasn't useful and I've always resorted to a IR thermometer to determine when my bed was actually up to the proper temperature.

    To try and help with that issue, I attached a piece of aluminum with a slot for a 3mm (E3D sized) thermistor, and changed my config to use that thermistor instead. (Which, by the way, is MUCH closer to the real temperature of the bed.) I left the previous thermistor attached to the duet (and configured, but not associated with any heater.)

    After reconfiguring the duet to associate the new thermistor with the bed heater, I started a PID tune on the bed: M303 H0 S65.

    When the actual bed temperature was 65C (as measured by both the new thermistor and a hand-held IR thermometer,) the thermistor attached to the kapton heater was up to about 107C. (Not surprising.) The duet turned off the bed heater and started "phase 2." After exactly 1 minute, the duet reported:

    "Auto tune cancelled because the temperature is not falling."

    At that point, the new bed thermistor was up to about 67C. It actually went up a bit more before it started to go down.

    I'm not sure what to do from here. How can I PID tune this configuration? Is there any way to tell RRF to wait 2 or even 3 minutes for the temperature to start falling?

    It's perfectly expected that the temperature will go up a couple degrees after the heater turns off. The same thing happens with my hot end, but a hot block is MUCH smaller than a 310mm diameter, 6mm thick slab of aluminum, so the rise after turning off the heater is over much quicker.

    @dc42, I saw in a thread from 2017 started by @deckingman that RRF is/was supposed to allow 2 minutes for the temperature to start falling. Reading through that thread, it doesn't seem that there was a satisfactory solution, though one person ( @Dougal1957 ) said that " I sent a manual D param of d60 and that seemed to allow it to complete" - I have no idea what that means, as M303 doesn't take a D parameter as far as I can tell.

    Edit: I tried again with a target temp of 60C instead of 65C, and had the same response:

    5/9/2020, 1:46:03 AM	Auto tune cancelled because temperature is not falling
    5/9/2020, 1:45:04 AM	Auto tune phase 2, heater off
    5/9/2020, 1:39:47 AM	Auto tune phase 1, heater on
    5/9/2020, 1:39:42 AM	m303 h0 s60
    Auto tuning heater 0 using target temperature 60.0°C and PWM 1.00 - do not leave printer unattended
    

    The irony is that if it had actually waited 2 minutes (instead of only 1) it would have seen a temperature decrease. 😞 I'm wondering if the 2 minute wait was lost in RRF3 due to it no longer having specific connections for bed heaters vs hot end heaters. Regardless, is there any way to get M303 to allow 2 minutes (or even 3) for the temperature to start falling?

    (By the way, if Doug's post references the M307 D parameter, I tried it and it didn't help.. and a M307 D parameter greater than 70 isn't allowed.)



  • @garyd9 I'm not sure but I think whatever you have in your existing M307 somehow influences what happens when you run the PID tuning. So the D parameter mentioned is the one that is in M307. Increase that and try again. For info, I've successfully tuned my bed very recently. The question of why one gets an error before the 2 minutes was never answered. Maybe the firmware waits for whatever the dead time set in M307 D or a maximum of 2 minutes? Dunno, just a guess.



  • @deckingman said in Tuning cancelled because temperature is not falling (m303):

    @garyd9 I'm not sure but I think whatever you have in your existing M307 somehow influences what happens when you run the PID tuning. So the D parameter mentioned is the one that is in M307. Increase that and try again.

    I'm still waiting for my bed to cool from my last attempt. I've completely removed the previous tune from my configuration and instead set "M307 H0 B1 D70" to change it to bang-bang mode, and set the dead time to 70. (Attempts to set it to any value higher than 70 results in "Error: M307: bad model parameters") (I've also cleared the bed heater line in config-override.)

    Will start a new attempt shortly (but only to 55C this time. I'm guessing that PID tuning to 55C, even when I print at 65C, would be better than bang-bang.)



  • Ohh and other thing. I think but I'm not sure, that gen 3 boards are more susceptible to showing electrical noise on the thermistor wiring. I had to change to using screened cable which I didn't have to do with the older Duet Ethernet.



  • @garyd9 Oh you definitely need to clear whatever is in config override because it does exactly as the name suggests. Personally, I never use it. You should be able to get the tuning to work at 65 or greater. I'm pretty sure the higher D will fix it.



  • @deckingman

    No luck:

    5/9/2020, 2:23:02 AM	Auto tune cancelled because temperature is not falling
    5/9/2020, 2:22:01 AM	Auto tune phase 2, heater off
    5/9/2020, 2:17:47 AM	Auto tune phase 1, heater on
    5/9/2020, 2:17:42 AM	m303 H0 S55
    Auto tuning heater 0 using target temperature 55.0°C and PWM 1.00 - do not leave printer unattended
    5/9/2020, 2:16:07 AM	M307 H0
    Heater 0 model: gain 340.0, time constant 140.0, dead time 70.0, max PWM 1.00, calibration voltage 0.0, mode bang-bang
    

    I included the M307 H0 report before the tuning started to show the result of "M307 H0 B1 D70" was active.



  • @garyd9 I'm on my phone right now. I'll get back to you when I get in front of my PC (unless someone else jumps in first)



  • @deckingman No problem. I'm going to be heading to bed soon anyway. One thing I might try first is to lower my nozzle to Z1 and force the hotend fan on. The air circulation might help cool the build plate slightly quicker.

    (My part cooling is a berd air, and I doubt it'd do much to cool the build plate.)

    Hopefully David will pop in at some point and give a suggestion (or fix) for the PID tune routine to allow 2 minutes (or more) for the temp to start falling.



  • Well, I think I did something.. unusual. I wasn't patient enough to let the bed cool all the way down, so started another PID tune when it was at 30C. As soon as it hit 55C and turned the bed heater off, I started fanning the bed to try and cool it down.

    I guess I was overly aggressive fanning, because it went to phase 3 after only 7 seconds with a "peak" temp of only 55.7. I stopped fanning and the temp crept back up to 57.5 and then started to go down again.

    When the tune finally finished, it reported a gain of 98, time constant of 818 and a dead time of a mere 7 seconds. For no particular reason, I saved those values via M500, and copied the resulting M307 command out to play with it: M307 H0 A98.5 C818.0 D7.2 S1.00 V23.4 B0

    Now, this is where it gets interesting: I kept running that same command over and over, tinkering with the D parameter. Doing that, I was able to max out the D at 409. (I'm sure there's a good reason why a D > 70 is acceptable now, but wasn't in my old tune or in bang-bang mode - but I have no idea what that reason is.)

    So, with "M307 H0 A98.5 C818.0 D409 S1.00 V23.4 B0" configured, I'm going to try to run the PID tune again and see if it allows more than 60 seconds for the temperature to start falling...

    So much for going to bed...



  • @garyd9 I don't really have any better ideas. I just checked what I have now for my 10mm thick bed and it's as follows:

    M307 H0 A271.8 C2583.2 D17.6 S1.00 B0 V24.2

    That's the result of an auto tune last August. So it would have been RRF3 but an early beta firmware. But I'd say from that, the answer to the problem isn't simply the "D" parameter.

    Maybe it's just a matter of finding some sort of approximate model first and doing multiple tunes to home in on the right values. Perhaps DC or someone more knowledgable than I can comment.



  • Another cancel - same thing. There's just too much thermal mass for the temperature to start falling within 60 seconds.

    @dc42 Can I beg you for at least a temporary one-off build of RRF3 that increases the timeout for temperature falling to 2 or 3 minutes? (I don't have a platform available to rebuild RRF3 myself.)

    5/9/2020, 11:36:59 AM	Auto tune cancelled because temperature is not falling
    5/9/2020, 11:35:59 AM	Auto tune phase 2, heater off
    5/9/2020, 11:30:03 AM	Auto tune phase 1, heater on
    5/9/2020, 11:29:57 AM	m303 H0 S60
    Auto tuning heater 0 using target temperature 60.0°C and PWM 1.00 - do not leave printer unattended
    


  • @garyd9 I hear what you are saying about the temperature drop time but despite that, I don't think it's the entire reason why you are getting the problem. The reason I say that is because my bed temperature doesn't drop within 60 seconds - if anything it carries on rising slightly. It's 400mm x 400mm x 10mm thick but also with 12mm of semi rigid insulation under it and another 6mm of float glass on top. So the thermal mass is pretty big.

    Just as a long shot (at least until DC comes up with anything better) try sending M307 with my values via the console and then send M307 without any parameters to check that those values and none other will be used. Then try another heater tune.

    The only other thing I can think of is, does the heater graph look nice and smooth without any sign of noise in the signal? If it's picking up any electrical noise on the thermistor signal, that might screw things up.

    EDIT. Having said all of that, I'm still on a very early beta (pre RC) firmware so.......



  • @deckingman Actually, I think it was the thermistor noise that allowed yours to complete when you last did it. As far as I can tell from different experiments, the tuned D parameter seems to match the time difference between turning the heater off and RRF detecting a fall in the temperature. So, when I fanned mine and it "detected" a drop after only 7 seconds, it gave me a D of 7. In a different experiment, I waited 30 seconds and then fanned it, and it gave a D of about 30.

    However, I really don't understand how all the different parameters interact and I'd hate to cause some unintended problem by fanning the bed during tuning, and then manually up'ing the D parameter to 120 or so. I'll freely admit that, at this point, I'm taking WAGs with electric stuff that could burn my house down - so I won't trust those guesses.



  • @garyd9 said in Tuning cancelled because temperature is not falling (m303):

    @deckingman Actually, I think it was the thermistor noise that allowed yours to complete when you last did it..................

    TBH, I couldn't remember if I did the tuning before or after I fitted screened cable to cure the noise. So I've just run auto tune again - now with screened thermistor cable and a good clean temperature trace. Other info that might or might not be useful is that the heater is 240 V 800 watt via an SSR. It's connected to a gen 3 main board with the sensor connected to an expansion board. Here is the result;

    M303 H0 S100 sent via the console

    Time 19:07:12 Phase 1 Heater on
    Time 19:23:04 Phase 2 Heater off - (temp reached 100 deg C after about 16 minutes)
    Time 19:23:34 Phase 3 Peak temperature reached 101.3

    No error messages. 15 minutes after phase 3 the bed temperature is still dropping but is at 74.5 deg C. I'm not sure what the temperature has to get down to for the tuning to complete - I'll just have to leave it and report back on that.

    Looking at your result, you didn't get the Phase 3 peak temperature result that I did. No idea why though....

    I wouldn't have thought that M570 heater fault detection has any part in heater tuning but just in case it does, mine is set as follows:
    M570 H0 P10 T5 S300.

    I can't think what else I can do to help you. I guess it needs DC42 or someone more knowledgeable than I to come up with something.



  • @deckingman said in Tuning cancelled because temperature is not falling (m303):

    Time 19:07:12 Phase 1 Heater on
    Time 19:23:04 Phase 2 Heater off - (temp reached 100 deg C after about 16 minutes)
    Time 19:23:34 Phase 3 Peak temperature reached 101.3

    No error messages. 15 minutes after phase 3 the bed temperature is still dropping but is at 74.5 deg C. I'm not sure what the temperature has to get down to for the tuning to complete - I'll just have to leave it and report back on that.

    Taking guesses here: When RRF3 reported "peak temperature", it was when it detected that the temperature started dropping. On mine, it doesn't report that because the temperature hasn't started dropping 1 minute after the heater was turned off, so it gives an error instead.

    I wonder if I were to try to PID tune to 100C if I'd have better luck. It might take forever for my plate to get that hot (it's only about a 250W heater under there right now) but it should start to fall sooner. (When my 500W silicone heater gets delivered, it'll be easier to hit 100C. It's been enroute from China for almost 2 weeks, but with COVID-19, delivery times are worse than normal.)

    There's nothing in the PID tuning wiki that gives guidance on what target temperature to use when PID tuning. I've always just used "what I normally print with." Would it make a difference to the PID tune if I tuned the bed to 100C even though I never print with it over 65C?



  • @garyd9 said in Tuning cancelled because temperature is not falling (m303):

    ................. Would it make a difference to the PID tune if I tuned the bed to 100C even though I never print with it over 65C?

    I've no idea to be honest - might be worth a try. I usually tune mine at around 65, not because it takes too long to heat but because it takes forever to cool down. I ran that last tune at 100 - no idea why I did that. An hour after phase three heater off, it was still over 40 deg C. I left it another half hour or so until the temperature dropped to 29 deg but I never got a message to say that tuning was completed (I'm sure I should have done). Anyway, I ran M307 H0 and it reported slightly different values than what is in my config.g so I can only assume that it worked OK.



  • Well... trying to tune to a higher temperature (80C) on the bed did allow me to reach phase 3 (finally) without artificially influencing the temperature. Now I just need to understand if tuning to a temperature much higher than I normally use will be a problem.

    5/9/2020, 5:20:54 PM	m307 h0
    Heater 0 model: gain 164.2, time constant 1263.4, dead time 27.1, max PWM 1.00, calibration voltage 23.5, mode PID
    Computed PID parameters for setpoint change: P50.7, I0.274, D961.2
    Computed PID parameters for load change: P50.7, I0.629, D961.2
    
    5/9/2020, 5:16:34 PM	Auto tune heater 0 completed in 1848 sec
    Use M307 H0 to see the result, or M500 to save the result in config-override.g
    
    5/9/2020, 4:57:05 PM	Auto tune phase 3, peak temperature was 81.7
    5/9/2020, 4:56:14 PM	Auto tune phase 2, heater off
    5/9/2020, 4:45:50 PM	Auto tune phase 1, heater on
    5/9/2020, 4:45:44 PM	m303 H0 S80
    Auto tuning heater 0 using target temperature 80.0°C and PWM 1.00 - do not leave printer unattended
    

    It took 50 seconds (just barely making the 60 second cut off), and the temperature really did peak at 81.7. 🙂

    While messing with all this, I also found M143 in the gcode documentation and realized it could be useful to associate the thermistor built into the kapton heater with the bed as a secondary monitor:

    M143 H0 P1 T3 S150 A2
    

    To heater 0 (H0), add a second protection instance (P1) using sensor 3 (T3.) If/When that sensor reaches 150C (S150), switch off temporarily (A2.) That should prevent the kapton heater from melting itself. (I'll probably use the same type of command with the thermistor built into my incoming silicone heater.) The sensor number (T3) apparently should match the sensor number used in M308. (In this case, 'M308 S3 P"temp0" Y"thermistor" A"Kapton Heater" ...')

    In the above PID tuning to 80C, that kapton heater thermistor reached 125C. I wonder how high it's rated for.


Log in to reply