@dc42 Many thanks for advice, will keep u posted when done.
Posts made by audryhome
-
RE: DUET3 6HC with NEMA17
-
RE: DUET3 6HC with NEMA17
@Phaedrux I am thinking about current, both peak and hold, since it's a CNC, not a 3D printer.
-
DUET3 6HC with NEMA17
I want to rebuild a ROLAND CAMM3 machine, which seems to have 3xNEMA17 X Y Z.
Do I need a DUET3 6HC, eventually associate 2 drivers for one stepper or a DUET 6XD and some external stepper drivers like DM542T?
Many thanks for advice
-
RE: Modifying a global variable while running
@dc42 So I solved the problem by putting a simple macro that shows up on Panel Due main page.
This toggles the variable that control the cooling. Then I can modify it while a macro is running in a loop.Regarding daemon.g, I think user should have control on the 10 sec delay. I understand the reason why this is done that way, but this greatly limit the usability of this interesing functionality.
Many thanks again for help
-
RE: Modifying a global variable while running
@dc42 Yes, but it will fire only at 10 sec interval, plus the G4 parameter, plus more, which is far too long.
I understand the reason why you stretched this delay, but in my case, I just scan the print area with the fan running at100%, nothing to do with print quality. BTW it cools the part, dual extruders and bed 40% quicker on my bigbox.For instance, a G4 S4 will end up with 4 +10 minimal delay. Since I cannot change the 10 sec delay, it is useless. Would need as low as 100 ms to be workable for my use case.
BUT it works when I use the DWC console (set global.cool_part=false) while printing through Octoprint on a RPI 4. There is hope there, except I have to switch from Octoprint to DWC, what I try to avoid.
I don't dislike DWC, but I use mainly the PanelDue rather than the web interface once launched the print through OCTOAPP on mobile, and setting up a global variable through the panel is not very easy and I don't see how I can do it through octoapp.Maybe I miss something on panel due ( custom button with a meta command on main page possible? )
Many thanks
-
RE: Modifying a global variable while running
@cosmowave Thanks for the tip, but I cannot wait 10 Sec between action not put a loop inside the daemon.g code, since my code is scanning a a certain rate to cool down, and I need also to deactivate the daemon.g from the outside => more global variables..... Since this 10 sec is hard coded, I'm stuck....
-
Modifying a global variable while running
I wrote a macro to cool down parts after print, using the fan and the XY part trace to scan the entire printed area of the bed until head temperature reach an acceptable value. The idea is to accelerate part cool down, thus reducing wait time.
However, this process should be interrupted manually if the cooled part is easily removed from bed without damaging it.
I run a macro to do this, however I would like to interrupt the macro by setting a flag from command line, something like set global.part_cool = false. Macro does something like
"while (global.part_cool and temperature> something)
scan_the_bed
"Using G4 P100 in the loop doesn't solve the problem, since G4 does wait, but don't allow me to send command to set a global variable until macro end, which is precisely what I want to avoid.
Using daemon.g won't solve the problem, since it will execute a set of commands the same way, only at regular intervals.
Question: Is there a command/trick that would allow this, other than wiring a hardware button somewhere and using it as a trigger?
Many thanks for help
-
+state.time behavior
+state.time converts the present time to an absolute 1970 value.
as the documentation says:- int->int, float->float Unary +
- DateTime->int Converts a date & time value to a number of seconds since the datum. Available in RRF 3.4 and later.
It is either an unary operator or a function.
When I use it in expression if(+state.time - global.last_time) I get an error
"Error: in file macro line 14 column 17: meta command: expected numeric or enumeration value after '+' " which means the it doesn't recognize the + operator function in this context.
Solution is to declare a var then use it at the same place.
Is it a desired behavior or did I miss something?
Many thanks
-
RE: Heater "pumping" when in standby
@phaedrux I did not record the graph on DWC since I mainly use Octoprint as a GUI.
I don't think it's an artefact from octoprint but I'll check next time it happens and let you know.
let's see -
G29 S1 doesn't set move.compensation.meshDeviation.deviation
Since G29 S1 does load the heightmap.csv (by default) it should also set the corresponding values in the object model.
I use these object model values to make a sanity check before launching a print, to avoid failures caused by an inconsistent bed level.
There is no other mean to check heightmap.csv values, AFAIN there is no possibility to read these values using a meta command or classical gcode.
Any idea?
-
RE: Heater "pumping" when in standby
@phaedrux Here is the config.g & config_override.g
The heater that pumps is H2
config.g
; executed by the firmware on start-up
;
; generated by RepRapFirmware Configuration Tool v3.3.10 on Fri Jan 07 2022 10:08:48 GMT+0100 (heure normale d’Europe centrale); General preferences
M575 P1 S1 B57600 ; enable support for PanelDue
G90 ; send absolute coordinates...
M83 ; ...but relative extruder moves
M550 P"BigBox_Duet" ; set printer name; Network
M552 S1 P"XXXXX" ; enable network
M586 P0 S1 ; enable HTTP
M586 P1 S1 ; disable FTP
M586 P2 S1 ; disable Telnet; Drives
M569 P0 S0 ; physical drive 0 goes forwards
M569 P1 S1 ; physical drive 1 goes backwards
M569 P2 S1 ; physical drive 2 goes backwards
M569 P3 S0 ; physical drive 3 goes forwards
M569 P4 S0 ; physical drive 4 goes forwards
M584 X0 Y1 Z2 E3:4 ; set drive mapping
M350 X16 Y16 Z16 E16:16 I1 ; configure microstepping with interpolation
M92 X160.00 Y360.00 Z1600.00 E304.00:304.00 ; set steps per mm
M566 X600.00 Y600.00 Z30.00 E20.00:20.00 ; set maximum instantaneous speed changes (mm/min)
M203 X8000.00 Y6000.00 Z360.00 E1200.00:1200.00 ; set maximum speeds (mm/min)
M201 X500.00 Y500.00 Z20.00 E250.00:250.00 ; set accelerations (mm/s^2)
M906 X400 Y400 Z1200 E800:800 I30 ; set motor currents (mA) and motor idle factor in per cent
M84 S30 ; Set idle timeout; Axis Limits
;M208 X0 Y0 Z0 S1 ; set axis minima
M208 X0:330 Y0:240 Z0:300 S0 ; set axis maxima; Endstops
M574 X1 S1 P"xstop" ; configure switch-type (e.g. microswitch) endstop for low end on X via pin xstop
M574 Y1 S1 P"ystop" ; configure switch-type (e.g. microswitch) endstop for low end on Y via pin ystop
M574 Z1 S2; Z-Probe
;M558 P5 C"zprobe.in" H5 F120 I1 T6000 ; set Z probe type to unmodulated and the dive height + speeds
M558 P1 C"zprobe.in" I0 H5 R0.5 F340 T6000
;M558 P1 X0 Y0 Z1 H3 F200 T5000 ; Smart IR Z probe, used for homing Z axis, dive height 3mm, probe speed 200mm/min, travel speed 5000mm/min
G31 X-60.0 Y0 Z1.6 P510 ; Set the probe height and threshold (put your own values here)
M557 X10:275 Y5:195 S85 ; define mesh grid; 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:60 ; set fan 1 value. Thermostatic control is turned on
M950 F2 C"fan2" Q500 ; create fan 2 on pin fan2 and set its frequency
M106 P2 S1 H2 T50:60 ; set fan 2 value. Thermostatic control is turned on; Heaters
M308 S0 P"bed_temp" Y"thermistor" T100000 B4725 C7.06e-8 A"Bed" ; configure sensor 0 as thermistor on pin bedtemp Semitec 104 GT2 for AC Bed
M950 H0 C"bedheat" T0 A"Bed" Q10 ; create bed heater output on bedheat and map it to sensor 0
M140 H0 ;S80 R60 ; map heated bed to heater 0 , active 80°C, stdby 60°C
M143 H0 S150 ; set temperature limit for heater 0 to 120C
M308 S1 P"spi.cs2" Y"rtd-max31865" A"Direct" ; configure sensor 1 as PT100 on pin spi.cs1
M950 H1 C"e0heat" T1 ; create nozzle heater output on e0heat and map it to sensor 1
M570 H1 P5 T20 ; set heater fault detection parameter
M143 H1 S280 ; set temperature limit for heater 1 to 280C
M308 S2 P"spi.cs1" Y"rtd-max31865" A"Bowden" ; configure sensor 2 as PT100 on pin spi.cs2
M950 H2 C"e1heat" T2 ; create nozzle heater output on e1heat and map it to sensor 2
M570 H2 P5 T20 ; set heater fault detection parameter
M143 H2 S280 ; set temperature limit for heater 2 to 280C; Tools
;Tool0
M563 P0 D0 H1 F0 ; define tool 0
G10 P0 X0 Y0 ; set tool 0 axis offsets
G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C
; Tool1
M563 P1 D1 H2 F0 ; define tool 1
G10 P1 X-37.61 Y1.44 Z0 ; set tool 1 axis offsets
G10 P1 R0 S0 ; set initial tool 1 active and standby temperatures to 0C; read stored PID parameters
M501config_ovverride.g
; config-override.g file generated in response to M500 at 2022-02-16 09:07
; This is a system-generated file - do not edit
; Heater model parameters
M307 H0 R0.935 K0.408:0.000 D2.93 E1.35 S1.00 B0
M307 H1 R1.942 K0.445:0.129 D5.33 E1.00 S1.00 B0 V24.4
M307 H2 R1.851 K0.261:0.199 D5.67 E1.35 S1.00 B0 V24.4 -
Heater "pumping" when in standby
As shown in the picture, the yellow heater "pumps" when in standby, then goes back to normal as it activated again. No problem so far since I never saw an active heater pumping.
Both heaters have been tuned with M303 then M500 stored parameters in config_override.g -
Expose heightmap in Object model
This would be especially useful yo check for a false measurement before printing, that could lead to bed collision or void extrusion.
Suggest that it is limited to a reasonable number of points (let's say 8 x and the values are stored in arrays.
-
Heater fault, including one unused
I have a small printer (Fabtotum reengineered) using E3D V6, only one heater, and it stopped working suddenly today at power on. Tried to switch to the free remaining heater port with updated config.g (e1heat instead of e0heat) but no result. Leds don't light up as well.
I think about a hardware failure, so I would like to diagnose the problem, and possibly cure it.
My board is a V1.03 bought in 2018, so out of warranty.
I suppose the lack of fuse for heaters in this board version is also part of the problem, I didn't notice any short on the heater wiring, it shows 20 Ohms. Could an bad contact (this heater is connected through a 2 min Molex) be the culprit because of the wiring inductance?Never had any heater nor any other fault on this machine, worked like a charm until this morning :(.
Many thanks
-
RE: Heater fault
@dc42 Heater fault happens at power on only.
So far, my best remedy is to put a 30 Sec delay at the end of config.g and this cures the symptom.
Will investigate further. Possibly a config mismatch or a wiring problem, but since bed heater is also in the game, I doubt cabling is an issue since they are not running the same way on a bigbox. -
Heater fault
Heater fault at startup
I need to place a 100 msec delay between M307 and M143 in order to avoid a heater fault on heater 0 at startup.
I conclude there must be some delay between setting up heaters parameters and the setting up the limit temps.
Am I right?
Many thanks
-
RE: Writing text and expressions to SD Card
@o_lampe Many thanks, as always the evidence is just in front of your eye!
-
Writing text and expressions to SD Card
I want to store some data on SD Card, for instance remember the number of prints, and some specific data gathered during each print, and some macros that automate my printer.
M28 and M29 are fine for writing macros, but since I can use expressions and meta commands, I didn't found any way to expand an expression in a macro, for instance G1 Z{global.last_Z} is not expanded.
I probably missed some point, since I am not a Gcode expert, but I am thinking about a M29.1 code that would simply express as
M29.1 {"var.storedvar ="^var.actualvar^" ; recall last counter"} that would simply expand the above and store it. asvar.storedvar = 42 ; recall last counter
This would be similar to an M118 with output redirected to opened SDCard with M28.
Is this possible ?
Did I miss something in RRF 3.3?
Many thanks to the community