Home Profiles Build Guide Hall of Fame Buy Controleo3 Contact Us

Controleo3 supports up to 28 profiles. There is a temptation to say "reflow profiles" but the language used to create profiles is so powerful and flexible that it can be used to create complex baking profiles - or even something as simple as open and close the oven door a few times.

The profiles are created on your PC and saved to a SD card. The SD card is scanned by Controleo3 and all profiles are read and stored in the on-board flash memory. The profile can then be selected and used to perform a reflow.


Notes about profiles
  1. Profiles are created on your computer, and saved to a SD card. The SD card is then read by Controleo3 and the profiles stored in on-board flash memory. Once the profiles have been read there is no need to keep the SD card inserted.
  2. The SD card is inserted into Controleo3 upside-down. We hate this too.
  3. The SD card must be formatted to FAT16 or FAT32. NTFS, exFAT or other formats won't work. The SD card supplied with Controleo3 must be reformatted before it can be used.
  4. Profile files must have a TXT file extension (e.g. "LED_PCB.txt")
  5. Profile files can be anywhere on the SD card, including folders and sub-folders. The entire card is searched for TXT files.
  6. Controleo3 reads files, interprets the commands and then stores the profile as a series of tokens. There is a 4K size limit per profile, but since only tokens are saved this corresponds to over 1000 instructions. Most profiles will use 30 to 40 tokens.
  7. Profiles are indexed by the name of the profile so the name must be unique. The profile name comes from the "Name" token inside the file. The SD card filename is irrelevant and not used.
  8. A profile read from the SD card will always overwite one with the same name currently in on-board flash memory.
  9. You are able to delete a profile from on-board flash memory. Wow!
  10. Currently the only way to view the tokens, and ensure the profile from the SD card was interpreted correctly is to run Arduino's Serial Monitor on your PC and connect to Controleo3's USB port. Hopefully a future software update allows this to be done on Controleo3's screen.
If you use Notepad++ you can use the language description here.


Profile language
The language used for profiles was designed to be powerful and flexible, while also making profile files easy to read and understand. The language is interpreted and stored as a sequence of tokens. Controleo3 then uses these tokens to control the behavior of the oven.

In many cases, PID control is desired to ramp up the oven temperature over a fixed period of time. This can be done by using the "ramp temperature" command. However, it is also possible to run the oven in non-PID mode using the "element duty cycle" command and then waiting for a certain period of time or temperature.

All commands are case-insensitive. You can have multiple commands on one line, or even have a command on one line and its parameters on another. End-of-line is only relevant for comments, and can either be 0xA (line feed), 0xD (carriage return) or any combination of the 2 characters.

You can use either "#" or "//" to add comments to a file. Anything after the start of the comment is ignored, up to the end of the line. You can also have comments at the end of a line, for example "Close door 10 // Close the oven door over 10 seconds"

Commands can be given multiple times in the file. For example, you can specify a "maximum temperature" for each phase of the reflow.

1. Name
This is the name of the profile. It must be unique and is used by Controleo3 to index the profiles. The name of the profile can be at most 31 characters long, and only ASCII-127 characters can be used. The '~' character is translated into the degree symbol, so "Lead-free 250~C" becomes "Lead-free 250°C"

2. Deviation <max deviation in °C>
This is a safety feature. When the oven is running under PID control, the temperature of the oven may deviate significantly from the required value. This might happen because:
  • Someone left a lump of lead in the oven so it can't reach temperature
  • You forgot to close the oven door
  • One of the elements or relays decided to quit working
  • The oven is outside, and there's a blizzard
  • The pizza inside the oven caught fire
The default deviation is 20°C, but you can overwrite this. If the oven temperature ever deviates more than the specified temperature the elements will be turned off, the cooling fan (if any) will be turned on and the oven door opened.

3. Maximum temperature <max temperature in °C>
This is a safety feature. The default is 260°C. If the oven temperature ever exceeds this value the elements will be turned off, the cooling fan (if any) will be turned on and the oven door opened.

4. Initialize timer <time in seconds>
The following 3 commands control the on-screen timer display. By default, the timer starts at zero and increments every second. When using a batch reflow oven, the heating elements take time to heat up initially so it is best to zero-base reflow graph comparisons to a temperature higher than room temperature (like 75°C). You might also want to use the timer to time a certain operation.

The "Initialize timer" command initializes the timer to the specified value, and starts the timer incrementing every second.

5. Start timer
Starts the on-screen timer

6. Stop timer
Stops the on-screen timer

7. Maximum duty <bottom/top/boost>
This command specifies the maximum duty cycle (as a percentage) of the bottom, top and boost heating elements. The default is 100/75/60, but you can overwrite this using this command. This means the bottom element(s) will be on a maximum of 100%, the top 75% and the boost 60%. The maximum duty cycle is always enforced, even if there is a call for more power (see "element duty cycle").

8. Display <string>
The string passed as a parameter to this command will be displayed on the screen. The string must be encapsulated within double-quotes and can be up to 30 characters long.

Note: on Mac's the default is to use curly quotes instead of the standard double quote (character 0x22). You can use System Preferences to change this, or just copy-and-paste a quote from elsewhere in the file.

9. Open door <time in seconds>
This will activate the servo to open the oven door over the specified number of seconds.

10. Close door <time in seconds>
This will activate the servo to close the oven door over the specified number of seconds.

11. Door percentage <percent to open> <time in seconds> (v1.1)
Use this command to open the oven door part way.

