Adaptive battery charging