Difference between revisions of "IReflow"

From Land Boards Wiki
Jump to navigation Jump to search
(Created page with "Reflow Oven Controller IReflow-MyMenu-P1010248-640px.jpg Image shows top of iReflow and rear of MyMenu card Features IR Oven controller Lead free profile Lead profile Type K...")
 
Line 1: Line 1:
Reflow Oven Controller
+
== Reflow Oven Controller ==
IReflow-MyMenu-P1010248-640px.jpg
+
 
 +
[[File:IReflow-MyMenu-P1010248-640px.jpg]]
  
 
Image shows top of iReflow and rear of MyMenu card
 
Image shows top of iReflow and rear of MyMenu card
  
Features
+
== Features ==
IR Oven controller
+
 
Lead free profile
+
* IR Oven controller
Lead profile
+
** Lead free profile
Type K thermocouple
+
** Lead profile
Connection via screw terminal block
+
* Type K thermocouple
ATMega328 Microprocessor
+
** Connection via screw terminal block
Arduino compatible
+
* ATMega328 Microprocessor
16 MHz
+
** Arduino compatible
FTDI connector for serial USB
+
** 16 MHz
ISP connector
+
* FTDI connector for serial USB
Buzzer to indicate done
+
* ISP connector
I2C
+
* Buzzer to indicate done
MyMenu - OLED plus buttons
+
* I2C
2 LEDs
+
** MyMenu - OLED plus buttons
Supports external SSR
+
* 2 LEDs
49x49mm form factor
+
* Supports external SSR
4-40 mounting holes spaced 41mm apart
+
* 49x49mm form factor
Parts
+
* 4-40 mounting holes spaced 41mm apart
Solid State Relay SSR-25DA 25A /250V 3-32VDC for PID Temperature Controller TE
+
 
Welding Blanket - To over the insides
+
== Parts ==
Toaster
+
 
