-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
11 changed files
with
137 additions
and
2 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Opulo LumenPnP Feeder License and Copyright Notices | ||
|
||
LumenPnP is (c) by Opulo | ||
|
||
This notice must be included in any distributions of this project or derivative works. | ||
|
||
Because this project consists of many types of source, individual parts of the project are made available under different licenses. | ||
|
||
1. The hardware designs located at `./cad` are available under the CERN-OHL-W v2 license. Full text is available at https://cern.ch/cern-ohl. | ||
|
||
2. The software located at `./scripts` is available under Mozilla MPL v2.0. Full text is available at https://www.mozilla.org/en-US/MPL/2.0/. | ||
|
||
3. Opulo's logo, branding, and other media is used throughout this project. This is Copyright (c) Opulo and all rights are reserved. You may not distribute derivative works or products bearing the Opulo logo, icon, or other relevant mark. Derivative works should remove Opulo branding. | ||
|
||
4. The name `Opulo` and `LumenPnP` are trademarked, and only to be used by Opulo. Any derivative works should remove both marks. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,24 @@ | ||
# paste-extruder | ||
Paste extruder head for the LumenPnP | ||
# LumenPnP Paste Extruder | ||
|
||
This repository contains the source for a prototype paste extruder head for the LumenPnP. | ||
|
||
![v4](./img/hero.gif) | ||
|
||
**This is a prototype design. It is still in development.** | ||
|
||
This extruder head is designed for solder paste and conductive ink dispensing applications. It quickly and easily replaces the left toolhead on any version LumenPnP. It has been used to add conductive ink on a PCB, then have the right pick head proceed to populate parts, resulting in a fully working PCBA. | ||
|
||
Controlling this toolhead is currently done using `leash`, a python libary for interfacing with the LumenPnP, which can be found [here](https://github.com/opulo-inc/leash). | ||
|
||
## Parts | ||
|
||
| Item | Quantity | | ||
| ---- | -------- | | ||
| [M3 Nut](https://www.mcmaster.com/90591A250/) | 1 | | ||
| [M3 Threaded Rod](https://www.mcmaster.com/94595A215/) | 1 | | ||
| [Nema 8 Stepper Motor (The higher current rating the better)](https://www.amazon.com/s?k=nema+8+stepper+motor) | 1 | | ||
| [M2x6mm Socket Head Bolt](https://www.mcmaster.com/91290A013/) | 1 | | ||
| [M3 Square Nut](https://www.mcmaster.com/97259A101/) | 1 | | ||
| [M3x18mm Socket Head Bolt](https://www.mcmaster.com/91290A121/) | 1 | | ||
| [3ml Luer Lock Syringe](https://www.mcmaster.com/7510A42/) | 1 | | ||
| [Luer Lock Tip (size depends on application)](https://www.mcmaster.com/products/needles/fitting-connection~luer-lock/dispensing-tips-with-luer-lock-connection/tip-type~tapered/) | 1 | |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
from leash import Lumen | ||
|
||
lumen = Lumen() | ||
|
||
lumen.connect() | ||
lumen.home() | ||
|
||
boardHeight = 9.6 | ||
|
||
resistorPads = [ | ||
[361.6, 216.2], | ||
[361.6, 214.4], | ||
[365.8, 214.4], | ||
[364.6, 213.2], | ||
[367.4, 210.2], | ||
[365.8, 210.2], | ||
[365.6, 206.2], | ||
[364.4, 207.4], | ||
[361.6, 204.4], | ||
[361.6, 206.0], | ||
[357.4, 206.2], | ||
[358.6, 207.4], | ||
[355.8, 210.2], | ||
[357.4, 210.2], | ||
[357.4, 214.4], | ||
[358.6, 213.2] | ||
] | ||
|
||
ledPads = [ | ||
[360.2, 219.8], | ||
[362.0, 219.8], | ||
[367.6, 217.4], | ||
[368.8, 216.2], | ||
[371.2, 210.6], | ||
[371.2, 209.0], | ||
[368.8, 203.6], | ||
[367.4, 202.2], | ||
[362.0, 199.8], | ||
[360.2, 199.8], | ||
[354.6, 202.2], | ||
[353.2, 203.6], | ||
[351.0, 209.0], | ||
[351.0, 210.8], | ||
[353.6, 216.2], | ||
[354.8, 217.4] | ||
|
||
] | ||
|
||
lumen.safeZ() | ||
|
||
lumen.goto(x=20, y=20) | ||
|
||
lumen.sm.send("G92 A0") | ||
lumen.setSpeed(f=2000) | ||
lumen.sm.send("M906 A400") | ||
lumen.goto(a = lumen.position["a"] + 100 ) | ||
|
||
lumen.sleep(2) | ||
|
||
lumen.setSpeed(f=50000) | ||
|
||
lumen.safeZ() | ||
|
||
for pos in resistorPads: | ||
# move above position | ||
lumen.goto(x = pos[0], y = pos[1], z = lumen.parkZ) | ||
# plunge to position | ||
lumen.goto(z = boardHeight) | ||
|
||
# extrude | ||
lumen.setSpeed(f=2000) | ||
lumen.goto(a = lumen.position["a"] + 5 ) | ||
|
||
lumen.sleep(0.1) | ||
|
||
# z back to safe z | ||
lumen.setSpeed(f=50000) | ||
lumen.goto(z = lumen.parkZ) | ||
|
||
for pos in ledPads: | ||
# move above position | ||
lumen.goto(x = pos[0], y = pos[1], z = lumen.parkZ) | ||
# plunge to position | ||
lumen.goto(z = boardHeight) | ||
|
||
# extrude | ||
lumen.setSpeed(f=2000) | ||
lumen.goto(a = lumen.position["a"] + 5 ) | ||
|
||
lumen.sleep(0.1) | ||
|
||
# z back to safe z | ||
lumen.setSpeed(f=50000) | ||
lumen.goto(z = lumen.parkZ) | ||
|
||
lumen.sm.send("M906 A100") | ||
lumen.idle() | ||
|