LED DIY : Reflowing @home.yes

stardustsailor

Well-Known Member
When it comes to "Doing-It-Yourself "......(..! ....) .....
Anyway ...

Considering LEDS ....

Well ....Reflow Soldering ,might come pretty handy
__________________________________________________________________________
Reflow soldering general info :

http://en.wikipedia.org/wiki/Reflow_soldering

http://www.nordson.com/en-us/divisions/efd/Literature/White-Papers/Solder/Nordson-EFD-First-Principles-Solder-Reflow.pdf

http://www.ami.ac.uk/courses/topics/0132_rs/

__________________________________________________________________________


For the LED DIYer two types of reflow soldering can be done easily @home ....

-Oven Reflow

&

- Hot Plate Reflow ....

......


They differ pretty much both at how they actually operate during reflowing and at what application ,each is suited best ... ...



Oven reflowing ,pretty much needs a control unit -later for that one - and a slightly "hacked" toaster oven ...
Temperature gradients are smooth ,with heat being evenly spread all over the pcb / electronic parts & devices ..
Ideal for working with double sided pcbs or where there are plastic parts -i.e . usb connectors - mounted on the pcb ....

Hot-Plate reflowing ,again needs a control unit ,same as before and an electric stove -preferably the glass -ceramic type ..
CAUTION: Induction stoves are not suited for soldering electronic devices .


At the case of hot-plating,heat comes from underneath the pcb /parts and temperature gradients can be steep ...
Best suited for heat-conducting pcbs and single -sided ones ....
-Ring a bell ?

So ....

The controller unit .....


A PID controller unit ...

__________________________________________________________________

Parts needed for the DIYer :

-Arduino UNO REV 3 .....................................: ~ $20
-Rocket Scream Reflow Soldering Arduino Shield .......................: $38
http://www.rocketscream.com/blog/2012/11/28/updated-back-in-stock-reflow-oven-shield-controller/#more-1169
http://www.rocketscream.com/shop/reflow-oven-controller-shield-arduino-compatible
http://www.rocketscream.com/wiki/index.php/Reflow_Controller_Shield_(Arduino_Compatible)

-Solid State Relay ( SSR ) at 10-25 A and triggered by 3-32 V DC .Open-Open .....: ~ $20
-And a small heatsink for it ....................................................................: ~$5
https://en.wikipedia.org/wiki/Solid-state_relay

-A K type Thermocouple (TC ) ,preferably glassfiber braided ..........................: ~ $15

Info : Temperature Measurement with Thermocouples

Further Details on lead free reflow soldering of LEDs

Measuring of the Temperature Profile during the Reflow Solder Process

http://learn.adafruit.com/thermocouple/

_______________________________________________________________________
Average total cost of bare build : ~ $98

...to be continued ...
 

SnotBoogie

Well-Known Member
I think it should be pointed out that this is the "pro" way of reflowing, and its relatively simple to do it ghetto style by hand. The product is of course inferior but it produces nonetheless. :p

Only posting this because it would be a shame to put people off reflowing (which is super easy) coz they dont have arduino skillz. :hump:
 

stardustsailor

Well-Known Member
Only posting this because it would be a shame to put people off reflowing (which is super easy) coz they dont have arduino skillz.

+1000 for the red part ....

For the blue part .....

Who said that Arduino skills are needed ?

There is already plenty of free code/software outhere ...
And of course ,it's going to be provided here along with detailed info ,how to build it ...
And operate it without the need of programming a single code line ,ever .....

Everything is already there ,available ...
If one needs a "pro" reflow system ....
All he/she has to do is buy the parts needed ,carefully wire them without being electrocuted into a mass of carbon residues ,
load the code and ...Voila!

Ready to reflow ....

But yes ...Reflow can be done way easily ,with almost any heat source that can reach @ 240-250 °C ......

Leds ,though ....They kinda need more ..precise ...procedures .......
 

pepperdust

Well-Known Member
I am with snot on this.. were not building rockets here, nor are we using these long term.. there projects and should be taken as such.. the LED itself will be outdated in 2 years anyways, and have lost light output also.

has anyone even measured a "professional" reflow chip to a DIY? if we want to continue on, we might need to see first the numbers on different chips.. I have a XM-L2 ( 6500k ) / DIY XM-L2 ( 6500k ) if someone has a li-cor 250A, and can power the chip to check, I'll send. but even then the chips themselves vary, chip to chip, where one chip might have just made it into the higher bin... I can send plenty of each to check though.. to get an average.


I commend you stardust, but I would first check out numbers before planning to far.. minds that think too much, are as bad as ones that never think..

