Background: I've got a pretty high powered ring light consisting of 60x 3.25W leds (@ 900mA). My original intent was to power the entire ring in series (~220Vf total), but the (seemingly only) constant current power supply I settled on gives two outputs up to 111V, so I split the circuit into two 30x series strings. The prototype is done and seems to work well, and I'm looking ahead to adding some more 'smarts' to the light. The power supply has a 0-10V dimming option, which led me to start down the "Arduino brain" road. I'd love to get some more diagnostics like Vf for each LED and maybe some temperatures. I found these temperature sensors which (unless I'm mistaken) seem like they might even be able to be put in parallel w/ a single LED and be powered by the Vf across the led. The output voltage proportional to the temperature would be referenced to the cathode of that LED, but that's pretty much identical to the other diagnostic: measuring Vf for each LED.
So, I scoured this post for inspiration since my application is similar (but not identical) to measuring each cell in a series battery pack. So far, I've collected the following ways that might work, but I'm in need of a boost of knowledge/advice on which way might be best and which just plain wouldn't work.
Camp 1) measure high side of each LED wrt COM, difference the measurements to get each LED.
Use Vdivider + 16bit ADC (111V/2^16 ~ 2mV LSB) to get adequate resolution
Use a switch network to select the different junctions between LEDs that gets routed to the Vdivider
*Reed relays + drivers (yuck)
*solid state relays
+Led operating current of 7.5mA? Could these be direct driven from the I/Os? Am I missing something there?
*multi ch HV analog switch? For ~$25, these look pretty sweet and compact unless there's a pitfall I'm missing.
*optoisolator switches (something like upper right on pg 6 of this datasheet)
-now that I think of it, switches for downstream LEDs would have a high reverse voltage, probably wouldn't work
Camp 2) measure Vf across each LED
Use series of normal analog switches w/ isolator for high common mode voltage for upstream LEDs. Isolation options:
-At $4 per, gets expensive for 60x LEDs
*linear optocoupler(like these, or these)
-Seems like they would take at least 2 additional external op-amps in order to get the feedback signal working properly
Use V/f converters (or this one for more circuit examples) between each LED, could use a digital MUX for switching
-Seems to need lots of extra components (whether R&C, or external oscillator signal)
-could it really be powered by Vf? Grumpy_Mike seemed to think it could be powered by a cell in the battery example, but I don't see it.
-Don't see how it would handle the common mode voltage
With the high voltages, direct measurement of the 3.xV are really the way to go. You need to basically make a floating multimeter that you can put across any LED and not be concerned about where the ground level is. Relays are simplest, anything else needs power from the device source and then isolation to connect back to a common ground.
I'll go the relay route if I have to, but with 60 SPDT relays, 30 2-up drivers and resistors for every input, the component count gets really high, and trace routing will get to be a pain.
Is there something I'm not seeing that would invalidate using these solid state relays? With a peak off-state voltage of 350V, it seems like I could measure the 3.xV directly with those. I'd still need 60 of the 2-up kind, and a resistor to help supply the LED trigger current, but it seems like you could drive them directly from the Arduino's I/O pins.
The most elegant solution, I feel, would be the 32-channel High Voltage analog switch in conjuction with a 16-bit ADC. The way I read the datasheet, it could handle 111V across switch pins. Funnel all the "Y" connections together and through a voltage divider into the ADC and presto. Four core components w/ 2mV sensitivity, no?
Yes, I suppose one the TLP227G-2 per LED, with the input LEDs wired in parallel with a resistor each and the outputs wired thus could work.
The Supertex part, you’d need like a 200V power supply for the translation logic, or at least as high as the LED supply I guess.
The other parts, you’d wire up like this?
I was thinking more like these schematics (any caps or other regulatory/safety components & communication connections left out)…
(btw, what do you use to make your schema? Plunking around in paintshop pro is painful, though straightforward)
I used expresspcb.com software to draw mine up. Quick & easy to use, great for discussions like this.
In your top change, you will have a varying voltage from VD01 to GND as you go down the LEDs.
Do you have a part number for the "shield"? Can it handle 112V?
In the 2nd, you will have the same problem - you will have a varying voltage at the ADC input pin:
From the voltage divider perspective, with Vout being the input to the ADC:
Vout = Vin * R2/(R1 + R2), R2 being the resistor going to ground.
Pick R2 to keep current flow down: 112/10mA = 11,200 so lets use 10K to start
5V = 112* 10000/(R1 + 10000)
5V*R1 + 50000 = 112V*10000
5V*R1 = 112V * 10000 - 50000
R1 = (112V * 10000 - 50000)/5V = 214K
So with R1 = 220K (standard value) and R2 = 10K:
Vout for top LED = 112*10000/(10000+220000) = 4.86V
Vot for bottom LED = 3.5 * 10000/(10000+220000) = 0.15V
increasing about 0.15V/LED
If all you are looking to do is see if a device is open or shorted, then I suppose even the Arduino's .00488V/BIT resolution could tell you that.
That part is an HCPL-7510 (the isolation amplifier from the first post). Actually, looking at the datasheet again, it looks like it's really only linear in a +/-200mV range, but the principle is identical to (probably more expensive) ones that have a larger input voltage range. Vdd1 is the power supply and they recommend 4.5-5.5V above GND1. Since the 3.x across an individual LED isn't enough, I just decided to take the full 112V-(anode voltage) and use a 5V zener diode to regulate the voltage to power the chip. There won't be enough voltage when measuring the topmost LED, but I figure there's probably a more clever way of powering the floating side of the isolation amplifier. So GND1 will be varying, Vin should be 3.x above GND1, and Vdd1 should be ~5V above GND1. Vdd2 & GND2 are isolated (should handle up to 1000V Vcm). Assuming I could find an isolation amplifier that could handle upwards of 4V of linearity, you plug the right side connections directly into the Arduino.
As for #2, isn't the point that the voltage varies at Vin? I was thinking of R2 = 500k & R1 = 11M, which gives 10uA leakage current for the LED string and 4.82V at the ADC for the full 111V. If I use the 10-bit Arduino ADC, that gives 111*(5/4.82)/2^10 = 112mV for an LSB change. That's a bit much, so w/ 16-bits, 111*(5/4.82)/2^16 = 1.8mV. That's definitely enough to sense trending changes in an individual LED's Vf and sense it's "health" per se (sensing the Vf change from 'off' can be a good thermal indicator).
One thing I haven't considered is: with 1) will there be a voltage drop across the switching transistors? If there is, and even if it's small, variation from chip to chip would affect the measurement. I suppose you'd have the same issue with 2), but all the transistors would be from the same die. (Plus, two $25 chips is still lots cheaper than 64x $2 switches + resistors.)
But, ultimately, the question is: "is there anything in either of those schematics that won't work?"