Oster 6-Slice Toaster Oven, Silver tssttvdfl2
+
* [https://web.archive.org/web/20190526035423/http://www.ebay.com/sch/i.html?_odkw=25A%2F250V+SSR+White+Solid+State+Relay&_osacat=0&_from=R40&_trksid=p2045573.m570.l1313.TR0.TRC0.H0.TRS0&_nkw=25A%2F250V+SSR+Solid+State+Relay&_sacat=0 Solid State Relay SSR-25DA 25A /250V 3-32VDC for PID Temperature Controller TE]
1440 Watts, 12 Amps
+
* [https://web.archive.org/web/20190526035423/http://www.harborfreight.com/4-ft-x-6-ft-fiberglass-welding-blanket-67833.html Welding Blanket] - To over the insides
Oster-TSSTTVDFL2-1-512px.jpg
+
 
 +
== Toaster ==
 +
 
 +
* [https://web.archive.org/web/20190526035423/http://www.oster.com/toasters-and-ovens/toaster-ovens/oster-designed-for-life-6-slice-toaster-oven-silver/TSSTTVDFL2.html Oster 6-Slice Toaster Oven, Silver tssttvdfl2]
 +
** 1440 Watts, 12 Amps
 +
[[File:Oster-TSSTTVDFL2-1-512px.jpg]]
  
 
Reflow toaster oven conclusions:
 
Reflow toaster oven conclusions:
  
This more expensive oven with 4 elements has more than enough power to meet the most demanding temperature slopes and ranges for reflow soldering of both lead-free and leaded solders.
+
# This more expensive oven with 4 elements has more than enough power to meet the most demanding temperature slopes and ranges for reflow soldering of both lead-free and leaded solders.
The oven has too much power due to the 4 elements to be run on manual without heating too quickly. The soak zone in the cycle requires a dwell for about 2x-4x the time that the oven would produce under manual control.
+
# The oven has too much power due to the 4 elements to be run on manual without heating too quickly. The soak zone in the cycle requires a dwell for about 2x-4x the time that the oven would produce under manual control.
The oven high temp thermostat has quite a bit of hysteresis but the high temperature is above the temperatures for both profiles. Set the oven to highest temp and control it.
+
# The oven high temp thermostat has quite a bit of hysteresis but the high temperature is above the temperatures for both profiles. Set the oven to highest temp and control it.
Probably doesn't need PID control although it would be cooler if it was.
+
# Probably doesn't need PID control although it would be cooler if it was.
Definitely need PTouch labels on the door for contaminants "Don't cook food in here" and for heat "Gets hot to touch".
+
# Definitely need PTouch labels on the door for contaminants "Don't cook food in here" and for heat "Gets hot to touch".
Connectors
+
 
J1 - 9V DC Power Jack
+
== Connectors ==
Center = +9VDC (nominal)
+
 
Shield = GND
+
=== J1 - 9V DC Power Jack ===
J2 - Solid State Relay
+
 
Driven by transistor to ground
+
* Center = +9VDC (nominal)
+5V
+
* Shield = GND
SSR-Output
+
 
J3 - FTDI
+
=== J2 - Solid State Relay ===
GND
+
 
GND
+
* Driven by transistor to ground
+5V
+
 
TxD
+
# +5V
RxD
+
# SSR-Output
Reset
+
 
J4 - I2C OLED
+
=== J3 - FTDI ===
+5V
+
 
GND
+
# GND
SCL
+
# GND
SDA
+
# +5V
J5 - Thermocouple
+
# TxD
Thermo + = Yellow
+
# RxD
Thermo - = Red
+
# Reset
J6 - ISP Download cable
+
 
MISO
+
=== J4 - I2C OLED ===
+5V (+ marked on PWB)
+
 
SCK
+
# +5V
MOSI
+
# GND
RESET
+
# SCL
GND
+
# SDA
J7 - Keypad
+
 
N/A with MyMenu card
+
=== J5 - Thermocouple ===
GND
+
 
VCC
+
# Thermo + = Yellow
SW5WAY - Analog
+
# Thermo - = Red
Programming
+
 
Card Driver
+
=== J6 - ISP Download cable ===
IReflow - Arduino Card Driver - on GitHub
+
 
IReflow - Example Code
+
# MISO
Fixing the Device Signature Error in the Arduino IDE
+
# +5V (+ marked on PWB)
The SMT ATMega328P-AU part has a different signature than the UNO.
+
# SCK
When you try to program the IReflow card using Arduino Uno as the board type you get an error
+
# MOSI
 +
# RESET
 +
# GND
 +
=== J7 - Keypad ===
 +
 
 +
* N/A with MyMenu card
 +
 
 +
# GND
 +
# VCC
 +
# SW5WAY - Analog
 +
 
 +
== Programming ==
 +
 
 +
=== Card Driver ===
 +
 
 +
* [https://web.archive.org/web/20190526035423/https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LandBoards_IReflow IReflow - Arduino Card Driver - on GitHub
 +
* [https://web.archive.org/web/20190526035423/https://github.com/douggilliland/lb-Arduino-Code/tree/master/libraries/LandBoards_IReflow/examples IReflow - Example Code]
 +
 
 +
=== Fixing the Device Signature Error in the Arduino IDE ===
 +
 
 +
* The SMT ATMega328P-AU part has a different signature than the UNO.
 +
* When you try to program the IReflow card using Arduino Uno as the board type you get an error
 +
<pre>
 
avrdude: Expected signature for ATmega328P is 1E 95 0F
 
avrdude: Expected signature for ATmega328P is 1E 95 0F
 
         Double check chip, or use -F to override this check.
 
         Double check chip, or use -F to override this check.
 
Wrong microcontroller found.  Did you select the right board from the Tools > Board menu?
 
Wrong microcontroller found.  Did you select the right board from the Tools > Board menu?
The Arduino IDE needs avrdude.conf changed to program the AU part
+
</pre>
In earlier versions of the Arduino IDE finding the avrdude.conf file was relatively straightforward
+
* The Arduino IDE needs avrdude.conf changed to program the AU part
From Programming the Atmega328 - AU in Arduino
+
* In earlier versions of the Arduino IDE finding the avrdude.conf file was relatively straightforward
Correct Signature = 0x1e 0x95 0x14;
+
** From Programming the Atmega328 - AU in Arduino
Keep old copy too.
+
* Correct Signature = 0x1e 0x95 0x14;
In Arduino IDE 1.6.2 the avrdude.conf file is in a different location
+
* Keep old copy too.
Ard1p6.PNG
+
* In Arduino IDE 1.6.2 the avrdude.conf file is in a different location
 +
 
 +
[[File:Ard1p6.PNG]]
 +
 
 +
* Changing it here doesn't work since it's located in a roaming directory at least for Windows 8.1
 +
** C:\Program Files (x86)\Arduino\dist\default_package.zip\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
 +
* Other OS versions may be different
 +
* Locate the avrdude.conf file
 +
** On my computer it is at: C:\Users\doug_000\AppData\Roaming\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
 +
* Find it by turning on verbose download in the IDE
 +
 
 +
[[File:Atmega328-menu.PNG]]
 +
 
 +
* The path will be shown in the output
  
Changing it here doesn't work since it's located in a roaming directory at least for Windows 8.1
+
[[File:Atmega328-avdude-conf-path.PNG]]
C:\Program Files (x86)\Arduino\dist\default_package.zip\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
 
Other OS versions may be different
 
Locate the avrdude.conf file
 
On my computer it is at: C:\Users\doug_000\AppData\Roaming\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
 
Find it by turning on verbose download in the IDE
 
Atmega328-menu.PNG
 
  
The path will be shown in the output
+
==== Edit avrdude.conf ====
Atmega328-avdude-conf-path.PNG
 
  
Edit avrdude.conf
+
* Find the string
Find the string
+
<pre>
 
part parent "m328"
 
part parent "m328"
It should look like
+
</prew>
Atmega328-avdude-conf-fuses-orig.PNG
+
 
 +
* It should look like
  
Change to
+
[[File:Atmega328-avdude-conf-fuses-orig.PNG]]
Atmega328-avdude-conf-fuses-au-version.PNG
 
  
u8g OLED library
+
* Change to
Ireflow-OLED-640px.jpg
 
  
Library notes
+
[[File:Atmega328-avdude-conf-fuses-au-version.PNG]]
Display characters/variables:
+
 
Use u8g.print (xx) function, just like the way you did with Serial.print (xx).
+
=== u8g OLED library ===
Change the font:
+
 
Use u8g.setFont (xx) function to change the font, parentheses "xx" can be replaced by the corresponding font library name (you can search font library in u8g.h within U8glib \utility folder);
+
[[File:Ireflow-OLED-640px.jpg]]
Large font is recommended for u8g_font_7x13, middle font for u8g_font_fixed_v0r and small font for u8g_font_chikitar;
+
 
Change coordinates:
+
* Library notes
Use u8g.setPrintPos (x, y) function to change the display of coordinates
+
** Display characters/variables:
fonts
+
*** Use u8g.print (xx) function, just like the way you did with Serial.print (xx).
HelloWorld
+
** Change the font:
Uncomment
+
*** Use u8g.setFont (xx) function to change the font, parentheses "xx" can be replaced by the corresponding font library name (you can search font library in u8g.h within U8glib \utility folder);
 +
*** Large font is recommended for u8g_font_7x13, middle font for u8g_font_fixed_v0r and small font for u8g_font_chikitar;
 +
** Change coordinates:
 +
*** Use u8g.setPrintPos (x, y) function to change the display of coordinates
 +
* fonts
 +
* HelloWorld
 +
** Uncomment
 +
<pre>
 
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
 
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK); // Display which does not send ACK
MAX31855 Thermocouple Amplifier
+
</pre>
Adafruit Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade) - v2.0
+
 
Adafruit Thermocouple tutorial
+
=== MAX31855 Thermocouple Amplifier ===
MAX31855 Arduino library code
+
 
Other
+
* Adafruit Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade) - v2.0
LiPo Battery Care
+
* Adafruit Thermocouple tutorial
Algorithm
+
* MAX31855 Arduino library code
 +
 
 +
=== Other ===
 +
 
 +
* LiPo Battery Care
 +
 
 +
=== Algorithm ===
 +
 
 
Piece-wise Linear
 
Piece-wise Linear
  

Revision as of 18:37, 10 January 2020

Reflow Oven Controller

IReflow-MyMenu-P1010248-640px.jpg

Image shows top of iReflow and rear of MyMenu card

Features

  • IR Oven controller
    • Lead free profile
    • Lead profile
  • Type K thermocouple
    • Connection via screw terminal block
  • ATMega328 Microprocessor
    • Arduino compatible
    • 16 MHz
  • FTDI connector for serial USB
  • ISP connector
  • Buzzer to indicate done
  • I2C
    • MyMenu - OLED plus buttons
  • 2 LEDs
  • Supports external SSR
  • 49x49mm form factor
  • 4-40 mounting holes spaced 41mm apart

Parts

Toaster

Oster-TSSTTVDFL2-1-512px.jpg

Reflow toaster oven conclusions:

  1. This more expensive oven with 4 elements has more than enough power to meet the most demanding temperature slopes and ranges for reflow soldering of both lead-free and leaded solders.
  2. The oven has too much power due to the 4 elements to be run on manual without heating too quickly. The soak zone in the cycle requires a dwell for about 2x-4x the time that the oven would produce under manual control.
  3. The oven high temp thermostat has quite a bit of hysteresis but the high temperature is above the temperatures for both profiles. Set the oven to highest temp and control it.
  4. Probably doesn't need PID control although it would be cooler if it was.
  5. Definitely need PTouch labels on the door for contaminants "Don't cook food in here" and for heat "Gets hot to touch".

Connectors

J1 - 9V DC Power Jack

  • Center = +9VDC (nominal)
  • Shield = GND

J2 - Solid State Relay

  • Driven by transistor to ground
  1. +5V
  2. SSR-Output

J3 - FTDI

  1. GND
  2. GND
  3. +5V
  4. TxD
  5. RxD
  6. Reset

J4 - I2C OLED

  1. +5V
  2. GND
  3. SCL
  4. SDA

J5 - Thermocouple

  1. Thermo + = Yellow
  2. Thermo - = Red

J6 - ISP Download cable

  1. MISO
  2. +5V (+ marked on PWB)
  3. SCK
  4. MOSI
  5. RESET
  6. GND

J7 - Keypad

  • N/A with MyMenu card
  1. GND
  2. VCC
  3. SW5WAY - Analog

Programming

Card Driver

Fixing the Device Signature Error in the Arduino IDE

  • The SMT ATMega328P-AU part has a different signature than the UNO.
  • When you try to program the IReflow card using Arduino Uno as the board type you get an error
avrdude: Expected signature for ATmega328P is 1E 95 0F
         Double check chip, or use -F to override this check.
Wrong microcontroller found.  Did you select the right board from the Tools > Board menu?
  • The Arduino IDE needs avrdude.conf changed to program the AU part
  • In earlier versions of the Arduino IDE finding the avrdude.conf file was relatively straightforward
    • From Programming the Atmega328 - AU in Arduino
  • Correct Signature = 0x1e 0x95 0x14;
  • Keep old copy too.
  • In Arduino IDE 1.6.2 the avrdude.conf file is in a different location

Ard1p6.PNG

  • Changing it here doesn't work since it's located in a roaming directory at least for Windows 8.1
    • C:\Program Files (x86)\Arduino\dist\default_package.zip\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
  • Other OS versions may be different
  • Locate the avrdude.conf file
    • On my computer it is at: C:\Users\doug_000\AppData\Roaming\Arduino15\packages\arduino\tools\avrdude\6.0.1-arduino2\etc
  • Find it by turning on verbose download in the IDE

Atmega328-menu.PNG

  • The path will be shown in the output

Atmega328-avdude-conf-path.PNG

Edit avrdude.conf

  • Find the string
part parent "m328"
</prew>

* It should look like

[[File:Atmega328-avdude-conf-fuses-orig.PNG]]

* Change to

[[File:Atmega328-avdude-conf-fuses-au-version.PNG]]

=== u8g OLED library ===

[[File:Ireflow-OLED-640px.jpg]]

* Library notes
** Display characters/variables:
*** Use u8g.print (xx) function, just like the way you did with Serial.print (xx).
** Change the font:
*** Use u8g.setFont (xx) function to change the font, parentheses "xx" can be replaced by the corresponding font library name (you can search font library in u8g.h within U8glib \utility folder);
*** Large font is recommended for u8g_font_7x13, middle font for u8g_font_fixed_v0r and small font for u8g_font_chikitar;
** Change coordinates:
*** Use u8g.setPrintPos (x, y) function to change the display of coordinates
* fonts
* HelloWorld
** Uncomment
<pre>
U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NO_ACK);	// Display which does not send ACK

MAX31855 Thermocouple Amplifier

  • Adafruit Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade) - v2.0
  • Adafruit Thermocouple tutorial
  • MAX31855 Arduino library code

