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:
- #adAmazon LinkRelay Module
- #adAmazon LinkAir Pump
- #adAmazon LinkAir Valve
- #adAmazon LinkTubing And Connectors
- #adAmazon LinkPlastic Enclosure Box
- #adAmazon LinkAttinyMCU
- #adAmazon LinkFoot Switch
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); } }