I just set up my duet 3 with a raspberry pi.
I am upgrading a cnc machine from duet 2 wifi to duet 3 and am wondering if I can use the workbee control on the pi so that I can see the machine/work coordinates. Or maybe just show the machine coordinates as well as work coordinates in the duet 3 web control.
Thanks,
T
Best posts made by tristanryerparke
-
workbee control on duet 3
-
RE: Duet 3 3.2 Beta2 + SBC jerking motion
@Phaedrux Just tried with RC2, no luck and jerks happen in the same places on same file.
-
Accurate stall detection using the 1HCL
Hello all,
I’ve got a cartesian machine running 5x 1HCL boards all running 3.4.5 stable. For while I was using the closed loop function on the boards, working great but noisy and high-speed feedrates were limited.
I noticed that on power up the machine can still generate driver-error events when axes are moved/crashed, before tuning is run. The machine operates much quieter and faster in open-loop mode, so I’m wondering if it’s possible to only use the encoders for position confirmation/stall detection. If so could anyone provide an ideal sequence of commands to enable this?
Thanks,
T -
RE: BtnCmd-DWC Plugin - Customise DWC - v01.03.0 19-04-24
@MintyTrebor With the 3.3rc1 update globals are now displaying correctly in btncmd!
Would it be possible to have a color option for the Object Model panel?
Or a color switch based upon value like the z-probe status in DWC?
Also, what about a secondary organization structure in which buttons and panels could be grouped? Kind of like this on the DWC dashboard:
Just some suggestions, I'm really loving this plugin so far.
Much simpler than my previous node-red dashboard setup.
Thanks,
T -
Question about distance sensor for compatibility with duet 3
So a few days ago I implemented a dc42 ir sensor on a gantry machine designed to make paintings with duet 3. The idea was that the machine could probe a stationary reservoir of paint with the ir sensor, detect how much paint was remaining in the reservoir, and adjust brush dipping height. This worked extremely well until I started using black paint, which was not detected, and since the sensor triggers 2-3mm above the surface height, the machine dunked the ir sensor in black paint...
Wondering if anyone has a recommendation of a sensor or method of doing this reliably.
The reservoir is only 60mm in height. It would be nice to have +- 1mm accuracy.One answer would be to use a longer range sensor like this adafruit time of flight :
https://www.adafruit.com/product/3316
This would allow me to limit the probing distance and never have the probe come near the paint,
but would require a little microcontroller to turn i2c into a probe signal (plugged into duet3 toolboard).The issue with having a float based trigger (like in a toilet) is that paint builds up on it and changes the accuracy.
Anyone have other ideas? It would be great if the sensor I used had a digital output based on a 60mm trigger height. If we can read sensors on toolboards now is there an analog device that would work? Does anything like this exist that would detect acrylic paint and water?
Cheers,
T -
3.2 Jerking motion Duet3 + SBC
This post is a continuation of what I believe to be this issue:
https://forum.duet3d.com/topic/19352/duet-3-3-2-beta2-sbc-jerking-motionIssue:
I have a 5-axis machine with linear axes X,Y,Z and rotational axes A,B running rrf3.2 stable.
When sending a series of small segment, commands to the machine, a loud audible clunk happens intermittently.
The types of movements that create the clunks are simultaneous X,Y + A(rotational) moves.
Here is video:
https://youtu.be/egwhWUq8yAg
As you can see, it does not seem as if the machine loses steps, just starts/stops so quickly as to create a jolt.
Changing the M595 movement queue length (I have tried several values from 5 to 1000) only worsens this behavior to the point where steps are lost and even more clunks happen.Here is my config.g:
;CNC Mode M453 ;Name M550 P"tristan-painting-machine" ;Brake Pins M950 P2 C"out8" M950 P1 C"out7" ;Drivers M569 P0.0 S0 I1 M569 P0.1 S0 I1 M569 P0.2 S1 I1 M569 P0.3 S0 I1 M569 P0.4 S0 I1 M569 P121.0 S1 I1 ;Driver Mapping M584 X0.3 Y0.1:0.2 Z0.0 S0 R0 P3 M584 A0.4 B121.0 S1 R1 P5 M584 U0.2 P5 ;Current M906 X2000 Y3750 Z2000 U3750 A1750 B1500 I100 ;Microstepping M350 X16 Y16 Z16 U16 A16 I1 ;Steps Per MM M92 X80 Y80 Z80 U80 A46.1062140618 B26.6666 ;Instantaneous Speed Change M566 X500 Y500 Z500 U500 A500 ;Max Speeds M203 X13000 Y13000 Z13000 U6000 A40000 B40000 ;Max Acceleration M201 X750 Y750 Z500 U750 A2000 B2000 ;Disable Idle Current Reduction M84 S0 M917 Y100 ;Probe M558 P9 C"!^121.io0.in" H200 F400 T2000 I1 ;Limits M208 X0 Y-1360 Z-145 A-72000 B-101.4 S1 M208 X1242 Y0 Z0 A72000 B230 S0 ;Servos M950 S3 C"io4.out" M950 S4 C"io5.out" ;Endstops M574 U1 S1 P"!io6.in" M574 Y1 S1 P"!io1.in" M574 X1 S1 P"!io8.in" M574 Z1 S1 P"io7.in" M574 A1 S1 P"io0.in" ;Head Endstop M574 B1 S1 P"121.io2.in" ;Tool 0 M563 P0 S"Probe" ;Tool 1 M563 P1 S"1/4 Flat Brush" ;Tool 2 M563 P2 S"5/8 Flat Brush" ;Allow Movement M564 S0 H0
M122 Report:
M122 === Diagnostics === RepRapFirmware for Duet 3 MB6HC version 3.2 running on Duet 3 MB6HC v1.01 or later (SBC mode) Board ID: 08DJM-956L2-G43S8-6J9D6-3S46R-KU2AD Used output buffers: 1 of 40 (14 max) === RTOS === Static ram: 149788 Dynamic ram: 63020 of which 52 recycled Never used RAM 145972, free system stack 132 words Tasks: Linux(ready,83) HEAT(blocked,353) CanReceiv(blocked,881) CanSender(blocked,352) CanClock(blocked,352) TMC(blocked,19) MAIN(running,1265) IDLE(ready,19) Owned mutexes: HTTP(MAIN) === Platform === Last reset 00:40:24 ago, cause: software Last software reset at 2021-01-08 22:10, reason: User, none spinning, available RAM 145852, slot 1 Software reset code 0x0012 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x00400000 BFAR 0x00000000 SP 0x00000000 Task Linu Freestk 0 n/a Error status: 0x00 Aux0 errors 0,0,0 Aux1 errors 0,0,0 MCU temperature: min 42.5, current 43.8, max 44.2 Supply voltage: min 23.5, current 23.9, max 24.2, under voltage events: 0, over voltage events: 0, power good: yes 12V rail voltage: min 12.0, current 12.1, max 12.1, under voltage events: 0 Driver 0: position 54723, standstill, reads 54250, writes 55 timeouts 0, SG min/max 0/1023 Driver 1: position -56731, standstill, reads 54217, writes 88 timeouts 0, SG min/max 0/733 Driver 2: position -4137, standstill, reads 54214, writes 91 timeouts 0, SG min/max 0/837 Driver 3: position 4495, standstill, reads 54230, writes 75 timeouts 0, SG min/max 0/687 Driver 4: position -1200, standstill, reads 54226, writes 79 timeouts 0, SG min/max 0/294 Driver 5: position 0, standstill, reads 54295, writes 11 timeouts 0, SG min/max 0/0 Date/time: 2021-01-08 22:51:03 Slowest loop: 152.89ms; fastest: 0.03ms === Storage === Free file entries: 10 SD card 0 not detected, interface speed: 37.5MBytes/sec SD card longest read time 0.0ms, write time 0.0ms, max retries 0 === Move === DMs created 125, maxWait 752461ms, bed compensation in use: none, comp offset 0.000 === MainDDARing === Scheduled moves 630, completed moves 630, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 2, 11], CDDA state -1 === AuxDDARing === Scheduled moves 0, completed moves 0, hiccups 0, stepErrors 0, LaErrors 0, Underruns [0, 0, 0], CDDA state -1 === Heat === Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1 === GCodes === Segments left: 0 Movement lock held by null HTTP* is doing "M122" in state(s) 0 Telnet is idle in state(s) 0 File* is idle in state(s) 0 USB is idle in state(s) 0 Aux is idle in state(s) 0 Trigger* is idle in state(s) 0 Queue* is idle in state(s) 0 LCD is idle in state(s) 0 SBC is idle in state(s) 0 Daemon is idle in state(s) 0 Aux2 is idle in state(s) 0 Autopause is idle in state(s) 0 Code queue is empty. === CAN === Messages queued 80, send timeouts 0, received 50, lost 0, longest wait 1ms for reply type 6036, free buffers 48 === SBC interface === State: 4, failed transfers: 0 Last transfer: 1ms ago RX/TX seq numbers: 21479/21479 SPI underruns 0, overruns 0 Number of disconnects: 0, IAP RAM available 0x2c8a8 Buffer RX/TX: 0/0-0 === Duet Control Server === Duet Control Server v3.2.0 Code buffer space: 4096 Configured SPI speed: 8000000 Hz Full transfers per second: 35.91 Maximum length of RX/TX data transfers: 3596/1696
M98 P"config.g" returns a green: M98 P"config.g" in the console.
Here also a file which produces many clunks (which is running in video):
wrenches_fake.gcode
It is hard to see which lines of the code cause the issue as I believe it is a problem with sending small segments.I have had this issue since upgrading to the first of the 3.2 betas, but it does not occur 3.1.1.
Any thoughts?
T -
RE: 3.2 Jerking motion Duet3 + SBC
@dc42 I can confirm that sending M595 P100 on the 3.3 beta firmware has resolved this issue.
Thanks -
RE: Bug: Using variables for multiple extruders does not work
@gloomyandy yes sending G0 E100:200 works perfectly, extruding the specified amount on each extruder.
-
Write whole object model to file with M-Command?
Is it possible to write the whole OM to a file on the sd card? Using duet3 + SBC 3.3rc1.
I was thinking maybe with execonmcode, but wondering if there is a native method.
My use case is a tool-changing machine with a docking switch, if docking fails I would like to save as much information on the machine state as possible before aborting/pausing the file.
Thanks,
T
Latest posts made by tristanryerparke
-
DSF Python with pausing, macros and /opt/dsf/sd permissions
I've used DSF-Python to create some custom-m-codes that have dynamic function (checking entries in a database and executing different movements based on them). This has been working well, except I've crashed the machine several times due to hitting pause/resume when the macros are in a larger gcode file. It's unclear at what point the machine is pausing, and often some moves (like a necessary clearance) are skipped during resume.
I've been using this code to run movements from within theInterceptConnection
loop:
cmd_conn.perform_simple_code(cmds, channel=CodeChannel.File)
Sometimes cmds is a single command, and sometimes a few commands separated by newline.
I'm also using this code to run macros:
(perform_simple_code('M98 P"/macros/test.g"', channel=CodeChannel.File)
The issue i'm experiencing with pauses might be coming from any of these three ways to execute codes, so I'm thinking it would be best to compartmentalize each set of commands into a dynamically written macro. Then I could implement the normal macroM98 R1/0
to achieve predictable pausing results. I'm wondering if this is the ideal way to go about this, or if anyone has any better ideas.This brings me to my second question of writing macro files dynamically. I get a lot of errors when trying to write files in the
/opt/dsf/sd/macros/
folder. In the past I made somechmod
changes which allowed me to read/write in those folders, but it filled DWC with red errors about incorrect permissions. I'm on a fresh install now and would rather not do that again.I could make some post requests to upload/delete a macro but it seems simpler to just write the files with python if I can get the permissions right. What would be the recommended way of freeing up the permissions of those files and folders? Would it be best to create a DSF plugin instead?
Thanks,
T -
Where to source reliable GT2 30T 10mm belt width pulleys?
Hi All,
I've got a large format printer that uses gates G2 belts (10mm) with 30t pulley idlers. So far I have only been able to source this size of pulley from aliexpress as it is somewhat off from the normal 20t style. After several weeks of printing these pulleys start to make a crackling noise on rapid movements, and upon inspection I can observe degradation (sometimes to the point of ball bearings falling out upon disassembly) of the bearings on the idler.I could get the 20mm variant from gates brand through filastruder and adjust my design to fit, but I thought it might be worth asking on here if anyone has a good source for high quality idlers.
Best,
T -
RE: Some 23CL Questions
@dc42 @T3P3Tony I'm wondering if this slipped past you.
I still haven't gotten into the testing phase but the info would be greatly appreciated.
Thanks,
T -
Some 23CL Questions
Hey all,
I just received my first 23CL with brake, I'll begin testing it on my system soon (very pumped).
A couple questions for the Duet3D Team:-
Are the board pinouts going to be released soon?
-
Were there any thoughts about I/O? It's hard to tell from looking at the board inside whether I could attach an endstop...
-
Are the functions of the brake abstracted or can they be configured like a normal brake setup? Specifically:
- Is the brake release delay configurable like a normal brake configuration?
- How can I release the brake for manual moving of axis?
-
If the 23CL is the last board in the CAN chain, is there a way to set a termination resistor without making a patch on the cable coming out of the M8 connector?
-
Other boards with the RJ11 have a clear daisy-chain routing pattern, what is the recommended way to connect multiple 23CL on a large machine? I was thinking about using a tool distribution board?
-
Any updates on the nema17 version?
Thanks,
T -
-
RE: [3.5.0-rc.1] Premature execution of G54/G55
@gloomyandy MB6HC with 4x 1HCL and 1x 1LC, was on 3.4.6 before.
-
[3.5.0-rc.1] Premature execution of G54/G55
In some of my files I use
G54
andG55
to move between two different working areas during the job (CNC). When using 3.5.0-rc.1 I noticed that I randomly get target position outside machine limits errors where previously these errors did not occur.
Upon inspection of the files I can see that the G1 commands that are sent are supposed to be in theG55
working space, so this error seems strange considering the commands are preceded by aG55
in the file. When copying this command into the console and running (after the job is cancelled by the error), I get the same machine limits error. If I send aG55
command, and then the "bad" line, it executes without any error.
My guess about the bug here is that there is aG54
command farther down in the file that is getting executed early, so I tried puttingM400
andG4 S0.1
commands in front of these, but the issue persists.Attached here are my config.g, override and a sample file which makes the error happen:
config.g.txt
config-override.g.txt
error_maker.nc.txt
The important thing to note in this sample file is that my machine has Y soft limits from -600 to 0, so a command like G0 Y20 will fail unless it is given in the G55 system.I'm guessing this has something to do with motion planning and queueing, which I know there have been some changes to in 3.5.
Cheers,
T -
RE: [3.5.0-beta4] PWM controlled Brake does not de-energize upon M18
@dc42 This did not fix the axis drop when sending
m18
but it did seem to keep the axis from dropping upon hitting emergency stop.I also noticed on this belt driven z with the 1HCL that sometimes the axis will drop during tuning using 3.5.0-beta4 (and still with beta4+ from dropbox). I believe I've fixed the issue by increasing the current slightly but if it worked in 3.4.5 with the lower current that would be the ideal situation. Can open a new thread for this if need be.
Overall the new firmware is making my X and Y 1HCL axes run super smooth/quiet and they seem to be able to run much faster than before.
Cheers,
T -
[3.5.0-beta4] PWM controlled Brake does not de-energize upon M18
Just upgraded from 3.4.5 --> 3.5.0-beta4 today to try the new PWM controlled brake feature on my machine. I use several 1HCLs on 48v and was previously running 48v and 24v to all of them for solenoids and a brake on the z axis (belt driven).
I used the commandM569.7 P120.0 C"out0" V24 S250
to configure the brake and it all seems to work well until I triedM18
which made the Z axis drop. After M18 the axis is movable by hand with no resistance until resetting the machine.@dc42 I'm assuming this is a bug as in 3.4.5 this did not happen with the 24v (non PWM) brake.
Cheers,
T -
RE: 1HCL assisted open loop
@dc42 Would it be possible to skip tuning or to perform mirrored tuning in this mode? I'm wondering as I have a rigid machine with a motor driving each side of the gantry.
Thanks -
RE: Software bundle 3.5.0-beta.4 now available
@dc42 Where can we find some details on the assisted open loop mode, other than the release notes?