Need a low frequency (can preset at each value of 15Hz to 25Hz) PWM signal

Indeed, just use millis() timing. Look at Blink Without Delay, modify that. Unless the device has to do a lot more work, this will do just fine.

How do you plan to do a 555 circuit? They normally can't provide duty cycles of >50%.