Arduino Rework Station





Introduction: Arduino Rework Station

About: A physicist with good knowledge in electronics and programming.

What about repairing your old graphics card, gaming machine or laptop with your own BGA Rework Station made from old stuff? You can reuse your old halogen heater to create a preheater for your BGA Rework Station, an arm from an old desk lamp in order to hold and move the top heater, aluminum curtain rails to hold your circuit boards, shower spiral cable to hold the thermocouples and an Arduino board as a PID temperature controller!

First of all, what a BGA Rework Station is? Modern IC chips (CPUs, GPUs, etc.) do not have legs but a ball grid array (BGA) of solder balls. In order to solder/desolder a chip like this, you need a machine that heats up the IC until ~230 Celsius without stretching the circuit board or produce thermal shock to the IC chip. That's why you need a temperature controller. These machines cost from 400$ to 1200$+ in order to buy one. This project's total cost is around 130$. You can read more about BGAs and Rework Station at wiki. Let's start! Materials:

• A four lamp halogen heater ~1800w (as bottom heater)
• 450w ceramic IR (as top heater)
• Aluminum curtain rails
• Shower spiral cable
• Hard thick wire
• Desk lamp arm
• Arduino ATmega2560 board
• 2x SSR 25-DA2x Adafruit MAX31855K breakout board (or make diy like boards i did)
• 2x K-type thermocouple
• 220to5v DC power supply @0.5A
• Character LCD 2004 module
• 5v buzzer
• Screws, buttons, cables and switches of your choice
• Average electronics knowledge

Step 1: Bottom Heater: Reflector, Lamps, Case

Find an old halogen heater, open it and take out the reflector and the four lamps. Be careful not to break the lamps! Here you can use your imagiantion about the case that holds the reflector and the lamps. You can use for example an old desktop PC case and put the reflector, the cables and the lamps in there. I used iron sheets of 1mm thickness and made my own cases for the bottom heater, the top heater and the arduino controller. As i said before you can be more creative than me and use something else as a case.

The heater i used was a 1800w heater (4x450w parallel). Use the wires from the heater and connect the four lamps in parallel. You can put an AC input plug as i did or connect a cable directly from the bottom heater to the controller.

Step 2: Bottom Heater: Pcb Holding System

After finishing your bottom heater's case, measure the bigger side of the window and cut 2 pieces of your aluminum curtain rail. You also need 6 pieces, each one is half the size of the window's small side. Drill holes at the two ends of the bigger pieces, at one end of the smaller pieces and at the bigger side of the window. Before screwing the pieces to the case, you need to make a nut-holding-mechanism, like i did in the above fotos, in order to slide the ends of smaller rails on the biger rails.

After inserting the nuts in the rails and screwing everything together, you can use a screwdriver to move, slide or tighten every screw in order to fit in your pcb's size and shape.

Step 3: Bottom Heater: Thermocouple Holders

For the thermocouple holders, measure the diagonal of the bottom heater's window and cut two pieces of your shower spiral cable. Unfold your hard wire and cut 2 pieces, each one is 6cm longer than the spiral cable. Pass the hard wire and your thermocouple through the spiral cable and bend both ends of the wire like i did in the images above. Left the one end bigger in order to screw it in one of the rail's screws. That's it!

Step 4: Top Heater: Ceramic Plate

For the top heater, i used a 450w ceramic IR heater. You can find them on aliexpress as spare parts from reballing machines. The tricky part is to make a nice case for your heater with a proper airflow. Next in the list, top heater's arm-holder.

P.S. To find the proper P, I and D settings for the ceramic heater is a pain in the ass because they are heating up/colding down very slowly.

Step 5: Top Heater: Arm

Find a nice old desk lamp with an arm and take it apart. You have to make right measurements depending on the lamp you got in order to cut it, because the top heater will have to reach each corner of your bottom heater. So, attach your top heater's case first, then cut the X axis, make the right measurements, and then finally cut the Z axis part of the arm.

Step 6: Arduino PID Controller

Find the right materials and make yourself a strong and secure case for the arduino and the other accessories.

