I've been using Fotek SSR-25 DD (DC type) with Arduino Mega to control the intensity of various LED strips by PWM. Regardless of which strip I use, I notice that there will be some levels of PWM that cause the LED strips flicker, and they are not always the same for different strips. Typically, although the PWM levels extend from 0 to 255, the LED strips are at apparent full brightness by about 35. Hence, if I have them dimmed at say level 15, then one or two strips might flicker, so I need to go to 14 or 16 to hopefully avoid the flicker (albeit at a brightness level I didn't quite want). When I have several led strip lights from the same manufacturer all dimmed to the same level, one or two might flicker, and shifting to a slightly different level might make solve one strip's issue, but cause a different one to flicker.
I can sometimes hear the Fotek DC SSR whine at quite high pitch if I remove the DC load temporarily. Could it be that the internal clock of the Arduino Mega combined with the SSR is somehow causing a non steady PWM output from the DC SSR? Is there a way to somehow 'smooth' the PWM'ed output from the SSR so the LED strip doesn't flicker/pulse?
I would have thought the DC Fotek is just a glorified MOSFET, but should I perhaps be looking at just using a basic MOSFET?
Your flickering could actually be a signal beat where the frequency of two PWMs are not exactly in sync. To be sure test with one strip at a time and if the flickering quits you found the problem.
It also happens when only one SSR is used on one strip, so I don't think it is an out of sync issue, say between two SSRs with side by side strips - if this is what you are suggesting?
Have you checked if your solid state relay actually supports the kind of switching frequency you need for pwm*? Frankly I don't think a solid state relay is ever a good choice for this kind of thing. What's wrong with a simple mosfet here?
Also, just to verify - there's no capacitance whatsoever connected to the led strip? No buffer cap of 100uF or anything?
Can we see a schematic & photo of your setup?
- PS: I did; datasheet here: https://cdn.sparkfun.com/datasheets/Components/General/SSR40DA.pdf
Response time <10ms. So completely, utterly and hopelessly inappropriate for this application. In fact, you're lucky it works at all at some duty cycles.
Noooo....a solid state relay isn't a glorified mosfet. Firstly, the switching element is usually not a MOSFET at all but an IGBT or maybe a triac, but probably they're all IGBT's these days. Secondly, there's a bit of control circuitry around it to trigger the switch and particularly for the zero-cross detection to make it switch smoothly. This stuff gets in the way or even actively interferes with your PWM application.
I'd just get a generic logic-level power MOSFET for this. Additional advantage is that you can free up your relatively expensive SS relays for jobs where they're actually beneficial!
Why would a DC SSR have those things?
It wouldn't; I missed the DC variant in the datasheet. Unfortunately the rest of the specs are only made explicit for the AC type, but I suspect the response time for the DC variant will still be similar.
I think this is the correct product page. I can't seem to copy the link for the data sheet on my phone for some reason, but it's there under the "Product Manual" tab.
The response time is given as 1.0ms, so 10 times faster than those AC SSRs, but still not even close to fast enough for PWM. On Mega, I think the PWM frequency is either around 500Hz or 1KHz depending which pin you use. I suspect you need something with a response time 10 to 100 times faster still.
As @adelspark suspects, a properly selected MOSFET with logic-level gate, low on-resistance and sufficient current rating, is what's needed.
Depends on "things" (repeatability vs response time, desired pwm resolution, etc), but let's say 100 to 1000 times. 1kHz pwm frequency--> preferably >1MHz switching speed. Thus the switching element won't be the bottleneck. PWM seems simple, but it gets complicated once you actually start looking at waveforms and optimize them.
However...for some dimming along the lines of "yeah that looks good to me", any old logic level mosfet with dently low RDSon & current handling capacity will be fine.
I've attached a photo of the switchboard to show asthetically why I am using the Foteks. On the left are 4 x AC SSRs and on the right are 7 x DC SSRs, plus quality 12V and 24V Meanwell power supplies on the wall feeding the relevant DC SSRs. The AC and DC SSRs neatly match each other and have solid screw terminals and indicator LED. Is there a high speed MOSFET you have come across to do a 15A DC load? (Wishlist is that is at least partly packaged up with screw terminals.) Alternatively, is there an off-the-shelf terminal box I can dump the MOSFET, LED and a few anciliary component into?
Surely I'm not the first person to want to dim commercial/domestic multiple LED strips directly from an Arduino? Soldering a few components and a MOSFET to a vero board and sticking it in a small junction box is pretty agricultural, but maybe that's what I have to do?
There are a few designs of ready made MOSFET boards available on eBay etc. Perhaps they would be more acceptable? Check the specs carefully before purchase. Maybe post what you find on this topic for the forum members to check for you
Yep, so far my research had led me to the following module from Banggood or AliExpress, that has bigger terminals than most.
When it finally turns up from China in a month's time, I'll look at a way of easily but securely being able to mount it in cabinet as per previous photo.
Maybe even look at reverse engineering it onto a board with more room for mounting screws/bolts and terminals large enough to accept 2.5mm sq cable and a heatsink on the MOSFET. Oh yeah!
I'll post some photos then - assuming the MOSFET in these modules will solve my flickering problem, although I'm confident that the switching time of the F5305S will be fine.
If the mosfet on there is an IRF712, it's an incredibly poor choice. You'd indeed need a heatsink in this case.
Why not use a mosfet that has a far lower RDSon so you don't need to heatsink it?
Koraks, not sure why you think it might be an IRF712 when I mentioned F5305S, unless this an alternate name for the same MOSFET (although the data doesn't look like it).
My apologies, I misread the printing on the device. Any particular reason you're going with a P-channel mosfet? I'd just use a low side switch and hence a logic level N-channel mosfet - which is easier to drive and switches faster. Either could work I suppose, but it's somewhat more common to use a low side switch in this case.
Even with a FET transistor, it is possible to notice flicker at a very low percent of PWM. I recommend increasing the frequency of PWM if it is acceptable for your project. I looked at the picture on the electrical panel. It's a bit dark and blurry, but I think you're using DuPont cables. If so, this is very frivolous. I recommend that you solder all the cables and solder them well.
Koraks, this F5305S is in the Chinese module from AliExpress, not my design. This module is cheaper than I can purchase the discrete components, so if it works all good. Then I might go down the re-engineering track and make a more robust version. Yep, I agree N-channel is most common and easiest to work with an Arduino output, but I guess the designers of the module has their reasons.
I understand the module is not your design. Many, many similar modules can be had from the same source with more usual N-channel mosfets. I even have a few I bought before doing my own PCB's.
Probably - as to what they were, your guess is as good as mine.
My complaint is not so much about robustness, but about suitability for your project. IMO a low-side N-channel switch is a more obvious choice. Again, thousands of shops on AliE. offer modules for this. Getting the right kind will save you the hassle of having to mount a heatsink onto a mosfet, which would be completely unnecessary for your application.
Flashko, I don't think I'll be soldering any wires directly to the Arduino Mega and bypassing the Dupont terminals; that would be pedantic. I haven't had trouble before with some led strips / DC SSR combinations, but on the whole I've been pretty lucky. Now it's just getting to me that I want to find out why it does it only on occassion and with certain combinations.
IMO it would be anything but pedantic to ensure you've got reliable connections in a project that is evidently part of a quasi-industrial installation at your premises. In the kind of setup you've shown, I'd never rely on DuPont connectors as part of a final installation.