Now that the thermocouple readout is working properly, things are moving again with the reflow controller.
What we need to do is set up a reflow temperature “profile” which drives the whole process. First the top level code which controls the whole shebang:
I’ve left out the reporting part, but basically we need to respond to button presses and go through the whole profile once activated. The reflow profile logic is handled by “setPhaseAndTemp()” function:
As you can see, it is a simple state machine which moves from one phase to the next according to current temperature and timing conditions. The parameters I’m currently using are as follows:
Each phase has slightly different conditions, and criteria with which it decides to move on to the next phase.
I’ve added a “warmup” phase at the start for two reasons: 1) to always start off on the main part of the reflow profile from a fairly well-defined temperature, and 2) to implement a drying period which removes any humidity present in the chips, since some chips seem to be sensitive to that. That does somewhat lengthen the whole cycle, because there is a lot of overshoot at low temperatures.
Tomorrow, I’ll describe the complete setup and show you how it performs.
Looking forward to seeing your results! By the way, for moisture-sensitive devices which are not sealed with a dessicant, I’ve seen advice like “12 hour bake at 125° C” for drying before soldering.
I think you can easily reduce overshoot by making better use of the PID output. The line: setHeater(power >= 25) is not really helping here. A better way would be to do some PWM-like output like this:
}
(Or somethink alike). As a result the output of the PID does not need to fluctuate so much and a more stable behavior will result.
Thanks. Aha, 4 time slots, with the heater on in a certain proportion of them – nice!
Your values are for PID results 0..100, right? (in my case, pidCalc() returns 0..255, although those bounds are fairly arbitrary)
I’ve seen various comments on the web about ways to improve on the full on/off nature of heater control. Hadn’t fully realized that the info for better control is probably present in the pidCalc() result.
Ok, I’ll experiment with this – thanks.
That really looks ugly…
I’ve fixed the formatting. Indent with 4 spaces to keep text intact.
I use this kind of solution for my ceramic oven controller (using an arduino). I also use a thermocouple as I need to be able to go up to 1200deg. BTW I also experienced a lot of instability using the TC (via some op-amps to the analog input).
My solution also has a PID output of 0-255 and for some reason I end up using 255 timeslots of 1 second…
It would have been nice to know of the Jee Nodes back when I made this controller, as a wireless solution to control the oven would have been a COOL feature.