@droftarts Understood, optoisolation still a good idea, I'll see about building it in!
Posts made by MRob
-
RE: Duet maestro with >24V heated bed
-
RE: Duet maestro with >24V heated bed
@droftarts Oh, thats a much better idea! I am sure I could free up a fan header. So if I am reading the m-codes correctly:
M950 H0 C"bed_heat" T0
just becomes
M950 H0 C"fan2" T0
That is easy enough, thanks for your help. -
RE: Duet maestro with >24V heated bed
@dc42 @droftarts thanks guys, appreciate the fast replies!
So it sounds like it should be OK, at least the first option, but the LED might fail - not a big deal to me, I can barely see it anyway. I could try to swap the resistor but board level mods are not something I have really done before. I note you've both stayed away from answering the second question though! Perhaps it is less predictable?Using the output to drive another switching device would be safer true, but I'd rather not go buying a SSR unless I have to, not something I am familiar with and sourcing looks difficult or expensive. Alternative is driving another mosfet, but Vgs of 24V would cause problems, perhaps a simple voltage divider would work if the gate current can be kept within spec. Or I could buy a 24v to 5v optocoupler on ebay, that would be safer, I have some STP40NF10 mosfets around which should work, but then I also need to add a 5v rail. Running it all direct and from a single supply with a dc-dc 30 -> 24V for the board would be easier, but perhaps I am being lazy
-
Duet maestro with >24V heated bed
Hi, couple of quick questions with my maestro board. I'm using a hot bed thats underpowered, poor manufacturing tolerances, so I'd like to boost it a little by connecting perhaps 28-30V. Would it be OK to run this as a second power supply, routing the higher voltage through the bed and control mosfet, common ground between supplies, obviously not running the maestro itself at that voltage. I guess it will be fine but just want to double check!
A second option, rather than running two supplies, I wonder about running a 30V supply with dc-dc step down to the board's 24V. Same setup, but there could be a tiny lag between the 30V turning on, and the 24V being available. My guess is that it will be fine as the mosfet will be held low, but want to double check.... I'm mechanical first, not electrical
Understood issues with power scaling to the square of voltage etc.
-
RE: Gcode lines per second?
@oliof Thanks, good to know! Yes, I'm looking to build a CNC lathe / 4th axis carving machine, possibly based on duet3, just trying to iron out uncertainties before making final a decision on which system to use as control.
-
RE: Gcode lines per second?
@dc42 Thanks, although I dont have a duet 3 to test with at the moment :). Best I have is an old maestro running 2.03 for my 3d printer. Perhaps I could update, and then create a high details file to get a feel for it, if there are no known benchmarks.
-
Gcode lines per second?
Realising this may be a difficult (or impossible) question to definitively answer, and likely depends on the complexity of each line, but is there any ballpark figure for the number of gcode lines / second that the duet3 can handle? I run a rotary axis carving machine, also building a lathe in the next few weeks, just wondering how much to future proof it in case RR gets G93 moves in the future! I probably reach 200-300 lines / sec at the moment, 4 axis (but mostly A and Z moving for these runs).
-
RE: G93 Inverse Time Mode
@dc42 +1 would love to see this!! Was discussing it with T3P3Tony in November actually.
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony Ah OK, so could be around 6 months then, I'll go UCCNC in the meanwhile.
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony That sounds great!! Although it does mean I need to ask when 3.5 final release is expected :).
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony Looking to start a new build soon, in the design phase at the moment, any thoughts on when these features might be implemented? Not expecting any sort of hard promises obviously, just a very rough eta would be useful! Like 3 months, 6 months etc.
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony Amazing! Thank you! I'll keep an eager eye on this.
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony Yeah exactly, even if you can include it, it is not very helpful.
So ahhh..... any thoughts on whether this could be built into RR at some point?
-
RE: Rotary 4th axis rollover on 360, G93, macros
@t3p3tony Sure, so my understanding is that rotary axis do not take part in a normal feedrate calculation in RR. So a move of G1 A100 Y0.1 F100 would ignore the A axis, and only calculate based on the tiny Y move, making it rapidly spin when it should be moving at a sedate pace. Fundamentally deg/minute is different from mm/minute, so you cannot mix them together. G93 sidesteps all that, it is much more elegant. Hope this answers the question!
-
RE: Rotary 4th axis rollover on 360, G93, macros
Thanks for the replies!
G93 is inverse time feedrate, for some reason I had it in my head that this was supported in RR. It is useful / necessary for rotary movement because, rather than defining the speed at which a move should take place, it gives a value for how long it should take to do the move. Obviously distance moved on a rotary axis depends on distance of the tool head from the axis of rotation, so deg/minute is not very helpful. G93 moves allow for a continuous speed of motion over the surface of the rotary piece, with the time for each move calculated in post, for my by Fusion 360. Since I do lots of detailed carving, I wont be able to use Duet without this feature, a real shame.
Great to hear you're looking to implement rollover on 360 though, and I'll look into meta commands, sounds good.
Have to say, I'm really impressed with the speed at which duet and RR are evolving, even if you dont have all my wishlist features yet it's incredibly impressive!
-
Rotary 4th axis rollover on 360, G93, macros
Hi! Looking to build myself a CNC machine dedicated to 4th axis milling (very detailed carving work) . Am using UCCNC on my current rig but would prefer to unshackle myself from a standalone PC acting as controller. A few questions then...
-
When adding a 4th axis, a feature in UCCNC which is REALLY useful for me is roll over on 360deg, so when it hits 360 it just goes to 0 and starts counting up again, or -10 becomes 350 etc. Is there any way to do this in reprap? I run very long programs with thousands of turns, and would like to go full mill/turn with re-homing A after each rough turning operation....
-
Second, just to check, will g93 commands play nicely with a rotary axis? I know that it is excluded from normal feedrate calculations but not sure about the inverse time variety...
-
Final question, just to check, in mach3 and UCCNC you can create fully programmable macros, mach using a variant of VB and UCCNC with c#. From what I can see, duet/reprap macros are limited to pure g-code, is this correct?
Thanks for your time!
-
-
RE: Unknown steppers?
Thanks, good to know - although I'm not sure it would work with a 4 pin, as the control circuit probably wants a certain voltage to function? But thinking more about 3 pin cpu fans, I think it should be good. I just bought one to test, at 400ma it pretty much has to be speed controllable, but also the laptop needs to know RPM to monitor for fault. So third wire must be tacho, therefore it "should" be PWM control like standard 5015 fans. If I can get it to work consistently, then it really is an excellent solution. Previous one (280mA) was seriously powerful before the control circuit kicked in, and they are not even expensive.
-
RE: Unknown steppers?
Addendum: My CPU fan seems to have some sort of onboard power management, and reduces its speed either based on time or sensing "blockage" not sure yet. Requires power off/on again to reset back to previous high flow. Most annoying! Not sure why it does this, but others may with to avoid going down this route...
On the other hand, my above PN for the fan is actually wrong, I nearly bought it but then went with ZC0560120VH-6A, which is 4 pin and therefore tacho controlled. Perhaps a 3 pin fan wouldnt be so picky? Assuming it is for PWM and not tacho again... I'll test one. Also possible is that adding a circuit to regularly reset the fan, would be a workaround, although that is probably more hassle than it is worth... -
RE: Filament usage / Completion estimates not working?
Upgraded firmware to latest, so 2.05. Using Prusa slic3r. Gcode, same issue with many models but copied are the start and end portions of one I tried:
; generated by PrusaSlicer 2.1.0+win64 on 2019-12-01 at 18:13:35 UTC
;
; external perimeters extrusion width = 0.60mm
; perimeters extrusion width = 0.60mm
; infill extrusion width = 0.68mm
; solid infill extrusion width = 0.68mm
; top infill extrusion width = 0.68mm
; support material extrusion width = 0.52mm
; first layer extrusion width = 0.63mmM107
M190 S85 ; set bed temperature and wait for it to be reached
M104 S240 ; set temperature
G28 ; home all axesG1 Z2 F8000 ; lift nozzle
G1 X150 Y10
M109 S240 ; set temperature and wait for it to be reached
G21 ; set units to millimeters
G90 ; use absolute coordinates
M82 ; use absolute distances for extrusion
G92 E0
; Filament-specific end gcode
;END gcode for filament
M104 S0; Set Hot-end to 0C (off)
;M140 S0; Set bed to 0C (off)G91
G1 F1800 E-2
G1 F5000 E-3 Z5
G90G28 X0 ; home X axis
M84 ; disable motors
; filament used [mm] = 3032.0
; filament used [cm3] = 7.3
; filament used [g] = 7.3
; filament cost = 0.1
; total filament used [g] = 7.3
; total filament cost = 0.1
; estimated printing time (normal mode) = 2h 10m 7s; avoid_crossing_perimeters = 0
; bed_custom_model =
; bed_custom_texture =
; bed_shape = 0x0,280x0,280x300,0x300
; bed_temperature = 85
; before_layer_gcode =
; between_objects_gcode =
; bottom_fill_pattern = rectilinear
; bottom_solid_layers = 4
; bridge_acceleration = 0
; bridge_angle = 0
; bridge_fan_speed = 100
; bridge_flow_ratio = 0.9
; bridge_speed = 10
; brim_width = 5
; clip_multipart_objects = 0
; complete_objects = 0
; cooling = 1
; cooling_tube_length = 5
; cooling_tube_retraction = 91.5
; default_acceleration = 0
; default_filament_profile = ""
; default_print_profile =
; deretract_speed = 0
; disable_fan_first_layers = 2
; dont_support_bridges = 1
; duplicate_distance = 6
; elefant_foot_compensation = 0
; end_filament_gcode = "; Filament-specific end gcode \n;END gcode for filament\n"
; end_gcode = M104 S0; Set Hot-end to 0C (off)\n;M140 S0; Set bed to 0C (off)\n\nG91\nG1 F1800 E-2\nG1 F5000 E-3 Z5\nG90\n\nG28 X0 ; home X axis\nM84 ; disable motors\n
; ensure_vertical_shell_thickness = 0
; external_perimeter_extrusion_width = 0.6
; external_perimeter_speed = 30
; external_perimeters_first = 0
; extra_loading_move = -2
; extra_perimeters = 1
; extruder_clearance_height = 20
; extruder_clearance_radius = 20
; extruder_colour = ""
; extruder_offset = 0x0
; extrusion_axis = E
; extrusion_multiplier = 1
; extrusion_width = 0.6
; fan_always_on = 0
; fan_below_layer_time = 60
; filament_colour = #29B2B2
; filament_cooling_final_speed = 3.4
; filament_cooling_initial_speed = 2.2
; filament_cooling_moves = 4
; filament_cost = 11
; filament_density = 1
; filament_diameter = 1.75
; filament_load_time = 0
; filament_loading_speed = 28
; filament_loading_speed_start = 3
; filament_max_volumetric_speed = 0
; filament_minimal_purge_on_wipe_tower = 15
; filament_notes = ""
; filament_ramming_parameters = "120 100 6.6 6.8 7.2 7.6 7.9 8.2 8.7 9.4 9.9 10.0| 0.05 6.6 0.45 6.8 0.95 7.8 1.45 8.3 1.95 9.7 2.45 10 2.95 7.6 3.45 7.6 3.95 7.6 4.45 7.6 4.95 7.6"
; filament_settings_id = ApolloX
; filament_soluble = 0
; filament_toolchange_delay = 0
; filament_type = ABS
; filament_unload_time = 0
; filament_unloading_speed = 90
; filament_unloading_speed_start = 100
; fill_angle = 0
; fill_density = 15%
; fill_pattern = triangles
; first_layer_acceleration = 0
; first_layer_bed_temperature = 85
; first_layer_extrusion_width = 0.63
; first_layer_height = 0.22
; first_layer_speed = 10
; first_layer_temperature = 240
; gap_fill_speed = 30
; gcode_comments = 0
; gcode_flavor = reprap
; gcode_label_objects = 0
; high_current_on_filament_swap = 0
; host_type = duet
; infill_acceleration = 0
; infill_every_layers = 1
; infill_extruder = 1
; infill_extrusion_width = 0.68
; infill_first = 0
; infill_only_where_needed = 0
; infill_overlap = 0%
; infill_speed = 60
; interface_shells = 0
; layer_gcode =
; layer_height = 0.16
; machine_max_acceleration_e = 10000,5000
; machine_max_acceleration_extruding = 1500,1250
; machine_max_acceleration_retracting = 1500,1250
; machine_max_acceleration_x = 9000,1000
; machine_max_acceleration_y = 9000,1000
; machine_max_acceleration_z = 500,200
; machine_max_feedrate_e = 120,120
; machine_max_feedrate_x = 500,200
; machine_max_feedrate_y = 500,200
; machine_max_feedrate_z = 12,12
; machine_max_jerk_e = 2.5,2.5
; machine_max_jerk_x = 10,10
; machine_max_jerk_y = 10,10
; machine_max_jerk_z = 0.2,0.4
; machine_min_extruding_rate = 0,0
; machine_min_travel_rate = 0,0
; max_fan_speed = 30
; max_layer_height = 0
; max_print_height = 400
; max_print_speed = 80
; max_volumetric_speed = 0
; min_fan_speed = 15
; min_layer_height = 0.07
; min_print_speed = 5
; min_skirt_length = 0
; notes =
; nozzle_diameter = 0.6
; only_retract_when_crossing_perimeters = 0
; ooze_prevention = 0
; output_filename_format = [input_filename_base].gcode
; overhangs = 1
; parking_pos_retraction = 92
; perimeter_acceleration = 0
; perimeter_extruder = 1
; perimeter_extrusion_width = 0.6
; perimeter_speed = 60
; perimeters = 3
; post_process =
; print_host = 192.168.1.24
; print_settings_id = ABS
; printer_model =
; printer_notes =
; printer_settings_id = D9
; printer_technology = FFF
; printer_variant =
; printer_vendor =
; printhost_apikey =
; printhost_cafile =
; raft_layers = 0
; remaining_times = 0
; resolution = 0
; retract_before_travel = 2
; retract_before_wipe = 0%
; retract_layer_change = 1
; retract_length = 3.5
; retract_length_toolchange = 10
; retract_lift = 0
; retract_lift_above = 0
; retract_lift_below = 0
; retract_restart_extra = 0
; retract_restart_extra_toolchange = 0
; retract_speed = 100
; seam_position = aligned
; serial_port =
; serial_speed = 250000
; silent_mode = 1
; single_extruder_multi_material = 0
; single_extruder_multi_material_priming = 1
; skirt_distance = 2
; skirt_height = 1
; skirts = 2
; slice_closing_radius = 0.049
; slowdown_below_layer_time = 20
; small_perimeter_speed = 30
; solid_infill_below_area = 70
; solid_infill_every_layers = 0
; solid_infill_extruder = 1
; solid_infill_extrusion_width = 0.68
; solid_infill_speed = 50
; spiral_vase = 0
; standby_temperature_delta = -5
; start_filament_gcode = "; Filament gcode\n"
; start_gcode = G28 ; home all axes\n;G29 homing?\n\nG1 Z2 F8000 ; lift nozzle\nG1 X150 Y10\n
; support_material = 1
; support_material_angle = 0
; support_material_auto = 0
; support_material_buildplate_only = 0
; support_material_contact_distance = 0.2
; support_material_enforce_layers = 0
; support_material_extruder = 1
; support_material_extrusion_width = 0.52
; support_material_interface_contact_loops = 0
; support_material_interface_extruder = 1
; support_material_interface_layers = 1
; support_material_interface_spacing = 0
; support_material_interface_speed = 100%
; support_material_pattern = rectilinear
; support_material_spacing = 5
; support_material_speed = 60
; support_material_synchronize_layers = 0
; support_material_threshold = 0
; support_material_with_sheath = 1
; support_material_xy_spacing = 50%
; temperature = 240
; thin_walls = 1
; threads = 4
; toolchange_gcode =
; top_fill_pattern = rectilinear
; top_infill_extrusion_width = 0.68
; top_solid_infill_speed = 30
; top_solid_layers = 4
; travel_speed = 150
; use_firmware_retraction = 0
; use_relative_e_distances = 0
; use_volumetric_e = 0
; variable_layer_height = 1
; wipe = 1
; wipe_into_infill = 0
; wipe_into_objects = 0
; wipe_tower = 0
; wipe_tower_bridging = 10
; wipe_tower_rotation_angle = 0
; wipe_tower_width = 60
; wipe_tower_x = 180
; wipe_tower_y = 140
; wiping_volumes_extruders = 70,70
; wiping_volumes_matrix = 0
; xy_size_compensation = 0
; z_offset = 0