Since yesterday I've been configuring physical buttons to fire triggers. These are simple functions to raise the gantry, warm up the table, reset, pause/continue.
Turns out I detected unattended trigger executions right after resetting or turning on the machine. It turns on and heats the table by itself, or turns on and over the gantry. She is running triggers randomly. I've already checked all the cables, everything has been soldered, they are well crimped, there is no bad contact or short. What can it be?
Below is my config and trigger files.
config.g
; Configuration file for Duet WiFi (firmware version 1.21)
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v2 on Sun Aug 04 2019 18:49:42 GMT-0300 (Horário Padrão de Brasília)
; General preferences
M929 P"log.txt" S2 ; start logging to file eventlog.txt
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"Voron" ; set printer name
M669 K1 ; select CoreXY mode
; Network
M552 S1 ; enable network and acquire dynamic address via DHCP
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; disable FTP
M586 P2 T1 S0 ; disable Telnet
; Wait a bit so boards can sync up
G4 S5
M569 P0 S1 ; A (X (right) motor direction)
M569 P1 S1 ; B (Y (left) motor direction)
M569 P3 S1 ; Extruder #1
M569 P5 S0 ; Z1
M569 P6 S0 ; Z2
M569 P7 S1 ; Z3
M569 P8 S1 ; Z4
; Drive mappings
M584 X0 Y1 Z5:6:7:8 E3 ; set drive mapping
M350 X16 Y16 Z16 U16 E16 I1 ; Configure microstepping with interpolation
M92 X80 Y80 Z400 E418 ; Set steps per mm
M566 X600.00 Y600.00 Z200 E400.00 ; set maximum instantaneous speed changes (mm/min)
M203 X18000.00 Y18000.00 Z600 E15000.00 ; set maximum speeds (mm/min) ;Z600
M201 X1000.00 Y1000.00 Z100 E4000.00 ; set accelerations (mm/s^2)
M906 X1000 Y1000 Z1000 E350 I30 ; set motor currents (mA) and motor idle factor in per cent
M204 P1200 T2000 ; M204 P600 T1800 ; Set printing acceleration and travel accelerations
M84 S30 ; Set idle timeout
;Configs do Renato
;M906 X1000 Y1000 Z900 E500 ; XYZ and E current
;M566 X800 Y800 Z60 E8000 ; Set maximum instantaneous speed changes (mm/min)
;M203 X18000 Y18000 Z3000 E15000 ; Set maximum speeds (mm/min)
;M201 X1800 Y1800 Z250 E1800 ; Set maximum accelerations (mm/s^2)
;M204 P1200 T2000 ; Set printing acceleration and travel accelerations
; Axis Limits
M208 X0 Y0 Z0 S1 ; Set axis minima
M208 X350 Y350 Z315 S0 ; Set axis maxima
; Endstops
M574 X2 S1 P"!xstop" ; configure active-high endstop for high end on X via pin xstop
M574 Y2 S1 P"!ystop" ; configure active-high endstop for high end on Y via pin ystop
M591 P2 C"e0_stop" S1 D0 ; filament monitor connected to E0_stop
; Bed leveling
M671 X-50:-50:350:350 Y5:370:370:5 S20 ; Z leadscrews positions Left Front - Let Rear - Right Rear - Right Front
M557 X30:320 Y25:325 P15:15
; Z-Probe
M558 K0 P5 C"zprobe.in" H10 F900:120 T7000 A3 S0 R0.1 ; set Z probe type to unmodulated and the dive height + speeds
G31 K0 P500 X0 Y25 Z3.52 ;5.55 ; inductive probe offset, not critical, only used for coarse homing
;M558 K1 P8 C"zstop" T6000 F120 H10 A3 S0.005 B1 R0.2
;G31 K1 P500 X0 Y0 Z2.35 ; Z switch offset (if positive, greater value = lower nozzle. if negative, more negative = higher nozzle)
;;Bed heater dual thermistor setup
;M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 A"Bed Pad" ; configure sensor 0 as thermistor on pin bedtemp (pad sensor)
;M308 S2 P"e1temp" Y"thermistor" T100000 B3950 A"Bed Plate" ; configure sensor 2 as thermistor on pin e1temp (plate sensor)
;M950 H0 C"bedheat" T2 Q10 ; create bed heater output on out0 and map it to sensor 2 (plate sensor). Set PWM frequency to 10Hz
;M140 P0 H0 ; Mark heater H0 as bed heater (for DWC)
;M143 H0 P1 T0 A2 S115 C0 ; Regulate (A2) bed heater (H0) to have pad sensor (T0) below 115°C. Use Heater monitor 1 for it
;M143 H0 P2 T0 A1 S120 C0 ; Shut off (A1) bed heater (H0) if pad sensor (T0) exceeds 120°C. Use Heater monitor 2 for it
;M143 H0 S120 ; Set bed heater max temperature to 120°C, use implict monitor 0 which is implicitly configured for heater fault
;M307 H0 B1 S1 ;0.8 ; Enable Bang Bang mode and set PWM to 60% to avoid warping
;;HotEnd
;M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.060000e-8 A"Hotend" ; configure sensor 1 as thermistor (ATC Semitec 104GT2)
;M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
;M143 H1 S300 ; set temperature limit for heater 1 to 300°C
; mcu / drivers temperature sensor / voltage thresholds
M308 S3 Y"drivers" A"Drivers Duet" ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duet
M308 S4 Y"drivers-duex" A"Drivers Duex" ; configure sensor 2 as temperature warning and overheat flags on the TMC2660 on Duetdrivers-duex
M308 S5 Y"mcu-temp" A"MCU" ; configure sensor 3 as thermistor on pin e1temp for left stepper
M912 P0 S-5.9 ; Calibrating the MCU temperature
M911 S22 R23 P"M913 X0 Y0 G91 M83 G1 Z3 E-5 F1000" ; set voltage thresholds and actions to run on power loss
;Backup Heaters Original
M308 S0 P"bedtemp" Y"thermistor" T100000 B3950 ; configure sensor 0 as thermistor on pin bedtemp
M950 H0 C"bedheat" T0 ; create bed heater output on bedheat and map it to sensor 0
M307 H0 R0.135 C738.7 D1.34 S1.00 V23.5 ; enable bang-bang mode for the bed heater and set PWM limit
M140 H0 ; map heated bed to heater 0
M143 H0 S125 ; set temperature limit for heater 0 to 120C
M308 S1 P"e0temp" Y"thermistor" T100000 B4725 C7.06e-8 ; configure sensor 1 as thermistor on pin e0temp
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
;M307 H1 B0 R2.039 C177.8 D6.23 S1.00 V24.0 ; disable bang-bang mode for heater and set PWM limit
M307 H1 R2.537 C232.238:160.826 D6.18 S1.00 V23.9 B0 I0
M143 H1 S250 ; set temperature limit for heater 1 to 280C
; Fans
M950 F0 C"fan0" Q500 ; create fan 0 on pin fan0 and set its frequency
M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off
M950 F1 C"fan1" Q500 ; create fan 1 on pin fan1 and set its frequency
M106 P1 S1 H1 T50 ; set fan 1 value. Thermostatic control is turned on
; Tools
M563 P0 D0 H1 F0 S"Extruder" ; define tool 0
G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
; Miscellaneous
M575 P1 S1 B57600 ;enable support for PanelDue
T0 ; Select first tool
M501
M290 S0.0 ; babystep the BED UP
M572 D0 S0.08; PA
M84
;Botões físicos rodando macros
;(Arquivos de trigger precisam estar no diretório sys)
;Botão fechado conecta pinos GND e Ex_STOP (x é o número da porta negativa. Não usar porta Vin, pino do meio)
;M950 J2 C"^duex.e2stop"
;M581 P2 T2 S0 R0 ; Executa trigger2.g
M950 J3 C"^duex.e3stop"
M581 P3 T7 S0 R0 ; Executa trigger3.g AQUECE MESA 110 GRAUS
M950 J4 C"^duex.e4stop"
M581 P4 T4 S0 R0 ; Executa trigger4.g RESET
M950 J5 C"^duex.e5stop"
M581 P5 T5 S0 R0 ; Executa trigger5.g UP Z 25mm
M950 J6 C"^duex.e6stop"
M581 P6 T6 S0 R0 ; Executa trigger6.g PAUSE/RESUME
trigger4.g
M999
trigger5.g
if state.status == "idle" || state.status == "busy"
M564 H0
G91
G1 Z25
G90
M564 H1
trigger6.g
if state.status == "processing"
M25
M99
if state.status == "paused"
M24
M99
trigger7.g
if state.status == "idle" || state.status == "busy"
if heat.heaters[0].active > 0
M140 S0
else
M140 S110
I'm still learning about the object model and metacommands, they may not be very well written, but they are working.
While I don't understand what's happening, I decided to disable the physical buttons.
My machine is a voron 2.4, with duet 2 wifi and duex 5, RRF3.3.0
Placa: Duet 2 WiFi (2WiFi)
Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.3 (2021-06-15)
Versão do Duet WiFi Server: 1.26
Duet Web Control 3.3.0