Instead of generating a sawtooth wave. Why not just generate some wave and let a op-amp figure out the duty cycle?
So allow me to show you another circuit that I think is slightly easier to construct.
Link to simulation
To the left there's just a simple oscillator that gives you a relatively clean sine wave. That is added together with a feedback loop. The feedback loop is trying to make the average of the PWM equal to the input.
For an input of 1 volt the outputs is a PWM with a duty cycle of 20%. 2 volts gives you 40% and etc. Due to the shape of a sine wave, the bottom and top is relatively flat, this means that if the input is near 0.1 volt or around 4.9 volt the output starts getting very dependent on the amplification of the transistor. A solution to this would be to cascade with yet another transistor and change the feedback loop slightly, set up a darlington configuration, add two transistors and keep the feedback. Or just go with any other answer that doesn't depend on a sinewave as the wave to compare against.
Update due to comment:
The name for this particular circuit? "PWM generator"? I've come up with this one myself. So I'll just call it what it is. A PWM generator. The oscillator used is one of hundreds of variants of a Colpitts oscillator with the twist that you let the output be its gate instead of its drain or source. To my understanding, any oscillator that uses two capacitors, one inductor that define the oscillation frequency and one or more transistors to make it oscillate is a Colpitts oscillator.
I think it will work with any logic level NMOS, as you can see in the simulation it is oscillating between ~3 and ~0 volts, that is because the threshold voltage of the NMOS is 1.5V. One NMOS that I've used for this setup is the AO3402 which is a logic level NMOS. The oscillation is almost identical to the image above.
My design was supposed to be as easy to modify as possible, with that said, it is very possible to make small tweaks so the output of the op-amp never has to go below 0V. Or for the output to be more "digital", as in generating a better square wave. Now, why didn't I show THIS circuit instead? Because then it's not as easy to modify, it's more difficult to understand, and you'll get angry because it might not work with your particular setup. Your setup which I have 0 clue about. I'm quite certain that you'll have to modify my circuit to make it fit your needs. Hence I showed you the basics of making it work.