DIY SMD Vacuum Pickup Tool

DIY SMD Vacuum Pickup Tool 2
Share:

About

In this post, I’ll show my DIY SMD vacuum pickup tool. I bought this vacuum pump SMD pickup but it had no way to be turned on/off. There is only a hole on the vacuum “pen” that you can cover with your finger to make or release the vacuum. I decided I would mod it and make it operable with a footswitch. When pressed the vacuum pump is turned on and when you let go the vacuum pump is turned off while the valve is opened at the same time to release the vacuum and instantly drop the SMD part from the nozzle. 

Hardware used:

The schematic is very similar to my other DIY solder dispenser project. The only difference is that valve and vacuum pump operate on mains voltage. Because of that I just put the 5V power supply which is used to power the microcontroller inside the project box. This way I could avoid having an adapter and an extra wire

Note: The power supply PCB is kinda close to the footswitch terminal. But it is low voltage side and well this is just a DIY project that I use from time to time and not a commercial product, so I’d say it’s good enough.

I simply hot glued the components inside the project box. Just like the solder dispenser, it’s not the prettiest look but it gets the job done.

Software

This is the very simple code that controls the vacuum pump and valve. I used an Arduino with the Arduino IDE to program the Attiny45. If you want to know how to program the Attiny with an Arduino using the Arduino IDE see this post I made.
const byte switchPin = 2;
const byte pumpPin = 1;
const byte valvePin = 0;
bool fSwitchPreviousState;
bool fSwitch;

void setup()
{
  
  pinMode(pumpPin, OUTPUT);
  pinMode(valvePin, OUTPUT);
  pinMode(switchPin, INPUT);
  digitalWrite(valvePin, HIGH);
  digitalWrite(pumpPin, HIGH);  
}

void loop()
{
  fSwitchPreviousState = fSwitch;

  //Reading value from switch pin.
	fSwitch = digitalRead(switchPin);

  //Not the best software debounce method but it works.
  delay(50);
  fSwitch = digitalRead(switchPin);

	if (!fSwitch)
	{
		digitalWrite(pumpPin, LOW);
	}
  else
  {
    digitalWrite(pumpPin, HIGH);
  }
  
  if(fSwitch != fSwitchPreviousState && fSwitchPreviousState == false && fSwitch == true)
  {
    digitalWrite(valvePin, LOW);
    delay(500);
    digitalWrite(valvePin, HIGH);
  }
}

Demonstration

Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

The following GDPR rules must be read and accepted:
This form collects your name, email and content so that we can keep track of the comments placed on the website. For more info check our privacy policy where you will get more info on where, how and why we store your data.

Advertisment ad adsense adlogger