12. Bias <bottom/top/boost>
This is only relevant under PID control (ramp temperature). This controls the power distribution and heat direction inside the oven. For example, if the bias is 100/60/20 then the top element will get 60% of the power that the bottom element receives. If the bottom element is at 50% power then the top will receive 50% x 60% = 30%. The boost element in this example will receive 50% x 20% = 10%.

It is often easier to think of these numbers as percentages, and write them that way. But they are just proportions so 100/60/20 can also be written as 10/6/2 or 5/3/1.

13. Convection fan on
Turns on the convection fan if there is one installed.

14. Convection fan off
Turns off the convection fan if there is one installed.

15. Cooling fan on
Turns on the cooling fan if there is one installed.

16. Cooling fan off
Turns off the cooling fan if there is one installed.

17. Ramp temperature <temperature in °C> <time in seconds>
This enables PID control to bring the oven to the specified temperature over the given duration. This command can only be used to increase the temperature of the oven, and cannot control cooling speed.

PID tuning is done automagically during the learning run. PID behavior is typically conservative, favoring undershoot over overshoot. This command is considered complete once the desired temperature is reached, not the duration.

18. Maintain <temperature in °C> for <time in seconds> (v1.3)
This command will keep the oven at the specified temperature for up to 18 hours. The controller will use PID to increase the temperature if it is under-temperature, and turn off the elements if it is over. This command was introduced in v1.3 of the software.

19. Element duty cycle <bottom/top/boost>
This command will disable PID control, and modulate the elements at the specified duty cycle. This is typically used at the start of a reflow, when a fast ramp up in temperature is required - but it can be used at any time.

This command is typically followed by a "wait for" or "wait until" command. If you follow this command with a "ramp temperature" command it will be ignored because the oven will be in PID mode!

20. Wait for <time in seconds>
This command adds a delay before the next command is executed

21. Wait until above <temperature in °C>
This command will delay executing the next command until the temperature of the oven rises to the specified temperature. This is typically used after a "element duty cycle" command.

22. Wait until below <temperature in °C>
This command will delay executing the next command until the temperature of the oven falls to the specified temperature. This is typically used after a "element duty cycle" command.

23. Play beep (v1.1)
Plays a simple beep tone.

24. Play tune
Plays a colorful "reflow done!" tune.


Example profiles
You can download example profile files by clicking here. Use these as a starting point for your paste and oven. These profiles are not tuned to your specific oven so you might need to adjust durations and temperature points to get a good reflow.

The SD card must be formatted using FAT16 or FAT32.
Please reformat the SD card supplied with Controleo3 before using it!


Controleo3 Reflow Profile // This must be the first item in the file

// Notes:
// 1. Comment lines can start with # or //
// 2. Comments can start after a token (e.g. Door close 1s // Close the oven door in 1 second)
// 3. Tokens are case-insensitive
// 4. End of line character can be CR or LF (or both, in any order)
// 5. Number delimiters can be any non-digit character (30/40/50 = 30,40,50 = 30 40 50)
// 6. When reading in profile files, Arduino's Serial Monitor will show debugging information

// The name of this profile
Name "Lead-free paste 250~C"
// The deviation (in Celsius) above which to abort
Deviation to abort 25C
// The maximum temperature. If exceeded, reflow will abort and the oven door opened
Maximum temperature 260C
// Set a maximum duty cycle to avoid damage to your oven (bottom/top/boost)
Maximum duty 100/75/60

// Close the oven door if it isn't already
Close door over 1 second
// Turn the convection fan on
Convection fan on
// Turn the cooling fan off
Cooling fan off
// Stop the timer for now, until the temperature is above 50C
Stop timer
// Wait for the oven to cool to get consistent results
Display "Waiting for oven to cool to 50~C"
Wait until below 50C

// Start the reflow
Display "Phase: Pre-soak"
// Turn on elements for a short while to heat them up
Element duty cycle 80/60/30
Wait until above 75C

// The heating elements typically take some time to heat up, so it is best to
// zero-base the reflow to a higher temperature. The graph in the datasheet shows
// 75C after 15 seconds, so that's what we do here
Initialize timer to 15 seconds
// Select the heating bias (bottom/top/boost)
Bias 100/80/60
// Continue ramping up the temperature using PID
Ramp temperature to 150C in 80s

// Start the soak phase
Display "Phase: Soak"
// Select the heating bias (bottom/top/boost)
Bias 100/50/20
// Slow increase in temperature during soak
Ramp temperature to 175C in 100s

// Start the reflow phase
Display "Phase: Reflow (boost)"
// Force the elements on for a short while to get a quick increase in
// the temperature of the elements (bottom/top/boost)
// This will be limited by the "Maximum duty" command above
Element duty cycle 100/100/100
Wait for 10 seconds
Display "Phase: Reflow"
// Select the heating bias (bottom/top/boost)
Bias 100/80/60
// Ramp up the temperature for reflow
Ramp temperature to 245C in 60s

// Hold the temperature at peak for a few seconds
Display "Phase: Reflow (hold)"
// Maintain peak temperature for a short while
Maintain 250C for 25 seconds
// Stop the timer so we know how long the reflow took
Stop timer
// Turn the elements off now (bottom/top/boost)
Element duty cycle 0/0/0

// Start Cooling
Display "Phase: Cooling"
// Open the oven door
Open door over 10 seconds
// Wait for the door to open
Wait for 10 seconds
// Turn the cooling fan on
Cooling fan on
// Wait for the temperature to drop
Wait until below 100C

// Boards can be removed now
Display "Boards can be removed now"
// Play a tune that the reflow is done
Play tune
// Wait for the temperature to drop further
Wait until below 50C

// Reflow is done now
Display "Reflow complete!"
Convection fan off
Cooling fan off
// Close the oven door
Close door over 3 seconds