0
\$\begingroup\$

I need help with a project involving an Arduino and a high-power LED. I am using a MOSFET as a switch to control the LED, with the gate of the MOSFET connected to the output of the Arduino. The positive terminal of the LED is connected to a 12V DC power source in series with resistors, and the negative terminal is connected to the drain of the MOSFET. The source of the MOSFET is connected to the ground.

The explained configuration works and I can switch on/off the LED using the signal from the v, but the problem is that since 1 A is carrying through the system, the transistor gets hot and its on-state resistance slightly increases as a result. This will result in slightly more voltage drop across the MOSFET so that the voltage that reaches the LED slightly decreases. I have measured the change in voltage across the LED using a multimeter and it is in the range of 0.1 V. This causes a change in the illumination of the LED which is a very unwanted effect.

I am also experiencing issues with the LED heating up, which is affecting its voltage, current, and illumination. Although I am using a PCB mount designed for heat dissipation (model: SMB1N-PCB), I am still observing changes in illumination during the heating process. I tried using a 50% duty cycle PWM and limiting the current to 800 mA instead of 1 A, but the LED still heats up and the illumination changes. Are there any suggestions?

I am wondering if there's a way to use capacitors and/or diodes to maintain a constant voltage across the LED, despite the changing resistance of the system. I'm new to electronics and would appreciate any advice or comments, but not replacing the MOSFET, Arduino, and LEDs.

The components I'm using are:

Arduino: UNO
MOSFET: IRF640
LED: SMB1N-970D
Resistors: 11 Ω, 30 W resistors
Power supply: 12 V DC constant-voltage

I tried to use a capacitor (100 uf) in parallel with the LED but it didn't work.

\$\endgroup\$
6
  • 2
    \$\begingroup\$ Sorry to say, but you have to change the MOSFET. IRF620 is fully conducting at gate voltages above 7 V, which the Arduino will not provide. \$\endgroup\$
    – Jens
    Commented May 20 at 15:09
  • \$\begingroup\$ You forgot to say what resistor are you using. But the problem probably is that the mosfet is not the right one. The resistance, RDS(on), when you apply 5V to the gate is not specify in the datasheet, but at 10V is 0.8Ω, so at 5V it will be higher. With that resistance and about 1A through the mosfet it will heat up, that will increase the resistance and heat up more. So you need a logic level mosfet. \$\endgroup\$
    – Gos
    Commented May 20 at 15:13
  • 3
    \$\begingroup\$ Perhaps your goal is constant LED optical output? If so, then concentrate on keeping LED current a constant value, rather than LED voltage. \$\endgroup\$
    – glen_geek
    Commented May 20 at 15:18
  • \$\begingroup\$ FYI the 1A you're referring to is higher than the absolute maximum forward current of that LED. If you're running at that If, you consider the Forward Current vs. Pulse Duration Curve on p2 of the datasheet. \$\endgroup\$
    – MrGerber
    Commented May 24 at 12:44
  • \$\begingroup\$ I mistakenly provided the wrong model number for the LED in my question which I fixed it. The correct model I am using is "SMB1N-970D" instead of "SMB1N-970." Sorry! I am experiencing issues with the LED heating up, which is affecting its voltage, current, and illumination. Although I am using a PCB mount designed for heat dissipation (model: SMB1N-PCB), I am still observing changes in illumination during the heating process. I tried using a 50% duty cycle PWM and limiting the current to 800 mA instead of 1 A, but the LED still heats up and the illumination changes. Are there any suggestions? \$\endgroup\$ Commented May 24 at 13:54

1 Answer 1

0
\$\begingroup\$

If you cannot change the MOSFET, there exists a dirty hack like this.

A red LED is used to produce a more or less constant voltage drop of around 1.8 V in this context. So the gate voltage will be 1.8 V above the GPIO pin voltage.

This is absolutely not recommended, because current will flow into the GPIO pin at boot time (GPIO is input) or if the Arduino has no supply at all. This current of around 1 mA flows through the internal protection diodes and, well, will not destroy anything but is bad style.

Another drawback is, that in the time between Arduino boot and the time where the software sets GPIO into output mode, the MOSFET will be conducting.

schematic

simulate this circuit – Schematic created using CircuitLab

This plot shows the MOSFET turn on behaviour in this circuit.

DC-Sweep switching point

\$\endgroup\$
4
  • \$\begingroup\$ Thank you for the response. I can't take more risk on the Arduino because I lost 2 of them last week 😢. If the beat case is to replace the transistor, how can I choose the best MOSFET suitable for my purpose? \$\endgroup\$ Commented May 20 at 17:37
  • 1
    \$\begingroup\$ You want one with gate threshold voltage < 2 V and continuous drain current >= 10 A to keep things cool. \$\endgroup\$
    – Jens
    Commented May 20 at 18:10
  • \$\begingroup\$ @Jens Would using something like a 2N2222 to switch on the MOSFET be a good idea? In that it could be used with the 12 V rail to give the required gate voltage to the existing MOSFET, and it might sacrifice itself instead of the Arduino if things go wrong? \$\endgroup\$ Commented May 24 at 16:20
  • \$\begingroup\$ Yes, good solution. The signal is inverted then. \$\endgroup\$
    – Jens
    Commented May 24 at 17:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

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