Hi again - looks like you are not too sure about the theory behind PID and importance of the values for Kp, Ki, Kd which drives behavior of convergence of the output. They really depend on the system you are trying to control and its intrinsic parameters. Temperature does not evolve (at least with what we play with) in ms time - more with seconds or minutes depending on the inertia of your "radiator" whereas the drift created by a sudden wind change on position of an airplane flying quick or a fast car skidding on ice (controlling direction to desired trajectory in both cases) dictates very fast response time without overshoots.
Without willing to sound professoral, I would suggest you do yourself a big favor and watch that video on the concepts behind PID (he has a couple more really good to watch too) and then read the details of the algorithm for the PID library and how the developer got there. He is making a great case on how systems react on perturbations and how it gets to the desired output esp in an environment where you have constraints on the values (min/max) you can play with (0-255 or 0-1023 on your arduino's pins for example).
Last watch that short video which discusses the different types of system you can choose (P, PI, PID or more rarely PD).
Understanding how the coefficients used in the sums of treatment on the errors for the Proportional, Integral, and Derivative terms play is key in determining how you want to set them up.
P accounts for present values of the error. For example, if the error is large and positive, the control output will also be large and positive.
I accounts for past values of the error. For example, if the current output is not sufficiently strong, error will accumulate over time, and the controller will respond by applying a stronger action.
D accounts for possible future values of the error, based on its current rate of change.
selecting wrong values means your system will likely overshoot a setpoint or enter long oscillations before reaching the set point.
I'm a bit curious also of your use of PWM (which basically is setting 0 and 5V output very quickly into your system. The average value of voltage and current fed to the load is controlled by turning the switch between supply and load on and off at a fast rate. The longer the switch is on compared to the off periods, the higher the total power supplied to the load and its main use is to allow the control of the power supplied to electrical devices, especially to inertial loads such as motors.
What bugs me in your set up is that your transistor driver is probably very fast and reacting to ON/OFF orders delivered through PWM. Indeed PWM is not delivering say 2.5v so that you adjust the output power delivered to your coil to 50%, it does deliver 0V or 5V and thus turning on and off full power to your coil. As you rightly noticed, you currently rely on having access to power to measure your temperature. What I wonder is that you are probably reading through your OP-AMP differential amplifier weird values and totally confusing the PID algorithm which will think that current modification of guidance did not deliver anything (will think "wow temperature is still zero, better heat that thing way more") so will quickly overshoot to max value and then notice "wow it's way too warm too quickly" and switch off.
You should probably read temperature either with a MLX 90614 (infrared, don't need to touch the surface) or DS18B20 for example if you can safely establish contact with the warm surface.
hope this helps.