You can "cut n' solder" every wire that connects to the controller (top/bottom heater power, controller power, thermocouples) or get some female connectors and make a clean install like i did. I didn't know how much heat would come from the SSRs so i added a fan into the case. Either you install a fan or not, you should put heatsinks into the SSRs. The code is self-explaining on how to connect each button, the SSRs, the screen and the thermocouples so it is pretty easy to connect everything together. How to operate: There is no autosetup for the P,I and D values, so you have to set your own depending on your setup. There 4 profiles. In each one you set the number of steps, ramp (C/s), dwel(waiting time per step), bottom heater threshhold, target temp for every step and P,I,D values for BH and TH. If you set for instance 3 steps, 80,180 and 230 C with BH threshold 180, your pcb will be heated only from the BH until 180C, hold that temp for the BH, and go to 230 with the top heater. The code still needs a lot of improvements but you can get an idea of how it should work. This is not a detailed tutorial because there are a lot of diy parts in it and every build will be different. I just hope that everyone will get inspired from this instructable to make his own one. P.S. Many thanks to NorcalReballer for the base code. Find me @




    • Oil Contest

      Oil Contest
    • Water Contest

      Water Contest
    • Clocks Contest

      Clocks Contest

    30 Discussions

    Great job
    Do you have any connection diagram?

    How to setup PID correctly? Because is the hardest thing...

    Also, the source code is an arduino empty project! Could you please link to the code, thank you!

    4 replies

    Well, if I open the sketch_feb07a1.ino project file, here is what I get:

    Any ideas?


    Schermata 2017-01-21 alle 17.57.36.png

    This is sketch_jan21a, you are obviously doing something wrong. Extract the .rar file, open sketch_feb07a1.ino, if you get a pop-up to create a folder for the sketch press "Yes".

    Sorry, you are right, I had to open from the Arduino IDE, I was double clicking on the ino project inside the folder, and that was opening an empty project. My apologies!

    Hi, nice intructable.

    Were you actually able to resolder a bga chip after reballing it? Especially the big ones like PS or xbox or graphic chips of modern laptops?

    Because desoldering bga's is relatively easy but reattaching them is another story!


    1 year ago

    How to configure steps? Setting profile of two steps makes the profile
    never ends. After reaching step 2 moves to the next although these are
    not set, and hangs on step 5. Setting the 9 steps is changing so much
    that after steps 9 comes to 11 even though it does not have one, and
    hang. I am from Poland, sorry for my bad english.

    Hi! People, i need rebuild sketch for dual MAX6675, Arduino LCD Keypad Shield (16x2 + 5 buttons (on 1 analog pin)) and fan control. I'm use Arduino Mega 2560. IR BH and IR TH (PQ1/4). Can you help me?

    Sorry for my english :-) I'm form Russia ...

    hi guys how abot automated PID calibration?

    Hi, the ramping is not working property , i set 1/c but it go faster, if i want less than one second, it doesnt work. I modified the sketch to work with a 12c lcd and to control a fan for top heater.. Lots of trouble to control P,I and D. Finally i'd like add a touch lcd with no success.
    To teball videogames , ramp is critical, i can't manage to fix this problem.

    7 replies

    Thank you! I've already seen it, Maybe i'll give it a try.

    At the "REFLOW_STATE_MENU_STEP_RAMP" you set degrees (C) per second, not seconds per degrees. The minimum is 0.25C/sec.

    If i set less than 1c/sec. It won't save on the eeprom.

    Alright, automated PID calibration option will be great! I was trying to do that, but i coudn't do it.
    For top heater i'm using IR tube.
    Basically, i have a bad aoyue int732(worst machine ever made), and i'm trying to modified using your Project.
    About ramp, what i mean is that if tc reads 170℃ and i want to encrese to 190° at 1° per seconds, the counter start to run slowly, but suddenly go faster till Set Point, then top heater runs without ramp control. So, i have to deal with PID tunning to make top heats slowly.
    This make my profile longer and for some bga is not good.

    I was gonna make an automated PID calibration option with another two thermocouples into the bottom and top heater, but it needs a lot of work. Do not use ceramic heaters, it's harder to calibrate their PID because of bigger thermal capacity (colding/heating slower). Use halogen instead.

    My English is a little low. Sorry


    2 years ago

    Hi guys who have a connection scheme of all components to the Arduino Mega