element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • About Us
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Control Systems
  • Challenges & Projects
  • Project14
  • Control Systems
  • More
  • Cancel
Control Systems
Blog What's cooking with that reflow oven of yours (part 1)
  • Blog
  • Forum
  • Documents
  • Events
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Control Systems to participate - click to join for free!
  • Share
  • More
  • Cancel
Group Actions
  • Group RSS
  • More
  • Cancel
Engagement
  • Author Author: BigG
  • Date Created: 8 Oct 2020 7:53 PM Date Created
  • Views 3309 views
  • Likes 6 likes
  • Comments 19 comments
  • controlsystemsch
Related
Recommended

What's cooking with that reflow oven of yours (part 1)

BigG
BigG
8 Oct 2020

  • Introduction
  • Measuring what needs to be controlled
    • Slow cooker test results
    • The Specific Heat Capacity of a Slow Cooker
  • Introducing another heat source

 

 

Introduction

Now that I've passed the design-a-PCB-and-get- it-made phase, I've been toying with the idea of making my own reflow oven. So I took the step and did what many others have done - I bought a cheap toaster oven. I even purchased an off-the-shelf reflow oven controller unit from another maker on Tindie (details of the controller unit can be found on their GitHub page: https://github.com/UnexpectedMaker/ReflowMaster).

 

That was well over a year ago. The problem was, while waiting for the arrival of the controller unit, I discovered that the toaster oven is perfect for reheating left over pizza slices and thus shelved that idea of repurposing the toaster oven.

 

Then our local supermarket had slow cookers on special offer for less than $15. This caught my eye as these were much cheaper than toaster ovens and it used way less energy (150W versus circa 1500W for a toaster oven). So, even though I could readily see that a slow cooker would not reflow a PCB correctly, if at all, straight out the box, I was nevertheless optimistic that with a little a bit of engineering/hacking I could repurpose this slow cooker for reflow. So I went ahead and bought one.

 

image

 

Measuring what needs to be controlled

 

The first thing I needed to do was understand the temperature profile of the slow cooker. For that I needed to set up a test apparatus and set up a means to measure and log temperature.

 

image

 

As Element14 had sent me an MKR Therm ShieldMKR Therm Shield from a previous Arduino competition, I decided to purchase some 1M K-Type thermocouples (temperature range up to 400 ℃) and use that shield with my MKR1000 boardMKR1000 board. I then added in a TFT screen to show me the temperature values and some other profile info, and I was good to go with my temperature measurement tests.

 

image

 

The Arduino code was fairly straightforward thanks to the Arduino MKR Therm library. I crafted the code so that it samples every second.

 

/*
  MKR THERM Shield - Read Sensors

  This example reads the temperatures measured by the thermocouple
  connected to the MKR THERM shield and prints them to the Serial Monitor
  once a second.
  
  The circuit:
  - Arduino MKR board
  - Arduino MKR THERM Shield attached
  - A K Type thermocouple temperature sensor connected to the shield

  This example code is in the public domain.
*/

#include <Arduino_MKRTHERM.h>
#include <SSD1283A.h>                               //Hardware-specific TFT library
#include <Fonts/FreeSansBold12pt7b.h>               // From the Adafruit GFX library

#define CS            6                             // Chip Select SPI pin
#define RST           7                             // Reset pin
#define A0DC          5                             // 
#define LED           -1                            // My LED backlight is hard-wired to VCC, hence -1

// Some TFT display colours
#define BLACK         0x0000
#define BLUE          0x001F
#define RED           0xF800
#define GREEN         0x07E0
#define CYAN          0x07FF
#define MAGENTA       0xF81F
#define YELLOW        0xFFE0
#define WHITE         0xFFFF

#define MA_ARRAYSIZE  (5u)

const uint16_t  SAMPLEINTERVAL = 1000;

uint32_t t_int = 0;

float Tval = 0.0;                     // Thermocouple temperature value
float Pval = 0.0;                     // Previous temperature value
float Pave = 0.0;

uint8_t RCval = 0;                     // Defines the reflow Characteristics Profile into "zones": 1 = PREHEAT, 2 = SOAK, 3 = REFLOW, 4 = COOLING

float TDMave[MA_ARRAYSIZE] = {0.0};    // Keeping track of temperature difference. This allows us to calculate a moving average
uint8_t TDi = 0;                       // The index for TDMave
bool TDMfull = false;                  // A bool to determine if ready to calculate the Mave

uint16_t  tCntr = 0;                   // A counter to keep track of the temperature profile


SSD1283A tft(/*CS=*/ CS, /*DC=*/ A0DC, /*RST=*/ RST, /*LED=*/ LED); //hardware spi,cs,cd,reset,led


void setup() {

  Serial.begin(115200);

  while (!Serial);
  delay(100);
  
  tft.init();

  tft.setRotation(3);
  tft.fillScreen(BLACK);
  tft.setCursor(10, 10);
  tft.setTextSize(1);

  if (!THERM.begin()) {
    Serial.println("Failed to initialize MKR THERM shield!");
    tft.setTextColor(RED);
    tft.println("MKR THERM Error!");
    while (1);
  }
  tft.setTextColor(YELLOW);
  tft.print("MKR THERM REFLOW");
  tft.setCursor(10, 20);
  tft.println("Profile Test");
  
  delay(200);
  // Take a dummy reading
  //THERM.readReferenceTemperature();
  THERM.readTemperature();
  delay(400);
  // Take another dummy reading
  //THERM.readReferenceTemperature();
  THERM.readTemperature();
  
  delay(800);
  
  tft.setFont(&FreeSansBold12pt7b); 
  
  tft.setCursor(20, 85);
  tft.setTextColor(WHITE);
  
  //THERM.readReferenceTemperature();
  Pval = THERM.readTemperature();
  tft.print(Pval);
  tft.print(" C");

  t_int = millis();
  //delay(1000);
}

void loop() {
  if ((millis() - t_int) > SAMPLEINTERVAL) {
    
    t_int = millis();
    Serial.print(tCntr);

    Tval = THERM.readTemperature();
    //delay(100);
    //Tval += THERM.readTemperature();
    //Tval /=2;
  
    Serial.print(",");
    Serial.println(Tval);
    
    ShowTemperatureValue();

    AssignProfileCharacteristic();
    
    // Determine Temperature Difference from previous value
    TDMave[TDi] = Tval - Pval;
    if (TDMfull) DisplayTempDiff();
    TDi++;
    
    if (TDi == MA_ARRAYSIZE) {
      if (!TDMfull) {
        TDMfull = true;
        DisplayTempDiff();
      }
      TDi = 0;
    }
    
    Pval = Tval;
    
  }
}

void ShowTemperatureValue() {
  tft.setCursor(20, 85);
  tft.setTextColor(BLACK);
  tft.print(Pval);
  tft.print(" C");
  
  tft.setCursor(20, 85);
  tft.setTextColor(WHITE);
  tft.print(Tval);
  tft.print(" C");
  
}

void AssignProfileCharacteristic() {
  tft.setCursor(10, 55);
  if (Tval > 30) {
    tCntr++;
    if (Tval < 150.5) {
      if (!RCval) {
        tft.setTextColor(GREEN);
        tft.print("PREHEAT");
        RCval = 1;
      }
    }
    else if (Tval >= 150.50 && Tval < 154.50) {
      if (RCval == 1) {
        tft.fillRect(5, 35, 120, 25, BLACK);
        tft.setTextColor(MAGENTA);
        tft.print("SOAK");
        RCval = 2;
      }
    }
    else if (Tval >= 154.50) {
      if (RCval == 2) {
        tft.fillRect(5, 35, 120, 25, BLACK);
        tft.setTextColor(RED);
        tft.print("REFLOW");
        RCval = 3;
      }
    }
  }
  else {
    tCntr = 0;
    if (RCval) {
      tft.fillRect(5, 35, 120, 25, BLACK);
      RCval = 0;
    }
  }
}


void DisplayTempDiff() {
  float Mave = 0.0;

  for (uint8_t x = 0; x < MA_ARRAYSIZE; x++) {
    Mave += TDMave[x];
  }
  Mave /= MA_ARRAYSIZE;
  
  // We only analyse when in one of the profile characteristic zones, otherwise clear
  tft.setFont();
  tft.fillRect(5, 95, 125, 30, BLACK);
  if (RCval) {
    tft.setTextColor(WHITE);
    tft.setCursor(10, 100);
    tft.print("TDIFF(MA):");
    
    tft.setCursor(75, 100);
    tft.setTextColor(BLACK);
    tft.print(Pave,2);
    tft.print(" C");
    
    tft.setCursor(75, 100);
    tft.setTextColor(WHITE);
    tft.print(Mave,2);
    tft.print(" C");
  
    // Add assessment analysis
    tft.setCursor(10, 110);
    if (RCval == 1) {
      if (Mave > 3.00) {
        tft.setTextColor(WHITE);
        tft.print("TOO HIGH");
      }
    }
    else if (RCval == 2) {
      if (Mave > 1.00) {
        tft.setTextColor(WHITE);
        tft.print("TOO HIGH");
      }
      else if (Mave < 0.50) {
        tft.setTextColor(WHITE);
        tft.print("LOSING TEMP");
      }
    }
    else if (RCval == 3) {
      
    }
  }
  else tft.fillRect(5, 95, 125, 30, BLACK);
  
  Pave = Mave;
  tft.setFont(&FreeSansBold12pt7b);
}

 

 

Slow cooker test results

 

For my first test, I used the high temperature setting on the slow cooker as this allowed the temperature of the bowl to reach over 150 ℃. The first test results were not that exciting. As shown on this chart, the heating profile achieved with the PCB inside the bowl was nice and linear but the rise in temperature was way too slow (0.04 degrees per second).

 

image

My first challenge was to determine how I could improve things just using the slow cooker. Then it dawned on me. Who needs the bowl anyway as the heating comes through the aluminium shell. So, I removed the ceramic bowl and I placed the PCB inside the shell with the lid balanced on top (not quite a snug fit).

 

image

 

This provided a much much better temperature gradient (0.16 degree per second) but it still took about 10 to 15 minutes to reach 150 degrees centigrade with the lid on.

 

image

 

It was time to reflect on the science behind this.

 

 

The Specific Heat Capacity of a Slow Cooker

 

The previous Project14 contest (Prove Science!) helped me rethink this engineering challenge. I had already narrowed my focus to the one and only parameter I needed to control, namely temperature, forgetting that if I looked at the system as a whole, which includes energy input and how this impacts the output, namely temperature, then I would get a better handle on the mechanics or science involved to control the system and create an optimum temperature profile.

 

I now needed to brush up on my science and look at Heat Capacity (which is defined as the amount of heat required to change its temperature by one degree) as well as Specific Heat Capacity which relates to the material properties of the substance being heated as is defined as the amount of heat required to change the temperature of a mass unit of a substance by one degree (source: Engineering Toolbox).

 

The formula used for Specific Heat Capacity is:  c= ΔQ /(m×ΔT) where: c is specific heat capacity; ΔQ is the amount of heat change; m is material mass; ΔT is the change in temperature.

 

Using online sources, I found that the Specific Heat for Aluminium is around 0.890 J / (g K) and for Ceramic its around 0.85 J / (g K).

 

As material mass is involved, I put the bowl on the scales and it measured 2.184kg. I had to make estimates for the aluminium shell as I had made some mods before thinking to measure it's mass. I reckon that the shell also weighed about 1.25kg. So combined we could for simplicity assume 3.434kg. We'll see how good are these estimations through our calculations.

 

image

 

The power rating was found on the underside of the slow cooker:

 

image

 

Let's first look at heating just the aluminium shell + PCB.

 

image

Here we calculate that we needed 178W of energy to heat the aluminium shell. Seems plausible considering that the shell is so thin. The chart shows a slight curve that hints at heat losses.

 

Let's move to the bowl + shell + PCB and use out 178W of power to see what this tells us:

 

image

So here it's telling me that the combined Specific Heat Capacity for bowl + shell is 1274 J / (kg K). This is much higher than I was expecting. So there are a few unknown factors have have caused my basic calculations to deviate from the expected ranges. Maybe others have a view as to why. Maybe the bowl is not ceramic but some other material. Maybe the aluminium shell has a different specific heat value too. Maybe the AC voltage fluctuated between the two tests (they were not done on the same day or same time of day) which means that the power value changed. Who knows.

 

Anyhow, these calculations have now highlighted a new parameter to consider, namely mass of the object being heated. Other considerations would be heat transfers to other objects such as from the inner shell to the outer shell for example. Then there is general thermal loss (I was taking temperature from the top side of the PCB, for example.

 

image

 

One thing this paper exercise did was get me thinking about isolating the inner shell from the outer shell and including some form of insulation between the two layers.

 

Then I had to consider increasing the energy transfer needed (I needed more power) to increase the temperature gradient.

 

 

Introducing another heat source

 

The first thing I considered was that cheap fan heater I had purchased awhile back. I had posted a question on Element14 website about remote heat control and received some fantastic feedback.

 

So I hacked together a test apparatus:

 

image

 

Well the test results were very disappointing. The temperature gradient was not great at all and pretty erratic. Clearly temperature control was kicking in. To solve my temperature fluctuation problem, I would have to remove the mechanical type thermostat control mechanism.

 

image

 

 

Reflecting on options I remembered the drill - keep it simple stupid (kiss). This is especially true when it comes to developing a control system - as another Element14 member has already demonstrated such skill with his Current Control with 1 transistor project.

 

It was back to the drawing board.

 

It just so happened that I was rooting around in the shed and I spotted an old flood light lying there (only cost me around $15 at the time). It was one of those that used a 400W halogen R7 type light bulb.

 

image

 

I seemed to recall that these halogen light bulbs were really good a giving off loads of heat, as the exterior casing got very hot. Doing some prelim online research confirmed that these type of light bulbs reach some impressive high temperatures the higher the wattage.

 

To ensure I got max heat with my 400W flood light, I removed the glass covering and I then balanced the flood light with some wood on top of the slow cooker and turned the light on (cooker remained switched off) and took some temperature measurements.

 

image

The results were really encouraging.

 

I am no PCB reflow expert so I am not sure what the implications are for the initial high temperature gradient (below 65 degree the temperature rise was about 5 degrees per second) but this eventually settled to a steady 1 degree per second rise all the way up to 150 degree, which is pretty darn good, in my opinion.

 

The problem now was that once I turned off the spotlight, the temperature plummeted as there was no means for heat retention. So definitely some form of active heating control and maybe passive heating insulation will be needed for the soak phase.

 

I decided to focus on the latter (improved insulation) first to see if I could make things more efficient. I also decided to order in some 230 W R7 Halogen bulbs to see if I could get away with less power.

 

More on this in the next blog.

  • Sign in to reply

Top Comments

  • shabaz
    shabaz over 4 years ago in reply to BigG +3
    Hi Colin, These are the bits I've got, the quartz tubes are 1kW each (2 tubes) and the ceramic element (qty 1) is 600W. I guess I was thinking of putting the quartz tubes on either side of the ceramic…
  • genebren
    genebren over 4 years ago in reply to BigG +3
    BigG, If you decide to experiment with the small halogen bulb route, I have a stash of various halogen bulbs (MR11 FTB - 12V/20W, FTH/C 12V/35W and MR16 BAB 12V/20W) that I would be willing to part with…
  • genebren
    genebren over 4 years ago in reply to BigG +2
    Not that I would ever encourage anyone from developing their own ideas, but here are a couple of oven projects based on Halogen lighting. https://hackaday.com/2017/07/13/a-bright-idea-for-reflow-soldering…
Parents
  • shabaz
    shabaz over 4 years ago

    Hi Colin,

     

    Awesome project!

    I think my (ancient, ebay purchased) reflow oven (which I barely use for prototypes, since it's quite large it's stored away in a nearby basement) has halogen or ceramic tubes too. Before I got that, I wanted to make one, and was considering using a mix of ceramic and IR elements.

    If you want them, let me know and I can post them.. purchased them from a company called Ceramicx.  Probably got a short length of heat-resistant wire and connectors too.

    Another idea (might not work!) was that if just a single painful component needs to be reflowed (and if the remainder can be done by hand soldering) I was curious if a 12V lighting transformer, and a little MR16 or GU10 halogen bulb could work (might need some heat-resistant transparent cylinder. Finding that heat-resistant transparent cylinder is a problem preventing testing that out!

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • BigG
    BigG over 4 years ago in reply to shabaz

    Thanks for the positive feedback Shabaz and thanks for the generous offer. I would be curious to know what the wattage of those ceramic and IR elements are as I'm keen to keep power usage down to the bare minimum.

     

    As to your idea "I was curious if a 12V lighting transformer, and a little MR16 or GU10 halogen bulb could work (might need some heat-resistant transparent cylinder. Finding that heat-resistant transparent cylinder is a problem preventing testing that out!"

     

    Reminds me of that saying "great minds think alike / fools never differ".

     

    I had thought of that and I think it could work for a small board but as these are spot focus type bulbs you would need to have the bulb at the correct distance away to evenly heat the board etc. Anyway, as I had found that spot light with the R7 lightbulb I never took it further with the GU10's.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • shabaz
    shabaz over 4 years ago in reply to BigG

    Hi Colin,

     

    These are the bits I've got, the quartz tubes are 1kW each (2 tubes) and the ceramic element (qty 1) is 600W. I guess I was thinking of putting the quartz tubes on either side of the ceramic element maybe, but it's been ages and I could be wrong.. maybe it was just to compare the difference. I think I wanted a mix of wavelengths to heat the board more than frying the top of the components perhaps.. Also, there are combined holders/reflectors and some Camden Boss ceramic screw terminal blocks and 2 m of 1.5mm2 heat-tolerant cable.

    If you want these I can box them up and get them sent across (PM me your address).

    image

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • genebren
    genebren over 4 years ago in reply to BigG

    BigG,

     

    If you decide to experiment with the small halogen bulb route, I have a stash of various halogen bulbs (MR11 FTB - 12V/20W, FTH/C 12V/35W and MR16 BAB 12V/20W) that I would be willing to part with.  Yours for the cost of shipping.

     

    Have fun, play safe!

    Gene

    • Cancel
    • Vote Up +3 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • BigG
    BigG over 4 years ago in reply to shabaz

    Hi Shabaz

     

    Thanks for sharing a photo of what you have. Assuming that is a standard width for a desk then it looks to me like the holders and elements will be too long for my needs. They may even be too long for a small toaster oven too. Anyway the 1kW/600W is also too high for my purposes. Mind you, if I was building a larger reflow oven then I would think these would be ideal. Thanks again for the offer.

     

    C://

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
  • BigG
    BigG over 4 years ago in reply to genebren

    Hi Gene

     

    Thanks for the offer. Looking at the power output for your bulbs and comparing it to the anecdotal data (not sure about validity of actual numbers) in this link https://www.reptileuvinfo.com/html/watts-heat-lights-lamp-heat-output.html  (see last two rows of table), I'm wondering whether those bulbs can reach the temperature required (probably this agrees with inverse square law - meaning when lower power bulb at a distance, then heat dissipation, which is energy intensity multiplied by square of distance, is such that for low power bulbs you lose too much temperature too quickly).

     

    That web page actually highlights a nice rule of thumb for heating via halogen "For every 100 watts you put in, you get about 3.5 watts of light and 96.5 watts of heat."

     

    Rgds

     

    Colin

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
Comment
  • BigG
    BigG over 4 years ago in reply to genebren

    Hi Gene

     

    Thanks for the offer. Looking at the power output for your bulbs and comparing it to the anecdotal data (not sure about validity of actual numbers) in this link https://www.reptileuvinfo.com/html/watts-heat-lights-lamp-heat-output.html  (see last two rows of table), I'm wondering whether those bulbs can reach the temperature required (probably this agrees with inverse square law - meaning when lower power bulb at a distance, then heat dissipation, which is energy intensity multiplied by square of distance, is such that for low power bulbs you lose too much temperature too quickly).

     

    That web page actually highlights a nice rule of thumb for heating via halogen "For every 100 watts you put in, you get about 3.5 watts of light and 96.5 watts of heat."

     

    Rgds

     

    Colin

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • More
    • Cancel
Children
No Data
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube