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

I recently worked on an application that required a 20Hz PWM. Indeed the lowest possible frequency on arduino PWMs is 30.5 Hz, so I did it in loop using millis.
Then the application got more complicated and to avoid all concerns about loosing the correct timing I made the main application running on one arduino and I have a second board running just the timing code. the two are easily connected via I2C so from the first arduino I can set both frequency and duty cycle at run time.
hope this helps