We have a complex temperature control on a 16F777 with 20 temperature sensors (5 DS18S20s, the rest analog LM50 and a couple of MCP9701, plus a Sensirion for ambient T/H.) The poor PIC PWMs 3 sets of fans, reads a flowmeter, drives a heater, talks to another brain and handles two sets of serial out. Just as well, driving temperature, you're not in a hurry.

Temperature with a large thermal inertia has such a long time domain that it's not a great place to demonstrate PID. A few years back I did a motor PID with a PIC that worked great - just one axis and it was slow but moving a 500lb weight. Motor tuning is the quickest way to illustrate the effect of each PID component.

Back to temperature: PID is a wonderful thing but in the real world may need a lot of tweaks. First off we abandoned the Derivative as all-but-meaningless on these timescales and now use a setpoint and hysteresis band system with PI(D) only above the upper threshhold. The temperature moves in a slow triangular waveform inside the band (like any thermostat with hysteresis) and only invokes PI when things get warm. Also we have an emergency threshhold up there that drives everything to safety levels. (We are not allowed to power down.)

Good luck with your project.