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

    Acid

    @Acid

    3
    Reputation
    1
    Profile views
    17
    Posts
    0
    Followers
    0
    Following
    Joined Last Online
    Location NL

    Acid Unfollow Follow

    Best posts made by Acid

    • RE: Precision Piezo Delta bed mount

      @Nxt-1

      Well drawn explanation of the piezo sensitivity!

      Sorry for necroing this thread, but your drawing inspired me to design a program that can generate a point cloud for probing, that avoids the points near the towers and prefers the points near the underbed piezo's.

      Sadly it's made in Grasshopper so I can't share it as a script or executable, but maybe this could be inspiring to someone.

      I just finished my DIY Delta printer today and I noticed that the probing wasn't that great across the bed so I wanted to see if I could fix that somehow. Assuming my bed is flat enough, I came up with this, where the colored circles are the piezo locations:

      Example with lines drawn:
      9c8f3237-91f5-41e9-8df4-8e158ddf8a8a-image.png

      Outermost points culled and I tweaked the amount of points a little bit (and the point data is rounded to whole numbers):
      f7aad29a-4642-4322-953f-6f08c6cd600d-image.png

      And this is the output point list that can now manually turned into a list for the reiterative probing sequence for example (with the point data rounded to two decimals):
      4d5e58f3-fc33-4f0a-b941-af7d6e556de2-image.png

      This data can be changed on the fly, so I can see what the probing pattern will look like live without having to first run a script, it's live:
      https://youtu.be/0ofXqwViaMc

      I hope this could serve as an inspiration to someone and if you have ideas of a good type of point distribution I'd love to hear your ideas.

      I have yet to try out this set of points but it's kinda late now so I'll do that tomorrow when I'm sharp and present again.

      Just a small update on this reply, which I might turn into a post later on if anyone thinks it deserves its own post:

      The results are in, initially it had quite a big deviation, but the second probing sequence was an immediate hit:
      Calibrated 8 factors using 18 points, (mean, deviation) before (-0.009, 0.034) after (0.000, 0.022) Auto calibration successful, deviation 0.022mm

      I also incorporated a point sorting algorithm. Before the point list was random, causing long travel times during probing, but now it's just moving from one point to the next closest point making this a painless probing sequence.

      posted in Using Duet Controllers
      Acidundefined
      Acid
    • RE: [Solved][Delta] Precision Piezo issues

      @infiniteloop said in [Delta] Precision Piezo issues:

      @Acid

      I actually am using it in analog mode. I think I've run out of options…

      The ADC converters I know of in MCUs are relatively slow, for example, the sampling frequency of an Arduino ADC at 10 bit resolution is specified with 9.6 Hz. That means: you get about 10 measures per second. Sure, the Duets are much more responsive, but they too need a finite time for a sample. If you evaluate the data points with a script, the runtime of the script comes on top. All this accounts for a rather limited resolution over time.

      I use a probe with a light sensor in analog mode on a Duet 2. In oder to get some kind of precision readings, I had to reduce the probing speed to 200 (F parameter of M558). Note that I use the generic setup with M558, just one sensor, no (interpreted) script involved. So I strongly recommend to try a probing speed way below your F500.

      Now there are two things I can think of trying, the first one will be to isolate all the sensor wires as it looks like there is interference that is sending false readings, however I have no idea how to make isolated wires in the first place anyway.

      You can either cannibalise shielded USB cables (not all of them are shielded), or use audio input cables - those for microphones and other sources with low signal strength are always shielded.

      Thanks for your tips. I have seemed to solve the problem by switching to Digital Output on the PrecisionPiezo PCB and then tuning the VR2 setting on the PCB. It's not perfect, but it's close enough.

      After this I finally activated my DIY oscilloscope that I built years ago and measured the Analog signal and it only fluctuates a few mV when triggered, so the issue is probably with the Analog signal coming from the PrecisionPiezo PCB.

      With the fixed setup I now achieve this autocalibration measurement first try:
      Calibrated 8 factors using 18 points, (mean, deviation) before (-0.120, 0.029) after (0.000, 0.022) Auto calibration successful, deviation 0.022mm

      Normally it had to probe at least 5 or 6 times before it would even start, and I had to raise the tolerances. I can't imagine all that pounding of the hotend onto the bed has been good to my machine so I hope that nothing got damaged. Due to issues I had to remake the diagonal rods three!!! times and I was getting really demotivated 😰 But somehow I pulled through and managed to finish the build.

      Is there some place where we can share out DIY machines in some kind of showcase subforum?

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • Add option to M291 to display a popup message on the LCD only

      Hi, I've been looking into the option to display a message on my LCD panel (using an 12864 LCD).

      Right now I'm using M291 but no matter the option used, it still also displays an overlay on my DWC. This gets in the way when I am running a job, but at the same time, am monitoring some things in the DWC via my browser.

      I know it's a simple case of waiting or clicking to make the message disappear in DWC, but I wish there was an option to let the message display on LCD only.

      Right now the moment when this bugs me the most is when I do an auto-calibration on my Delta printer and I want to briefly display the deviation on the LCD via this message:
      M291 P{move.calibration.final.deviation} ^ "mm" S1

      It shows up beautifully on the LCD, but it also overlays the entire DWC screen.

      After this I tried all options of M118 and I tried M117, but these messages didn't show up on the LCD screen at all.

      This question was first discussed on a discord I'm in, but nobody knew about a way around this. Hence this feature request.

      In all honestly it probably doesn't happen often that someone would want to use this feature this way, and it might not even be possible due to firmware/DWC archicture, but I thought it was interesting enough to share and ask.

      posted in Firmware wishlist
      Acidundefined
      Acid

    Latest posts made by Acid

    • Add option to M291 to display a popup message on the LCD only

      Hi, I've been looking into the option to display a message on my LCD panel (using an 12864 LCD).

      Right now I'm using M291 but no matter the option used, it still also displays an overlay on my DWC. This gets in the way when I am running a job, but at the same time, am monitoring some things in the DWC via my browser.

      I know it's a simple case of waiting or clicking to make the message disappear in DWC, but I wish there was an option to let the message display on LCD only.

      Right now the moment when this bugs me the most is when I do an auto-calibration on my Delta printer and I want to briefly display the deviation on the LCD via this message:
      M291 P{move.calibration.final.deviation} ^ "mm" S1

      It shows up beautifully on the LCD, but it also overlays the entire DWC screen.

      After this I tried all options of M118 and I tried M117, but these messages didn't show up on the LCD screen at all.

      This question was first discussed on a discord I'm in, but nobody knew about a way around this. Hence this feature request.

      In all honestly it probably doesn't happen often that someone would want to use this feature this way, and it might not even be possible due to firmware/DWC archicture, but I thought it was interesting enough to share and ask.

      posted in Firmware wishlist
      Acidundefined
      Acid
    • RE: Delta specific acceleration and jerk sane tuning?

      @Phaedrux said in Delta specific acceleration and jerk sane tuning?:

      Those look like sane starting values.

      You can live tune the values by sending the commands during a print. To make that a bit easier there's a pack of tuning macros here: https://forum.duet3d.com/topic/6181/tuning-macros-menus-accel-jerk-retraction-pressure-advance?_=1678993843407

      Yes, that looks just like what the doctor ordered. I'm almost home and will start working on it immediately.

      I'm pretty sure my machine can go a lot higher. Your tuning macros will be used as an inspiration but I'll probably customize them a bit.

      Thanks for sharing!

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • Delta specific acceleration and jerk sane tuning?

      Hi!

      This past week I've been tuning my newly finished Delta printer. Most of it is working correctly now, but I am looking into tuning feeds and speeds to allow the machine to operate a little faster.

      My aim is to stay within the max speeds that allow me to stay in Stealthchop mode (extruder Orbiter v2 in bowden modus runs on spreadcycle), however, my extruder can't keep up with the max speed, so this is the deciding factor.

      For non-printing moves I am able to reach 120mm/s without the drivers switching over to spreadcycle.

      These are my current values:

      M566 X1200 Y1200 Z1200 E700 	       		   ; set maximum instantaneous speed changes (mm/min)
      M203 X7200 Y7200 Z7200 E6000        		   ; set maximum speeds (mm/min)
      M201 X4500 Y4500 Z4500 E4500         		   ; set accelerations (mm/s^2)
      

      I intentionally limited the maximum speeds at 7200mm/min which translates to 120mm/s to make sure the machine doesn't hit the threshold.

      The thing is that most topics I could find were about tuning these values for bedslingers, and since a Delta spec has a lot lower moving mass, I'm assuming that jerk and acceleration could be tuned a lot higher. I find it hard to get a 'feel' for how I can tune jerk.

      What are good (sane) values to start from? And are there recommended guides that can help me progress from there to further tune it?

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • [RRF 3.5b2] Unload macro broken, but works when manually sent

      Hi,

      I'm trying to get my filament unload macro to work but the machine simply doesn't want to do what it's told.

      This is the script:

      ; set extruder PREHEAT temp
      M568 R130 S245      ; set standby and active temperatures for active tool
      M568 A1             ; set tool to standby temp for filament switch
      M116 H1             ; Wait for temp to be reached
      
      ; Step 1 > Pause > move to a spot center-front for easy access
      G28				    ; Home printer
      G91             	; relative positioning
      G1 Z-20 F7200      	; lower Z by 5mm
      G90             	; absolute positioning
      G1 X0 Y-110	F6000	; and move nozzle towards the user
      
      ; Step 2 > Ask user to intervene
      ;M291 P"Filament swap sequence started, press okay when the hotend has reached 130 degrees Celsius" R"Filament swap initiated" ;S2 ; R is title!
      
      ; Step 3 > After checking you click okay and it starts reversing filament
      M302 P1         ; Allow cold extrusion
      M83             ; Set extruder to relative mode
      G1 E-620 F3000  ; Unwind the filament 620mm
      M568 A0			; and turn off tool
      M302 P0         ; Unallow cold extrusion
      
      ; Step 4 > Notify user and offer option to place new filament
      ;M291 P"Remove remaining filament and click OK" R"Filament unload done" S2
      

      The issue is that when I manually send (while hotend temp is 130C):
      M302 P1

      and then
      G1 E-620 F3000 ; Unwind the filament 620mm

      It perfectly unloads filament.

      First I had the message boxes in there, but I read in another topic from the previous beta (https://forum.duet3d.com/topic/30929/3-5-b1-loading-filament-via-dwc-does-not-work) that these could cause issues. So I deactivated those lines but still it doesn't want to work.

      Are there any known issues with this type of script in 3.5b2?

      Edit:
      Excuse me, it appears this issue has been fixed by DC42:
      https://github.com/Duet3D/RepRapFirmware/commit/94b33ae5404cdb67a69b51ff8099a596dfbb3940

      I'm assuming this fix will trickle down into the next beta.

      0 dc42 committed to Duet3D/RepRapFirmware
      Fix for allowing cold extrusion
      posted in Beta Firmware
      Acidundefined
      Acid
    • RE: Wrap text on 12864 displays - 3.5b2

      @OwenD said in Wrap text on 12864 displays - 3.5b2:

      @jay_s_uk
      I'm not near a printer
      I don't think you can, but maybe try concatenation of a new line in the message?
      M291 S"this is line 1" ^ \n ^ "this is line 2"

      I'd vote for it as a firmware addition.

      Hi OwenD, I tried this out but for me it only shows line one with the example. Also, S should be P 😉

      Ran into the same issue today where my filament unload script worked on one printer, but the other machine only shows one line of text, which is then clipped instead of concatenated.

      Would there be anything else we could try?

      posted in Beta Firmware
      Acidundefined
      Acid
    • RE: [Solved][Delta] Precision Piezo issues

      I just wanted to add that I have once again redesigned part of the bed and replaced the cables with shielded and grounded cables and now the leveling process is truly painless.

      The only issue being that I might've set the sensitivity too high, so with long probing sessions it might pick up a false reading, but to minimize issues I have redesigned the probing pattern and limited the amount of points to 9 instead of 18. 18 points is overkill. And with 9 points I get flawless results:
      9630a4d6-5588-4391-bd7a-46e590b58071-image.png

      Because I have seen a lot of topics about this that do not always explain the solution I will soon dedicate some of my time to do a showcase of my machine and explain in-depth how I have tackled some of the problems that came with the piezo leveling setup. I'll also try to go into the program I designed to generate the probing points for the auto calibration.

      On top of that this machine uses three levers that function as a proxy to the endstops. It's a flexible joint lever which might be of interest to some users here. I wanted a lever so I could reach the maximum height on this machine, since placing the endstop between the top vertexes and the MGN12 cart would cause me to lose around 20mm of print height. Now the lever sits near the top and triggers the endstop when the cart hits the lever. In other words, the endstop has its button pointing up, so it is reversed to traditional Delta endstop positions.

      A printer is never finished, it's alive.

      Thanks again for all the help.

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • RE: [Solved][Delta] Precision Piezo issues

      @infiniteloop said in [Delta] Precision Piezo issues:

      @Acid

      I actually am using it in analog mode. I think I've run out of options…

      The ADC converters I know of in MCUs are relatively slow, for example, the sampling frequency of an Arduino ADC at 10 bit resolution is specified with 9.6 Hz. That means: you get about 10 measures per second. Sure, the Duets are much more responsive, but they too need a finite time for a sample. If you evaluate the data points with a script, the runtime of the script comes on top. All this accounts for a rather limited resolution over time.

      I use a probe with a light sensor in analog mode on a Duet 2. In oder to get some kind of precision readings, I had to reduce the probing speed to 200 (F parameter of M558). Note that I use the generic setup with M558, just one sensor, no (interpreted) script involved. So I strongly recommend to try a probing speed way below your F500.

      Now there are two things I can think of trying, the first one will be to isolate all the sensor wires as it looks like there is interference that is sending false readings, however I have no idea how to make isolated wires in the first place anyway.

      You can either cannibalise shielded USB cables (not all of them are shielded), or use audio input cables - those for microphones and other sources with low signal strength are always shielded.

      Thanks for your tips. I have seemed to solve the problem by switching to Digital Output on the PrecisionPiezo PCB and then tuning the VR2 setting on the PCB. It's not perfect, but it's close enough.

      After this I finally activated my DIY oscilloscope that I built years ago and measured the Analog signal and it only fluctuates a few mV when triggered, so the issue is probably with the Analog signal coming from the PrecisionPiezo PCB.

      With the fixed setup I now achieve this autocalibration measurement first try:
      Calibrated 8 factors using 18 points, (mean, deviation) before (-0.120, 0.029) after (0.000, 0.022) Auto calibration successful, deviation 0.022mm

      Normally it had to probe at least 5 or 6 times before it would even start, and I had to raise the tolerances. I can't imagine all that pounding of the hotend onto the bed has been good to my machine so I hope that nothing got damaged. Due to issues I had to remake the diagonal rods three!!! times and I was getting really demotivated 😰 But somehow I pulled through and managed to finish the build.

      Is there some place where we can share out DIY machines in some kind of showcase subforum?

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • RE: [Solved][Delta] Precision Piezo issues

      @cosmowave said in [Delta] Precision Piezo issues:

      @Acid Eventually you can try to use the piezos in analog mode.
      Perhaps it helps to find the root cause.

      Hi, I actually am using it in analog mode. I think I've run out of options and will try to replace the board with another one to see if this improves anything.. Sadly.

      I noticed the analog input doesn't register the values correctly so I am suspecting the ADC on my current board might be malfunctioning somehow. It worked correctly before, and there is no issue with interference of any type. In DWC the readings do not correctly update, and despite using it in analog mode, it looks like it's in '0/1' mode, as if it only registers 0 or 1000, and it only registers 1000 if I punch the bed plate.

      A short update:
      It seems that when using the PCB in digital mode, it performs well, but it gets negative readings sometimes. I have tried adusting the sensitivity, but that makes it so that the nozzle pushes down the bed.

      Now there are two things I can think of trying, the first one will be to isolate all the sensor wires as it looks like there is interference that is sending false readings, however I have no idea how to make isolated wires in the first place anyway.

      The other option for me would be to shorten the wires. Do the precisionpiezo wires have to all be the same length when using an underbed piezo setup?

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • RE: [Solved][Delta] Precision Piezo issues

      @cosmowave said in [Delta] Precision Piezo issues:

      @Acid Are you sure, that every of the three piezo is working correctly? It can be, that two triggers with pushing and one with releasing.

      Hello, yes, I've also tested them individually. I went through every possible option and I'm thinking the issue now lies with how my controller interprets the signal from the PrecisionPiezo PCB.

      posted in Tuning and tweaking
      Acidundefined
      Acid
    • [Solved][Delta] Precision Piezo issues

      Hi everyone,

      The past two weeks I've dedicated to finishing my Delta build running RRF, and using Precision Piezo piezo's under the bed for probing. I'm using the universal v2.85 board:
      https://www.precisionpiezo.co.uk/product-page/universal-piezo-z-probe-pcb-v2-x-for-1-2-3-or-more-piezos

      I've been using this setup for a long time and it used to work well before. I've noticed that my old setup could be improved a bit as during probing I found the nozzle still pushed quite hard into the bed so I started tweaking the system and found out my issues work somewhat counter-intuitive.

      First I raised the plunge speed which seemed to help get a harder hit which triggered better. Then I discovered that the screws that held my bed would change in tightness depending on if the bed was heated or not so I redesigned the whole bed mount system to use a three-point coupling system:
      4ffb965e-e493-4df4-82f5-5503170f468f-image.png

      The bed has mounts that connect to the ball magnets and the white triangles have a pointy bottom that pushes in the piezo discs. If the bed heats up, the balls can move outwards, sliding over the block magnets, this makes sure the bed can freely expand while keeping the bed in place.

      This is the most sensitive system I've been able to build so far, it literally triggers from the lightest taps (see https://www.youtube.com/watch?v=QssthZMF7tU). I've also been able to probe with it quite well, but still somehow the hotend pushes the bed in, making it deflect between 0.5 and 1 mm.

      M558 P5 R0 C"!probe" H2 F7200 T7200 B1
      G31 P100 X0 Y0 Z-0.266 S0 
      

      These settings seemed to work okay, but a lot of the time I now can't get the probe to get a good enough minimum deviation to start a print.

      I am using the iterative probing script to probe the bed in the most sensitive areas possible to get the best readings. I designed a program that auto-generates points in places where the piezo probes get the strongest signal (working demo here) :

      3d1eadc9-bfce-4b72-9666-881f2104eaab-image.png

      It ran alright, this is a reasonably working probing example:
      https://www.youtube.com/shorts/eEXjATJ_640

      Still, I couldn't get it to work as good as before. It used to be really gentle and precise, but my old machine used plastic vertexes, had delta rods with lots of play, etc. My new machine has alu vertexes, thick extrusions, precision rods, better bed mounts, etc etc. What could be the problem?

      So I did some more reading, when I found this quote from a user over in the piezo probe discussion:
      @BlueDust said in Precision Piezo z probes guide for duet users reference:

      @en_passant
      Try swapping the wires from the Piezo Sensor to the Piezo motherboard.

      If the Piezo triggers on press, its correct, but if it triggers on release try swapping the sensor wires and see if that fixes it.

      I did a check, and indeed, the piezo didn't register anything if I pushed in my bed gently and only triggered upon release. So I did what seemed logical and reversed the wires from each piezo disc. This resulted in a direct trigger whenever the bed was pushed in, and the system seemed even more sensitive than before.

      I also tried lowering the probe speed to:

      M558 P5 R0 C"!probe" H2 F500 T7200 B1
      

      Howeverrrrrr, despite having a super sensitive probing setup and slower probing, the nozzle now literally pushes so hard into the bed that one side flips up. This takes an extreme amount of force to to by hand, so it's clear that the piezo setup is not working well.

      Here's a video:
      https://www.youtube.com/watch?v=QssthZMF7tU

      Still from the video:
      1cada7b4-fba7-416f-a73f-f887f210e5d9-image.png

      So in short:

      • My new probing setup is the most sensitive I've been able to craft to this day
      • With the probes in the "correct orientation" (according to another user) it works worse
      • Help

      Here's a link where I explain how I made the probing point cloud:
      https://forum.duet3d.com/post/308768

      This is my bed.g:

      ; Auto calibration routine for large delta printer
      M561                    ; clear any bed transform
      
      ; If the printer hasn't been homed, home it
      if !move.axes[0].homed || !move.axes[1].homed || !move.axes[2].homed
        G28
      
      ; Probe the bed and do auto calibration
      G1 X0 Y140 Z10 F10000        ; go to just above the first probe point
      while true
        if iterations = 10
          abort "Too many auto calibration attempts"
        G30 P0 X95.26 Y12 Z-99999 H0
        if result != 0
          continue
        G30 P1 X58.76 Y-9.93 Z-99999 H0
        if result != 0
          continue
        G30 P2 X37.98 Y-45.93 Z-99999 H0
        if result != 0
          continue
        G30 P3 X37.24 Y-88.5 Z-99999 H0
        if result != 0
          continue
        G30 P4 X0 Y-67 Z-99999 H0
        if result != 0
          continue
        G30 P5 X0 Y-24 Z-99999 H0
        if result != 0
          continue
        G30 P6 X-20.78 Y12 Z-99999 H0
        if result != 0
          continue
        G30 P7 X20.78 Y12 Z-99999 H0
        if result != 0
          continue
        G30 P8 X58.02 Y33.5 Z-99999 H0
        if result != 0
          continue
        G30 P9 X58.02 Y76.5 Z-99999 H0
        if result != 0
          continue
        G30 P10 X20.78 Y55.85 Z-99999 H0
        if result != 0
          continue
        G30 P11 X-20.78 Y55.85 Z-99999 H0
        if result != 0
          continue
        G30 P12 X-58.02 Y76.5 Z-99999 H0
        if result != 0
          continue
        G30 P13 X-58.02 Y33.5 Z-99999 H0
        if result != 0
          continue
        G30 P14 X-95.26 Y12 Z-99999 H0
        if result != 0
          continue
        G30 P15 X-58.76 Y-9.93 Z-99999 H0
        if result != 0
          continue
        G30 P16 X-37.98 Y-45.93 Z-99999 H0
        if result != 0
          continue
        G30 P17 X-37.24 Y-88.5 Z-99999 H0
        if result != 0
          continue
        G30 P15 X0 Y0 Z-99999 S8
        if result != 0
          continue
        if move.calibration.initial.deviation <= 0.04
          break
        echo "Repeating calibration because deviation is too high (" ^ move.calibration.initial.deviation ^ "mm)"
      ; end loop
      echo "Auto calibration successful, deviation", move.calibration.final.deviation ^ "mm"
      G1 X0 Y0 Z150 F10000                ; get the head out of the way
      

      Edit:
      After doing some more experimenting, I've found out that there seems to be an issue with my board not detecting a trigger correctly. The PrecisionPiezo PCB LED indicates that it is triggered but RRF doesn't stop probing movement when executing a G30.

      Second edit:
      This issue has been solved by switching to Digital Output on the PrecisionPiezo PCB. The Analog signal doesn't seem to work correctly and barely puts out a strong enough signal to be read.

      posted in Tuning and tweaking
      Acidundefined
      Acid