Help please! I need to give constant current to an LED from a Lipo battery
Something like this could be very efficient (not much more than the LED draw) with a CMOS op-amp. For fairly constant visual brightness (+/-10% current) you could derive the 100mV with a voltage divider from the battery, or use a low current reference such as the TLV431 which would require another 100uA or so but would make the current very constant and accurate (of course the 1.24V output of the TLV431 would have to be divided down to the 100mV). 

Q1 is a logic level MOSFET rated for 3V drive. U1 is a CMOS single-supply op-amp with R-R output. Careful layout is required around R2 so that trace resistance does not affect the current sensing. 







simulate this circuit &ndash; Schematic created using CircuitLab



In operation the op-amp drives the MOSFET gate to maintain a voltage of 100mV at the source so that the current through the LED is 100mV/5\$\Omega\$ or 20mA. 

The resistor R1 and capacitor C1 are to prevent oscillation due to the MOSFET gate capacitance. 

The minimum voltage across the MOSFET to maintain regulation is Rds(on)\$\times I_{LED}\$ + 0.1V- with a suitable MOSFET with low Rds(on) that won't be much more than 100mV, so it should work down to 3.3V with a 3.2V LED Vf.