Heater Monitor Setup (M143)



  • Hi, I have the following configuration:

    • Mains powered silicone heater mat with an integrated thermistor
    • A second thermistor on the side of the aluminum bed
    • Duet Maestro at the current beta firmware version

    I am trying to configurethe following:

    • My board should use the bed thermistor as the control target
    • The temperature of the silicone pad shoud stay below a given temperature, lets say 120°C

    My configuration is using S0 for the silicone heater thermistor and S4 for the aluminium bed thermistor. My understanding is that I should be able to configure a monitor with M143 to limit the maximum silicone heater temperature as follows:

    ;; thermal -------------------------------------------------
    ; Sensors --------------------------------------------------
    M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 A"Bedmat"; configure sensor 0 as thermistor on pin temp0
    M308 S1 P"e0temp" Y"pt1000" A"Hotend"  ; configure sensor 1 as thermistor
    M308 S2 P"ctemp" Y"thermistor" T100000 B3950 A"Chamber"	;Chamber fan
    M308 S3 Y"mcu-temp" A"Board"
    M308 S4 P"e1temp" Y"thermistor" T100000 B3950 A"Bedplate"
    
    ; Heaters --------------------------------------------------
    ;Bed
    M950 H0 C"bedheat" T4                           ; create bed heater output on out0 and map it to sensor 4
    M143 H0 P1 T0 A2 S110 C0                     ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 110°C. Use Heater monitor 1 for it
    M143 H0 P2 T0 A0 S120 C0                     ; Fault (A0) bed heater (H0) if pad sensor (T0) exceeds 120°C. Use Heater monitor 2 for it
    M143 H0 P0 S110                            ; Set bed heater max temperature to 120°C, use implict monitor 0 which is implicitly configured for heater fault
    M140 H0   
    

    However, I see the silicone pad temperature overshooting to the point that I rather turn it of by hand:

    41490f13-9777-4104-98a8-3c274f38a8fb-image.png

    It looks like the monitors are not working - do I miss anything here?

    Edit: M122 Output

    M122
    === Diagnostics ===
    RepRapFirmware for Duet 2 Maestro version 3.2-beta3.2 running on Duet Maestro 1.0
    Board ID: 08DJM-9X66L-LG3SJ-6JKF2-3SJ6L-KAX6R
    Used output buffers: 3 of 24 (11 max)
    === RTOS ===
    Static ram: 22780
    Dynamic ram: 97892 of which 200 recycled
    Never used RAM 9176, free system stack 218 words
    Tasks: NETWORK(ready,205) HEAT(blocked,331) TMC(blocked,71) MAIN(running,480) IDLE(ready,21)
    Owned mutexes:
    === Platform ===
    Last reset 00:00:39 ago, cause: software
    Last software reset at 2020-11-21 20:12, reason: User, GCodes spinning, available RAM 9176, slot 1
    Software reset code 0x0003 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00000000 BFAR 0xe000ed38 SP 0xffffffff Task MAIN
    Error status: 0x00
    MCU temperature: min 42.3, current 42.4, max 43.3
    Supply voltage: min 0.0, current 24.4, max 24.4, under voltage events: 0, over voltage events: 0, power good: yes
    Driver 0: position 0, standstill, read errors 0, write errors 1, ifcnt 107, reads 10859, writes 8, timeouts 0, DMA errors 0
    Driver 1: position 0, standstill, read errors 0, write errors 1, ifcnt 105, reads 10858, writes 8, timeouts 0, DMA errors 0
    Driver 2: position 0, standstill, read errors 0, write errors 1, ifcnt 106, reads 10858, writes 8, timeouts 0, DMA errors 0
    Driver 3: position 0, standstill, read errors 0, write errors 1, ifcnt 101, reads 10858, writes 8, timeouts 0, DMA errors 0
    Driver 4: position 0, standstill, read errors 0, write errors 1, ifcnt 105, reads 10858, writes 8, timeouts 0, DMA errors 0
    Driver 5: position 0, standstill, read errors 0, write errors 1, ifcnt 105, reads 10858, writes 8, timeouts 0, DMA errors 0
    Driver 6: position 0, standstill, read errors 0, write errors 1, ifcnt 105, reads 10858, writes 8, timeouts 0, DMA errors 0
    Date/time: 2020-11-21 20:12:54
    Slowest loop: 25.26ms; fastest: 0.16ms
    I2C nak errors 0, send timeouts 0, receive timeouts 0, finishTimeouts 0, resets 0
    === Storage ===
    Free file entries: 10
    SD card 0 detected, interface speed: 15.0MBytes/sec
    SD card longest read time 0.9ms, write time 0.0ms, max retries 0
    === Move ===
    Hiccups: 0(0), FreeDm: 169, MinFreeDm: 169, MaxWait: 0ms
    Bed compensation in use: none, comp offset 0.000
    === MainDDARing ===
    Scheduled moves 0, completed moves 0, StepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
    === AuxDDARing ===
    Scheduled moves 0, completed moves 0, StepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1
    === Heat ===
    Bed heaters = 0 -1, chamberHeaters = -1 -1
    Heater 0 is on, I-accum = 0.2
    Heater 1 is on, I-accum = 0.0
    === GCodes ===
    Segments left: 0
    Movement lock held by null
    HTTP is idle in state(s) 0
    Telnet is idle in state(s) 0
    File is idle in state(s) 0
    USB is idle in state(s) 0
    Aux is idle in state(s) 0
    Trigger is idle in state(s) 0
    Queue is idle in state(s) 0
    LCD is idle in state(s) 0
    Daemon is idle in state(s) 0
    Autopause is idle in state(s) 0
    Code queue is empty.
    === Network ===
    Slowest loop: 6.27ms; fastest: 0.01ms
    Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions
    HTTP sessions: 1 of 8
    Interface state active, link 100Mbps full duplex
    


  • Nevermind, Fixed it - Problem was the order of my commands, I now moved the M140 and M307 to before the M143 definition:

    ;; thermal -------------------------------------------------
    ; Sensors --------------------------------------------------
    M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 A"Bedmat"; configure sensor 0 as thermistor on pin temp0
    M308 S1 P"e0temp" Y"pt1000" A"Hotend"  ; configure sensor 1 as thermistor
    M308 S2 P"ctemp" Y"thermistor" T100000 B3950 A"Chamber"	;Chamber fan
    M308 S3 Y"mcu-temp" A"Board"
    M308 S4 P"e1temp" Y"thermistor" T100000 B3950 A"Bedplate"
     
    ; Heaters --------------------------------------------------
    ;Bed
    M950 H0 C"bedheat" T4                           ; create bed heater output on out0 and map it to sensor 4
    M950 H1 C"e0heat" T1                           ; create nozzle heater output on e0heat and map it to sensor 1
    M140 H0   
    
    ;PID Settings
    M307 H0 A301.0 C845.3 D1.4 S1.00 V23.6 B0	
    M307 H1 A482.6 C291.7 D5.5 S1.00 V23.6 B0 ;V6
    
    ; Monitors & Limits
    M143 H0 P1 T0 A2 S110 C0                     ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 110°C. Use Heater monitor 1 for it
    M143 H0 P2 T0 A0 S120 C0                     ; Fault (A0) bed heater (H0) if pad sensor (T0) exceeds 120°C. Use Heater monitor 2 for it
    M143 H0 P0 S110                            ; Set bed heater max temperature to 120°C, use implict monitor 0 which is implicitly configured for heater fault
    M143 H1 S400                                  ; set temperature limit for heater 1 to 275C
    
    

Log in to reply