Converting a Flashforge Creator Pro to use Duet
-
I hope so. I have the duet, paneldue, and thermocoupler board all in hand right now. I have them plugged into my PC and they seem to be working. I love the web interface, but I could wish for a bit more functionality (I'm spoiled by octoprint's motion camera streaming and gcode viewer.) I'm also wondering if I can replace the little 4GB SDCard with something bigger (and I have a question posted elsewhere on this forum in regards to that.)
Tomorrow morning, UPS should be delivering a 450W 24V PSU and then I'll do the install. (The stock 350W PSU is underpowered for the bed heater and two extruders if measures aren't taken to limit the power going to the bed heater.)
I'm curious: what type of thermistor did you put in your FFCP, and did you fit it into the stock hot blocks? I'd rather not have the hassle of the interference prone thermocouplers, but couldn't figure out what I could easily replace them with (without having to replace the hot blocks, etc.)
Take care
Gary -
Nice project!
I recently did my Wanhao Duplicator 4S (rather close to FFCP as I understand it), see some details here: https://www.duet3d.com/forum/thread.php?id=3755
When I did it, I decided to change to one extruder (to be able to fit a cooling fan nicely). I had a few, not so nice, variants for cooling the dual extrusion, but I was never happy about it. I also hardly used the dual setup to anything useful. Hence I removed it.I tried to get some screw-in thermistors in my heatingblock, (Link to Swedish retailer: https://3d-grottan.se/Thermistor-100k-screw-mount?search=thermistor). I was however wrong there…my heating block had M4 threading and hence it did not fit. I should have checked that before...but you know, sometimes it goes too fast.... I then took, from an old E3D-clone-head I had, the 100k thermistor. To mount it, I drilled a hole in the heating block (2mm) and inserted it there. I used the M4 threads to fix the cables.
A closeup of my "drilled" heating block. On the top you can see some transparent cabling entering a hole, kept in place by a bolt below (where the thermocouple screwed in.
https://photos.app.goo.gl/sTndpFmiM8Y9L85T2Maybe I should have drilled close to the nozzle instead of the top of the block. I does however work. Anyhow…after all, this is working great and I am very pleased with my conversion. The printer is much less noisy (only hear the fans now) and it is printing better (from what I can tell, but might not be 100% accurate) than previously.
Good luck with the conversion!
-
Hi Gary,
I swapped my FFCP to DuetWifi almost a year ago, and I am very happy with the conversion.
Although, I must note that the printer made fantastic prints with the original board.
The main reason I swapped to Duet wifi is because I made several hardware changes in the printer, and I wanted to be able to fully control the firmware configuration.
I am a big fan of the GCODE everywhere that implemented in the RepRap firmware, and in my opinion the Duet board is fantastic.The changes I made to my printer are the following:
1.
I removed one extruder (originally the FFCP comes with 2 extruders)
I think its better that way because the 2 extruders are heavy, and sometimes during printing one nozzle interfere with the printer model, and that causes a mess.
I rarely need to print with 2 extruders, so one extruder was better for me.
2.
I replaced the original Extruder stepper motor to a 400[steps] stepper motor, and much longer motor, so it has greater torque.
3.
I added dc42 IR probe, so I can use the Auto bed leveling, and that’s a great improvement over the original Z endstop, because in my printer I found it was difficult to align the print bed, and that's a big problem when printing models that have a large surface in the first layer.
Using the IR Z probe, I was able to mechanically level the bed, and also the Auto bed compensation helps a lot, so now the first layer is not as challenging to print as is used to be.
Although its still not perfect, and I do spend some time in leveling the bed from time to time.
But for sure the Z probe helps a lot.You can download an IRProbe mount I made:
https://www.thingiverse.com/thing:2136474I replaced the original hotend to full metal nozzle (Micro Swiss MK10 All Metal Hotend), so now I can print high temp materials, like Nylon, and PC.
4.
I installed a "SonOff" switch, between the mains input to the PSU, so I am able to switch On/Off the printer using Wifi or a remote control, which is very handy.
5.
I've replaces the original LCD display to the PanelDue 4.3", which is very handy.
I've made a special mount which enables to install the PanelDue directly instead of the original LCD display.
You can download the STL file from this link
https://www.thingiverse.com/thing:1976962I replaced the original hotend thermocouple, with a thermistor,
The main reason is that I had interference problems, using the thermocouple daughter board. I know that the new thermocouple daughterboard is more stable, and should suffer fewer interferences.
I think using a thermistor is good enough for this range of temperatures.I replaced the original RGB led strip, with an Osram 4W LED strip
Now there is plenty of light inside the printer, and I can see the prints very clearly, and also to take pictures of the printer model, kind of a light tent.I could share here my configuration files if you find that helpful.
Here are some pictures:
Duet and accessories:
Original FFCP board installed:
Duet VS original FFCP board (Kind of aMightyBoard):
Pasting lables on wiring:
Original board removed:
Crimping wires:
Bottom view:
Installing LED:
Installing flexiable fan mount:
400[steps] Extruder Stepper Motor:
Finally:
-
config.g file:
[c]
; Configuration file for Duet WiFi (Firmware 1.20)
; Executed by the firmware on start-up
; Last updated: 29.12.2017 by Guyaros; General preferences
M111 S0; Debugging off
G21; Work in millimetres
G90; Set absolute coordinates
M83; Set relative extruder moves
M555 P1; Set firmware compatibility to look like RepRapFirmare
M575 P1 B57600 S1; Comms parameters for PanelDue; Network settings
M550 PGuyaros Creator Pro; Set printer name
M551 PYOURPASSWORD; Set printer password
M587 S"SAMPLEWIFISSID" I192.168.1.101 J192.168.1.1;
M552 P"SAMPLEWIFISSID" S1; Set network SSID (P) Enable WiFi (S1); Motors drivers
M569 P0 S0; Set (X) motor drive 0 (P0) (X) goes backward (S0)
M569 P1 S0; Set (Y) motor drive 1 (P1) goes backward (S0)
M569 P2 S1; Set (Z) motor drive 2 (P2) goes forward (S1)
M569 P3 S1; Set (E0) motor drive 3 (P3) goes forward (S1)M350 X16 Y16 Z16 E16 I1; Set microstepping to x16 step, Interpolation enabled (I1)
;M92 X93.718 Y93.718 Z400 E192.55; Set axis steps/mm
M92 X94.118 Y94.118 Z400 E192.55; Set axis steps/mm
M906 X700 Y700 Z400 E1200 I20; Set motor currents [mA] and motor idle factor in percent (20%)
M84 S10; Set idle timeout to 10[sec] (S10); Axis kinematics
M201 X560 Y560 Z250 E300; Set axis accelerations [mm/s^2]
M566 X840 Y840 Z840 E120; Set axis maximum instantaneous speed changes [mm/min]
M203 X4800 Y4800 Z720 E1200; Set axis maximum speeds [mm/min]; Axis size
M208 X0 Y0 Z-3 S1; Set axis minima
M208 X290 Y145 Z165 S0; Set axis maxima
M579 X1.001895478 Y1.004419446; Scale axis (Correction factors based on measurment of printed models); Endstops
M574 X1 S1; Set endstop configuration, X endstop at low end (X1), Active high (S1)
M574 Y1 S0; Set endstop configuration, Y endstop at low end, Active low (S0)
M574 Z1 S2; Set endstop configuration, Z Probe at low end; Z probe and Bed compensation
M558 P1 X0 Y0 Z1 F240 H1 T4800; Set Z probe type to IR probe (P1), and is used for homing Z axis (Z1), Feed rate 4[mm/sec] (F240), Dive height 1[mm] (H1), Travel speed between points 80[mm/sec] (T4800),
G31 X35 Y0 Z1.78 P500; Set the probe offset on x axis (X35), set z probe trigger height (Z1.78), set probe output value at trigger height (P500) (FlashForge Blue BuildTak)
M557 X60:255 Y8:128 S40; Set probing grid for Auto Bed Leveling using G29 command, X(min:max) Y(min:max) S(Spacing); Heaters & Thermistors
; Bed
M305 P0 T94573 B4230 R4700 L0 H0; Set thermistor + ADC parameters for heater 0 (P0)
M304 P430.7 I0.478 D452.2; Set Bed PID parameters
M307 H0 A242.2 C901.9 D1.5 S1.0; Set heating process parametersheater, Heater0 (H0), Gain (A242.2), time Constant (C901.9), Dead time (D1.5), maximum PWM 100% (S1.0)
M143 H0 S120; Set temperature limit for heater 0 (H0) to 120[deg] (S120)
; Extruder
M305 P1 T90000 B4085; Set thermistor and ADC parameters
M143 S255; Set maximum heater temperature to 255C
M307 H1 A306.6 C146 D6 S1.0; Set heating process parameters, Heater1 (H1),Gain (A), time constant (C), Dead time (D6), Max PWM 100% (S1.0); Fans
M106 P0 S0 I0 F250 H-1; Set fan 0 value, PWM signal inversion and frequency, Thermostatic control is turned off (Duet board fan)
M106 P1 S0 I0 F250 H1 T45 L1; Set fan 1 value, PWM signal inversion and frequency, Thermostatic control is turned on (Extruder0 Fan)
M106 P2 S0 I0 F250 H-1; Set fan 2 value, PWM signal inversion and frequency, Thermostatic control is turned off (Blower fan); Tools
M563 P0 D0 H1 F2; Define tool 0 (P0), uses Extruder 0(E0) (D0), uses Heater 1 (Actually Heater E0), uses Fan 2 (F2)
G10 P0 X0 Y0; Set tool 0 axis offsets
G10 P0 R0 S0; Set initial tool 0 active and standby temperatures to 0C
T0; Select first tool
[/c] -
I swapped my FFCP to DuetWifi almost a year ago, and I am very happy with the conversion.
Wow…
So, I think I finished. (At least with the wiring.) I ran into some serious issues, though, and wanted to post about them (so they might help future people doing the same project):
1. Mine only had a 320W PSU in it, and that's just not enough power for 2 extruders and the HBP. That's been replaced with a Mean Well SE-450-24 450W unit. (That has an always-on fan. ) To be completely honest, even the 350W PSU in most FFCP's is insufficient for running the factory HBP heater and two 40W extruder heaters.
2. Had major issues getting the thermocoupler board working. After falling into "I'll try anything" mode, it turned out I needed to use X150 instead of X100 when setting it up. It'd be useful if a specific version/model was printed on the PCB, as reading the numbers on the chip is extremely difficult for some (most?) of us.
3. Had major issues with the FFCP "Rev J" HBP. Any time the HBP heater was turned on, the PSU would turn off. To make a (very) long story short, the problem is that the FFCP RevJ heater is an extremely low resistance heater that wants to draw over 14amps@24V (yes, that's over 330W in a machine with only a 320W PSU.) When it got turned on, the PSU just couldn't handle the massive inrush of current, and the protection circuits would kick in. The resolution was to steal a hack from the Sailfish firmware and set the heater's max PWM to 85%. (I wonder if I ran at 85% PWM, and then gradually increased the PWM to 100%, if the PSU would handle it. It is (now) a 450W PSU, so it should be doable. I'll need to experiment to see if it's possible to always start the heater at 85% PWM and increase it gradually.)
4. I'm going to have to (eventually) remount the duet board. Currently, I have the bottom half of a mount from thingiverse taped (3M super strength automotive molding tape) to the underside of the case, and the duet board mounted to that. What I eventually want to do is re-print another duet case half, but with mounting holes that match the mightyboard that came out of the FFCP. Then I can mount the case-half to the original mounts, and the duet to the duet mounts.
Some non-major issues I've come across:
1. The duet firmware has wonderful support for z-probes. Without the z-probe, however, there are a lot of useless options in the web interface and gcode.
SUGGESTION: There should be a way to tell the firmware that there's no z-probe installed. If that is selected, then the various "auto-level" things, instead of running "bed.g" could run a "bed-manual.g" instead. The bed-manual.g could contain something similar to my own bed levelling macro. (home the printer, move to Z5, move the extruder to center X/Y, move to Z0, turn off all stepper motors EXCEPT Z, display a message telling the user to move the carriage around and level, etc.2. I'm still trying to decide if I want to have X=0, Y=0 as the center of my build plate (which is how sailfish/makerbot does things - and what I'm used to) or if I want to do things reprap style and set 0,0 to the "home" location (which might make things odd because the FFCP endstops are in the rear right corner.)
3. I really wish the paneldue supported some kind of screen timeout/blanking.
SUGGESTION: It would be nice if the paneldue, when the status (as shown in the upper right) is idle, would turn off the backlight after a configurable number of minutes. This might help extend the life of those cheap LCD screens.4. When testing fans, I keep trying to use M126/M127. (They don't exist in reprap firmware.) I'd love to be able to alias non-existent gcodes to existing ones. (Example: I'd alias M126 to M106 and M127 to M107.)
5. Somewhat related to #2 (0/0 at center or at home), I'm trying to decide how I want to offset my two extruders. (I like having two, and often do dual extrusion.) I can keep things similar to Sailfish where the right tool is T0 and the point of origin (and the left tool, T1, is offset from that) – or -- I can have the point of origin be exactly center between the left and right tools, each of them being offset from it. I suppose if I keep X0/Y0 at the center of the build plate, I'll configure the tool offsets to also be the same as sailfish.
Oh, and of course I need to get everything configured and actually print something.
Take care
Gary -
Gary, thanks for your feedback. I am glad you have your machine working with the Duet. I have a few comments on your feedback:
Firmware configuration for the thermocouple boards: As a result of your comments, I have rewritten the text and provided an additional photo, which I hope will be clearer to the next person.
Insufficient PSU capacity: Another way to get it working with your old PSU would have been be to turn down the voltage adjustment potentiometer on the PSU. But replacing it with one of an adequate size as you have done is better.
Operation without a Z probe: The Duet does support this since firmware 1.19, but configtool doesn't yet. So you should edit your config.g file, changing the P parameter in the M558 command to P0. You can use a normal bed.g file and even do mesh bed compensation. Every time a point needs to be probed, you will be prompted to lower the nozzle until it just touches the bed. You need to install PanelDue firmware 1.20RC1 on your PanelDue to get the prompts on it, or you can use the web interface, or even USB.
PanelDue backlight: I am not aware of the backlight LEDs on the TFT panels having ever failed. So I don't think you need to worry about the backlight wearing out. Dimming the LCD after a number of minutes is on the wish list; meanwhile you can reduce the brightness manually.
M127/M127: These are listed at http://reprap.org/wiki/G-code#M126:_Open_Valve as being "Open valve" and "Close valve", so I don't think it is appropriate for them to control fans.
-
I've replaces the original LCD display to the PanelDue 4.3", which is very handy.
I've made a special mount which enables to install the PanelDue directly instead of the original LCD display.What do you mount that bracket to? Did you also make a part that fits in that front section with mounting holes?
For mine (5" screen), I'm trying to come up with some kind of frankenmount merge between dc42's paneldue mount (as posted on thingiverse) and attaching the rear lid of that to something like this: https://www.thingiverse.com/thing:1452323. The end result would (hopefully) be the 5" panel attached to the front of the FFCP at a 45 degree angle. I hope.
-
Firmware configuration for the thermocouple boards: As a result of your comments, I have rewritten the text and provided an additional photo, which I hope will be clearer to the next person.
Thank you. Even just (in bold text so it's harder to miss) mentioning that "if you have black terminals, use X150. For green terminals, use X100. If your terminals are a different color, pay closer attention to the pictures."
So you should edit your config.g file, changing the P parameter in the M558 command to P0. You can use a normal bed.g file and even do mesh bed compensation. Every time a point needs to be probed, you will be prompted to lower the nozzle until it just touches the bed. You need to install PanelDue firmware 1.20RC1 on your PanelDue to get the prompts on it, or you can use the web interface, or even USB
So, I have all that going on, and even have a M671, but I'm not sure that's what I really want. I guess I'm just so used to my "old way" of doing things, that I'm having a mental block with the newer stuff. Perhaps I'll get a z-probe and see how it works out.
One thing "missing" from the levelling routines (I think) is pre-heating the build surface. If I level my bed on a cold platform, I usually have problems once the bed is heated.
For anyone else, here's my current "manual levelling" macro:
G28 ; home all G90 ; absolute positioning G1 Z5 F800 ; drop the build plate slightly (give room to move past any glass corner clips) G1 X0 Y0 F1800 ; move to center G1 Z0 F200 ; slowly raise the build plate to home position (don't crack glass if too close) M84 ; turn off the motors - this is the wrong command... there's another one that should allow me to turn off X/Y but not Z. M291 P"Please wait while heated the bed" R"Manual Levelling" S0 T0 ; Display message M190 S90 ; heat the bed - this blocks m300 s1500 P200 ; beep M292 ; Hide the message M291 P"Move the carriage manually to level the build plate" R"Manual Levelling" S2 ; after response, lower z to z150. M190 S0 ; turn the bed off G1 Z150 F1200
M127/M127: These are listed at http://reprap.org/wiki/G-code#M126:_Open_Valve as being "Open valve" and "Close valve", so I don't think it is appropriate for them to control fans.
I'm not asking that the gcodes be added to the firmware… I'm asking that the firmware allow a user to create command aliases. It might not be appropriate for M126/M127 to control a level fan, but it IS what sailfish/GPX uses (and I have a lot of gcode based on that.) If I could somehow alias M126 to M106 (and a few other commands) I could reuse that gcode without having to do search/replaces.
-
Another "major" complaint:
Before I installed the Duet, I had captured R2-D2 (you know.. the robot in the original Star Wars movies.) I stuffed him inside my printer, and any time I'd print, he'd make all kinds of noise. My kids loved it.
Since installing the Duet, it appears that either R2 is dead, or he escaped.
Is there any way to get him back?
(non-sarcastic version: OMG, how did a bunch of non-moving circuits make my printer so quiet???? I have the exact same steppers, extruder gears, etc. Now all I hear are fans. )
-
If your kids miss R2D2, you can get him back at least partially by turning off microstep interpolation in the M350 command. But you may still find him quieter than before, because the step generation algorithm generates smoother motion than some other firmwares do.
-
Can you guy
s with the Creator pro
s please post your home xyz and home all .g files please? -
I'd be happy to. Mine tries to operate similar to how Sailfish + Simplify3D did. For hardware, I'm using the FFCP steppers, heaters, thermo-devices, endstops, etc. I have X0,Y0 in the center of my build plate. I'm sure I'm not done messing with this, but I am able to print, so it's a good starting point.
(google drive shared .zip file)
https://drive.google.com/open?id=1x03T6Pf4WdeVBwW9Q0RbWoQ5moN52djS
(Here's just the homeall file… all the rest and some other stuff are in the above linked zip.)
[[language]] G91 ; relative positioning G1 Z5 F6000 ; lift Z relative to current position G1 S1 X266 Y155 F1800 ; move quickly to X and Y axis endstops and stop there (first pass) G1 X-5 Y-5 F6000 ; go back a few mm G1 S1 X266 Y155 F360 ; move slowly to X and Y axis endstops once more (second pass) G1 S1 Z-155 F1800 ; move Z down stopping at the endstop G1 Z5 F1200 ; back off a bit G1 S1 Z-155 F100 ; move back to the endstop slowly G90 ; absolute positioning G92 X150 Y75 Z0 ; set new X/Y/Z position
-
Many Thanks for the info… See how it goes... cheers
-
I've replaces the original LCD display to the PanelDue 4.3", which is very handy.
I've made a special mount which enables to install the PanelDue directly instead of the original LCD display.What do you mount that bracket to? Did you also make a part that fits in that front section with mounting holes?
For mine (5" screen), I'm trying to come up with some kind of frankenmount merge between dc42's paneldue mount (as posted on thingiverse) and attaching the rear lid of that to something like this: https://www.thingiverse.com/thing:1452323. The end result would (hopefully) be the 5" panel attached to the front of the FFCP at a 45 degree angle. I hope.
Hi Gary,
You can download the bracket I made at this link:
https://www.thingiverse.com/thing:2740508
The brackets fit directly into the original bolts holes.If you want the bracket file in another file format (sldprt, X_t), I can send it to you.
Another "major" complaint:
Before I installed the Duet, I had captured R2-D2 (you know.. the robot in the original Star Wars movies.) I stuffed him inside my printer, and any time I'd print, he'd make all kinds of noise. My kids loved it.
Since installing the Duet, it appears that either R2 is dead, or he escaped.
Is there any way to get him back?
(non-sarcastic version: OMG, how did a bunch of non-moving circuits make my printer so quiet???? I have the exact same steppers, extruder gears, etc. Now all I hear are fans. )
HaHa, I liked how you described that.
Indeed the noise difrenece between the original board to Duet is huge.
with the Duet all I can hear is the fans noise, which isn't terrible at all, even in a quiet environment like my room. -
Can you guy
s with the Creator pro
s please post your home xyz and home all .g files please?Here are my home files:
homeall.g
[c]
; homeall.g
; called to home all axesM98 Phomex.g; Calls to the file homex.g
M98 Phomey.g; Calls to the file homey.g
M98 Phomez.g; Calls to the file homez.g
[/c]homex.g
[c]; homex.g
; called to home X axisM913 X30; Set X motor current to 30% of its normal current to avoid ramming in case of crash
G91; Switch to relative positioning
G1 Z5 F300; Lower bed by 5[mm] in travel speed 5[mm/sec] to avoid crashing; First pass (Corse movement)
G91; Switch to relative positioning
G1 X-295 F1200 S1; Move X axis to towards the endstop at travel speed of 25[mm/sec] (F1500) stop when endstop triggers (S1)
G92 X0; Set X to home positions; Go back a few mm
G1 X5 F600; Move X axis by 5[mm]; Second pass (Fine movement)
G1 X-10 F300 S1; Move X axis to towards the endstop at travel speed of 6[mm/sec] (F360) stop when endstop triggers (S1)
G92 X0; Set X to home position
G90; Switch to absolute positioningM913 X100; Reset X motor current to normal current
[/c]homey.g
[c]
; homey.g
; Called to home the Y axisM913 Y40; Set Y motor current to 40% of its normal current, to avoid ramming in case of crash
; First pass (Coarse movement)
G91; Switch to relative positioning
G1 Y-165 F1200 S1; Move Y-axis to towards the endstop, at travel speed of 20[mm/sec] (F1200), stop when endstop triggers (S1)
G92 Y0; Set current Y-axis position to home position
G1 Y5 F600; Move back Y-axis by 5[mm]; Second pass (Fine movement)
G1 Y-8 F300 S1; Move Y-axis to towards the endstop, at travel speed of 6[mm/sec] (F360), stop when endstop triggers (S1)
G92 Y0; Set Y position to home position
G90; Switch to absolute positioning
M913 Y100; Reset Y motor current to normal current 100%
[/c]homez.g (Using dc42 IRProbe)
Note: Don't copy my homez.g script because I do have some problems with it.
for some reason the G30 is not working all the time, maybe my IRprobe is not fixed to the correct height, so I get errors.
[c]
; homez.g
; called to home the Z axis; Prepare for Z-axis homing
M913 Z80; Set Z motor current to 80% of its normal current, to avoid ramming in case of crash
G91; Switch to relative positioning
G1 Z5 F300; Move bed 5[mm] down, at travel speed 5[mm/sec], to avoid nozzle crash in case the bed is above the nozzle
G90; Switch to Absolute positioning
G1 X120 Y70 F3000; Move carriage to bed center, at travel speed 50[mm/sec]
; Home Z-axis
G91; Switch to relative positioning
G1 Z-175 F240 S1; Raise bed all the way up, at travel speed 5[mm/sec], stop when hit the endstop (S1)
G1 Z3; Lower bed by 3[mm]
G92 Z6; Set Z position
G30; Probe the bed at the current XY position. When the probe is triggered, set the Z coordinate to the probe trigger height
G90; Switch to absolute positioning
M913 Z100; Set Z motor current back to 100%
[/c] -
In case someone in the future decides to do this worthwhile conversion, I'm posting a link to an STL I created that allows mounting a Duet Wifi or Duet Ethernet in a flashforge creator pro (using the existing mightyboard standoffs.)
https://www.thingiverse.com/thing:2748835
(Is there someplace in the duet3d wiki for posting these types of things?)
-