Ok guys, I'm about at the end of my rope with this one. I've got a peltier that I'm trying to control the temperature on. It's being run by an Arduino Due with an H-bridge (sorry I don't have the model- it's not listed on it oddly. I believe it might be an Adafruit one). Analogue PWM to the bridge which then powers the peltier. PWM range is 12-bit: 0-4095. It's set on an aluminium PC heat sink with arctic silver CPU compound for when I need to get it cold and an RTD thermistor set on the top edge fo the peltier (not having a significant effect since I've been having the same issue since before the thermistor was put on). I'm measuring the temperatures with an infrared camera and a calibrated black body.
The issue I'm having:
If I start at any given PWM value (typically 0) and step up to another value (say 500), the peltier settles at Temp A. If I then go back to 0 and let it cool to ambient, step up to say 250, then to 500, I get Temp B, which will usually be at least a few degrees C higher.
Things I've checked:
Yes, the PWM is the same each time- specifically, I'm using a PC and serial to manually input the exact PWM I want.
Checked the frequency coming out of the bridge with an oscilloscope and it hits the same frequency for a given PWM every time.
Ambient temp is near enough the same (within a half degree of C at most, typically within a quarter degree C) that I doubt it's the cause, esp since I can watch the peltier temp rise and fall within a certain range as the ambient temp changes.
The amperage going to the bridge is, as far as I can tell, exactly the same for the end PWM.
The internal resistance in the peltier is the same for the end PWM, so I'm not seeing why this would be the cause.
Is there anything that I've missed? Does anyone have any exp with trying to control a peltier and could maybe give some pointers?