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

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

Setup 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

Changes in machine.xml

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}