I have following setup:
- Arduino Duemilanove
- Small water heater connected with optical relay (PWM is ok)
- Waterproof DS18B20 temperature sensor
- Unknown amount of water (but temperature sensor and heater are always underwater).
How can I accurately control water temperature, based on temperature sensor readings? By accurately, I mean up to accuracy of temperature sensor (in this case, ±0.5°C). Everything should run on Arduino, so no additional data storage or processing power is available. For debugging, I can obviously use computer.
I have tried running PID, but it seems really hard to
- Avoid overshooting - going over target temperature either initially, or when (cold) water is added
- Stabilize properly after adding cold water.