I wonder then ( haven't been here long ) how you guys made your astir led's ? is it the "fat" bridgelux "white base" led where you just solder the two pins? not the "cree" bare emitter style?



I am interested if ayone does this, as how much is this costing?
 

stardustsailor

Well-Known Member
I am with snot on this.. were not building rockets here, nor are we using these long term.. there projects and should be taken as such.. the LED itself will be outdated in 2 years anyways, and have lost light output also.

has anyone even measured a "professional" reflow chip to a DIY? if we want to continue on, we might need to see first the numbers on different chips.. I have a XM-L2 ( 6500k ) / DIY XM-L2 ( 6500k ) if someone has a li-cor 250A, and can power the chip to check, I'll send. but even then the chips themselves vary, chip to chip, where one chip might have just made it into the higher bin... I can send plenty of each to check though.. to get an average.


I commend you stardust, but I would first check out numbers before planning to far.. minds that think too much, are as bad as ones that never think..

I wonder then ( haven't been here long ) how you guys made your astir led's ? is it the "fat" bridgelux "white base" led where you just solder the two pins? not the "cree" bare emitter style?



I am interested if ayone does this, as how much is this costing?
I'm not sure if I got the whole point here .......
So What if leds do get outdated or loose efficiency over time ?
What that has to do with if somebody wants to have in his "bench " a reflow solder system or not ? ...
It's a great and CHEAP to build tool ,serving many applications ,considering electronics ,generally .....

....
-Yes there's quite a difference in operation and service life of leds ,which depends heavily ,
on how they were soldered to the pcb ,firstplace .......

-No ,personally ,I prefer-way more- an organ-device-engine- machine-etc that works too much /at extremes ,
from another one that does not work at all ...
Simple a matter of taste ,probably ...
But comparable by no means ....
If you know what I mean,considering "minds " ......


.....

-The Astir leds ,are of that type yes .No reflowing needed ....

-You are asking about the cost of what exactly ? Haven't understood that clearly ....
 

SnotBoogie

Well-Known Member
Im not saying this isnt good info, I just wanted to add a disclaimer so people don't think its the ONLY way.

Are you asking if anyone does DIY reflow? a few peeps here do. I use a clothes iron for mine. The expensive part is good solder paste which is ~$50 for a syringe (that will last for hundreds of LEDs but still)
 

stardustsailor

Well-Known Member
Anyway ....

Snot ,to build this system ,probably is way cheaper ,than a good ,high quality cloth's electric iron ...

And far-far-far more advanced ,versatile and precise ..

I'll keep the thread ...
For those which might be interested ....

-For the future generations of DIY LED growers... :-P
 

SnotBoogie

Well-Known Member
my last post was directed at pepperdust, but yea, not like i own a high quality clothes iron :P

I'll be following along mate, i just wanted to make sure anyone who stumbles over this thread knows about the full spectrum of reflow options. 8)
 

stardustsailor

Well-Known Member
So ... The "How to build" part your own PID microcontroller control unit ,that can be used either
with an toaster oven ( for general electronic reflow work ) or with an electric stove -hot plate- ,
for more specialized LED soldering onto Insulated Metal Substrates or other heat conductive substrates ,like ceramic ,copper ,etc ...


There is to be done some hardware hacks ...


Arduino :
As long as you get the Arduino Uno Rev 3 in your hands ....
Remove-Destroy a stupid yellow led ,from it's front pcb surface ,marked with an " L " .
Arduino Pin 13 and yellow L led.JPGArduinoUno_R3_Front.jpg...

It is in parallel connected to Pin 13 ,drawing current ,along with it's 'current limiter' resistor of 1 K .( 1 kiloOhm =1000 ohms ) .
We will need the power of that pin ,for our Red "ERROR" indication led .

I use a small size ,flat tip screwdriver,and carefully scrape it's top away ..
Only thing left from that led ,is it's ceramic case ,still soldered on the pcb of Arduino .

It serves no purpose ,other than drawing current from Pin 13 !!!
 

stardustsailor

Well-Known Member
At our Reflow system ,we will use 3 indicator Leds ...

-5 mm Epoxy leds @20mA.Can choose whatever color it suits your preferances .

For our example here ,one Green Led is used as "ON " indicator Led ,always stays lit when Arduino is powered ...

One Amber led as "DUTY" led ,blinking as the reflow procedure is taking place ....

And one Red Led as "ERROR" ,lit only if something is not right ..
I.e. IF there is not a TC connected or the Temp of plate is too high to start a new reflowing ...

Also we will need 2x (two ) resistors of 1000 Ohms each . ( 2x 1K ) ......


As you 've already understood the Red led will be connected to Pin 13 .
It's anode pin .( +) .At epoxy leds ,is the longer pin .
Here we will need a 1K res,soldered in series with anode pin of led , to limit the current passing through the led diode .


Besides Pin 13 on Arduino is a GND marked pin ( Ground , - ) .
There, will be connected the shorter pin of the RED led .


The Green 'ON" LED will be powered from the RocketScream Shield ...
Green led _ON.jpg...<= Connection Diagram for Green "ON" Pin .
Here there's no need for a current limiter resistor ..It is already there,on-board ....
Current from blue line ,passes through a 1 K res ,before the led pinhole output ...

Amber "Duty " led .....

Amber yellow led.JPG<=For Amber led "DUTY" Indicator "
Here we will need a 1K res,soldered in series with anode pin of led , to limit the current passing through the led diode .

Diagram of original led arrangement :
diagram led amber green.JPG

* When D4 pin of Arduino is on LOW state ( connected to the Ground ) ,single led here lights on .
When D4 pin sends Signal ( HIGH state ) ,at both pins of leds is a +5V current applied .Led stays off .
( Programming that kind of led ,gives you a headache ...LOW is On ,HIGH is off ....Opposite than usual.... )

Now ,at our example anode (+) of green goes to 5V ..Stays always on ,when Arduino powers up ....
Anode pin of Amber led goes to D4....LOW now is OFF ,as is used to be....
When D4 sends 5V signal ,Amber led lights on ...HIGH=On ..

From both led's Cathodes ( -) connected ... ..Where else ...? To any ground (GND ) pin/breakout /hole/point....


And Pin13 Red Led ....The "ERROR" indicator ...
Pin 13 red led.JPG
Anode to Pin 13 ..Cathode led pin to pin GND next to pin 13 ...
Here we will need a 1K res,soldered in series with anode pin of led , to limit the current passing through the led diode .
 

stardustsailor

Well-Known Member
Now ..Of course all these are not necessary ...
You can leave the led of shield blinking or just output one indicator led ...
Hot-Plate code written will still work fine ,with the OEM led status .
And the led will be still fully operational..Blinking and stuff ....

But if you're planning to box the whole system into a single unit case ...
Then, those 3 different led indicators ,might prove handy ...
 

stardustsailor

Well-Known Member
Basic Wiring scheme ...
wiring ....jpg....

Notes :

-You'll need some break out pins to solder on the shield ,so to be connected
with Arduino .It is supplied without soldered pins .And not any pins at all inside the package .
....
.....
......


-Choose a good quality thermocouple sensor of K-type .
Omega brand ones are of the best .


-SSR has to be no less of 10 A output .A relay of 25 A is more than great .

-Once Arduino connects to a PC via USB port ,it powers automatically up .
But ...
If in case of a cased/boxed controller unit ,then a separate 12 Volts 1000mA power unit ,
can be placed inside the box ,powered by mains line,( an "on-off" toggle switch here ,also... ) ,
so to power Arduino .Unit now can operate without any usb connection to a pc .
( Arduino has a DC power adapter built-in .Besides usb port .)
 

stardustsailor

Well-Known Member
More about the hardware ....

In case somebody wants to put everything inside a box ...

Along with the lcd display screen that has to be detached from the shield (4x small securing screws .Pin connected ) ,
so to be attached on front panel of box ,
there are the three indicator leds ,the 'on-off' toggle switch ,the TC binding posts/connector socket ,a USB port
and 2 ( or 3 ) push-button switches ,that need to be installed on box front panel .

- One for "Start -Stop/Abort "
&
-One for "RESET " .

Another auxiliary one can be placed .For future use . "AUX " .


reset.jpg......Reset push-button switch :
One switch pin to ground ,the other to pin "reset " of Shield/Arduino combo ..


__________________________________________________________________________________
switch 1 break out.jpg........Switch #1 =" Start/Stop" .....
Note that signal line does contact resistor pads ,but does not pass through any resistor , on it's way to Switch #1.

Breakout pinhole for pin of switch ,the first from top in pic .(blue lighted ) .

The pinhole next to it ,is ground .
The other pin of push-button switch connects here .

When Switch #1 is not pressed ,Arduino reads " 1023" at analog pin A0 ....
1023=5 volts ...
When Switch is pressed ,+5 volts goes to ground and Arduino reads "0" (no voltage) at A0 .
Again a closed circuit here ,opposite than usual ...Open Circuit gives max value ...
Circuit closes ,value=0 ...Weird architecture ,chosen ....

_________________________________________________________________
switch 2.jpg...Switch #2 ="AUX" .....

Note ,that it actually connects with the above power line ......It shares same pin ( A0 ) with switch #1 !!!!!!!

But now ,there's a 10 K ( I think ) ,resistor ,that when switch #2 is pressed ,
Arduino does not read a zero value ,like on with switch #1 ,but instead a value of ~ 510 .
(open is still 1023 as switch #1 ) .

So both switches un-pressed ,Arduino reads at A0 , a value of 1023 ..( 5 volts at pin A0 ) .

-Switch #1 is pressed ,signal is dropped to ground (short-circuited) ,Arduino now reads 0 (no voltage ) ...

-Switch #2 is pressed ,signal goes through resistor to ground ,Arduino reads ~510 ( ~ 2.5 Volts )

Simple but clever ,enough ...
Though programming this kinda of hardware architecture is kinda ...weird ...
 

stardustsailor

Well-Known Member
The code :

Copy/Paste the quoted text -AS IS -onto Arduino's software .Upload it on Arduino .
We're almost there .....

/*******************************************************************************
* Title: RS Reflow Hot-plate Controller
* Version: 3.01 SE HP
* Date: 10-06-2013
* Author : SDS
* Brief
* =====
* This is a firmware for RocketScream's Arduino compatible reflow oven controller.
* The reflow curve used in this firmware is meant for lead-free solder profile
* Alloy -----Sn96.5Ag3Cu0.5--------- (acc. to J-STD-020D.01)
* Specially 'tuned'for led IMS/MCPCB reflow soldering .
*
* This firmware owed very much on the works of :
* ==========================================
* Brett Beauregard (www.brettbeauregard.com)
* ==========================================
* Author of Arduino PID library. On top of providing industry standard PID
* implementation, he gave a lot of help in making this reflow oven controller
* possible using his awesome library.
*
* ==========================================
* Limor Fried of Adafruit (www.adafruit.com)
* ==========================================
* Author of Arduino MAX6675 library. Adafruit has been the source of tonnes of
* tutorials, examples, and libraries for everyone to learn.
* ============================================
* -For Arduino shield of v1.60 & above .
* -Sends data ,over serial port ,for real time monitoring of reflow parameters
* to >>>>SimPlot Software <<<<< (Kinda like an Oscilloscope ).Up to 4 channels can be plotted.
*
* Licences
* ========
* This reflow hot-plate controller hardware and firmware are released under the
* Creative Commons Share Alike v3.0 license
* http://creativecommons.org/licenses/by-sa/3.0/
* You are free to take this piece of code, use it and modify it.
*
* Required Libraries
* ==================
* - Arduino PID Library:
* >> https://github.com/br3ttb/Arduino-PID-Library
* - MAX31855 Library (for board v1.60 & above):
* >> https://github.com/rocketscream/MAX31855
* >>>>>>>>>>>>>>>>>>>For details of SimPlot go to>>>>>>>>>>>>>>>>>>>>>>>>
* >>>>>>>>>>>>>>>>>>>>>>>>>>>www.negtronics.com/simplot <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
* Download SimPlot : http://code.google.com/p/projectsimplot/downloads/list
***********************************************************************************/
//...
//..
//.

//Initialise

// Newer board version starts from v1.60 using MAX31855KASA+ chip
#define USE_MAX31855
// Libraries Included
#include <LiquidCrystal.h>
#include <MAX31855.h>
#include <PID_v1.h>
// ***** TYPE DEFINITIONS *****
typedef enum REFLOW_STATE
{
REFLOW_STATE_IDLE,
REFLOW_STATE_PREHEAT,
REFLOW_STATE_SOAK,
REFLOW_STATE_REFLOW,
REFLOW_STATE_COOL,
REFLOW_STATE_COMPLETE,
REFLOW_STATE_TOO_HOT,
REFLOW_STATE_ERROR
} reflowState_t;
//
typedef enum REFLOW_STATUS
{
REFLOW_STATUS_OFF,
REFLOW_STATUS_ON
} reflowStatus_t;
//
typedef enum SWITCH
{
SWITCH_NONE,
SWITCH_1,
SWITCH_2
}
switch_t;
//
typedef enum DEBOUNCE_STATE
{
DEBOUNCE_STATE_IDLE,
DEBOUNCE_STATE_CHECK,
DEBOUNCE_STATE_CHECK2,
DEBOUNCE_STATE_RELEASE,
DEBOUNCE_STATE_RELEASE2
} debounceState_t;
//
//
//
//
//
//
//******************************************************************************************************************
//*******************************USER ADJUSTABLE PID & SOLDER PROFILE PARAMETERS************************************
//******************************************************************************************************************

//____________________________________________Solder Profile : Sn96.5Ag3Cu.5________________________________________________
#define TEMPERATURE_ROOM 45 // Oven has to be < 45°C for reflowing to start
#define PREHEAT_TEMPERATURE_STEP 3 //ONLY FOR hot plate ====> !!!&#916;= 2°C/sec !!! -hotplate preheat routine**
#define PREHEAT_MICRO_PERIOD 1500 // ONLY FOR hot plate =====> !!!&#916;=2°C/sec -hotplate preheat routine**
#define TEMPERATURE_SOAK_MIN 150 // preheat should be done at ~2°C/sec ramp rate .For ~ 60 sec
#define TEMPERATURE_SOAK_MAX 200 // Soak ramps up to ~180°C at ~0.5 °C /sec slope..
#define SOAK_TEMPERATURE_STEP 1.25 //====> !!!&#916;=~ 0,5 °C/sec %...Default FOR OVEN : 5
#define SOAK_MICRO_PERIOD 2500 //%=========>^^^^^^^^^ .......Default FOR OVEN : 9000
#define REFLOW_TEMPERATURE_STEP 2.5 // REFLOW PEAK RAMP ====> !!!&#916;= 0.7-1°C/sec - peak ramp **
#define REFLOW_MICRO_PERIOD 3500 // REFLOW PEAK RAMP =====> !!!&#916;=0.7°-1 C/sec -peak ramp **
#define TEMPERATURE_REFLOW_MIN 217 // Liquidus Point .Total time above is ~80 sec.
#define TEMPERATURE_REFLOW_MAX 247 // Max =260°C (Pref .Peak =245°C) .20" total within ( 245°C - 5°C )
#define TEMPERATURE_COOL_MIN 100 // Ramp-down rate : -3°C/sec .Max = -6°C/sec
//
//________________________________________ PID parameters : BASIC 1200 Watt Ceramic HOT PLATE _____________________________
// ~ Pre-heat
#define PID_KP_PREHEAT 200 // Suggested Range 100-300
#define PID_KI_PREHEAT 0.03 // Suggested Range 0.020-0.030 (STAY LOW )-Default :0.025
#define PID_KD_PREHEAT 150 // Suggested Range 150-300
// ~ Soak
#define PID_KP_SOAK 300 // Suggested Range 180-350
#define PID_KI_SOAK 0.05 // Suggested Range 0.05-0.1
#define PID_KD_SOAK 250 // Suggested Range 75-300
// ~ Reflow
#define PID_KP_REFLOW 300 // Suggested Range 150-350- Default: 300
#define PID_KI_REFLOW 0.05 // Suggested Range 0.05-0.1
#define PID_KD_REFLOW 370 // Suggested Range 100-350 Default :300-350
//~Sampling Rates
#define PID_SAMPLE_TIME 250 // Stable-DEFAULT :1000
#define SENSOR_SAMPLING_TIME 250 // Stable-DEFAULT :1000
//
//******************************************************************************************************************
//******************************************************************************************************************
//******************************************************************************************************************
//
//
//
//
//
//
//HARDWARE PARAMETERS____________________________________________________________________________________________
// Switch Debounce Limit
#define DEBOUNCE_PERIOD_MIN 50
// Buzzer
// soak-to-reflow buzz
#define BEEPDURATION_REFLOW 500
// reflow-to-cool buzz
#define BEEPDURATION_COOL 500
// cool-to-complete buzz
#define BEEPDURATION_COMPLETE 1000
// LCD Display messages
const char* lcdMessagesReflowStatus[] = {
"<READY>",
"PREHEAT",
"SOAK",
"REFLOW",
"COOL",
"COMPLETE",
"WAIT,HOT",
"CAUTION!"
};
//
// ° symbol for LCD display
unsigned char degree[8] =
{
140,146,146,140,128,128,128,128
};
//
// ___________Hardware assignment_________________________
// PINS
int ssrPin = 5;
int thermocoupleSOPin = A3;
int thermocoupleCSPin = A2;
int thermocoupleCLKPin = A1;
int lcdRsPin = 7;
int lcdEPin = 8;
int lcdD4Pin = 9;
int lcdD5Pin = 10;
int lcdD6Pin = 11;
int lcdD7Pin = 12;
int ledRedPin = 13; // <= scrape off the 'L' on-board led of Arduino UNOv3 .It draws current from pin 13 .
int ledAmberPin = 4;
int buzzerPin = 6;
int switchPin = A0;
//_______________ PID Control Variable List______________
double setpoint;
double input;
double p_input;
double slope;
double output;
double kp = PID_KP_PREHEAT;
double ki = PID_KI_PREHEAT;
double kd = PID_KD_PREHEAT;
int windowSize;
unsigned long windowStartTime;
unsigned long nextCheck;
unsigned long nextRead;
unsigned long timerPreHeat; // hot plate preheat **-hotplate preheat routine**
unsigned long timerSoak;
unsigned long SoakStartTime;
unsigned long timerREFLOW; // peak ramp **
unsigned long ReflowStartTime;
unsigned long ReflowDwellTime;
unsigned long buzzerPeriod;
// Reflow oven controller "machine state" variable
reflowState_t reflowState;
// Reflow oven controller "status"
reflowStatus_t reflowStatus;
// Switch debounce "machine state" variable
debounceState_t debounceState;
// Switch debounce timer
long lastDebounceTime;
// Switch press "status"
switch_t switchStatus;
// Seconds timer
int timerSeconds;
// PID control interface
PID reflowOvenPID(&input, &output, &setpoint, kp, ki, kd, DIRECT);
// LCD interface
LiquidCrystal lcd(lcdRsPin, lcdEPin, lcdD4Pin, lcdD5Pin, lcdD6Pin, lcdD7Pin);
MAX31855 thermocouple(thermocoupleSOPin, thermocoupleCSPin, thermocoupleCLKPin);
// _______________Simplot Data Buffer_______________________
int buffer[20];
int data1;
int data2;
int data3;
//
//Declare plot function
//******************************************
void plot ( int data1, int data2, int data3 )
{
int pktSize;
buffer[0] = 0xCDAB; //SimPlot packet header. Indicates start of data packet
buffer[1] = 3*sizeof(int); //Size of data in bytes. Does not include the header and size fields
buffer[2] = data1;
buffer[3] = data2;
buffer[4] = data3;
pktSize = 2 + 2 + (3*sizeof(int)); //Header bytes + size field bytes + data
//IMPORTANT: Change to serial port that is connected to PC
Serial.write((uint8_t * )buffer, pktSize);
}
//____________________________________________________________

//
//*******************************************************SET UP ******************************************
//
void setup()
{
// SSR pin initialization / reflow oven off
digitalWrite(ssrPin, LOW);
pinMode(ssrPin, OUTPUT);
// Buzzer pin initialization / buzzer off
digitalWrite(buzzerPin, LOW);
pinMode(buzzerPin, OUTPUT);
// LEDs pins initialization /turn on (active low)
digitalWrite(ledRedPin, HIGH);
pinMode(ledRedPin,OUTPUT);
delay(2000);
digitalWrite(ledRedPin, LOW);
digitalWrite(ledAmberPin, HIGH);
pinMode(ledAmberPin,OUTPUT);
delay(1000);
digitalWrite(ledAmberPin, LOW);
// LCD Start-up splash
digitalWrite(buzzerPin, HIGH);
delay (750);
digitalWrite(buzzerPin, LOW);
lcd.begin(8, 2);
lcd.createChar(0, degree);
lcd.clear();
lcd.print("Solder:");
lcd.setCursor(0, 1);
lcd.print("SnAgCu");
delay(2500);
lcd.clear();
// Serial communication @ 57600 bps
Serial.begin(57600);
// PWM window size
windowSize = 2000;
// Initialize time variable
nextCheck = millis();
// Initialize thermocouple input variable
nextRead = millis();
}
//*******************************************************LOOP OPERATION***************************************
//************************************************************************************************************
void loop()
{
// Current time
unsigned long now;
// Time to read thermocouple
if (millis() > nextRead)
{
// Read thermocouple next sampling period
nextRead += SENSOR_SAMPLING_TIME;
// Read current temperature
p_input = input ;
input = thermocouple.readThermocouple(CELSIUS);
slope = (input - p_input);
// If thermocouple problem detected
if((input == FAULT_OPEN) || (input == FAULT_SHORT_GND) || (input == FAULT_SHORT_VCC))
{
// Illegal operation-ERROR!
reflowState = REFLOW_STATE_ERROR;
digitalWrite (ledRedPin,HIGH );
reflowStatus = REFLOW_STATUS_OFF;
}
}
//______________________________
if (millis() > nextCheck)
{
// Check input in the next 1"
nextCheck += 1000;
// If reflow process is on going
if (reflowStatus == REFLOW_STATUS_ON)
{
// Toggle Amber LED as system's heart beat
digitalWrite(ledAmberPin, !(digitalRead(ledAmberPin)));
// Increase seconds timer for reflow curve analysis
timerSeconds++;
Serial.print("T:"); // time
Serial.print(timerSeconds);
Serial.print(" SETPOINT: "); // Set point
Serial.print(setpoint);
Serial.print(" IN:"); // input TC °C
Serial.print(input);
Serial.print(" OUT:"); // mS window PWM
Serial.print(output);
Serial.print(" RAMP:"); // &#916; Slope -/+ °C /sec
Serial.print(slope);
Serial.print(" REFLOW:"); // Reflow Start
Serial.print(ReflowStartTime);
Serial.print(" DWELL:"); // Reflow Total Dwell Above liquidus State 217=>~245=>217 °C
Serial.println(ReflowDwellTime);
//Serial SimPlot Data
data1 =thermocouple.readThermocouple(CELSIUS);
data2= setpoint;
data3= slope;
plot (data1,data2,data3);
delay(10);
}
else
{
// Turn off AMBER LED
digitalWrite(ledAmberPin,LOW);
}
// Clear LCD
lcd.clear();
// Print current system state
lcd.print(lcdMessagesReflowStatus[reflowState]);
// Move the cursor to the SECOND line
lcd.setCursor(0, 1);
// If currently in error state
if (reflowState == REFLOW_STATE_ERROR)
{
// No thermocouple wire connected
digitalWrite(buzzerPin, HIGH);
delay(500);
digitalWrite(buzzerPin, LOW);
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("TC Error");
lcd.setCursor(0, 1);
lcd.print("Check TC");
// Turn on green+red(amber) led .Turn on red LED
digitalWrite(ledRedPin,HIGH);
}
else
{
// Print current temperature
lcd.print(input);
#if ARDUINO >= 100// Print degree Celsius symbol in 3 digit value
lcd.write((uint8_t)0);
#else
// Print degree Celsius symbol in 2 digit value
lcd.print(0, BYTE);
#endif
lcd.print("C");
}
}
//SWITCH CASE -PID SnAgCu PROFILING **************************************************************
// Reflow oven controller state machine
switch (reflowState)
{
case REFLOW_STATE_IDLE:
// If oven temperature is still above room temperature
if (input >= TEMPERATURE_ROOM)
{
reflowState = REFLOW_STATE_TOO_HOT;
// Turn off Amber LED
digitalWrite(ledAmberPin,LOW);
// Red led on
digitalWrite(ledRedPin,HIGH);
}
else
{
// If switch is pressed to start reflow process
if (switchStatus == SWITCH_1)
{
// Send header for CSV file // Processing Software
Serial.println();
// Intialize seconds timer for serial debug information
timerSeconds = 0;
// Initialize PID control window starting time
windowStartTime = millis();
// Ramp up to minimum soaking temperature
//setpoint = TEMPERATURE_SOAK_MIN; // disabled for hot plate
// Tell the PID to range between 0 and the full window size
reflowOvenPID.SetOutputLimits(0, windowSize);
reflowOvenPID.SetSampleTime(PID_SAMPLE_TIME);
// Turn the PID on
reflowOvenPID.SetMode(AUTOMATIC);
// Proceed to preheat stage
reflowState = REFLOW_STATE_PREHEAT;
}
}
break;

case REFLOW_STATE_PREHEAT:
reflowStatus = REFLOW_STATUS_ON;
// If minimum PREHEAT temperature is achieve
if (input <= TEMPERATURE_ROOM)//-hotplate preheat routine**
{
// Chop soaking period into smaller sub-period //hot plate
timerPreHeat = millis() + PREHEAT_MICRO_PERIOD; //hot plate -hotplate preheat routine**
reflowOvenPID.SetTunings(PID_KP_PREHEAT, PID_KI_PREHEAT, PID_KD_PREHEAT);
// Ramp up to first section of preheat temperature -hotplate
setpoint = TEMPERATURE_ROOM + PREHEAT_TEMPERATURE_STEP; // hot plate -hotplate preheat routine**
}
// If micro preheat temperature is achieved-hot plate
if (millis() > timerPreHeat) //hot plate -hotplate preheat routine**
{
timerPreHeat = millis() + PREHEAT_MICRO_PERIOD; // hot plate -hotplate preheat routine**
// Increment micro-setpoint
setpoint += PREHEAT_TEMPERATURE_STEP;// hot plate -hotplate preheat routine**
// If minimum soak temperature is achieve
if (setpoint >= TEMPERATURE_SOAK_MIN)
{
// Set less agressive PID parameters for soaking ramp
reflowOvenPID.SetTunings(PID_KP_SOAK, PID_KI_SOAK, PID_KD_SOAK);
// Ramp up to first section of soaking temperature
setpoint = TEMPERATURE_SOAK_MIN + SOAK_TEMPERATURE_STEP;
// Chop soaking period into smaller sub-period
timerSoak = millis() + SOAK_MICRO_PERIOD;
// Proceed to soaking state
reflowState = REFLOW_STATE_SOAK;
SoakStartTime = timerSeconds ;
}
}
break;

case REFLOW_STATE_SOAK:
// If micro soak temperature is achieved
if (millis() > timerSoak)
{
timerSoak = millis() + SOAK_MICRO_PERIOD;
// Increment micro setpoint
setpoint += SOAK_TEMPERATURE_STEP;
if (setpoint >= TEMPERATURE_SOAK_MAX) // >= or > or == ???
{
// Set agressive PID parameters for reflow ramp
reflowOvenPID.SetTunings(PID_KP_REFLOW, PID_KI_REFLOW, PID_KD_REFLOW);
// Ramp up to first section of soaking temperature
setpoint = TEMPERATURE_SOAK_MAX + REFLOW_TEMPERATURE_STEP;
//// Chop ramping to peak period into smaller sub-period
timerREFLOW = millis() + REFLOW_MICRO_PERIOD;
// Proceed to reflowing state
reflowState = REFLOW_STATE_REFLOW;
ReflowStartTime = 0;
//BUZZER FUNCTION
buzzerPeriod = millis() + BEEPDURATION_REFLOW ;
digitalWrite(buzzerPin, HIGH);
}
}
break;

case REFLOW_STATE_REFLOW:
if (millis() > buzzerPeriod) // turn off buzzer
{
digitalWrite(buzzerPin, LOW);
}
// If micro dwell ramp temperature is achieved
if (millis() > timerREFLOW)
{
timerREFLOW = millis() + REFLOW_MICRO_PERIOD;
// Increment micro setpoint
setpoint += REFLOW_TEMPERATURE_STEP;
if ( (input >= TEMPERATURE_REFLOW_MIN) && (ReflowStartTime == 0 ) )
{
ReflowStartTime = timerSeconds ; // set Reflow Start Time
}


//**************************************************************************************************************
//**************************Adjustable Parameter: Peak temperature Safety Anti-Overshoot *******************************
if (setpoint >= (TEMPERATURE_REFLOW_MAX - 5)) //<= Adjustable parameter !!!!!!!!!!!! Range : 3 -7 !!!!!!!!!!!!!!!!!
//**************************************************************************************************************
// Also it can be set as "input" instead of "setpoint".Better for reflow oven.Not for hot-plating,though .
//**************************************************************************************************************


{
// Set PID parameters for cooling ramp
reflowOvenPID.SetTunings(PID_KP_REFLOW, PID_KI_REFLOW, PID_KD_REFLOW);
// Ramp down to minimum cooling temperature
setpoint = TEMPERATURE_COOL_MIN;
// Proceed to cooling state
reflowState = REFLOW_STATE_COOL;
buzzerPeriod = millis() + BEEPDURATION_COOL;
digitalWrite(buzzerPin, HIGH);
}
}
break;

case REFLOW_STATE_COOL:
if (millis() > buzzerPeriod) // turn off buzzer
{
digitalWrite(buzzerPin, LOW);
}
// "Wetting"-Dwell time
if ( (ReflowDwellTime == 0) && (input <= TEMPERATURE_REFLOW_MIN) )
{
ReflowDwellTime = ( timerSeconds - ReflowStartTime );
}
// If minimum cool temperature is achieve
if (input <= TEMPERATURE_COOL_MIN)
{
// Retrieve current time for buzzer usage
buzzerPeriod = millis() + BEEPDURATION_COMPLETE;
// Turn on buzzer +Green led to indicate completion
digitalWrite(buzzerPin, HIGH);
// Turn off reflow process
reflowStatus = REFLOW_STATUS_OFF;
// Proceed to reflow Completion state
reflowState = REFLOW_STATE_COMPLETE;
}
break;

case REFLOW_STATE_COMPLETE:
if (millis() > buzzerPeriod)
{
// Turn off buzzer & led
digitalWrite(buzzerPin, LOW);
digitalWrite(ledAmberPin,LOW);
// Reflow process ended
reflowState = REFLOW_STATE_IDLE;
}
break;

case REFLOW_STATE_TOO_HOT:
// If oven temperature drops below room temperature
if (input < TEMPERATURE_ROOM)
{
// Ready to reflow
reflowState = REFLOW_STATE_IDLE;
}
break;

case REFLOW_STATE_ERROR:
// If thermocouple problem is still present
if((input == FAULT_OPEN) || (input == FAULT_SHORT_GND) || (input == FAULT_SHORT_VCC))
{
// Wait until thermocouple wire is connected
reflowState = REFLOW_STATE_ERROR;
}
else
{
// Clear to perform reflow process
reflowState = REFLOW_STATE_IDLE;
}
break;
}

// If switch 1 is pressed
if (switchStatus == SWITCH_1)
{
// If currently reflow process is on going
if (reflowStatus == REFLOW_STATUS_ON)
{
// Button PRESS FOR ABORT !
// Turn off reflow process!
reflowStatus = REFLOW_STATUS_OFF;
// Turn on Red LED and beep.then turn led
digitalWrite(ledRedPin,HIGH);
digitalWrite(buzzerPin,HIGH);
delay (1700);
digitalWrite(ledRedPin,LOW);
digitalWrite(buzzerPin,LOW);
// Reinitialize state state idle
reflowState = REFLOW_STATE_IDLE;
}
}
//SWITCH CASE -DEBOUNCING **************************************************************************
// switch debounce state machine
switch (debounceState)
{
case DEBOUNCE_STATE_IDLE:
// No valid switch press
switchStatus = SWITCH_NONE;
// If switch #1 is pressed
if (analogRead(switchPin) == 0)
{
// Intialize debounce counter
lastDebounceTime = millis();
// Proceed to check validity of button press
debounceState = DEBOUNCE_STATE_CHECK;
}
if ( analogRead(switchPin) == constrain(switchPin,480,540))
{
// Intialize debounce counter
lastDebounceTime = millis();
// Proceed to check validity of button press
debounceState = DEBOUNCE_STATE_CHECK2;
}
break;

case DEBOUNCE_STATE_CHECK:
if (analogRead(switchPin) == 0)
{
// If minimum debounce period is completed
if ((millis() - lastDebounceTime) > DEBOUNCE_PERIOD_MIN)
{
// Proceed to wait for button release
debounceState = DEBOUNCE_STATE_RELEASE;
}}
// False trigger
else
{
// Reinitialize button debounce state machine
debounceState = DEBOUNCE_STATE_IDLE;
}
break;
// ......................................

//**********Setting software-based debouncing function for future use of Switch #2 ***************************
//" constrain(switchPin,480,540) " = Although switch #2 when pressed , gives a value of 510 ,when Arduino is powered through
// the USB port ,actual value may differ with other power sources .Setting a range of +/-30 ( +/- ~146 mV )
//*********************************************************************************************

case DEBOUNCE_STATE_CHECK2:
if (analogRead(switchPin) == constrain(switchPin,480,540) )
{
// If minimum debounce period is completed
if ((millis() - lastDebounceTime) > DEBOUNCE_PERIOD_MIN)
{
// Proceed to wait for button release
debounceState = DEBOUNCE_STATE_RELEASE2;
}}
// False trigger
else
{
// Reinitialize button debounce state machine
debounceState = DEBOUNCE_STATE_IDLE;
}
break;

case DEBOUNCE_STATE_RELEASE:
if (analogRead(switchPin) > 0)
{
// Valid switch 1 press
switchStatus = SWITCH_1;
// Reinitialize button debounce state machine
debounceState = DEBOUNCE_STATE_IDLE;
}
break;

case DEBOUNCE_STATE_RELEASE2:
if (analogRead(switchPin) > constrain(switchPin,480,540))
{
// Valid switch 2 press
switchStatus = SWITCH_2;
// Reinitialize button debounce state machine
debounceState = DEBOUNCE_STATE_IDLE;
}
break;
}
//***************************************************************************************
// PID computation and SSR control
if (reflowStatus == REFLOW_STATUS_ON)
{
now = millis();
reflowOvenPID.Compute();
if((now - windowStartTime) > windowSize)
{
// Time to shift the Relay Window
windowStartTime += windowSize;
}
if(output > (now - windowStartTime)) digitalWrite(ssrPin, HIGH);
else digitalWrite(ssrPin, LOW);
}
// Reflow oven process is off, ensure oven is off
else
{
digitalWrite(ssrPin, LOW);
}
}
// **********END OF LOOP *****************************
//*****************************************************
//
//
//

// *******************************************NOTES***************************************************
//****************************************************************************************************
//
//
// ============================================> SimPlot Settings <===================================
// -Set Conn speed at => 57600 <=
//
//_Input_ , _Setpoint_ & _Slope_ values, are plotted .
//
// -At tab "Plot Setup" At X axis __time set 300-480 ( 8 min =480 sec )
// ( ~8 min is >max duration< of reflow from >start to finish< ,
// according to J-STD-020D.01 standard. )................................
//
// -At Y Axis__Input/Set Temperature, set min Val @ -10 ( cooling ramp :no more than -6°C /sec. ).
// Or at Room ambient Temp ~ 20-25°C
// -Max Y Axis value set ~ 260-270 as "ceiling " of plot .
//
//-Set COM xx port.
// -Press "Connect" .
// Start Reflow sequence
//===================================================================================================
//
//
 

stardustsailor

Well-Known Member
Now ...Along with that code ,there's a link at start of code text ,to download a serial plotter .

SimPlot
.

At the end of code is a note about the settings ....set up.JPG........
Don't forget to set the right connection speed ( 57600 ) & usb Port used ,before clicking "Connect" ....



serial data.jpg<=...There's plenty of Data available with each reflow process .....
**There's a bug with Ramp .If anyone can solve it out ...I think it is with serial data transfer speed ...
It doesn't not have enough time to translate correctly the temp difference ...??? ****


simplot graph current calibration.jpg.....The actual graph of current calibration of code given on previous post ....
There's a slight overshoot after pre-heating ,but in general terms is more than acceptable ready -to -use solder profile ...
..Further trimming ( mainly depending of oven/stove type used ) is a pain stacking procedure ,but final results can be close to ideal ....
 

pepperdust

Well-Known Member
I'm not sure if I got the whole point here .......
So What if leds do get outdated or loose efficiency over time ?
What that has to do with if somebody wants to have in his "bench " a reflow solder system or not ? ...
It's a great and CHEAP to build tool ,serving many applications ,considering electronics ,generally .....

....
-Yes there's quite a difference in operation and service life of leds ,which depends heavily ,
on how they were soldered to the pcb ,firstplace .......

-No ,personally ,I prefer-way more- an organ-device-engine- machine-etc that works too much /at extremes ,
from another one that does not work at all ...
Simple a matter of taste ,probably ...
But comparable by no means ....
If you know what I mean,considering "minds " ......


.....

-The Astir leds ,are of that type yes .No reflowing needed ....

-You are asking about the cost of what exactly ? Haven't understood that clearly ....
I mean we don't have to complicate things, as no matter what, that LED your working with is going to be old, given time / using it. why want to use a very old LED when new ones come out every couple years making the costs go down, and light go up.. Maybe some people want to use old tech, but I think you got into the wrong hobby if your ok building a LED once, given the scale of light output the chips are going through each cycle.

second, who knows if this is necessary until we do measurements of "pro" reflow chips, and "DIY" reflow chips. maybe there isn't that big a loss to do it a very easy way. maybe there is. if you say there is, then please show us some tests done by people to say that you really need to build a DIY reflow station to solder LED's onto stars. I've never seen one test, so I would be happy to have a link to one, before saying if this is really necessary. I have the LED's, and will ship to anyone wanting to test them ( I lost my light meter in a move that had seeds with it.. or I would test myself )

not everyone is at the level you are to understand what your building, or maybe wants to.. I know the rule and I've never seen it fail. Simplicity always wins over complication. you might think your reflow station your building is "easy". but even to me, I couldn't even do it, considering I don't even know what the hell is going on..

that's fine if someone wants to build a reflow station. no problem, but sometimes you gotta ask, why is everyone's garage full of crap... I've never walked into one house that didn't have pointless junk / clutter in it. I lean to getting rid of "old" crap, so this doesn't really fit me in the first place to have some odd looking thing collecting dust.. sure if you build lights for people everyday, or like you guys always testing new lamps. go for it.. for 95% of people, it doesn't apply to need one when they use it once or twice.. my opinion of course.

I was asking the costs of the whole "unit" . price to build a DIY reflow station. can we put a price on time also?


I shouldn't have commented, as I wasn't even going to build one. But I think for anyone thinking of building one, lets see some proof that we get more light from a chip over a "hot plate" method, to justify building one in the first place.
 

stardustsailor

Well-Known Member
Of course ,this PID reflow controller ,is only for one solder profile (who needs more ,really ? And why ? ) ...

The controller is fully user "programmable "- " adjustable " in two domains .........

No C++ knowledge needed ....

Just changing some numbers at the code text and reload it on Arduino's chip memory ,
is all it takes to re-program the PID controller .


A brief Summary .

Details ,later on ,if somebody actually decides to build one of these ....
(A really great tool to have ... And relatively cheap to build ,for the tech involved .... )



User Adjustable Parameter Domain #1 : Solder profile parameters

At code text :

//____________________________________________Solder Profile : Sn96.5Ag3Cu.5_____________________________________ ___________
#defineTEMPERATURE_ROOM 45 // Oven has to be < 45°C for reflowing to start
#define PREHEAT_TEMPERATURE_STEP 3 //ONLY FOR hot plate ====> !!!&#916;= 2°C/sec !!! -hotplate preheat routine**
#define PREHEAT_MICRO_PERIOD 1500 // ONLY FOR hot plate =====> !!!&#916;=2°C/sec -hotplate preheat routine**
#define TEMPERATURE_SOAK_MIN 150 // preheat should be done at ~2°C/sec ramp rate .For ~ 60 sec
#define TEMPERATURE_SOAK_MAX 200 // Soak ramps up to ~180°C at ~0.5 °C /sec slope..
#define SOAK_TEMPERATURE_STEP 1.25 //====> !!!&#916;=~ 0,5 °C/sec %...Default FOR OVEN : 5
#define SOAK_MICRO_PERIOD 2500 //%=========>^^^^^^^^^ .......Default FOR OVEN : 9000
#define REFLOW_TEMPERATURE_STEP 2.5 // REFLOW PEAK RAMP ====> !!!&#916;= 0.7-1°C/sec - peak ramp **
#define REFLOW_MICRO_PERIOD 3500 // REFLOW PEAK RAMP =====> !!!&#916;=0.7°-1 C/sec -peak ramp **
#define TEMPERATURE_REFLOW_MIN 217 // Liquidus Point .Total time above is ~80 sec.
#define TEMPERATURE_REFLOW_MAX 247 // Max =260°C (Pref .Peak =245°C) .20" total within ( 245°C - 5°C )
#define TEMPERATURE_COOL_MIN 100 // Ramp-down rate : -3°C/sec .Max = -6°C/sec
//

Red color text = adjustable variables

Period is denoted in milliseconds ..

I.e. 3500 = 3.5 sec at reflow ....:

Brief profile calculations / setting a new profile ...:
As Example: the reflow values
.....
2.5 °C (REFLOW_TEMPERATURE_STEP ) per 3.5 secs ( REFLOW_MICRO_PERIOD)
2.5 / 3.5 = ~ 0.7 °C/sec ( ramp rate ) ..

From min setpoint of reflow ramp ( TEMPERATURE_SOAK_MAX ) to max ( TEMPERATURE_REFLOW_MAX -5 ) is
a difference of : (247-5)-200 = 42 ° C ...

42 ° C / 0.7 °C/sec = ~ 58,8 sec ,from 200° C to PEAK-5 °C ...

** TEMPERATURE_REFLOW_MINis not the min temp of reflowing stage .
It denotes where the solder becomes liquid . ( Liquidous Stage) .It is used only for statistic data .(DWELL time )
__________________________________________
Second example : PreHeat Values ...
3 °C ( PREHEAT_TEMPERATURE_STEP )

per 1.5 sec (1500 millisec /PREHEAT_MICRO_PERIOD )


= 2°C /sec ramp rate .SET !

( you can use 6 °C per 3secs ..Or any other combo giving a ramp of 2°C/sec .
Find out what the difference will be ,for yourselves .. ;-) ....Tip:Sampling rates & oven/stove freedoms-limitations )


From Ambient room temperature of 45° and less than that ( TEMPERATURE_ROOM ) ,reflow starts ....
Peak temp of preheat stage is 150°C ( TEMPERATURE_SOAK_MIN ) ..
Difference ( average ) is ~ 100 ° C ....

100 / 2 = 50 sec ....

We have set :
( Turn values into an actual solder profile graph ..It's like "drawing " it ..)

the ramp rate and the peak temp of phase as also
the duration to complete
.And its "analysis " ( TEMPERATURE_STEP / MICRO_PERIOD )

RampRate = Curve
Peak Temp = y axis limit
Duration ( &#916;&#932;emperature / RampRate ) = x axis limit ...
Curve analysis : °C / milliseconds ,limited by PID/sensor sampling rates *
User Adjustable Parameter Domain #2 : PID control parameters

At code text :



//________________________________________ PID parameters : BASIC 1200 Watt Ceramic HOT PLATE _____________________________
// ~ Pre-heat
#define PID_KP_PREHEAT 200 // Suggested Range 100-300
#define PID_KI_PREHEAT 0.03 // Suggested Range 0.020-0.030 (STAY LOW )-Default :0.025
#define PID_KD_PREHEAT 150 // Suggested Range 150-300
// ~ Soak
#define PID_KP_SOAK 300 // Suggested Range 180-350
#define PID_KI_SOAK 0.05 // Suggested Range 0.05-0.1
#define PID_KD_SOAK 250 // Suggested Range 75-300
// ~ Reflow
#define PID_KP_REFLOW 300 // Suggested Range 150-350- Default: 300
#define PID_KI_REFLOW 0.05 // Suggested Range 0.05-0.1
#define PID_KD_REFLOW 370 // Suggested Range 100-350 Default :300-350
//~Sampling Rates
#define PID_SAMPLE_TIME 250 // Stable-DEFAULT :1000
#define SENSOR_SAMPLING_TIME 250 // Stable-DEFAULT :1000
//


Red color text = adjustable variables
Sampling :
The lower the value set ,the higher the sampling rate will be .
250 = One sample every 250 milliseconds = 4 samples per second = 4Hz

1000=One sample every 1000 milliseconds = One sample per second = 1Hz

And further down the code text ....



//**************************Adjustable Parameter: Peak temperature Safety Anti-Overshoot *******************************
if (setpoint >= (TEMPERATURE_REFLOW_MAX - 5)) //<= Adjustable parameter !!!!!!!!!!!! Range : 3 -7 !!!!!!!!!!!!!!!!!
//************************************************** ************************************************** **********
// Also it can be set as " input " instead of " setpoint ".Better for reflow oven.Not for hot-plating,though .
//**************************************************

Red & blue color text = adjustable variables

PID calibration simple rules :
PID Dynamics.JPG calib rules.JPGquick calib.JPG
....A bit more Advanced ....

prec calib 1.JPGprec calib 2.JPG





Programming Architecture note :
Unlike the "original" / OEM code supplied which sets phase-min/max , constant setpoints :
I.e 40=>150=>200=>245=>100.
and leaves out of the on going PID algorithm calculations ,
any of the rest intermediate "on-the-fly" values of solder profile ,
giving highest priority into the TC input value to "drive "
the PID algorithm ,my version of code differs quite a lot ......

At this case ,Setpoints are not min/max constants only ,
but they follow "sub-steps " of the solder profile temp/time curve ....
This way ,a much more precise control of output is achieved .
As Output signals now , are "slaved" not only with TC Input and few min/max profile's values ,
but continuously binded with profile's intermediate values .

More simply put :
At any stage at preheating ,the OEM code "bias " the PID calculations towards the 150 °C setpoint .
From start and all along the procedure until it reaches it.

At my version Pid calculations are "slaved" at a given x profile value for the x given time
and when Input is equal to it ,it moves to the next set point y ...
When input =y ,then the next setpoint is z ..
And so on ....
When 150 °C is reached by this way ,
then soaking starts ,with same "intermediate" setpoint architecture ...

OEM code uses this architecture ,only for the " SOAK " stage / phase .
Preheat and reflow ramps are "crude" "Fixed- max set point" biased ....

I think is much more precise control ,by using this software architecture ,
for all three stages ....( Cooling is left out ,for now ... )
Plus it has the advantage of 4x sampling rates than the OEM code ..
 

stardustsailor

Well-Known Member
I mean we don't have to complicate things, as no matter what, that LED your working with is going to be old, given time / using it. why want to use a very old LED when new ones come out every couple years making the costs go down, and light go up.. Maybe some people want to use old tech, but I think you got into the wrong hobby if your ok building a LED once, given the scale of light output the chips are going through each cycle.
Still,no matter if old ,new ,fat,wide,short ,good,bad etc ......
A LED DIYer / designer / builder has to solder/unsolder them somehow ....
Ain't so ?

second, who knows if this is necessary until we do measurements of "pro" reflow chips, and "DIY" reflow chips. maybe there isn't that big a loss to do it a very easy way. maybe there is. if you say there is, then please show us some tests done by people to say that you really need to build a DIY reflow station to solder LED's onto stars. I've never seen one test, so I would be happy to have a link to one, before saying if this is really necessary. I have the LED's, and will ship to anyone wanting to test them ( I lost my light meter in a move that had seeds with it.. or I would test myself )
You need measurements ?
Is not enough of evidence , that since with a crappy reflow work ,some leds chip/flake/crack/blow/fry/die ,
one can easily imagine under of what kind of stress the others -the "still working" ones- have undergone / been through ?
My turn now, to state back to you :Simplicity always wins over complication.


not everyone is at the level you are to understand what your building, or maybe wants to.. I know the rule and I've never seen it fail. Simplicity always wins over complication. you might think your reflow station your building is "easy". but even to me, I couldn't even do it, considering I don't even know what the hell is going on..

that's fine if someone wants to build a reflow station. no problem, but sometimes you gotta ask, why is everyone's garage full of crap... I've never walked into one house that didn't have pointless junk / clutter in it. I lean to getting rid of "old" crap, so this doesn't really fit me in the first place to have some odd looking thing collecting dust.. sure if you build lights for people everyday, or like you guys always testing new lamps. go for it.. for 95% of people, it doesn't apply to need one when they use it once or twice.. my opinion of course.
Do you seriously ,really think that I made this thread for everyone ?
Or That I do think that everyone should /ought to have one reflow oven at home ?
Common' ..Get serious ,now ....
But......
At this forum ,are plenty of LED DIYers,with a really high level of skills ...
But they are not "everyone" ....
Neither what they do post ,can be done /achieved by or is meant for "everyone" ...
If you do not need a reflow oven ,that's ok-fine with me ...
What's your problem dude ,with me and some others who might need one ?

And trust me ....Manually done reflowing ,yes pretty much fucks up any kind of diode
...I know first hand ..
And I do not need any freaking test to show me the obvious ,bro ....

Tests are done for things we can not figure out by "common sense "..

Fuck ...I should test at which temperature my hand gets seriously burned ...
What do ya think that would be ?
At 1000 °C or at 2000°C ?
We need a test ASAP ...

Samewise ...

Well...
Kinda...

Leds get seriously affected by bad soldering procedures ...
Their "high temperature " tolerance "window " is rather limited ...


And trust me ....The way I saw ,the controller operates the hot-plate ...
There is not one single possibility ,in a million ,that a manual reflowing ,
can match the controller 's results ...

Either,reflow will be incomplete (under-reflowed/ low peak temp) or everything will be ....Overdone ..

Case #2 is 99% most common .




I was asking the costs of the whole "unit" . price to build a DIY reflow station. can we put a price on time also?


I shouldn't have commented, as I wasn't even going to build one. But I think for anyone thinking of building one, lets see some proof that we get more light from a chip over a "hot plate" method, to justify building one in the first place.
~ $98 +/- $10 for the bare-but fully operational- controller .(Not enclosed in a case )

Add the cost of a small toaster oven... or.... of an electric single stove (portable) .


And BTW ....
I'm curious to know ....

Do you solder any of your SMD ceramic leds ?
If yes ....How ?
Using which method ?




P.S. :
can we put a price on time also?

Almost The whole globe does ..
$x per hour of work ...
Per hour of your life ...

There you are ...
The answer to your question ....
I'm assuming you've a 'price-tag' set ,for your 'time' ,already ...
And that is ...
If it's not set by someone else ,for you ,without even asking your opinion about it .....

R you trolling ,of some sort ?
I can not make any sense ,about what was the actual point of your posts here ..
Or is just that you're stoned ?
 

salmone

Well-Known Member
ok first of all I currently have no money and can not play with any toys or hardwares... lamps... LEDs... Drivers... sensors.... fans.... Arduinos... and other paraphernalia on diy with leds

even so... I like things to look for when I can...

...arduino seems to be an economic via... thanks to sds for this post

http://www.rocketscream.com/shop/reflow-oven-controller-shield-arduino-compatible
https://github.com/rocketscream/Reflow-Oven-Controller

...on the way i see

http://coralux.net/?p=348
Tuning The Reflow Oven

inside talk to http://www.adafruit.com/products/269
Thermocouple Amplifier MAX31855 breakout board (MAX6675 upgrade)

there i see https://learn.adafruit.com/adafruit-1-wire-thermocouple-amplifier-max31850k
Adafruit 1-Wire Thermocouple Amplifier - MAX31850K

https://learn.adafruit.com/downloads/pdf/adafruit-1-wire-thermocouple-amplifier-max31850k.pdf
1-Wire for all the thermocouples

http://www.adafruit.com/products/270
Thermocouple Type-K Glass Braid Insulated

...also i see this video...its not a arduino way... but... see me other posibilities...


http://www.eevblog.com/forum/blog/eevblog-558-beta-layout-diy-smd-thermal-reflow-oven/

http://www.beta-estore.com/rkuk/order_product_details.html?p=13
Large Beta-Reflow-Kit

http://www.beta-estore.com/download/rk/RK-10001_76.pdf
http://www.beta-estore.com/download/rk/RK-10001_167.pdf
http://www.beta-estore.com/download/rk/RK-10001_7.pdf
http://www.beta-estore.com/download/rk/RK-10001_168.pdf
Reflow Kit Instruction Manual
http://www.beta-estore.com/download/rk/RK-10001_9.pdf
Reflow Oven Safety Instructions

http://www.beta-estore.com/rkuk/order_product_details.html?wg=1&p=14
Small Beta-Reflow-Kit

http://www.maximintegrated.com/datasheet/index.mvp/id/3149
MAX6675
Cold-Junction-Compensated K-Thermocouple-to-Digital Converter (0°C to +1024°C)

http://www.beta-estore.com/rkuk/order_product_details.html?p=242
Reflow Controller V2

http://www.beta-estore.com/download/rk/RK-10215_209.pdf
http://www.beta-estore.com/download/rk/RK-10215_211.pdf
Reflow Controller Safety Instructions
http://www.beta-estore.com/download/rk/RK-10215_576.pdf
http://www.beta-estore.com/download/rk/RK-10215_577.pdf
Reflow Controller Manual
http://www.beta-estore.com/download/rk/RK-10215_419.pdf
Firmware Upgrade Info

...for the basic economic way... plus a heater... heather gun ...plate... or oven...
http://www.beta-estore.com/rkuk/order_product_details.html?wg=57&p=41
Multimeter with Temperature Measurement

...I would like to know how to adapt the method or rocketscream sds with an arduino mega with others shields already on... ferduino way...
...ferduino could run with the shield of sds or rocketscream?...

...a shame not to play with Arduino... but perhaps some day or year change my posibilities...while I learn what I can...

.
Saludos
 
Last edited:
Top