Other

  • LiPo Battery Care

Algorithm

Piece-wise Linear

  1. define TIME0_LEADFREE 0
  2. define TIMET1_LEADFREE 120
  3. define TIMET2_LEADFREE 165
  4. define TIMET3_LEADFREE 210
  5. define TIMET4_LEADFREE 218
  6. define TIMET5_LEADFREE 600
  7. define TEMPT0_LEADFREE 22.0
  8. define TEMPT1_LEADFREE 150.0
  9. define TEMPT2_LEADFREE 200.0
  10. define TEMPT3_LEADFREE 252.0
  11. define TEMPT4_LEADFREE 252.0
  12. define TEMPT5_LEADFREE -40.0

double getDesiredTempLeadFree(int currTime) {

 if (currTime < TIMET1_LEADFREE)
   return (TEMPT0_LEADFREE + ((double)currTime                   * ((TEMPT1_LEADFREE-TEMPT0_LEADFREE)/(float)(TIMET1_LEADFREE-TIME0_LEADFREE))));
 else if (currTime < TIMET2_LEADFREE)
   return (TEMPT1_LEADFREE + ((double)(currTime-TIMET1_LEADFREE) * ((TEMPT2_LEADFREE-TEMPT1_LEADFREE)/(float)(TIMET2_LEADFREE-TIMET1_LEADFREE))));
 else if (currTime < TIMET3_LEADFREE)
   return (TEMPT2_LEADFREE + ((double)(currTime-TIMET2_LEADFREE) * ((TEMPT3_LEADFREE-TEMPT2_LEADFREE)/(float)(TIMET3_LEADFREE-TIMET2_LEADFREE))));
 else if (currTime < TIMET4_LEADFREE)
   return (TEMPT3_LEADFREE);
 return (TEMPT5_LEADFREE); // off

} Mechanicals OLED OLED Mechanicals 30654-6.jpg

