M143 issue



  • I'm having issue with a bed thermistor not really reaching the set temp (example: setting it to 110c is really more like 85c, even after a period of time). To experiment, I've temporarily raised my max bed temp to 140c and am monitoring it closely.

    What I've noticed is if I put the following in my config, it is not processed. I have to manually run it to allow me to go this high or else my heater faults..

    M143 H0 S140
    

    Is this by design? if so, I'd think an error would be thrown.. Is there a better way to handle this scenario? Thanks



  • https://duet3d.dozuki.com/Wiki/Gcode#Section_M143_Maximum_heater_temperature
    If the heater is a bed or chamber heater then the M143 command must come after the M140 or M141 command that declares the heater as a bed or chamber heater.

    if you bed takes a long time to heat you might have to increase the dead time. see
    https://duet3d.dozuki.com/Wiki/Tuning_the_heater_temperature_control#Section_RRF_3_x_Error_Heater_0_fault_temperature_rising_much_more_slowly_than_the_expected_1_7_C_sec



  • @Veti Thanks! unfortunately, my issue is a bad thermistor as it never reaches temp.. and I've been too busy with other testing to stop and replace it.



  • could it be a wrong setting for the thermistor?



  • @Veti it's only one of 3 machines with the issue, so I don't think so.. I'll get that sorted here soon.

    My real issue is setting the max bed temp of 140 isn't really all that high and feels like a bug.. especially since there are filaments out there that require higher than that.

    Also, M140 is before M143 for my bed heater and I'm not using M141 yet in my config..

    M140 H0			; Maps heated bed to heater 0
    M143 H0 S140		; Sets temperature limit for heater 0 to 120C	
    

  • Moderator

    If you send M98 P"config.g" int he gcode console do you get any errors?

    What firmware version and board are you using?



  • @Phaedrux

    We are using Duet3 / RPi combo running 3.2b1. I've never noticed any errors when running config.g through M98 as we have a macro that is doing specifically that.. however, I can run it again once a machine frees up.


  • Moderator

    The reason for sending M98 P"config.g" is to see any error messages that get thrown which may get suppressed during initial startup. It's a good way to catch syntax errors.



  • The only hardcoded limits are -10.0C < temp_limit < 2000.0C, at least in rrf v3.2. Default limit is 125C I think for the bed, but it shouldn't reject higher values.

    More likely to be some weirdness with command ordering or initialization timings.



  • I just ran M98 P"config.g" and the only thing logged is:

    Warning: M307: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 365C
    

    Could this be related? I haven't looked into how to resolve this yet..


  • administrators

    @oozeBot said in M143 issue:

    Also, M140 is before M143 for my bed heater and I'm not using M141 yet in my config..

    Is your M950 H0 command before both the M140 command and the M143 H0 command?

    If you run M98 P"config.g" do you see any error messages?



  • @dc42

    Full snippet - not sure why I didn't post it earlier.. sorry.

    And yes, these are crappy thermistors.. but this one is especially bad, which is what led me to test in this way.

    ;== Bed Heater =========================
    M308 S0 P"temp0" Y"thermistor" T100000 B3950	; Configures sensor 0 as thermistor on pin temp0
    M950 H0 C"0.out7" T0				; Creates bed heater output on out1 and map it to sensor 0
    M307 H0 B0 S1.00				; Disables bang-bang mode for the bed heater and set PWM limit
    M140 H0						; Maps heated bed to heater 0
    M143 H0 S140					; Sets temperature limit for heater 0 to 120C				
    M307 H0 A241.5 C374.3 D1.8 S1.0 V24.0 B0	; Applies auto-tune results
    

  • Moderator

    @oozeBot said in M143 issue:

    I just ran M98 P"config.g" and the only thing logged is:

    Warning: M307: Heater 0 appears to be over-powered. If left on at full power, its temperature is predicted to reach 365C
    

    Could this be related? I haven't looked into how to resolve this yet..

    https://duet3d.dozuki.com/Wiki/FAQ#Section_M307_Heater_1_appears_to_be_over_powered_If_left_on_at_full_power_its_temperature_is_predicted_to_reach_521C



  • @Phaedrux @dc42 - I just did a hard reboot and ran the following command:

    echo heat.heaters[0].max
    

    which returned 125. It's only when I run M143 H0 S140 again will the setting change..

    And about the M307 issue, yeah - these are mains heaters and are quite powerful. They are protected with a thermal fuse.


  • administrators

    Maybe M307 resets the M143 settings. Test this by moving the M143 after the M307.



  • @dc42 that fixed it! But wouldn't the M307 loaded into config-override.g instead still load in this same order? I can test if needed..


  • administrators

    @oozeBot said in M143 issue:

    @dc42 that fixed it! But wouldn't the M307 loaded into config-override.g instead still load in this same order? I can test if needed..

    Yes, that will be a problem. I will log it as a bug.



  • @dc42 I just experienced this in 3.2B3 where I had to run "M143 H0 S140" again to get the default to increase above 125. Here is my current config. This was working in 3.2B1 after moving M143 after M307.. Thanks

    ;== Bed Heater =========================
    M308 S0 P"temp0" Y"thermistor" T100000 B3950		; Configures sensor 0 as thermistor on pin temp0
    M950 H0 C"0.out1" T0					; Creates bed heater output on out1
    M307 H0 B0 S1.00					; Disables bang-bang mode for the bed heater and set PWM limit
    M140 H0							; Maps heated bed to heater 0		
    M307 H0 A241.5 C374.3 D1.8 S1.0 V24.0 B0		; Applies auto-tune results
    M143 H0 S140						; Sets temperature limit
    


  • @dc42 just bumping this as 3.2B3 is definitely not accepting the following command when run from my config. There is no config-override.g. I must run M143 H0 S140 twice to get the updated value to stick.. see above for my current config.


  • administrators

    @oozeBot, please provide your whole config.g file.



  • @dc42 here you go.. this was working on 3.2b1 after moving M143 after M307.

    edit - the "{1}" on line 94 is not present in my config.. there seems to be some issue with the codeblock functionality which is injecting that.

    ;== General Settings ===================
    M80																; Turns on 24v Power Supply
    G4 P2000
    
    M550 P"oozeBot"													; Sets printer name
    M669 K1															; Selects CoreXY mode
    
    ;== PanelDue ===========================
    M575 P1 B57600 S1												; Configures PanelDue
    
    ;== NeoPixel Settings ==================
    M150 X1 F3000000												; sets LED type to NeoPixel and SPI frequency to 3MHz
    G4 P1000
    M150 R0 U85 B255 P64 S57
    
    ;== Fans ===============================
    M950 F0 C"20.out1"												; Creates fan 0 on pin out2 (print cooling fan)
    M106 P0 S0 H-1													; Sets fan 0 to manual control
    
    M950 F1 C"20.out2"												; Creates fan 1 on pin out1
    M106 P1 T50 H1													; Sets fan 1 to thermostatic control
    
    M950 F2 C"!0.out4"												; Creates fan 2 on pin out4 (case cooling fan)
    M106 P2 S0 H-1													; Sets fan 2 to manual control
    M106 P2 S128
    
    M569 P0.0 S0													; Defines physical drive 0.0 to move forwards
    M569 P0.2 S1													; Defines physical drive 0.2 to move backwards
    M569 P0.3 S0													; Defines physical drive 0.3 to move backwards
    M569 P0.5 S0													; Defines physical drive 0.5 to move backwards
    M569 P20.0 S0													; Defines physical drive 20.0 to move backwards
    
    M584 Z0.0:0.2 X0.5 Y0.3 E20.0									; Binds Z to 0.2 & 0.0, X to 0.5, Y to 0.3, and E to 20.0
    
    M350 X16 Y16 Z16 E16 I1											; Configures microstepping with interpolation
    ;M92 X100.00 Y100.00 Z100.00 E830.00							; Sets steps per mm
    M92 X100.00 Y100.00 Z100.00 E840								; Sets steps per mm
    
    M566 X1500.00 Y1500.00 Z500.00 E3000.00 P1						; Sets Jerk - maximum instantaneous speed changes (mm/min)
    M201 X12000.00 Y12000.00 Z500.00 E3000.00						; Sets accelerations (mm/s^2)
    M203 X24000.00 Y24000.00 Z12000.00 E3000.00						; Sets maximum speeds (mm/min)
    M906 X1600 Y1600 Z1800 E1120 I50								; Sets motor currents (mA) and motor idle factor (I) in percent
    M84 S60															; Sets idle timeout
    
    ;== Axis Definitions ===================
    M208 X0 Y0 Z0 S1												; Sets axis minima
    M208 X304.8 Y304.8 Z304.8 S0									; Sets axis maxima
    M671 X-85:424 Y152.4:152.4 S6									; Sets belt position relative to the print bed
    
    ;== Endstops ===========================
    M574 X1 S3														; Configures sensorless endstop for low end on X
    M574 Y1 S3														; Configures sensorless endstop for low end on Y
    M574 Z2 S3														; Configures sensorless endstop for high end on Z
    
    ;== Initializes Relay Board ============
    M950 P3 C"0.out3"												; Creates P3 on pin out7 as on/off tool toggle
    M42 P3 S1														; Enables P3 to an on state
    G4 P1000														; Wait 1s to allow relay board to energize
    
    ;== Locks Z Axis =======================
    G92 Z0															; Sets Z height to 0
    G1 Z0.2 F4000													; Moves Z .2mm up equating to roughly one full motor step
    
    ;== Extruder Heater ====================
    M308 S1 P"20.temp0" Y"thermistor" T500000 B4723 C1.196220e-7	; Configures sensor 1 as thermistor on pin temp0 (toolboard is set to B20)
    M950 H1 C"20.out0" T1											; Creates nozzle heater output on out2 and map it to sensor 1 (toolboard is set to B20)
    M307 H1 B0 S1.00												; Disables bang-bang mode for heater and set PWM limit
    M143 H1 S400													; Sets temperature limit for heater 1 to 333C
    
    ;== Bed Heater =========================
    M308 S0 P"temp0" Y"thermistor" T100000 B3950					; Configures sensor 0 as thermistor on pin temp0
    M950 H0 C"0.out1" T0											; Creates bed heater output on out1
    M307 H0 B0 S1.00												; Disables bang-bang mode for the bed heater and set PWM limit
    M140 H0															; Maps heated bed to heater 0		
    M307 H0 A241.5 C374.3 D1.8 S1.0 V24.0 B0						; Applies auto-tune results
    M143 H0 S140													; Sets temperature limit		
    
    ;== Enclosure Heater =========================
    M308 S2 P"temp1" Y"thermistor" T100000 B3950					; Configures sensor 0 as thermistor on pin temp1
    M950 H2 C"0.out2" T2											; Creates bed heater output on out2
    M307 H2 B1 D200													; Enabled bang-bang mode for the enclosure heater
    M143 H2 S80														; Sets temperature limit
    M141 H2															; Defines Heater 2 as enclosure heater
    
    ;== Tool Definitions ===================
    M563 P0 D0 H1 F0:1 S"Extruder"									; Define tool 0
    G10 P0 X0 Y0 Z0 R0 S0											; Set tool 0 axis offsets and active / standby temps to 0c
    
    ;== BLTouch ============================
    M558 K0 P9 C"20.io0.in" H3 F120 T12000 A5 R0.1 S0.01			; Defined BLTouch parameters
    M950 S0 C"20.io0.out"											; Servo Control Pin for BLtouch
    G31 X20 Y20 Z2.9 P25											; Probe offsets
    M557 X34.5:265.5 Y34.5:265.5 S115.5								; Define mesh grid (9 test points)
    
    T0																; Selects Tool0 as default
    G21																; Set units to millimeters
    G90																; Sends absolute coordinates..
    M83																; ..but relative extruder moves
    

  • administrators

    I suspect the order of M143 causes this. Move both M143 codes below the part where you configure heaters+sensors and check if that fixes it.



  • @chrishamm

    I changed my config to:

    ;== Extruder Heater ====================
    M308 S1 P"20.temp0" Y"thermistor" T500000 B4723 C1.196220e-7	; Configures sensor 1 as thermistor on pin temp0 (toolboard is set to B20)
    M950 H1 C"20.out0" T1											; Creates nozzle heater output on out2 and map it to sensor 1 (toolboard is set to B20)
    M307 H1 B0 S1.00												; Disables bang-bang mode for heater and set PWM limit
    
    
    ;== Bed Heater =========================
    M308 S0 P"temp0" Y"thermistor" T100000 B3950					; Configures sensor 0 as thermistor on pin temp0
    M950 H0 C"0.out1" T0											; Creates bed heater output on out1
    M307 H0 B0 S1.00												; Disables bang-bang mode for the bed heater and set PWM limit
    M140 H0															; Maps heated bed to heater 0		
    M307 H0 A241.5 C374.3 D1.8 S1.0 V24.0 B0						; Applies auto-tune results
    
    
    ;== Enclosure Heater =========================
    M308 S2 P"temp1" Y"thermistor" T100000 B3950					; Configures sensor 0 as thermistor on pin temp1
    M950 H2 C"0.out2" T2											; Creates bed heater output on out2
    M307 H2 B1 D200													; Enabled bang-bang mode for the enclosure heater
    M141 H2															; Defines Heater 2 as enclosure heater
    
    M143 H0 S140													; Sets temperature limit for build plate
    M143 H1 S400													; Sets temperature limit for extruder
    M143 H2 S80														; Sets temperature limit for chamber
    

    I confirmed that it properly set my build plate heater's max temp to 140 like it should, but now DWC isn't showing the build plate heater or the chamber heater? I can still control it from the PanelDue, so it is recognized..

    snip2.JPG



  • after rebooting once again, the heaters have reappeared. Maybe this was just a fluke.

    Should we have to group our M143 commands after each heater is defined? This was not a problem until this build..


  • administrators

    As long as each M143 command comes after all M950, M307, M140 and M141 commands for the same heater, that should work.


Log in to reply