Arduino-based Maximum Power Point Tracking charge controller using Perturb & Observe and Constant-Voltage algorithms