Thanks TheFob,
I think that the trick to get a stable MPP tracking is that the "Perturbation" must generate a delta power that is greater than the " noise Power ".
If the VP and IP acquisistion by the PIC ADC has some noise, then the power has a noise too. The perturbation created by " DUTY_step" must generate a delta power response bigger than the noise power.
If the hardware is good then and the noise low we could use a duty_step=1 . If you have a sensible noise you could increase it to 2, 3 , 4 ...
The piece of program is this:

MPPT: '................................................. ..............

' PANEL DATA CHANGE

IF WP>WP_OLD THEN ' POWER INCREASES
DP=1
ELSE
IF WP<WP_OLD THEN ' POWER DECREASES
DP=0
ENDIF
ENDIF

if wp=WP_OLD THEN RETURN

IF VP>VP_OLD THEN ' VOLTAGE INCREASES
DV=1
ELSE
IF VP<VP_OLD THEN ' VOLTAGE DECREASES
DV=0
ENDIF
ENDIF

' HILL CLIMBING.... FOR MPP SEARCH

' CLIMBING FROM LEFT

IF DV=1 AND DP=1 THEN
DUTY=DUTY-DUTY_S ' DECREASE LOAD TO INCREASE P_VOLTAGE
ENDIF

'DESCEND TO THE RIGHT

IF DV=1 AND DP=0 THEN
DUTY=DUTY+DUTY_S ' INCREASE LOAD TO REDUCE P_VOLTAGE
ENDIF

' CLIMBING FROM RIGHT

IF DV=0 AND DP=1 THEN
DUTY=DUTY+DUTY_S ' INCREASE LOAD TO REDUCE P_VOLTAGE
ENDIF

' DESCEND TO THE LEFT

IF DV=0 AND DP=0 THEN
DUTY=DUTY-DUTY_S ' DECREASE LOAD TO INCREASE P_VOLTAGE
ENDIF

GOSUB SET_PWM

WP_OLD=WP
VP_OLD=VP

RETURN

Thanks for the interest,
Regards,
Ambrogio
IW2FVO
North Italy