FlashForge Creator Pro Control Board Swap

FlashForge Creator Pro

NOTE: This will (probably) also work identically on:
FlashForge Creator Pro (any year)
FlashForge Creator X (very similar precursor to the Creator Pro, so probably also works)
PowerSpec 3D Pro Printer (MicroCenter's rebranded version of the Creator Pro)
MakerBot Replicator 1 Dual
QIDI Tech 1
Wanhao Duplicator 4s
CTC Bizer
Monoprice Architect

Before and after, printed at 70mm/s, 2500mm/s^2 accel, 120mm/s travel
Using linear advance and resonance compensation. 


In the process of printing ABS for my Voron 2.4r2 and having results that were not that great, I decided I wanted to fix up the FlashForge Creator Pro (FFCP) so I'll still be able to use it and get better prints out of it. Before you jump in and start buying parts, there's an option to buy a new cheap MK10 heater block with M3 threads, or drill the one you already have; I drilled mine and it worked fine, but buying the heater block and different thermistor makes a lot of sense.

Pre-manufactured heater block with silicone sock and more powerful ceramic heater (so you don't have to drill your own hole, and you would use this thermistor.)

Tools used:
Raspberry Pi 3B (or equivalent)
2x 32GB microSD card (this size is the cheapest and smallest you can find at most stores; you need one for the SKR and one for the Pi)
Canakit 5v 2.5a RPI power supply (all my other power supplies didn't have enough voltage for the RPi)
BigTreeTech SKR Mini E3 V3.0 controller board (for controlling the printer)
6mm wrench / socket (for removing the thermocouple from the heater block)
ENGINEER PA-09 crimpers (for crimping the connectors on the wires)
ENGINEER PA-14 strippers (for stripping the wires and cutting off the old molex plugs)
20 JST XH2.54mm female plugs and metal crimps (for terminations)
1 1/8"-40 x 3/16" set screw (for holding in the new thermistor)
5/64" drill bit (for initial hole drilling)
SAE 4-40 tap and drill bit (for final hole drilling and threading) (I used a 7/64" drill bit but the linked kit works if you don't have drill bits and taps laying around and you'll never use them again)
SAE and Metric Allen wrench set (for tightening the set screw and disassembling printer)
Multimeter (for measuring the bed heater, and various other things if your wiring differs from mine)
TS-100 Soldering Iron (for soldering the thermocouple wires to the new thermistor)
Solder (same as above)
Heatshrink tube (same as above)
12a BigTreeTech bed heater MOSFET (for safely powering the bed)
Spring loaded pen punch (for marking the spot you need to drill)
NTC100K thermistor (don't get the ones that look like shoe laces, get the ones with the shorter metal part so you dont have to bend it)

Nice to have:
ADXL345 accelerometer (for resonance compensation)
Silicone heater block sock (for allegedly more consistent temperatures and definitely less plastic stuck to the nozzle)

Downloads:
Klipper's printer.cfg file, configured and tested thoroughly by me.

NOTE: I don't really use the second extruder, so I don't mind not controlling that. If I wanted to, I would have bought a BigTreeTech SKR 3. Instead, I bought an SKR E3 Mini v3. There are some limitations I figured out after buying so maybe you should try the SKR 3 instead. You'll need to separately purchase TMC2209 drivers if you get the SKR 3, whereas the SKR E3 Mini v3 has integrated TMC2209's, allegedly saving some money and definitely running cooler.


Here's my process I went through to upgrade the printer, since everyone else who's done it hasn't documented it all in one place, or at all.
  1. Flip the printer over, take off the screws holding the bottom panel on, and take pictures of everything. The more the better, and video can be helpful sometimes too. 
  2. Label what every pair of wires goes to. They're color coded, which helps plugging them into the board in the correct spots, but you need to know what everything is. I used sticker label things from work to write out where the wires went and then wrapped it around them.
  3. Start removing the wires, and unscrewing the MightyBoard from the printer. Make sure your printer is unplugged before you start this so you don't hurt yourself or short anything out. It's very possible with 24v and plenty of uncovered wires hanging around.
  4. After removing the board, you're going to have to start cutting off the old molex type connectors. You can cut and strip the wires with ENGINEER PA-14 strippers, and crimp them with ENGINEER PA-09 crimpers, then shoving them in some JST XH-2.54mm. I believe you will only really use 2 pin and 4 pin connectors. You can get kits of the metal pins and male plastic plugs on your favorite internet shopping site.
As far as tips and tricks for wiring, there's a couple things to know:
  • Black is - (ground / gnd), Red is + (VCC / VSS)
  • You can't use the stock FFCP LED strip with this setup as far as I know, and it's not worth it to me to try
  • The screen and controls on the front of the printer will no longer work, but this is okay because we'll control the printer with Fluidd / Klipper
  • The bed heater sensor (K-type thermistor) will work with this setup
  • The extruder heater sensor (thermocouple) does not work with this setup. Some people have apparently tried to convert the thermocouple output to emulate a thermistor, but it seems cumbersome. 
  • Having a multimeter is almost essential to make sure you have the correct wires.
MAIN POWER:
The black ground wire and red 24V power wire go to the screw terminals on the SKR board.

BED HEATER POWER:
Before you just plug these black and red wires into the MOSFET, measure using the resistance (impedence) using a multimeter between the red and black bed heater wires. Divide Volts^2 by Ohms to find the bed heater's power draw. Here's an example for my FFCP:

Watts = Volts^2 / Ohms
Watts = 24v^2 / 2.5Ohms
Watts = 230.4w

This indicates my power supply is sufficient, since it supplies 340W of power, but maybe it wouldn't be if I was running dual extruders vs a single extruder. Next, you should calculate amperage. Here's another example.

Amps = Volts / Ohms
Amps = 24v / 2.5Ohms
Amps = 9.6a

The SKR E3 Mini v3 is limited by this because the circuit for the bed heater includes a 9 amp-rated MOSFET. To avoid a burning house situation, I purchased a BIQU powered bed expansion module, which is basically a 12 amp rated MOSFET. I believe using the SKR 3.0 board would avoid doing this, and also (with a power supply upgrade) be able to run both extruders comfortably.

The BigTreeTech bed heater MOSFET I ordered was easy to install. It comes with a red wire and a black wire, both terminated with spade connectors. Plug the 24V + (red) and - (black) into the spare 24v and ground screw terminals on the power supply. Then, connect the bed heater wires to the "heat bed" screw terminals on the MOSFET board (these wires are not polar). Last, you have to connect the open ends of the small JST terminated wires coming from the plug in the board to the SKR Mini's terminals for the bed heater. These are also not polar.

Additionally, in Klipper you'll need to add a qualifier under the heated bed section like this:
MAX_POWER = 0.8
But we'll get to that in the configuration section.

This will limit max power via PWM to prevent loading the power supply too much. The original board used "Bang-Bang" power management which turns on the board at 100% power for a bit, and then turns it off for a bit. This uses a lot of power, is slow, and puts more wear on the heater and electronic components. PWM is more efficient and faster.


BED THERMISTOR TEMP SENSOR:
There are 4 wires coming from the bed temp sensor / thermistor. You want the ones shown in the picture to the left, signal and ground. I believe these don't have a particular polarity since it's just a resistor that we're reading the ohm rating off of as it's affected by heat. Some bed heaters are different so you should look at the silk screen printing on your specific bed heater board.

My wire colors and positions were the same as this one, yours may or may not be.



EXTRUDER HEATER:
I'm using only the left extruder, nearest the part cooling fan. The left extruder is labeled EX2 on the MightyBoard. The heater wires have no polarity so you can plug them in any orientation.

EXTRUDER THERMISTOR TEMP SENSOR:
By far the hardest part of this process, unless you just bought the parts I suggested. The stock FFCP has thermocouples to find the temperature of the extruders. These won't work with the board we're using. I ordered a pack of 3 HT-NTC100K 3950's with an XH2.54 2 pin plug. These are compatible with Klipper and our control board. I plugged them into the control board just to make sure they all read correctly, and they did. They're only good up to 250C maybe, considering the insulation on the wires and internal limitations. I cut off the wires on the stock thermocouple (blue twisted wireds) as close as possible to the thermocouple to maximize the amount of wire I have to work with. You can then remove the thermocouple with a 6mm wrench or socket. At this point, I put the thermistor in the hole that the thermocouple came out of and realized I'd need a way to hold the thermocouple securely for heat transfer. I have a lot of parts from Harbor Freight sitting around, so I cooked up a set-screw type situation. I measured how deep the hole was in the back, and from the side of the heatblock to the middle of the hole. I used a spring loaded pin punch to create a divet in the metal to give my drill something to hold onto, and drilled a 5/64" hole in the side of the heatblock facing the part cooling fan. I drilled the hole closer to the end of the threaded hole. I'm not sure the clearance there, but it's all awfully close to the heat break and the heater cartridge. Anyway, I then expanded the hole to 7/64", and used an SAE 4-40 tap to thread the hole. I also used a  black oxide 1/8"-40 x 3/16" set screw. This pinches the thermistor against the heatblock and in my testing, works just fine. The thermistor I purchased was long and stuck out the back of the heater block, fouling on the toolhead carriage, but I did find smaller thermistors afterwards. What a wild ride. I'm defintely planning on switching to an E3D V6 bowden setup for higher speed since I'm running Klipper anyway, so my thermistor will actually fit and I'll probably get some better print quality out of it as well as being able to print at higher temps with the all metal heat break.
Thermistor type I should have gotten. Notice the small metal tip.



ENDSTOPS:
The stock FFCP endstops use 4 wires on the endstops. The wires in the connectors are grouped into pairs. I believe they can be wired with no specific polarity since it's just a switch. I used the grey and black pair, so the switch is always in a closed state, so if it fails, it will fail to an open state and it will be obvious something is wrong. In printer.cfg (in Klipper) you'll need to use a pullup resistor designation as well as invert the polarity of the switch to make it work properly. The pin designation will look like ^!PL0 sort of. Test the endstops in Fluidd by polling the endstop status, and then reach in the printer and hold down one of the switches and poll it again. It should switch from closed to open, or vice versa depending on how you decided to do it. It's a really good idea to do the endstops before you wire and test the motors to ensure you don't crash the bed or the toolhead into anything.

FANS:
The fans can be wired to any of the fan outputs on the control board. You can change which one is designated as the part cooling fan / controller fan / extruder fan in software by taking note of the connector and respective pin associated with it. The pin names are on the bottom of the board directly under the connector. Obviously with fans you need to note ground and voltage and insert them accordingly. The board fan under the printer and the extruder fan should both start up as soon as your hot end starts warming up, so if they don't, you might have gotten the incorrect extruder fan. I did the first time. It was hard to hear my board fan because I swapped it out for a Noctua 40mm x 10mm 12v fan. It is quieter and I haven't had any overheating issues, but it does push less air than the louder stock fan. If I could do it again, I'd suggest getting a larger Noctua 40mm x 20mm 12v fan.

STEPPER MOTORS:
Stepper motors are made up of two wire pairs. In the FFCP, the connectors put the pairs right next to each other, so copy the wire order in the connector when you're putting them in the new connectors for the control board. If you want to test a stepper and endstop before you do all of them, make the proper changes in Klipper in your printer.cfg file, and then on the Fluidd "Home" page, home the according axis. Have your hand over the power shut off button on the printer, or more effectively, the emergency stop button in Fluidd.

KLIPPER CONFIG:
I'm still working on getting this set up and tuned, but I'll post it soon. Basically I merged the "generic-mightyboard.cfg" values with the "generic-bigtreetech-skr-mini-e3-v3.0.cfg" pins, and searched around some to figure out the stepper motor's "rotation distance" values. 

PRINT CALIBRATION:
In order, here's the tests you should run to make sure your printer is fit to print.
  1. Do all of the safety checks on this list.
  2. Find your extruder ROTATION_DISTANCE (E-Steps):
    Take your digital calipers and extend them to 70mm, and lock it in place with the screw on it.
    Pull back the Bowden tube so you can see the filament in the extruder.
    Then put it on top of the "nipple" on top of the extruder, where the filament enters.
    Mark the filament with a white paint pen or something similar at 70mm.
    Run the EXTRUDER_CALIB macro from your Fluidd homepage
    When it finishes and returns the extruder to home, measure from the same place you did before.
    It should be 20mm from the top to the mark you made on the filament.
    If not, follow step 4 and 5 from this to find the correct rotation distance.
  3. Follow this calibration guide for dialing in the Z endstop phase; there's no need to do this on the X or Y axis because the precision won't affect quality, but the Z endstop being precise can avoid artifacts. I already added the "[endstop_phase]" line to the printer.cfg file, so follow everything below that.
  4. Run the BED_LEVEL macro from your Fluidd homepage. Calibrate it with either a piece of normal printer paper, or a 0.1mm feeler gauge. Pull it back and forth from under the print nozzle while adjusting the according bed screw until you feel only a slight drag on it, and then back it off a tiny bit higher. Click "ADJUSTED" on each one you adjust and it will bring you through the leveling pattern again until you "ACCEPT" on all of them. It normally takes 2-3 times of doing it to achieve level because moving each corner moves the other corners a bit.
  5. Run the PRINT_START macro and see if it works okay.
  6. Follow this guide for tuning pressure advance

CURA SETTINGS:
I normally use Cura for printing with my FFCP, so now I have to reconfigure to work with this board, but it should maintain a lot of the same settings. If you installed ".x3g writer" if you were using Cura with your FFCP before, you can uninstall it from the Marketplace just to make sure you don't save as .x3g anymore. If you didn't have a profile for it in Cura before, just create a new printer and put in the entire configuration I specify below and you'll be in business.

NOTE: The "Start G-Code" below didn't all fit on the screen, it should be:
START_PRINT TOOL_TEMP={material_print_temperature} BED_TEMP={material_bed_temperature}

Open Cura, and up towards the top left on the menu bar you'll see "Settings" > "Printer" > Manage    Printer". Click this, then make the settings match mine. I highlighted the settings you need to fix.




Thanks to:
eugr for the START_PRINT and END_PRINT gcode that I modified to work for Klipper.
- kyledavis417 from the Voron community Discord for advising me that this was even possible, telling me about the BTT MOSFET, informing me ahead of time about the thermistor compatibility thing, suggesting the control board, and being a great representative of what the Voron community is really about.
- code_splice for the G-Code to pull temps from Cura.

Comments

  1. Beautiful article!

    I too have a Creator pro and surely , thanks to your guide , I will install klipper .

    What I would like to ask you is if it is possible to use the original motherboard of the printer instead of buying a dedicated one

    ReplyDelete
    Replies
    1. There's a guide online to use the original MightyBoard and install Klipper; however there are some incompatibilities / inconveniences if I remember correctly.

      There's documentation on it available at these links:

      https://github.com/dockterj/klipper
      https://reprap.org/forum/read.php?1,874326,page=2
      https://fraggin-right-github.gitbook.io/ffcp-klipper-dwc-touchscreen/

      Delete
  2. Hi, Thank you very much for this article. I currently have flashed my mighty board and running klipper successfully. https://github.com/pedrsj/Creator-Pro Now I'm looking to swap the board completely and I came across your article. Thank you very much. To retain dual extruder capability would the Manta M8p be a good choice? Thank you again for the write up and your time :)

    ReplyDelete

Post a Comment

Popular posts from this blog

Issues with Buying a FlashForge Creator Pro

FlashForge Creator Pro Accelerometer Install