I'm in the process of making a rudimentary Pick & Place machine for PCB assembly. Since I'm a mechanical engineer and have my own CNC machine shop, the mechanics are the "easy" part. I plan to use and Arduino with grbl to operate it (actually I'm considering a Smoothieboard - it has an ARM processor as I recall). Again, this part is also pretty straightforward.
The part that seems like the biggest challenge is the program to move the SMD parts from the tapes to the PCB. Most of my ideas are tedious at best.
Then I ran across this video https://www.youtube.com/watch?v=aMomxqVB2hY of a manual pick and place machine.
It shows a person manually moving the vacuum pickup stylus to grab the part and sliding the carriage and placing it on the PCB. It got me thinking that a good way to program a CNC Pick & Place machine is to "Teach" it on the first PCB by manually moving it in this manner. Then the remaining boards would be automated.
I envision a system that is completely separate from the stepper motors and control. It would consist of encoders on each axis and an MCU to monitor X/Y position, and some buttons to indicate "Pick" and "Place" (to actuate the vacuum). Obviously the motors will be disabled for the teaching session.
The MCU could likely be either an ATtiny26 or an ATmega328 (if the tiny is, well... too tiny).
My Questions:
What is the best way to store the list of coordinates as they are gathered?
I suppose that it would take some time to wear out the EEPROM if I were to use it to store the list. 10,000 erase cycles would be quite a few PCB designs. But then there is the issue of getting the list from the MCU to a computer....
I don't know much about USB communication with a laptop... would that be a better way to go?
If so, what do I need on the laptop to receive the data and store it?
Once I have the list of coordinates, I can manipulate it with "snap to grid" or other functions to clean it up (since most parts on my PCBs line up with a .025" grid).
Are there any other suggestions I haven't thought of?