OpenPnP - PixiePlacer/PixiePlacer GitHub Wiki
How do I start setting up my machine?
Use the Machine Setup Files and Driver Setup Files as a guideline for setting up your machine.
First make yourself familiar with OpenPnP by reading through this document and watching this video by Opulo.
It is important that before starting to set up openpnp that your machine can move with just G-Code Commands. To make it simpler to understand: OpenPnP is a software that sends G-Code Commands to your Motion Controller and combines them with the Input of the Camera. Therefore it is important that your machine can already move, home and accurate the Lights, LEDs and Valves just by sending G-Code Commands. Only if this is given I would recommend moving to the OpenPnP Setup.
Machine Setup
At the Menu Tab Machine Setup
I probably spent about 5 days understanding and modifying all the parameters in order to function as I wanted. That's why I want to make it easier for you to understand :)
Start by reading this chapter.
This is the best video inorder to understand how to set up OpenPnP!!! Thank you Stephen Hawes for all the work that you have put into this video!. This is also a great more detailed video!
Connect OpenPnP to your machine
Article: GcodeDriver
Video: Link
This is where all the communication to the main controller and feeder controller is set up.
Axes Setup
Follow this Article: Axes Setup
Heads Setup
Nozzle Setup
Follow this Article: Nozzle Setup
Top Down Camera Setup
Head Actuators
Actuators are our Vacuum Solenoid Valves for the L and R Nozzle and our Top Down LED.
Article about Actuators: Actuators Setup
Article about Camera Lighting: Camera Lighting Setup
Article: Vacuum Setup
Bottom Up Camera Setup
Article: Bottom Up Camera Setup
Video: Bottom Camera Position
Article: Computer Vision
Article: Bottom Vision
Video: Calibration Computer Vision
Video: Nozzle Tip Calibration
Vacuum Sensing
Video: Vacuum Sensing!
Nozzle Offset Calibration
The nozzle offset calibration tool by OpenPnP is great. I would recommend using Blue Tack (patafix) stuck to the machine bed inorder to make a small mark with the nozzle and then move the camera to the mark to determine the nozzle offset. This is the easiest way I found to do this.
Video: Nozzle Offset Calibration
Sensorless Homing Calibration
Video: Sensorless Homing Calibration
Homing Fiducial
Video: Homing Fiducial Setup
Pixel/mm Calibration
Video: Pixel/mm Calibration
Fiducial Machine Vision Calibration
Video: Fiducial Machine Vision Calibration
GCode Driver Commands
Command Confirm Regrex
^ok.*
Position Report Regex
^.*X:(?<X>-?\d+\.\d+) Y:(?<Y>-?\d+\.\d+) Z:(?<Z>-?\d+\.\d+).*
Command Error Regex
^error.*
Connect Command
G21 ; Set millimeters mode
G90 ; Set absolute positioning mode
M82 ; Set absolute mode for extruder
M42 I M1 P0205 S0; VAC Pump off
M42 I M1 P0126 S0; LED Top on
M42 I M1 P0010 S255; LED Bottom off
M42 I M1 P0100 S255; Air Nozzle 1 off
M42 I M1 P0125 S255; Air Nozzle 2 off
Disable Command
M84 ; stepper motor off
M42 I M1 P0205 S0; VAC off
M42 I M1 P0205 S0; VAC Pump off
M42 I M1 P0126 S255; LED Top off
M42 I M1 P0010 S255; LED Bottom off
M42 I M1 P0100 S255; Air Nozzle 1 off
M42 I M1 P0125 S255; Air Nozzle 2 off
Home Command
G28 Z;
G28 Z;
G0 Z0 F1000;
G28 XY
G0 X0 Y0 Z0 F10000;
T0 S1;
G92 E0;
T1 S1;
G92 E0;
M42 I M1 P0205 S0; VAC Pump off
M42 I M1 P0126 S0; LED Top on
M42 I M1 P0010 S255; LED Bottom off
M42 I M1 P0100 S255; Air Nozzle 1 off
M42 I M1 P0125 S255; Air Nozzle 2 off
Pump On Command
M42 I M1 P0205 S255; VAC on
Pump Off Command
M42 I M1 P0205 S0;
Get Position Command
M114 ; get position
Move to Command
G0 {X:X%.4f} {Y:Y%.4f} {Z:Z%.4f} {Rotation:E%.4f} F{FeedRate:%.0f}
Move to Complete Command
M400 ; Wait for moves to complete before returning
machine.xml
Changes in supporting-pre-move="true" using-letter-variables="false"
<pre-move-command><![CDATA[
T0S1
G92E{Coordinate:%.4f}
]]></pre-move-command>
<pre-move-command><![CDATA[
T1S1
G92E{Coordinate:%.4f}
]]></pre-move-command>
VAC PUMP
Actuate Boolean Command
{True:M42 I M1 P0205 S255}{False:M42 I M1 P0205 S0}
H1 N1_Vac
Actuate Boolean Command
{True:M42 I M1 P0100 S0}{False:M42 I M1 P0100 S255}
M42 I M1 P0205 S255; VAC on
H1 N2_Vac
Actuate Boolean Command
{True:M42 I M1 P0125 S0}{False:M42 I M1 P0125 S255}
M42 I M1 P0205 S255; VAC on
Down Light
Actuate Boolean Command
{True:M42 I M1 P0010 S255}{False:M42 I M1 P0010 S0}
{True:M42 I M1 P0126 S0}{False:M42 I M1 P0126 S255}
Up Light
Actuate Boolean Command
{True:M42 I M1 P0010 S0}{False:M42 I M1 P0010 S255}
{True:M42 I M1 P0126 S255}{False:M42 I M1 P0126 S0}