Help needed for controlling high current 12V heated PCB

Hi all,
I'm trying to work out the best way to independently control a high current heated bed for a 3d printer.
It's basically a 12v powered copper PCB which uses approx 20A of power.
I don't know all it's specs but here are a couple of links to it:

PCB Heatbed - RepRap (General link)
http://www.3distributed.com/collections/electronics/products/mk2-heated-bed-1

I would like to make an Arduino circuit that switches it on using either a Relay or MOSFET.
My power supply would be an ATX PSU (splicing a PCI-E connector to get enough amps from 12V).

The board would need to maintain power for about an hour or more so here are a few questions:

  • What type of setup would be the best and get the least hot? MOSFETs? Relays?
  • Can you balance the load over multiple MOSFETs to stop them getting too hot?
  • Do I need any type of protection such as a diode, special connectors etc?
  • Would something like this be suitable?: http://bildr.org/2012/03/rfp30n06le-arduino/

Thanks in advance for any help!

Based on the "Tech specs PCB Heat Bed MK2A" at your link, at 12 volts it should dray about 12amps, 144 watts.

The example program should work well for you, but you need a larger mosfet (large enough for the load).
When you get the bed, first check the resistance. If it varies to much it would be a problem. My calculations above was based on 1 ohm (the specs state 1 to 1.2).

Hi and thanks,
I checked out the resistance of the heated bed and it was around 1.3 - 1.4 ohms.
For the MOSFET, do you think this would this be sufficient to handle the load without getting too hot?

RF8010PBF TO-220 N-ch 100V 80A

Datasheet:
http://www.electrokit.com/en/productFile/download/2893

Also, what else would I need to drive this from my Arduino?

Thanks for your help

phthomps:
I checked out the resistance of the heated bed and it was around 1.3 - 1.4 ohms.
For the MOSFET, do you think this would this be sufficient to handle the load without getting too hot?

RF8010PBF TO-220 N-ch 100V 80A

Datasheet:
http://www.electrokit.com/en/productFile/download/2893

