20mV / Amp2uV / 1mA
On the allegro site you will find this part...ACS714ELCTR-05B-T it is a high side current sensor that is bi-lateral, it will sense current in both directions at 185/mV/A. This value can apparently be scaled to 100mV/A easily for simpler scaling to amperage. The output is 1/2 Vcc and for the '714 Vcc is 5V... there are 3V3 parts available but the granularity of the measurement would tend to make them less manageable for an Arduino or at least require a 12 bit A/D.
The Max471 is a sensor W/O a sense resistor and the Max472 is the same part with a 3A measuring range W/Sense resistor, both are "Not Recommended For New Designs"(The caps are from the first page warning about being a discontinued part...) and can be purchased on Ebay for 5 - 10 dollars
, maxim also makes several current sensors... I haven't yet looked for them... I did look for the ACS714... No Joy. Now it's your turn... Want to buy a LM338 Steel... 1.2 to 32 V out A 5A? linear and a great space heater... But a real Quick and Dirty 0 to 35V out supply regulator (0 V out requires a -1.2 V reference which is also not any issue to create a neg supply a TIL431 and 2 resistors. Probably better to find a Buck-Boost converter and have to live with ~80% Efficiency... @ 50 W out it would be 10W lost as heat.
both of your comments about the acs thing are wrong 100mV/A would give you 10 mv/100 ma @ 4.88MV/step for a 5v reference you would have the +/- 50 ma accuracy you spec'd if the output was set to 150mV/A you would be down to about +/- 30 mA accuracy and with a 1.1V Vref you could have mA accuracy easily all of this without a scaling amplifier...
and as to the LM338 Steel (TO3 Metal 5A regulator... just tie a 200 300 ohm resistor from out to adjust and connect a dc voltage from ground to the adj pin and the output voltage will be 1.25V below the Adj pin voltage. can be sensed by the arduino and regulated by the arduino up to about 3.75 volts you would need to use a scaling amplifier as the analog write only goes to 5 V, as for the current control of either just control the voltage for a constant voltage or the voltage for a constant current, one or the other, usually the voltage feedback is used and current feedback is ignored. In CC mode Current is held constant by controlling the applied voltage.
The reference can be set to 1.1V : http://arduino.cc/it/Reference/AnalogReference
Your idea sounds very good. I would even be possible to program voltage or current ramps for testing.
Or program a certain voltage for a certain time.
Perhaps you could add a temperature sensor on the transistor or a temperature sensor inside the device.
Perhaps you could add a command interface via the serial connection and for logging.
What are your plans for a display and knobs ? A potmeter for variable voltage and buttons for digital preprogrammed voltages perhaps ?
A cheap HD44780 LCD display is rather slow. If you can read for example the current only 3 times a seconds, that might be too slow.
The analogReference can be switched from 5V to 1.1V and back. No problem.You need to wait for about 20ms for the voltages to become stable after swithing the analog reference.That delay is not implemented in the Arduino library, you have to use delay() in your own code.
Reading 5V with 1.1V reference is okay, but the value of analogRead() will soon be the maximum of 1023. But no harm is done.
Yeah it ate mine this morning too... always with one of my "Short Missives"... I hate to type as my hands are arthritic and painful. This happens often enough that I have taken to copying messages to the clipboard from time to time... just for luck. Seems to work as the only time the crashes happen to me is with a full page of text, un-copied. Magic, I guessDoc