first I would not pretend that any amount of control will work on a cheap valve.
but if I wanted to use a cheap valve, I would buy the smallest port valve I could find.
then I would make a test stand and run the valve and flow, paying more attention to incoming pressure than flow.
then move the valve in the smallest steps possible. PID on a cheap valve may never work.
what many who have tried this do not understand is that the final control element, the valve is mechanical and a signal to run the motor will spin the tiny DC motor up to it's 1,200 or so RPM and the whole slow gear train will spin up. then when the signal is removed, the motor will start to slow down and coast to a stop.
the motor and gear train will always shoot right past the expected point and keep right on moving.
I pulsed a valve, from full open to full closed with a delay of 3. IIRC, it took about 13 minutes from full open to full closed.
to test, I put the valve on the bench and sent a pulse out. it was a pulse with a delay that was 3 times longer so that the motor could come to a stop. at less than 1 second, and the motor never moved. 2 seconds seemed to work 100% of the time, but I did not like riding the knife edge. if I was to do that again, I would use smaller time slices, to see where the actual cut-of point was.
with that said, I would only use a proportional fuzzy logic.
if the flow is off the setpoint by less than 10%
pulse HIGH in the desired direction, with a delay of 3
duration off for 20 this would allow for the reading to change and the calculation to re-evaluate.
if the flow if off the setpoint by less than 20%
pulse HIGH in the desired direction with a delay of 3
duration off for 6
if the setpoint were off by more than 25%
pulse HIGH for 10
duration off by 6
then develop flow characteristics for the valve and adjust the settings.
you could change the windows, maybe add another
change the duration OFF to change the speed of response.
a pulse of 3 could move the valve by x, a pulse of 4 could change the valve by 2x getting the motor to a high enough speed to move the gears takes 1 unit of time. time to move the gears after that would be a full movement in a fraction of the time. this goes back to the non-linear aspects of the final control element.
since temperate is a very slow process, the next step would be to test valve movement and the change of temperature in the process.
the bit about the smallest valve is because a valve is not linear and you can get 90% of the flow at 20% of the opening in a wrong selection.