DOC

FACTORY LAYOUT PRINCIPLES

By Barry Porter,2014-11-12 01:38
17 views 0
FACTORY LAYOUT PRINCIPLES

Easy Solder Reflow Oven

User Manual

* General Information

    Thank you for making the choice to purchase our product. The Easy Solder Reflow Oven is a simple effective way to experiment with reflow techniques. This inexpensive kit contains…

Includes:

     1 Black and Decker Toaster Oven

     1 HC12 controller board

     1 Custom Designed ThermoCouple / LCD bridge board

     1 20cell x 4row LCD screen

     1 J type thermo couple

     1 On/Off heating control

    This system requires 2 standard 120 Volt Outlets for operation. One to power Toaster, and one to power microcontroller.

    The toaster oven is capable of containing .8 sq feet of circuit boards during each cooking cycle.

*Installation Instructions

As illustrated bellow, installation is easy.

    The micro controller is first attached to the Custom Board Via the wide ribbon cable provided. Then the LCD is attached as shown below to the Custom Board. The final

device needed is the thermocouple. It doesn’t matter in which order the leads are

    connected the device will still operate correctly.

    The thermocouple must be inserted into the Oven and shut into the door during operation.

    The heating control unit is plugged into an outlet, and then the Toaster Oven is plugged into the Heating Control Box.

    ; Theory of Operation

     It is very easy to understand how this product works. First of all we have our toaster. It is very simple in design and relies on mechanical temperature sensors to control the temperature inside the oven. We needed more precise temperature controls to cook circuit boards so we aren’t using the installed mechanical sensors. To render them out of operation we simply turned the temperature control to “BROIL” and the timer to a generic “ON” state.

     To regulate the temperature inside the oven we use a HC12 Motorola

    microcontroller. A “J” type thermoresistor is run through an AD594 thermo calibration chip to develop a voltage useful for A/D conversion. The output of the AD594 is sent to the HC12 where it is transferred to a digital value, now the HC12 knows the temperature inside the oven. The oven temperature is compared to a desired temperature in the C program the HC12 is running. Once every second the microcontroller decides if the heat needs to go up or down inside the oven.

     If the heat needs to go up the oven makes sure the heat is already on, if the heat needs to go down, then the microcontroller makes sure the heat is off. In this fashion the oven remains at the correct temperature to reflow the solder paste.

     The microcontroller turns on and off the heat by adjusting a single output bit. This bit is wired to a switch. When 5 volts is applied across two pins of the switch, another two pins can conduct the 120 Volts AC the toaster oven needs to heat. Because the Toaster oven has only mechanical controls, there isn’t a problem with rapidly turning off and on its power supply.

     The C program that runs this device is set up to provide instructions on the LCD to guide the user through operation.

The following is the Open Source C file. It is also available on the product website.

    #include /* common defines and macros */ #include /* derivative information */ #include

    #include "main_asm.h" /* interface to the assembly module */

    #define STARTBUTTON 0x80 //definitions #define SOLDERBUTTON 0x40

#pragma LINK_INFO DERIVATIVE "mc9s12c32"

void LCD_puts (char *ptr);

    //functions

    void Init_A2D(void);

    void Displaysoldertype(int x);

    extern void LCD_Out (char);

    extern void LCD_CMD (unsigned char);

    extern void Init_LCD(void);

    extern void DELAY_DMS(int);

char buffer[20]; //Global Variables

    int TARGETTEMPS[9]; //the target temperatures for oven / time int TARGETTIMES[9]; //the times of each stage void main(void) { //MAIN LOOP STARTS HERE

float THERMRIN,,OVENTEMP;

    int x,y,LOOP,TABLE,TIME,STAGECOUNT,STAGECOUNT; //TABLE is the place in global array TARGETTEMPS

unsigned char buttons;

EnableInterrupts;

    asm_main();

Init_LCD();

    ATDDIEN=ATDDIEN |0xc0;

    DDRT=DDRT |0x04;//enables pt2 for output

    Init_A2D();

    // DELAY_DMS(10);

