Triggers firing by themselves on restart
-
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 -
@rodrigormaraujo A possible solution for that can be to check the "trigger input" again (after a short delay) in the corresponding macro file.
So you can avoid false triggering because of a unclean signal. -
@rodrigormaraujo
it's not directly related, but " == " is not necessary in gcode meta comparison.The 'debouncing' method @cosmowave described should do the trick. Maybe adding real pullup resistors will also help keeping the noise down on the trigger line. The internal pullups you've activated with " ^pinname" are probably too weak? (For Duet3 users: it's not recommended to use them at all, AFAIK)
-
@cosmowave please how can i do this? I have no idea.
-
@o_lampe Thanks for the tip. I don't really know what resistor value I could use. Can you tell me one?
-
@rodrigormaraujo
4.7k -10k ohms are common. (that is 4700 -10000 ohms for the uneducated readers) -
@rodrigormaraujo said in Triggers firing by themselves on restart:
please how can i do this? I have no idea.Something like this. You have to addapt this code to your inputs:
This code has to be in the beginning of the Trigger macro!if fans[0].rpm < 100 G4 P10 if fans[0].rpm < 100 M25 M118 S"No Water flow!"
-
@o_lampe said in Triggers firing by themselves on restart:
4.7k -10k ohms are common. (that is 4700 -10000 ohms for the uneducated readers)
Ok, thank you!
-
@cosmowave thanks for the answer.
Got it, but I'm not sure it would work well, because I check the status (state.status == "idle" || state.status == "busy"). This state will be the same before and after the G4. The problem, as I understand it, is the reading of a false signal through the endstop port, which is apparently extremely sensitive to noise. -
Are the switches of the normally closed type?
Are the triggers running when you press the switch or release the switch.
I've got plain normally closed switches on both Duet 2 and Duet 3 hardware using the built-in pull-up resistors and have never seen your kind of problem.
Frederick
-
@rodrigormaraujo said in Triggers firing by themselves on restart:
is the reading of a false signal through the endstop port, which is apparently extremely sensitive to noise.
Eventually you can improve the cabeling (shielded cable)? try to not routing them near to stepper/ stepper cables...
-
@fcwilt said in Triggers firing by themselves on restart:
Are the switches of the normally closed type?
Are the triggers running when you press the switch or release the switch.
I've got plain normally closed switches on both Duet 2 and Duet 3 hardware using the built-in pull-up resistors and have never seen your kind of problem.No, I used normally open mechanical keyboard (cherry mx green) buttons.
[https://pt.aliexpress.com/item/1005001681627152.html?spm=a2g0s.9042311.0.0.2742b90a6Tptvm]
A friend commented to me about using NC buttons. I ordered magnetic filters on aliexpress. If the problem persists I will look for these buttons, but I will have to review how to install them on the skirts of the voron.
-
@cosmowave said in Triggers firing by themselves on restart:
Eventually you can improve the cabeling (shielded cable)? try to not routing them near to stepper/ stepper cables...
I ordered magnetic filters on the advice of a friend who works in electronics and builds cnc machines. According to him, this will help eliminate noise.
[https://pt.aliexpress.com/item/4000803662446.html?spm=a2g0s.9042311.0.0.3366b90aNy53pX] -
@rodrigormaraujo said in Triggers firing by themselves on restart:
@fcwilt said in Triggers firing by themselves on restart:
Are the switches of the normally closed type?
Are the triggers running when you press the switch or release the switch.
I've got plain normally closed switches on both Duet 2 and Duet 3 hardware using the built-in pull-up resistors and have never seen your kind of problem.No, I used normally open mechanical keyboard (cherry mx green) buttons.
[https://pt.aliexpress.com/item/1005001681627152.html?spm=a2g0s.9042311.0.0.2742b90a6Tptvm]
Normally closed setups are less sensitive to noise. Your normally open switches might, perhaps, be the cause of your problem.
Frederick
-
@fcwilt yes, thank you!