Any interest in a LED/Battery analyzer device?

I’m most definitely a cheapskate but I am interested at a cost close to $100.

Agreed. Throw down a CP2102 or FT232 and it’s usable on every desktop, laptop, netbook and tablet.

Oh, and I’m in for at least one.

PPtk

I started playing with some code for the device and actually have most of it working. A few preliminary design decisions:

Current range is +/- 30 amps with milliamp resolution. Isolated, very low burden hall effect sensors. Measures battery current and LED current.

Voltage range is 50 volts with millivolt resolution. Only measures positive voltages (referenced to the driver negative input (i.e. battery negative)). Measures battery voltage and LED voltage (simultaneously measures the voltage at each end of the LED and subtracts the readings to get the LED Vf)

Two type K thermocouples via MAX6675 chips (usable with type T). Range is 0 to 1023.75 degrees C

Processor is an Atmel ATMEGA328 (with Aurduino bootloader for firmware upgrades)

Computer interface is RS232 (or USB with an adapter dongle). Communications format is Trimble TSIP binary compatible (used on Trimble GPS equipment) since the Windows control program is based upon something that I wrote for controlling Trimble GPS disciplined oscillators.

Connections to the LED/driver/battery are via short heavy gauge pigtails with Deans connectors.

Analog light sensor is the head off of a cheap Chinese lux meter.

Digital light sensor is a Rohm BH1750

From all the measurements it can fully characterize the battery, LED, driver efficiency, etc Should be fun…

Will it be able to put lithium primaries under load to determine capacity ?

Most definitely. The load can be any driver/led or a power resistor.

It does not have a true constant current or power load capability like a CBA 3 or 4, but it could easily be set up to do that by PWMing the load resistor. There is a high current FET switch in series with the battery input (used for LVC/HVC shutdown).

Other uses of the board could be a high power boost converter (add an inductor/diode/filter cap) or something like a controller for a composite materials curing oven. At 50V/30 amps, it can handle 1500 watts. The basic design is very flexible. I use something very similar in my 15,000 lumen/150 watt Bridgelux drivers.

Sounds really interesting - subscribed :slight_smile:

Will

As long as I don’t need to write any code, I’m very interested.

I found some current sensor chips that go to 50 and 100 amps… they do cost twice what the 30A ones do. They also have 1/10th the burden resistance of the smaller chips (130 micro-ohms!). Using the 100A sensors, the current resolution might be 5 mA… decisions, decisions, decisions…

I slung some more code today. I am doing the work on a MegaDonkey LCD touchscreen micro controller for now. I have some current sensors and thermocouple amps on the way from Old Cathay.

I can now send TSIP messages to the board and it responds properly. I also did some hacking to the Windows control program and have it talking to the thing… there’s gonna be a bunch of crapwork involved working over the GPSDO controller user interface.

The ACS756 is a really nice part. I use it for lots of things.

PPtk

That’s the big guy…

The ACS712 series is the lower current one. It is in a SO-8 package. It should be easy to lay out the board for either one.

I got in some of the MAX6675 thermocouple processor chips. They seem to work very well! The temperature readings agree with my Wahl thermocouple calibrator within 1 degree F… not too shabby.

The way that I am processing the readings, I get a resolution of around 1/8 degree C. You can easily see the temp change in the room if I open the refrigerator door to get a beer. You can also detect the body heat given off by a person entering the room (as long as the air conditioner isn’t cycling).

I’ll probably not implement the analog light sensor (using heads removed from cheap lux meters as the sensor). There are better uses for the required pins and ADC channel on the microcontroller. Plus, my testing of the photodiode amplifier circuit that those meters use is not encouraging…

I do have the code for attaching two of the digital sensors written.

Also it auto-detects the thermocouple amplifier types (MAX6674 or MAX6675).

I added a couple of 10:1 voltage dividers to the ADC inputs on my prototype so that I can measure voltages higher than 5V (i.e. 50 volts). I used 90K/10K ohm resistors and ran into a small problem. The ADC (analog to digital converter) in the micro controller works by first charging an internal sampling capacitor to store the input voltage while it makes the measurement.

They say the the chip is optimized for a 10K ohm source and I am using a 90K source. The problem is that the chip can’t charge the sampling capacitor fast enough at low input voltages. A 1.60V AA cell was measuring 1.450V and a 0.10V source was measuring as 0.035V. Signals over 10V or so were pretty much correct. The measurement error is exponential (increases dramatically at low voltages) and not linear. The simple solution was to add a calibration lookup table to compensate for the funky readings. Now all the readings are within around 0.5% accurate (with millivolt resolution).

I did some more testing with the recommended 10K source impedance and found that the readings were also at least 2% low. Without an input resistor they were spot on. So much for trusting chip maker’s data sheets… people using AVR chips to measure low/high impedance voltages need to be aware of the issue.

Not sure if you require extremely high speed acquisition or high sample rates, but our solution to the crappy AVR ADC has always been to simply slow down the ADC clock and give the cap time to charge… If we require high speed ADC, we don’t use AVR.

I suspect you’ll find look-up tables to be highly error-prone. The chips vary greatly in how far they’re off when you don’t give the sample cap time to charge.

Additionally, You’ll almost certainly have to calibrate the readings for reference voltage (unless you’re using an external ADCVref) as the ATMega328 has a terrible internal reference (1.1V nominal with a tolerance range from 1.0V to 1.2V).

PPtk

Will it be able to measure/calculate the tint (Kelvin) of the LED?

Nope… that would take a spectrometer to do correctly.

Under the same Kelvin temperature you have various tints, Let's say 5700K, you have 2S and 2R one is Green and one is Pink. So by knowing the Kelvin you still do not know how it looks.

I have a reference voltage calibration factor in there… it currently uses the 5V Vcc as the reference. I could use the internal bandgap. It’s pretty good, as long as you measure it and don’t just assume what its value is. I’d have to put voltage dividers on the current reference chips to do that (and would lose the ratiometric goodness of driving them with the ADC reference voltage)

I am trying to sample the ADC at 10 kHz. Each of the six channels are sequentially sampled (1667 samples a second). The samples are averaged over 1 second intervals to get an effective 15 bit resolution.

I am going to play with slowing the sample rate down and see how that works out. I tried sampling each channel multiple times in a row, but it looks like they zero the sampling cap each sample.

The lookup table is used more for the shape of the error curve, not exact calibration numbers. Absolute errors can be handled by the reference voltage calibration factor. I could also automatically generate a custom table for each individual chip.

I checked the code… the ADC is already running as slow as it can (prescaler is divide by 128) with the 16 MHz CPU clock. Even slowing the system clock to 1 MHz did not help. Looks like the software compensation is going to be the way to go.

That’s really wierd. I’ve had issues with AVR ADC’s, but never anything that couldn’t be fixed by slowing them down. This sounds more like an ohm’s law problem (AKA Voltage drop accross the resistor). Do you have one of the other peripherials turned on (Digital Input, maybe?) that could be leaking some current to ground and causing a delta V across your input resistor (ie, acting as a voltage divider)?