//**********************************************************************

    ************************

    //**********************************************************************************************

    while(1) //this is main loop

    {

    //**********************************************************************************************

     //TARGETTEMP & TARGETTIME controls

    // ~~~~~~~~ Lead Free Solder Paste Mode ~~~~~~~~~

     TARGETTIMES[0]=60; TARGETTEMPS[0]=50;

     TARGETTIMES[1]=120; TARGETTEMPS[1]=50;

     TARGETTIMES[2]=180; TARGETTEMPS[2]=50;

     TARGETTIMES[3]=240; TARGETTEMPS[3]=50;

     TARGETTIMES[4]=300; TARGETTEMPS[4]=75;

    // ~~~~~~~~ Leaded Solder Paste Mode ~~~~~~~~~

     TARGETTIMES[5]=60; TARGETTEMPS[5]=50;

     TARGETTIMES[6]=120; TARGETTEMPS[6]=50;

     TARGETTIMES[7]=180; TARGETTEMPS[7]=50;

     TARGETTIMES[8]=240; TARGETTEMPS[8]=50;

     TARGETTIMES[9]=300; TARGETTEMPS[9]=50;

    //**********************************************************************************************

    //**********************Introduction

    Stuff******************************************************

     LCD_CMD(0x01); //clears

    display

     DELAY_DMS(10); //stability

    delay

     LCD_CMD(0x80);

     y= sprintf(buffer," Hello, Load Boards "); //prints <----

     LCD_puts(buffer);

     LCD_CMD(0x80+0x40);

     y= sprintf(buffer," Close Door "); //prints <----

     LCD_puts(buffer);

     LCD_CMD(0x80+20);

     y= sprintf(buffer," Pick Solder Type "); //prints <----

     LCD_puts(buffer);

     STAGECOUNT=0;

     LOOP=1; //reset LOOP variable

     TABLE=0;

     STAGE=0;

     Displaysoldertype(TABLE);

     while(LOOP!=0)

     {

     buttons=PORTAD0;

     if((buttons & STARTBUTTON)==0) //we need to check a BIT for

    start button

     LOOP=0; //to end while loop

     if((buttons & SOLDERBUTTON)==0) //then we need to check solder

    select switch and insert the correct table values

     {

     if(TABLE==0)

     TABLE=5;

     else

     TABLE=0;

     Displaysoldertype(TABLE);

     for (x=0;x<11;x++){

     DELAY_DMS(20);}; //delay before first message

     }

     }

     for (x=0;x<11;x++) //random delay here

     {

     DELAY_DMS(10);

     }

     //intro loop ends

    //**********************************************************************

    **************************************

    //**********************************cook

    loop*****************************************************************

    //**********************************************************************

    **************************************

     LOOP=1; //reset loop variable

     TIME=0; //set clock to zero

     while(LOOP!=0)

     { //The LCD screen is Updated First

     LCD_CMD(0x01); //clears display

     DELAY_DMS(10); //stability delay

     LCD_CMD(0x80); //arrange cursor

     y= sprintf(buffer,"The Baking Stages "); //prints <----

     LCD_puts(buffer);

     LCD_CMD(0x80+0x40);

     y= sprintf(buffer,"Current Temp %f ",OVENTEMP); //were gonns need variables

     LCD_puts(buffer);

     LCD_CMD(0x80+20);

     y= sprintf(buffer," Time %d ",TIME); //for times elapsed and temp

     LCD_puts(buffer);

    //************************************************************************************************************

    //*****************************a new value is found for OVENTEMP using A/D converter**************************

     OVENTEMP=ATDDR0;

     OVENTEMP=(OVENTEMPx10); //formula NEEDED to decode voltage into number that we can use

     //works with table values

    //************************************************************************************************************

     //now we must decide if heat must go on or off

     if(OVENTEMP<=TARGETTEMPS[TABLE]) //no

    historesis added

     PTT = PTT | 0x04; //HEAT BIT GOES ON

     else

     PTT = PTT & (~0x04); //HEAT BIT GOES OFF

    //************************************************************************************************************

    //***********************************Increments seconds elapsed bit*******************************************

     TIME++;

    //************************************************************************************************************

    //*************Delays put here make whole cook loop one second long (to be adjusted

    later)********************

     for (x=0;x<11;x++)

     {

     DELAY_DMS(10);

     }

    //************************************************************************************************************

     //We navigate the TARGETTEMP here. stagecount is a timer for each new stage and TARGETTIME is length

     STAGECOUNT++; //This is like TIME only it resets every new stage so its also time elapsed this stage

     if(STAGECOUNT==TARGETTIMES[TABLE]) //it works as a timer using targettimes array to change length of loop

     {

     STAGE++;

     if(STAGE==5)

     LOOP=0;

     TABLE++;

     STAGECOUNT=0;

     }

     }//ENDOFLOOP

    //*******************************cook loop ends here if LOOP==0************************************************* //**************************************************************************************************************

    //***************************************COOLDOWN

    LOOP********************************************************** //**************************************************************************************************************

     LOOP=1;

     while(LOOP!=0) //cooldown loop begins here

     {

     LCD_CMD(0x01); //clears display

     DELAY_DMS(10); //stability delay

     LCD_CMD(0x80);

     y= sprintf(buffer,"Boards Are DONE "); //prints <----

     LCD_puts(buffer);

     LCD_CMD(0x80+0x40);

     y= sprintf(buffer,"Caution HOT"); //prints <----

     LCD_puts(buffer);

     LCD_CMD(0x80+20);

     y= sprintf(buffer,"Open Oven Door"); //prints <----

     LCD_puts(buffer);

     while(LOOP==1)

     {

     buttons=PORTAD0;

     if((buttons & STARTBUTTON)==0) //we need to check a BIT for start button

     LOOP=0; //to end while loop

     } //while 2 loop ends

     } //while 1 loop ends

    //****************************end of cooldown

    loop***************************************************** //**********************************************************************

    ****************************************

    }//**************************************end of main loop*******************************************************

     // PTT = PTT ^ 0x04;//toggles pt2

     // DELAY_DMS(1000);//delay

// }

     // for(;;) {} /* wait forever */

    }

    void Displaysoldertype(int x)

    {

     int y;

Report this document

For any questions or suggestions please email
cust-service@docsford.com