It's not really buried, though. It's behind a layer of acrylic, that in my case wasn't even on, and was quite literally facing the router. Supposedly (according to the docs) the ESP32 module can be replaced with one with a connector in place of the antenna so you can attach an external one via a pigtail. Replacing it does require a hot air reflow station though. It seems to be fine now that i've moved it about 5m closer.
Working on something like this: Adjustable height silicone wiper holder and a tiny removable bucket. We'll see if it's viable... The holder is designed for the wipers that came with BigBox (but half the length).
That bucket is EXTREMELY tiny, lol. I might redesign next iteration with something bigger. Or just make the bucket about 2x as deep.
The biggest issue with the rubbish is that it can drop directly onto the spool directly below. The bucket would prevent that, but would still fill up over a long print. Options to mitigate that. Mount the spools (or even just that single spool) on the outside instead of the inside, either with longer feeder tubes or the same tubes plus a new hole in the side panels. Mount the spools in front of the machine on standard spool mounts Move the prime/purge location to the front of the machine. There's not much clearance, but there is some.
Yep. I also thought of the garbage chute on the Bigbox but never did it, despite the huge holes there waiting to make it happen. Spool roof might work. Only one spool in dire need too.
The new purge/wipe/brush station mostly works, but... i'm finding it's very filament-dependent. Some PLA filaments stick to Nozzle X like crazy, and no amount of wiping or brushing helps - it just smears it over the nozzle. For others, it works perfectly, the nozzle purges, the wipe detaches the string, the brush picks up any remains, and it's perfectly clean every time. White and black seem to be the worst, followed by glitter-filled PLA. Semitransparent and low opacity filaments, like orange, work the best. So i'm guessing the pigment/filler is to blame.
What's your current purge/prime looking like? I experimented with ram purging yesterday, but it doesn't feel properly dependable, but again this could be filament dependent. I could also just be overthinking things. My goal is to print a dual-colour benchy, but so far every attempt results in one of the extruders jamming. Very frustrating.
I started with just a regular purge + small retract (0.25-0.5mm) but that did nothing. I tried ram purging too, but it still drools considerably. About the only thing i haven't tried is very slow purge + very slow retract, which might actually do something - if the filament is simply too liquid, a fast retract will just rip out the filament at the melt zone and leave a considerable amount inside the melt zone, so it might make sense to try a very slow retract. What i'm currently annoyed by (apart from the drool) is the fact that all my attempts to design a successful wipe result in the complete opposite of a clean nozzle - either it just flips the free air extrusion up and it sticks to the nozzle, or it sticks to the wiper and gets picked up later, or doesn't even detach from the nozzle and ends up on the bed. I don't get it, i've had wipes going and working perfectly well on the bigbox, but now, all of a sudden, it's a huge issue. Is it the combination of Nozzle X and the PLA i'm using, or what? Extruders jamming are usually a sign of retracting too far and too quickly. I've had no jams so far, but i haven't gotten further than 5 layers so far on the tree frog before i just stop it because it's full of dragged-in rubbish.
Been experimenting with doing a very deep retract last night and not even bothering with a purge - just wipe, then reprime after moving the tool out, immediately before the print start. That was actually the best so far for black and white filament, but not for the less viscous orange filament that i'm using, which - curiously - works way better with a traditional purge and prime. When i do that with that particular filament, the 2cm fast reprime builds up so much pressure it just blurts out a huge extrusion sausage as it's approaching the printing position. Quite annoying.
OK. My tree frog is the best so far. Despite the rubbish, I was able to clean it up and it looks good. That was a combination of HobbyKing Premium Black PLA and E3D Red PLA. I was not using any special purge prime at the time. The purge was empty, and the prime was merely 10 to 15 of prime followed by some brushing. As a result, I did have drool once the tool was parked, but this was cleared by the re-prime and swipe, which I tweaked more and more as I went on, eventually developing this prime, pause, wipe, and swipe routine. Over the course of the print, I lowered the temps to try to address stringiness. So, I ended up moving down from 220 to 200. The other thing that I could control over time was the retraction and tfre processes. Retraction has become somewhat of a burden, but I think I have a decent processing plan now. I'm using S3D to slice. S3D doesn't understand G10, G11. If I allow it to generate M101, M103 commands then it results in a retraction at the end of every move, which I don't want. So I've chosen to use S3D retraction with crazy settings so that I can post process the results of those settings into standard G10, G11. This then gives me the benefit of configurable moves without retraction combined with G10,G11 for in-print retraction calibration. I ended up using 100 for retraction and using a standard S3D post processing script to catch and treat the results. Code: {REPLACE "G1 E-100.0000 F0" "G10 ; retract"} {REPLACE "G1 E-99" "G1 E-99\n;"} {REPLACE "G1 E-99" "G10 ; retract"} {REPLACE "G1 E100.0000 F0" "G11 ; unretract"} Because I also use the option to retract while wiping, this results in the 99.nnnnn retractions which are then also turned into G10 retractions, regardless of any rounding. The next challenge is that of tool changes. Tool changes are presumed to occur instantaneously. This is quite clearly not the case. We have to dock the tool, pick up another, prime it to some extent, and then return to position. There are two problems with that. If we return directly to the spot we were in, we will un-retract into the place we don't want to be, and secondly any tiny amount of ooze will be dragged on the part. To counter this, I use both S3D post processing and a separate Notepad++ macro to post process. First the S3D post processing looks like this: Code: {REPLACE "\nT0" "\nG10\nT0\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT1" "\nG10\nT1\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT2" "\nG10\nT2\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT3" "\nG10\nT3\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} What this does is to augment a tool change with additional commands. These commands first retract, then tool change (invoke tfre which I'll cover in a moment), then return the tool at high speed to the X and Y coordinated automatically stored during a tool change event (R2), at a position of Z+1 above the print. The reason for the crazy speed is that I essentially want to move as fast as the machine is configured to allow regardless of whether I've decided to slow down the print for some other reason. Finally I drop into position and unretract the new tool. That's the first part of the processing, but it's still not ideal. We actually don't want to unretract a blob at the place we were at before we wanted to move. We want to move to the next position before we descend and unretract. To achieve that, I need to look for a pattern in the GCODE and move a couple of lines around. To do this, I use a macro in notepad++, though you could use other tools if you prefer. The replacement is essentially just the result of a couple of regular expressions. If you have notepad++, find your shortcuts.xml file and add this Macro for SHIFT+CTRL+F6: Code: <Macro name="GCODE post-process" Ctrl="yes" Alt="no" Shift="yes" Key="117"> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="^(G1 R2 Z0 F1200)\r\n(.*)\r\n(G1 Z.*)$" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="\3\r\n\2" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> <Action type="3" message="1700" wParam="0" lParam="0" sParam="" /> <Action type="3" message="1601" wParam="0" lParam="0" sParam="^(.*\r\nG11 ; tool change replacement)\r\n(.*)$" /> <Action type="3" message="1625" wParam="0" lParam="2" sParam="" /> <Action type="3" message="1602" wParam="0" lParam="0" sParam="\2\r\n\1" /> <Action type="3" message="1702" wParam="0" lParam="768" sParam="" /> <Action type="3" message="1701" wParam="0" lParam="1609" sParam="" /> </Macro> As you can see, this is getting a big mad, but someone said we were pioneers here, so I just kept pushing. Anyway ... What we have to do here is cope with two possible types of tool change. A tool change on a layer boundary, and a tool change within a layer. The fist replacement looks for a tool change on a layer boundary. Essentially, it swaps the move step with with the Z change step. It does this because the next macro is look for a G11 on a tool change and moving the line after the tool change before the line before the G11. As a result, you end up making the move step in mid air to the next place for the new tool before finally descending into position and finally unretracting. Ah yes, the result of my messing around with the G code here can also sometimes result in a G11 followed by a G10, so I snip that and convert to a comment using this in S3D. Code: {REPLACE "G11 ; tool change replacement\nG10 ; retract" ";remove unretract/retract"} But in the end I don't want comments in the file due to the notepad++ post processing above. So I finally snip all comments in the file: {STRIP ";"} Finally, here's my entire post processing script as it currently stands. Code: {REPLACE "G1 E-100.0000 F0" "G10 ; retract"} {REPLACE "G1 E-99" "G1 E-99\n;"} {REPLACE "G1 E-99" "G10 ; retract"} {REPLACE "G1 E100.0000 F0" "G11 ; unretract"} {REPLACE "\nT0" "\nG10\nT0\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT1" "\nG10\nT1\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT2" "\nG10\nT2\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE "\nT3" "\nG10\nT3\nG1 R2 X0 Y0 Z1 F99999\nG1 R2 Z0 F1200\nG11 ; tool change replacement"} {REPLACE ";Tool0" "T0"} {REPLACE ";Tool1" "T1"} {REPLACE ";Tool2" "T2"} {REPLACE ";Tool3" "T3"} {REPLACE "G11 ; tool change replacement\nG10 ; retract" ";remove unretract/retract"} {STRIP ";"} The strange Tool0 replacements are to allow me to have starting scripts that select tools, but which aren't processed by the tool change replacements in the preceding lines. My start script looks like this at present (only currently working with 3 tools): Code: ; Warm bed M140 S80 ; Wait for heat M116 H0 ; Wait for soak G4 S30 ; Home M98 Phomeall.g ; Measure Mesh G29 ;Duet Firmware Retract M207 S3.75 R-0.025 F5500 T5500 Z0.5 ;Prime Line Tool 0 ;Tool0 G1 X1 Y150 Z1 F99999 G1 Z0.3 F6000 G1 E5 F3000 G10 G11 G1 X1 Y50 E5.9868 F600 G10 ;Prime Line Tool 1 ;Tool1 G1 X2 Y150 Z1 F99999 G1 Z0.3 F6000 G11 G1 X2 Y50 E5.9868 F600 G10 ;Prime Line Tool 2 ;Tool2 G1 X3 Y150 Z1 F99999 G1 Z0.3 F6000 G11 G1 X3 Y50 E5.9868 F600 G10 I'm thinking Firmware Retract should probably end up being in the tool change scripts. But I'm a bit loathe to put them in there as they might be different for different materials and it feels like that should be instructed by the slicer. I don't think I can configure tool-specific firmware retract at present for the Duet. It's just one setting for the whole system. These prime tool lines just let me get the state right for the rest of the print and also give a quick check that everything is working. Maybe something in there can help you get to the next step, or you can just tell me how crazy I'm being and how to do better.
I put all this together for another run at the frog last night. Into the mix, I moved one of my spools to a front-mounting to test this. I found a useful T-nut model that will take M3 screws and nuts, and I have many of those lying around compared to M5 bolt to fit the metal T-nuts. https://www.thingiverse.com/thing:3199057 I'm not 100% happy with it yet, but it does seem viable. With that in place, I put all the stuff above into play and scarily left my printer tool-changing over night for the first time. When I went to bed I had this: I awoke to find this: Not quite 100% success. Out of the 177 tool changes (this is 0.2 resolution), 1 seems to have re-collected the purged filament and attached it to the model. As you can see there's still a lot of angel hair (easily burnt off with a cigarette lighter), and I think this could be tough to resolve completely with the challenging combo of a long bowden tube and pressure advance. My settings for this print were: M207 Retraction/un-retraction settings: length 3.75/3.72mm, speed 3400/3400mm/min, Z hop 0.08mm I also ran this whole print with reduced currents to test that. M906 Motor current (mA) - X:1500, Y:1500, Z:1330, C:500, E:1000:1000:1000:1000, idle factor 30% The print used tools 0 and 2. I had PA set as follows M572 Extruder pressure advance: 0.160, 0.130, 0.110, 0.150 I accidentally cut Tool 2's bowden shorter than the docs. Tool 0 is 790mm, and Tool 2 is 750mm. During the first couple of layers I made some more changes to purge/priming. This print has change every single layer, so you do get a change to tune this part of your setup in this way. When I finally left I had this thinking in mind. For priming: And for purging: This is encoded as prime.g: Code: ;; move in G0 X-39 Y200 F99999 ; prime G92 E0 ;G1 E100 F500 ; use if ram purging G1 E10 F500 ; use with normal purge G1 E10 F250 G4 S6 ;wipe G0 X-39 Y120.5 F99999 G0 X-43 Y152.5 E0.1 G0 X-9 Y152.5 G92 E0 And purge.g Code: ;; move in G0 X-39 Y100 F99999 G0 X-39 Y172.5 ; purge ;G1 E5 F350 ;G1 E12 F255 ; G1 E12 F2550 ; ram ; G1 E-100 F35000 ; purge - high speed retraction of cold filament to prevent bulging G4 S6 ;wipe G0 X-39 Y122.5 F99999 G0 X-39 Y152.5 G0 X-39 Y122.5 G0 X-39 Y152.5 It's not completely 100% guaranteed, but does do well.
That's what I was getting too - my wipes work for a while, then eventually, there's filament left on the wiper or the brush and it drags a whole bush of crap onto the print. I left for a trip so can't experiment more for a while, but unless I get it to not ooze at all while idling, I'm going to work out some kind of a metal plate the tool can slide the nozzle against when docking, so it plugs the nozzle when idle. I think someone had a similar setup going with the BigBox IDEX back in one of the IDEX threads. I actually worked out the retract and idle temp settings that got the black PLA ooze to almost nothing - even without a wipe. But the orange filament still oozes like crazy. Even with a prime pillar and an idle 190 deg C temperature, it would still manage to ooze enough in the short span from the prime tower to the frog that the frog ended up a mess. Maybe I should just give up on that filament altogether...
Yeh. Interesting how different filaments of the 'same material' really can be. This is why you could maybe do with retraction settings per tool too.
That's because unlike some other firmwares, RepRapFirmware always respects the Z jerk setting. When you use mesh bed compensation, the Z axis has to change direction at the mesh boundaries. So if the bed is very uneven or your Z jerk is set too low, it will decelerate/accelerate the XY motion at the boundaries in order to respect the Z jerk limit while keep the motors synchronised. Solutions include: reduce max XY speed; increase Z jerk if the Z axis can handle that without skipping steps; or for the particular case of motion after cancelling a print, you could use G92 s2 in the cancel.g file to cancel bed compensation, before the move to the front of the dock.
External antenna is now available as a standard option on the Duet WiFi. It makes a big difference to the signal strength. I'm glad you have it working reliably now. Changing the WiFi channel used by the router often makes a big difference too. I have a theory that the ESP module works better on some WiFi channels than others.