Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login
    1. Home
    2. insertnamehere
    3. Posts
    • Profile
    • Following 0
    • Followers 0
    • Topics 1
    • Posts 66
    • Best 6
    • Controversial 0
    • Groups 0

    Posts made by insertnamehere

    • RE: Release 3.01-RC10

      I had a similar problem when I first upgraded to firmware 3.

      Can you tell me what firmware version you upgraded from?

      Also posting your config.g may help.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: RRF 3.01-RC10, DWC 2.1.5 and DSF 2.1.1 released

      I've just noticed that the layer displayed in DWC is incorrect. I'm using Slic3r++ and the layer height of the print is 0.1mm but 3.01-R10 reports 0.2mm.

      9fd51d3b-a39f-4347-aca5-55b3d8eb507d-image.png

      I've also tried this with Prusaslicer and it works correctly, so it probably isn't a Duet issue.

      Can any one tell me how the layer height displayed is determined?

      posted in Beta Firmware
      insertnamehereundefined
      insertnamehere
    • RE: Cura Script to Automatically Probe Only Printed Area

      @Baenwort said in Cura Script to Automatically Probe Only Printed Area:

      Does this work for Deltas who don't have their M557 as a x and y coordinate?

      No it won't. But it could be modified.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Cura Script to Automatically Probe Only Printed Area

      For @Luke-sLaboratory.

      This is @mwolter 's code modified to work with Slic3r, PrusaSlicer or Slic3r++. Follow the instructions in the comments to configure Slic3r.

      Slightly changed so that the minimum size of the mesh is 3x3 on prints with small base size.

      #!/usr/bin/python
      """
      	Slic3r post-processing script for RepRap firmware printers which dynamically defines the mesh grid dimensions (M557) based on the print dimensions. 
      {1}
      Usage:
      {1}
      	Slic3r Settings:
      	In Print Settings > Output Options
      	1. turn no "Verbose G-code"
      	2. in "Post-processing scripts" type the full path to python and the full path to this script
      	e.g. <Python Path>\python.exe  <Script Path>\meshcalc.py;
      
      	In Printer Settings > Custom G-code > Start G-code
      	Make sure the start g-code contains the M557 command, and that you probe the bed and load the compensation map,  e.g.
      	M557 X10:290 Y10:290 S20	; Setup default grid
      	G29							; Mesh bed probe
      	G29 S1						; Load compensation map
      		
      	Script Settings
      	probeSpacing = 20 - change this to the preferred probe point spacing in M557
      		
      	Note: The minimum X and Y of the probed area is limited to 2 times the probeSpacing.
      	This is so that prints with a small footprint will have a minimum 3x3 probe mesh
      {1}
      Args:
      {1}
      	Path: The path parameter will be provided by Slic3r.
      {1}
      Requirements:
      {1}
      	The latest version of Python.
      	Note that I use this on windows and haven't tried it on any other platform.
      	Also this script assumes that the bed origin (0,0) is NOT the centre of the bed. Go ahead and modify this script as required.
      {1}
      Credit:
      {1}
      	Based on code originally posted by CCS86 on https://forum.duet3d.com/topic/15302/cura-script-to-automatically-probe-only-printed-area?_=1587348242875.
      	and maybe 90% or more is code posted by MWOLTER on the same thread.
      	Thank you both.
      """
      
      import sys
      import re
      import math
      import os
      
      probeSpacing = 20   		# set your required probe point spacing for M557
      
      def main(fname):	
      	print("Starting Mesh Calculations")
      
      	try:
      		_Slic3rFile = open(fname, encoding='utf-8')
      	except TypeError:
      		try:
      			_Slic3rFile = open(fname)
      		except:
      			print("Open file exception. Exiting.")
      			error()
      	except FileNotFoundError:
      		print('File not found. Exiting.')
      		error()
      		
      	lines = _Slic3rFile.readlines()
      	_Slic3rFile.close()
      
      	linesNew = calcBed(lines)
       
      	_Slic3rFile = open(fname, "r+")
      	_Slic3rFile.seek(0)                       
      	_Slic3rFile.truncate()
      	for element in linesNew:
      		_Slic3rFile.write(element)
      	_Slic3rFile.close()
      	
      	return
      
      def error():
      	# remove the next 2 lines to close console automatically
      	print("Press Enter to close") 
      	input()
      	sys.exit()
       
      def calcBed(lines):
      	bounds = findBounds(lines)
      	bed = findBed()
       
      	for axis in bounds:
      		if bounds[axis]['max'] - bounds[axis]['min'] < bed[axis]:
      			print(f'Success: {axis} mesh is smaller than bed')
      			
      		else:
      			print('Error: Mesh is larger than bed. Exiting.')
      			error()
       
      		for limit in bounds[axis]:
      			if limit == 'min':
      				if (bed[axis]) - bounds[axis][limit] > 0: 
      					print(f'Success: {axis} {limit} coordinate is on the bed.')
      				else:
      					print(f'Error: {axis} {limit} coordinate is off the bed. Exiting.')
      					error()
       
      			if limit == 'max':
      				if (bed[axis]) - bounds[axis][limit] > 0: 
      					print(f'Success: {axis} {limit} coordinate is on the bed.')
      				else:
      					print(f'Error: {axis} {limit} coordinate is off the bed. Exiting.')
      					error()
      	return fillGrid(bounds, lines)
      	
      def findBed():
      	bed = {
      		'X': 0,
      		'Y': 0,
      		}
      
      	bedCorners = os.environ.get("SLIC3R_BED_SHAPE")
      	maxXY = bedCorners.split(',')[2].split('x')
      	bed['X'] = int(maxXY[0])
      	bed['Y'] = int(maxXY[1])
      	print(bed)
      
      	return bed
       
      def findBounds(lines):
      	bounds = {
      		'X': {'min': 9999, 'max': 0},
      		'Y': {'min': 9999, 'max': 0},
      		}
      	
      	parsing = False
      	for line in lines:
      		if "move to next layer (0)" in line:
      			parsing = True
      			continue
      		elif "move to next layer (1)" in line:
      			break
       
      		if parsing:
      			# Get coordinates on this line
      			for match in re.findall(r'([YX])([\d.]+)\s', line):
      				# Get axis letter
      				axis = match[0]
       
      				# Skip axes we don't care about
      				if axis not in bounds:
      					continue
       
      				# Parse parameter value
      				value = float(match[1])
       
      				# Update bounds
      				bounds[axis]['min'] = math.floor(min(bounds[axis]['min'], value))
      				bounds[axis]['max'] = math.ceil(max(bounds[axis]['max'], value))
      				
      	# make sure the bounds are at least 2 x Probe Point Spacing, for small prints.			
      	if parsing:
      		global probeSpacing
      		
      		for axis in bounds:
      			spacing = (bounds[axis]['max'] - bounds[axis]['min'])/2
      			if spacing < probeSpacing:
      				probeSpacing = spacing
      
      	print("Bounds are: " + str(bounds))			
      	return bounds
       
       
      def fillGrid(bounds, lines):
      	# Fill in the level command template
      	gridNew = 'M557 X%d:%d Y%d:%d S%d' % (
      		bounds['X']['min'], bounds['X']['max'],
      		bounds['Y']['min'], bounds['Y']['max'],
      		probeSpacing
      	)
       
      	# Replace M557 command in GCODE
      	linesNew = []
      	for line in lines:
      		if line.startswith('M557'):
      			linesNew.append(re.sub(r'^M557 X\d+:\d+ Y\d+:\d+ S\d+', gridNew, line, flags=re.MULTILINE))
      			print('New M557: ' + linesNew[-1])
      		else:
      			linesNew.append(line)
      	return linesNew
        
      if __name__ == '__main__':
      	if sys.argv[1]:
      		main(fname = sys.argv[1])
      	else:
      		print('Error: Proper Slic3r post processing command is python3')
      		error()
      
      

      I've updated with improvements so that the console remains open if there is an error, and the probe point spacing automatically reduces in size for small prints.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Cura Script to Automatically Probe Only Printed Area

      @Luke-sLaboratory said in Cura Script to Automatically Probe Only Printed Area:

      @insertnamehere

      Care to share?

      I was afraid that someone would ask that. ☺
      Its butt-ugly code right now. Let me clean it up and I'll post it here.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Cura Script to Automatically Probe Only Printed Area

      Thanks @CCS86, what a brilliant idea, and @mwolter, thanks, I used most of your code and got it working on Slic3r.

      Works just great.

      I never used mesh leveling because of the time involved probing the entire bed before printing. However, now I can, and I'm getting great first layer results.

      Cheers guys.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Duet Web Control 2.1.1 released

      @smoki3 said in Duet Web Control 2.1.1 released:

      @insertnamehere I had this also on my duet 2. I now upgraded to RC6 and it is working fine

      Thanks, I just needed to update to RC6 and it works now.

      posted in Duet Web Control
      insertnamehereundefined
      insertnamehere
    • RE: Duet Web Control 2.1.1 released

      I'm having a problem with the parts fan slider not being displayed on the Status page.

      I'm using a Berd-air pump as a parts fan connected to the E1 heater output. Previous versions showed the fan slider on the Status page. With with 2.1.1 it is no longer displayed.

      The config.sys line is:
      M950 F0 C"E1_HEAT" Q15000

      However, if I change M950 in config.sys to:
      M950 F0 C"FAN3" Q15000
      the fan slider is displayed correctly in 2.1.1

      posted in Duet Web Control
      insertnamehereundefined
      insertnamehere
    • RE: PrusaSlicer 2.2 released

      @droftarts said in PrusaSlicer 2.2 released:

      This one? https://github.com/supermerill/Slic3r
      Ian

      Yes, that's it.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: PrusaSlicer 2.2 released

      Another slicer to try is Slic3r++

      It's a fork of PrusaSlicer, and is currently at 2.2, but also include a lot of extra functionality, like top layer ironing, (see image). Gives great results.

      IMG_1465.jpg

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Piezo probe Value shows P1000 when not touching

      No no, it's a valid question.

      The simple answer is that a pullup resistor makes sure the input voltages go to known levels and don't "float" between logic high and low.

      If the input circuit from the Piezo requires a pullup resistor on the output and you don't provide it it may not switch reliably or not switch at all. You could see it go high and stay high all the time.

      First, try not using a pullup and if the input is not working reliably, turn the pullup on. I'm using a Precision Piezo in digital mode and I need the pullup enabled.

      posted in Duet Hardware and wiring
      insertnamehereundefined
      insertnamehere
    • RE: Piezo probe Value shows P1000 when not touching

      The i parameter is no longer supported in M558.

      I'm using the Orion piezo:
      M558 P8 C"^!ZPROBE.IN" R0.4 H2 F350 T5000 A5 S0.01

      In C"^!ZPROBE.IN" the "^" enables the onboard pullup and the "!" inverts the input.

      posted in Duet Hardware and wiring
      insertnamehereundefined
      insertnamehere
    • RE: RepRapFirmware 3.01-RC3 released

      @dc42 said in RepRapFirmware 3.01-RC3 released:

      @insertnamehere said in RepRapFirmware 3.01-RC3 released:

      I'm using conditional code to optimized bed leveling.

      On occasions when the 2 points used are equal I get an initial deviation of NAN.

      3/10/2020, 11:10:16 AM Leadscrew adjustments made: -0.001 -0.001, points used 2, (mean, deviation) before (-0.001, nan) after (0.000, 0.000)

      I would expect that when 2 points are the same that the standard deviation for those points would be 0. If I'm wrong, how can I test for NAN in the conditional code?

      The NaNs should be gone in the internal build at https://www.dropbox.com/sh/3azy1njy3ayjsbp/AACquxr2m00eV568RZg5QG5wa?dl=0.

      Thanks @dc42, it works correctly now.

      3/14/2020, 11:17:11 AM Leadscrew adjustments made: 0.000 0.000, points used 2, (mean, deviation) before (0.000, 0.000) after (-0.000, 0.000)
      BED LEVELLING COMPLETED
      Final Deviation 0.000mm

      posted in Beta Firmware
      insertnamehereundefined
      insertnamehere
    • RE: RepRapFirmware 3.01-RC3 released

      I'm using conditional code to optimized bed leveling.

      On occasions when the 2 points used are equal I get an initial deviation of NAN.

      3/10/2020, 11:10:16 AM Leadscrew adjustments made: -0.001 -0.001, points used 2, (mean, deviation) before (-0.001, nan) after (0.000, 0.000)

      I would expect that when 2 points are the same that the standard deviation for those points would be 0. If I'm wrong, how can I test for NAN in the conditional code?

      posted in Beta Firmware
      insertnamehereundefined
      insertnamehere
    • RE: RepRapFirmware 3.01beta1 released

      @dc42 said in RepRapFirmware 3.01beta1 released:

      You've found a bug (the property table wasn't ordered alphabetically after I renamed a property, so the binary search failed). I've fixed it in the latest build at https://www.dropbox.com/sh/3azy1njy3ayjsbp/AACquxr2m00eV568RZg5QG5wa?dl=0. I also added a compile-time check to prevent this happening in future, and an extra property state.upTime.

      Firstly, thanks for the quick response. I've tried the fixed firmware and it works great.

      Another thing, I use an ATX type 24V supply controlled by the PS_ON pin.
      After all axis are homed, if I turn of the 24V supply, the axis remain homed "Blue" on the DWC. If I turn on the ATX supply again I can move all axis as if they are homed. Shouldn't turning of the 24V supply automatically mark all axis as homed : false?

      m409
      {"key":"","flags":"","result":{"boards":[{"firmwareFileName":"Duet2CombinedFirmware.bin","firmwareVersion":"3.01-beta1+1","iapFileNameSD":"Duet2CombinedIAP.bin","mcuTemp":{"current":39.6,"max":39.9,"min":38.0},"name":"Duet 2 WiFi","shortName":"2WiFi","vIn":{"current":0.7,"max":24.4,"min":0.4}}],"heat":{"coldExtrudeTemperature":160.0,"coldRetractTemperature":90.0,"heaters":[{"current":22.0,"sensor":0,"state":"Off"},{"current":23.2,"sensor":1,"state":"Active"}],"sensors":[{"lastReading":22.0,"name":"","type":"Thermistor"},{"lastReading":23.2,"name":"","type":"Thermistor"}]},"job":{"file":{"filament":[],"firstLayerHeight":0.0,"generatedBy":"","height":0.0,"lastModified":"28115-10-29T03:41:51","layerHeight":0.0,"numLayers":0,"printTime":0,"simulatedTime":0,"size":0},"lastFileName":"","layer":0,"timesLeft":{"filament":0.0,"file":0.0,"layer":0.0}},"move":{"axes":[{"homed":true,"letter":"X","max":300.0,"min":0.0,"userPosition":70.000,"visible":true},{"homed":true,"letter":"Y","max":300.0,"min":0.0,"userPosition":265.000,"visible":true},{"homed":true,"letter":"Z","max":350.0,"min":0.0,"userPosition":4.213,"visible":true}],"calibrationDeviation":{"deviation":0.000,"mean":0.000},"currentMove":{"requestedSpeed":0.0,"topSpeed":0.0},"daa":{"enabled":false,"minimumAcceleration":10.0,"period":0.0},"idle":{"factor":0.7,"timeout":30000},"initialDeviation":{"deviation":0.004,"mean":0.014},"meshDeviation":{"deviation":0.032,"mean":0.099},"printingAcceleration":10000.0,"speedFactor":100.0,"travelAcceleration":10000.0},"network":{"interfaces":[{"actualIP":"192.168.1.142","firmwareVersion":null,"gateway":"0.0.0.0","subnet":"0.255.255.255","type":"wifi"}]},"state":{"currentTool":0,"machineMode":"FFF","status":"Off","upTime":193}}}

      posted in Beta Firmware
      insertnamehereundefined
      insertnamehere
    • RE: RepRapFirmware 3.01beta1 released

      I have a Duet Wifi 2 and I've been trying to access Initial Deviation in the Object Model.

      If I execute the following line from the console:

      echo "Initial Deviation", move.initialDeviation.deviation ^ "mm"
      I get an error:
      echo "Initial Deviation",move.initialDeviation.deviation ^ "mm"
      Error: while executing command: unknown value initialDeviation.deviation

      echo "Calibration Deviation", move.calibration.deviation ^ "mm"
      responds:
      echo "Calibration Deviation", move.calibrationDeviation.deviation ^ "mm"
      Calibration Deviation 0.000mm

      M409 shows
      {"key":"","flags":"","result":{"boards":[{"firmwareFileName":"Duet2CombinedFirmware.bin","firmwareVersion":"3.01-beta1","iapFileNameSD":"Duet2CombinedIAP.bin","mcuTemp":{"current":40.4,"max":44.6,"min":39.9},"name":"Duet 2 WiFi","shortName":"2WiFi","vIn":{"current":24.0,"max":24.4,"min":0.5}}],"heat":{"coldExtrudeTemperature":160.0,"coldRetractTemperature":90.0,"heaters":[{"current":26.7,"sensor":0,"state":"Off"},{"current":27.1,"sensor":1,"state":"Active"}],"sensors":[{"lastReading":26.7,"name":"","type":"Thermistor"},{"lastReading":27.1,"name":"","type":"Thermistor"}]},"job":{"file":{"filament":[],"firstLayerHeight":0.0,"generatedBy":"","height":0.0,"lastModified":"28115-10-29T03:41:51","layerHeight":0.0,"numLayers":0,"printTime":0,"simulatedTime":0,"size":0},"lastFileName":"","layer":0,"timesLeft":{"filament":0.0,"file":0.0,"layer":0.0}},"move":{"axes":[{"homed":true,"letter":"X","max":300.0,"min":0.0,"userPosition":70.000,"visible":true},{"homed":true,"letter":"Y","max":300.0,"min":0.0,"userPosition":35.000,"visible":true},{"homed":true,"letter":"Z","max":350.0,"min":0.0,"userPosition":4.278,"visible":true}],"calibrationDeviation":{"mean":-0.000,"deviation":0.000},"currentMove":{"requestedSpeed":0.0,"topSpeed":0.0},"daa":{"enabled":false,"minimumAcceleration":10.0,"period":0.0},"idle":{"factor":0.7,"timeout":30000},"meshDeviation":{"mean":0.000,"deviation":0.000},"initialDeviation":{"mean":0.003,"deviation":0.001},"printingAcceleration":10000.0,"travelAcceleration":10000.0,"speedFactor":100.0},"network":{"interfaces":[{"actualIP":"192.168.1.142","firmwareVersion":null,"gateway":"0.0.0.0","subnet":"0.255.255.255","type":"wifi"}]},"state":{"currentTool":0,"machineMode":"FFF","status":"Idle"}}}

      posted in Beta Firmware
      insertnamehereundefined
      insertnamehere
    • RE: IR sensor

      M558 P1 H3 F300 T6000 A5 S0.015

      I used P1 and the analog output of the IR sensor.
      If you use the analog output Duet will slow the dive speed down as the probe nears the trigger height. I found this gave more repeatable results.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: IR sensor

      I've got an Aus3d IR. I can check my config after work tonight and let you know.

      posted in General Discussion
      insertnamehereundefined
      insertnamehere
    • RE: Electrical question regarding PS_ON.

      @joshi
      Another possible solution is to use something like the fanless MeanWell HLG-600H-12A
      A 12V supply that has a 5V standby built in and a remote on/off. If you invert the PS_ON signal the Duet can control the 12V directly without high current relays.

      Something worth considering at this point is going to 24V. Steppers run faster and quieter and with a 24V heat bed, faster heat up times and higher temperature.

      posted in Duet Hardware and wiring
      insertnamehereundefined
      insertnamehere
    • RE: Electrical question regarding PS_ON.

      @joshi Do you already have the power supplies? If you don't I can suggest an alternative design.

      posted in Duet Hardware and wiring
      insertnamehereundefined
      insertnamehere