The current through the sink is controlled using an op amp (TS912), current is measured with one of three shunt resistors (0.1R, 1R, 10R), reference voltage for the op is provided by a DAC (LTC1257), which in turn is operated by the Arduino. The 2N3055 power transistor is driven through a BD135 connected in a Darlington circuit.
Additionally to providing a given value through the DAC, the actual current value is measured of the same shunt resistor using an ADC (MAX187). As an auxilliary value, the voltage at the terminals of the sink is measured, also using an ADC (again MAX187) through a voltage divider.
The user interface is setup with a 16*2 LCD display and a rotary encoder with push button.