That mosfet is quite good (10mohms Rds(on), so around 1W power dissipation @ 10A in your application), however it needs 10V gate drive, so it's not suitable for driving directly from an Arduino. You would need a mosfet gate driver, such as MCP1407. Alternatively, an IRL8726PBF mosfet can be driven direct from the Arduino, and should handle the current without a heatsink - although if you want to increase the current beyond 10A then it's not easy to heatsink unless you are making a PCB (because it's not in a TO220 package).

Have you looked at what mosfet the Melzi electronics for the RepRap uses?

Thanks,
That's really helpful for me, I read a bit into the Melzi electronics you mentioned and it pointed me to something called a SevenSwitch which is described as:

The SevenSwitch is a general MOSFET switch, useful for operating heated beds, heaters, fans and similar devices by 5 V operated electronics.
It uses a MOSFET IRLB 8743
The website seems to give all the details to make one yourself so i'm wondering if this could be a good way to go.

The site is at:
http://reprapwiki.hydrar.se/wiki/index.php?title=SevenSwitch_1.1#Insert_the_MOSFET

The other option I was thinking about is to use a solid state relay but I read something about them getting stuck on the 'ON' position and feel a bit nervous about this.
Is there any way to protect against such a failure?

What would you recommend out of the 2 options?

Cheers!

As I understand it, a SSR is usable for AC voltage, but not for DC. Have I misunderstood this?
Your application is DC right?

phthomps:
The other option I was thinking about is to use a solid state relay but I read something about them getting stuck on the 'ON' position and feel a bit nervous about this.
Is there any way to protect against such a failure?

jackwp:
As I understand it, a SSR is usable for AC voltage, but not for DC. Have I misunderstood this?
Your application is DC right?

You can get SSRs for both AC (triac-based) and for DC (mosfet-based). Unless you need isolation between the Arduino and the heating pad power supply, a DC SSR is overkill.

The IRLB8743 is indeed an excellent choice of mosfet for this application. You can drive it directly from an Arduino (a 100 ohm series resistor is advisable), and it should not need a heatsink.

Thanks,
The SSR I was thinking about was indeed a DC/DC one (built-in FET transistor). I saw them at around 50-60 euros in an a local online electronics store but it seems they might need some form of extra cooling (or mounted to a cooling surface).
The info you gave regarding the IRLB8743 MOSFET sounds great so I'll give it a go and see how it goes.
Thanks again for your help!

I received some IRLB8743 Mosfets today and was wondering about your comment on the resistor:

You can drive it directly from an Arduino (a 100 ohm series resistor is advisable)

Do you mean that I should put in a standard 100 ohm resistor between the arduino pin and the mosfet gate?
In the example below i'm not exactly sure what they have done - it looks like the Mosfet gate goes directly to the arduino pin and the resistor is between ground and the digital pin:
http://bildr.org/2012/03/rfp30n06le-arduino/ ?
For the resistor, I was also wondering if you could also please help me understand how you worked out using a 100 ohm resistor over the 10k one in the example.
Thanks

phthomps:
... and was wondering about your comment on the resistor

You can read all 12 pages of this discussion for a deeper understanding.

Generally accepted good practice is a 100 ohm resistor between the Arduino pin and the mosfet gate, and a 10K resistor between either the Arduino pin or the mosfet gate (it doesn't really matter which) and ground. But some people disagree about the series resistor, as you can see from the link in the previous post.

The purpose of the 100 ohm series resistor is to limit the peak current from the Arduino pin to within its 40mA rating. The input of a mosfet looks like a capacitor, so without a series resistor you will get higher peak currents. The purpose of the 10K resistor is to ensure that the mosfet stays off until the Arduino pin has been set to be an output.

Thanks, that's really useful info - you've been a great help.
I'll put in both resistors as good practice like you suggested, also since i'm using such high currents I think it makes sense to have as much safety as possible.
Cheers!

I put together a rough diagram and then realized that it probably wasn't a good idea to put the setup on a stripboard after reading that the normal ones probably can't handle such high currents without much thicker copper.
In the end it seemed easier to assemble the setup without any board with a few thick wires and 30amp connectors (cross/normal).
Could you please take a look at my diagram and see if I have understood correctly what you were referring to?
Also, could you please tell me the best way to connect the black 12V wire to the Arduino ground safely since the 20Amp cable is much thicker then the arduino pins allow.
I was thinking that perhaps it wouldn't be a problem when assembling a final unit since I could solder directly to an atmega328 but not really sure.
Thanks again

  1. You have the 100 ohm resistor in the wrong place. It should be in series with the green wire.

  2. Although the wire from the mosfet source to the power supply needs to be a thick wire, the wire between the source terminal and Arduino ground can be a normal, thin one. So I suggest you solder a piece of normal wire onto the 20A ground wire, fairly close to where the 20A wire is soldered to the source terminal of the mosfet, and connect the other end of that wire to the Arduino ground pin.

PS - 1. Use the other Arduino ground pin to connect the ground sides of any analog sensors that you are using.
2. I am assuming that "12V output" means 12V from the power supply.

Great!, I have made the changes and attached a new diagram:
The PSU was the 12V from the power supply, I have put a few more comments in.

Changes:

  • Switched the 2 resistors around (100ohms to green on the left, 10k on the right)
  • Moved the FET to a digital PWM output
  • Put in a temp sensor

Could you please have a last look?
Thanks

Still wrong. The 10K resistor should be where you have the 100 ohm resistor (between gate and ground), and the 100 ohm resistor should be in series with the green wire to D3 (just as you have the 100K resistor in series with the black wire to A0).

If the ceramic disc device represents a thermistor, then you have that connected incorrectly too. You need to connect it between +5V and A0, not between +5V and ground.

Thankyou, I learnt a lot from your help.
I made all the changes now and it should be ready to test hopefully today :slight_smile:
Cheers!