Layout IReflow-CAD.PNG

Calibration Lead Solder Profile KesterSnPbCurve.PNG

Lead-free Solder Profile Lead Free

LeadFreeProfile.PNG

LeadFreeProfileParms.PNG

On Bake Setting - Manual Control - Heat/Cool Temp set to 450 deg F Ran oven until thermostat kicked in then shut off ToasterOvenBakeHeatCoolManual.png

Observations - Leaded Profile vs Manual Oven Feature Lead Solder Oven (Bake-Manual) Notes Ramp Up < 1.8 deg C/sec 2.2 deg C/sec max (1) Soak Temps 150-180 deg C Soak Time (L) 30-60 secs ~15 secs (2) Ramp to Peak ~1 deg C/sec 1 deg C/sec Peak soak 210-224 deg C Ramp-down Rate Peak is a bit too fast but average is right on Soak time needs to be extended 2x-4x the time Observations - Lead-Free Profile vs Manual Oven Feature Lead-Free Oven (Bake-Manual) Notes Ramp Up 1-4 deg C/sec 2.2 deg C/sec max (1) Soak Temps 150-200 deg C Soak Time (LF) 60-180 secs < 30 secs (2) Ramp to Peak 1-4 deg C/sec 1.5 deg C/sec Peak soak 245-260 deg C 290 max (3) Ramp-down Rate 1-6 deg C/sec max 1 deg C/sec Soak time needs to be extended 2x-4x the time Max temp should be controlled and oven left at highest temp due to hysteresis of the thermostat (pretty wide range) Table - Bake Setting Time (secs) Temp (deg C) Slope (degC/sec) 0 25.75 30 44 0.61 60 87 1.43 90 153 2.20 120 206 1.77 150 245 1.30 180 272 0.90 210 290 0.60 240 276 -0.47 270 264 -0.40 300 234 -1.00 330 213 -0.70 360 196 -0.57 390 183 -0.43 420 171 -0.40 450 162 -0.30 480 154 -0.27 510 147 -0.23 540 141 -0.20 570 134 -0.23 600 128 -0.20 630 123 -0.17 660 119 -0.13 Links Good video on How-To Assembly Sheet IReflow Assembly Sheet