An Adaptive resistance perturbation based MPPT algorithm for Photovoltaic applications