I am currently trying to switch on a nichrome wire for about 5s using an Arduino and an external power source. It will be a single use only activation, I have decided to use an N-Channel mosfet for the job since space is limited.

The power source is a Li-ion battery and therefore I need to limit the power going to the nichrome wire to avoid burning it out. Based off some calculations I will need just about 100ma at nominal battery voltage to reach my desired temperature.

Since my arduino will only deliver 3.3v I need to use a logic level mosfet such as the FDN361BN which has a VGS of 1 V to 3 V. I have attached a draft schematic to illustrate my intentions, however how can I limit the amperage?

Can I just lower the voltage of the gate using a voltage divider in such a way that I only allows a certain amount of current based on the datasheets graphs?

Also what is the purpose of the 10k resistor, is it to assure that the mosfet won't get switched on accidentally?

Draft schematic

  • 1
    \$\begingroup\$ Have you heard of PWM? \$\endgroup\$ – Harry Svensson Jul 18 '18 at 15:58
  • \$\begingroup\$ Didn't think of that, is the 10k still necessary to avoid unwanted activations? \$\endgroup\$ – Julianfer5 Jul 18 '18 at 16:10
  • \$\begingroup\$ What voltage is the external power supply and what is the hot and cold resistance of the nichrome wire? PWM overcomes many problems associated with linear current control but isn't always suited. \$\endgroup\$ – Andy aka Jul 18 '18 at 16:29
  • \$\begingroup\$ its a 3.7v Li-ion battery, the cold resistance is more or less 35 ohms / meter. I just used a calculator to determine the given voltage and amps need to reach my desired temp. I also want to avoid damage to the arduino. \$\endgroup\$ – Julianfer5 Jul 18 '18 at 16:33
  • 1
    \$\begingroup\$ @Julianfer5 After reading some of the answers/comments/your question I noticed that you've said "1-3V, arduino = 3.3V => problem". This bugged me a lot. So here's the datasheet. So let's look in it together, okay? Under the absolute maximum ratings (front page) it says that \$V_{GS}\$ may be \$±20V\$, not \$3 V\$. In other words, stop thinking that the arduino can damage the gate of the mosfet. Read the datasheet once in a while. It is there for a reason. \$\endgroup\$ – Harry Svensson Jul 18 '18 at 18:08

I will need just about 100ma at nominal battery voltage to reach my desired temperature.

I'd consider using a low voltaget op-amp and a darlington transistor like this: -

enter image description here

With 1 volt in, the op-amp's negative feedback ensures that 1 volt appears across the 10 ohm sense resistor and this largely ensures that 100 mA flows through the nichrome wire in the collector.

You need to choose an op-amp that can work down to 2.8 volts without spitting and moaning and the Darlington is preferable over the MOSFET because of instabilities due to gate capacitance.

| improve this answer | |
  • \$\begingroup\$ So something like a MAX4289ESA+T and a BSP52T1G could work? Efficiency is not a main concern when activated since it will only be on for 5s and will never have to be turned on again. I also don't want it to consume power when not in use obviously. Thanks Andy. mouser.es/ProductDetail/ON-Semiconductor/… mouser.es/ProductDetail/Maxim-Integrated/… \$\endgroup\$ – Julianfer5 Jul 18 '18 at 17:35
  • \$\begingroup\$ @Julianfer5 yes they both look good choices - the darlington is high gain and reasonably low saturation voltage and its thermal characteristic means it won't get too hot but do apply some copper around it to ensure it doesn't become a problem. The op-amp is suitable too. However, as with any circuit like this there is nothing better than a simulation as a sanity check. If you have a sim tool I would recommend you use it. \$\endgroup\$ – Andy aka Jul 18 '18 at 17:43
  • \$\begingroup\$ Ok thanks! I'll share my results and schematic in a bit. Thanks mate \$\endgroup\$ – Julianfer5 Jul 18 '18 at 17:53
  • \$\begingroup\$ A darlington transistor will drop in the vicinity of 1.5V (assuming it's driven hard), out of ~4V battery voltage. One third power wasted in the transistor, minimum. Then there's Rsense, which is a whopping 30 times larger resistance than the nichrome wire. Your solution dissipates, say, 30% of the energy in the transistor, 69% in Rsense, and only 1% in the nichrome heating wire. Doesn't sound like a good solution to me. The transistor may be workable, but Rsense is not. \$\endgroup\$ – marcelm Jul 18 '18 at 21:04
  • \$\begingroup\$ @marcelm please feel free to suggest an alternative solution and make an answer of it. If it has merit I will certainly support it. \$\endgroup\$ – Andy aka Jul 19 '18 at 0:02

The Resistor is there to hold the N-channel MOSFET in it's off state during the Arduino's reset condition when all IO pins are inputs, and not driven high or low.

| improve this answer | |
  • \$\begingroup\$ but the circuit is fine right? and I and I can just use PWN to adjust to the current limit? \$\endgroup\$ – Julianfer5 Jul 18 '18 at 16:20
  • \$\begingroup\$ PWM won't adjust the current flow, it will just pulse it full-on for finite time amounts, from 1/255 of ~2mS time period (about 490 Hz) up to 255/255 (full on). If you measure the wire temperature, it will measure as if it was current limited. The circuit is fine otherwise. \$\endgroup\$ – CrossRoads Jul 18 '18 at 16:30
  • \$\begingroup\$ Ah ok thanks, the datasheet calls for a VGS of 3v max, will it be fine or does it need a pulldown resistor? \$\endgroup\$ – Julianfer5 Jul 18 '18 at 16:36
  • \$\begingroup\$ The pulldown is to keep the gate from floating when nothing is actively driving the gate (MOSFETs are essentially voltage driven as their input current is so low, like 1uA) and not turning on when it not supposed to be on (like when the Arduino is resetting and waiting for the bootloader to finish timing out before your sketch starts). The pulldown is needed. \$\endgroup\$ – CrossRoads Jul 18 '18 at 16:40

One option would be to use a voltage divider to drive Vgs to a different value, the problem with this is variations in the mosfet will create widely different currents with the same gate voltage.

The easiest way would be with series resistance with the heater, or get a different heater.

Another way is a current source circuit:


simulate this circuit – Schematic created using CircuitLab

First off, select a different op amp than the TL081 according to your budget.

This circuit basically replicates the voltage on the V+ pin of the op amp to the load, so if you have 2V on the plus pin, you'll get 2V on the load, this makes it easy to determine the current through the load. There are also high side variations of this circuit (this one is for n-channel, but they also have p-channel circuits for high side current drivers)

Another thing you could do is tie the arudino pin and configure it as an open drain pin, and pull down the voltage of the circuit and drive it to zero, which would also drop the voltage (and current on the load to zero).

One drawback is the transistor is the resistive limiter, and if a lot of current is being dissipated in the mosfet it could overheat. Make sure your not exceeding any current or power ratings for the mosfet.

| improve this answer | |
  • \$\begingroup\$ Seems like im going to go for the pwm with the current circuit, the only issue is the mosfet calls for a max VGS of 3v but the arduino supplies 3.3 \$\endgroup\$ – Julianfer5 Jul 18 '18 at 16:53

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.