Skip to content

Contact Probing Nozzle

markmaker edited this page Mar 6, 2024 · 32 revisions

What is it?

Some machines (e.g. the Liteplacer) have a nozzle that can sense when the nozzle tip touches down. The idea is to automatically stop Z down motion without having to know exactly how high a part, a feeder and/or a PCB is. To use this feature in OpenPNP, you can use the ContactProbeNozzle.

What is it used for?

  • Nozzle/Nozzle Tip Z Calibration
  • Part Height Auto-Learning
  • Feeder Z Auto-Learning
  • Placement Z Auto Learning

The use cases are explained further down.

What is it not?

Contact Probing is not to be confused with Z Probing, which is a completely separate concept. Z Probing is used to measure any Z surfaces. The probing is always manual and intended for setting up the machine and feeders up front. If you have a laser displacement sensor, it may be able to measure delicate surfaces, like lose parts in feeders, without making contact and disturbing them.

Conversely, the Contact Probing Nozzle (explained here), can be fully integrated into production, measurements can efficiently take place "on the go", with no extra machine moves, because we can probe with a part on the nozzle (sandwiching), to get the real live part, solder paste, and board surface heights, or real live feeder pick heights.

Of course, the two facilities can also be combined.

Use Cases

Nozzle/Nozzle Tip Z Calibration

Machines that home the Z axis with easily shifted Zmax switches (e.g. Liteplacer), hard to balance dual-nozzle mid-axis sensors or even by just letting springs retract unpowered Z motors, may not provide a precise and repeatable Z reference.

A ContactProbeNozzle can then be used to calibrate the Nozzle in Z, more specifically the point of the loaded Nozzle Tip. By probing a known reference Z touch surface, it can apply the obtained calibration offset to all future Z movements.

For multi-nozzle machines, the nozzles can therefore be perfectly harmonized in Z. This can (optionally) be extended to individual nozzle tips if these have varying heights, or if the coupling to the nozzle is not very consistent.

Having a calibrated Z not only establishes precision in movements, but also in capturing or probing other Z locations.

Part Height Auto-Learning

With a ContactProbeNozzle and enabled feeder and part height probing, OpenPnP can now also learn part heights automatically. Whenever a part with unknown height is picked or placed for the first time, the probed height will be stored on the part.

  • Part height auto-learning works for feeders that have the part height above the pick location Z (ReferenceLoosePartFeeder and AdvancedLoosePartFeeeder).
  • Part height auto-learning also works in all placements, as obviously all parts are above the known board location Z.

The job processor knows when a ContactProbeNozzle has this capability and will in this case allow starting a Job with unknown part heights. If only one nozzle in a multi-nozzle setup has probing capabilities, the planner will automatically restrict parts with unknown heights to this nozzle. As an alternative, part heights can also be auto-learned using Up looking Camera Auto Focus, if bottom vision is enabled for the part. Note that if bottom vision is enabled for the part, auto focus part height auto-learning must be enabled as well, even though a ContactProbeNozzle is available. This is because bottom vision requires the component height to be known, and contact probing with the nozzle only happens after that, when the component is placed on the PCB.

Part height unknown

Feeder Z Auto-Learning

The ContactProbeNozzle can also auto-learn the pick Z location of feeders. On the first pick the height will be probed and then remembered. This does not (currently) change the Z location of the feeder per se, because there is no universal way to do this (the handling of Z coordinates is feeder class specific). Instead a Z pick offset is maintained and stored.

Note: some feeders like the BlindsFeeder still need a precise Z location configured (e.g. for cover actuatuation).

Placement Z Auto Learning

The ContactProbeNozzle can also auto-learn the placement Z location of parts, even if the part height is known. On the first placement the height will be probed and then remembered. This will equalize nozzle (tip) spring compression force, taking solder paste height into consideration.

Note, Placement Z Auto Learning is part of the Part Height Probing settings (below).

Enable the ContactProbeNozzle

If you don't have a ContactProbeNozzle yet, let Issues and Solutions replace the existing ReferenceNozzle for you. Note, the solution will only be available in the Advanced milestone, it is not recommended to configure it earlier in the machine setup process:

Replace nozzle

The solution automatically extends the Nozzle with a new tab Contact Probe.

You can also create a new Nozzle manually on the head and choose the ContactProbeNozzle type. This is not recommended.

Contact Probe Nozzle Configuration

Method Selection

Contact Probe Method

Method lets you select the probing method.

  • None switches contact probing off. The nozzle behaves as if it were a regular ReferenceNozzle.
  • Vacuum Sense uses the Vacuum Sensing setup of the nozzle to perform "sniffle probing". More specifically, the Part Off detection method is used to sense if the nozzle tip has touched the surface.
  • ContactSensingActuator uses a separate Actuator to probe and sense for contact. This is a setup made popular by the Liteplacer kit.

Notes: The Wizard will show different fields according to the selection. If at least one nozzle has an active Method selected, other parts of the OpenPnP GUI will also show additional elements for contact probing.

Vacuum Sense Method

Vacuum Sense

The settings of the "Part Off" test in Vacuum Sensing are used to probe for contact with the surface. As long as the "Part Off" test say "yes", the nozzle tip is lowered one step further down.

Start Offset determines how high above the nominal probing location, the sensing should start. For the Vacuum Sense method, this must be high enough to get a clear "Part Off" result on the first sniffle.

Probe Depth determines how far the probing should go.

Sniffle Increment determines the step in Z.

Sniffle Dwell Time [ms] sets the waiting time between two sniffles. This is needed to clear out any under-pressure from the previous sniffle.

Final Adjustment after contact was sensed, add this adjustment to the Z position. Positive values retract the nozzle, negative values add spring loading. You should aim for a light touch with barely any spring loading. This way the tip Z reference can also be used to push things sideways such as with the BlindsFeeder cover actuation.

Calibration Z Offset shows the last calibration result.

Calibrate Now performs the Z calibration. You must first setup a Touch Location on all the noozle tip's Tool Changer tab.

Contact Sense Method

ContactSenseActuator

Contact Sense Actuator sets the actuator to sense when contact is made. See further below how to setup the Actuator.

Start Offset determines how high above the nominal probing location, the sensing should start. For the Vacuum Sense method, this must be high enough to get a clear "Part Off" result on the first sniffle.

Probe Depth determines how far the probing should go. In fact it may go further but if the probing result is beyond the given depth an exception is thrown.

Final Adjustment after contact was sensed, add this adjustment to the Z position. Positive values retract the nozzle, negative values add spring loading. You should aim for a light touch with barely any spring loading. This way the tip Z reference can also be used to push things sideways such as with the BlindsFeeder cover actuation.

Feeder Height Probing determines when feeders should be probed for pick location Z offsets.

Part Height Probing determines when parts should be probed for their height, or if the height is known, for the placement location Z offsets (nozzle spring force/solder paste height).

Probing Triggers

  • Off switches off probing and Z offset application for the feeders/parts.

  • Once probes for a Z offset only once. The offset is stored in the configuration (machine.xml).

    CAUTION: Z offsets from probing once will subsequently be applied quietly, for ever. You might forget it is applied, and when you later modify the feeder/machine geometry etc. this might appear as seemingly broken behavior. Look for applied offsets in the log at TRACE level (search for "applies feeder" or "applies part"). To get rid of any stored Z probing data, switch to Off and home the machine.

  • AfterHoming probes for fresh Z offsets per feeder/per part once after having homed the machine.

  • Each Time probes for Z offsets in all picks/placements. This is the most tolerant setting, but also likely the slowest. It can even equalize feeders and/or a PCB that are not planar in Z (a bit like bed leveling on a 3D printer).

Calibration Z Offset shows the last Z calibration result for this nozzle with the current nozzle tip attached. See also the Nozzle Tip Probing Configuration.

Calibrate Now performs the Z calibration. You must first setup the Nozzle Tip Probing Configuration.

Setting up a Probe Actuator

With the Contact Sense Method you need a sensor actuator.

Go to Head / Actuators, add a new probing Actuator.

On the Nozzle, assign the probe:

grafik

Setting up the G-Code

Issues and Solutions will automatically propose G-code for probing on some well known controllers/firmwares. If these solutions do not appear you need to do it manually.

On your GCodeDriver choose the new contact probing Actuator and define the ACTUATE_BOOLEAN_COMMAND for probing:

grafik

Note, the probed Z coordinate is not read through the actuator. Instead, OpenPnP uses a regular position report and gets the current Z coordinate from the response. Issues and Solutions should already have configured the employed POSITION_REPORT_COMMAND and POSITION_REPORT_REGEX for you.

Testing the Contact Probing

To test the contact probing, move your nozzle tip on top of an object not quite touching it. Then go to the machine controls, switch to the Actuators tab and click on the Probe Actuator:

grafik

You can now use the On and Off buttons to probe and (if applicable) retract.

Nozzle Tip Probing Configuration

Part Dimensions

The first pre-requisite for probing are the maximum Part Dimensions, defined in the Configuration tab:

Part Dimensions

Max. Part Diameter determines the diameter (or diagonal) of the largest part you ever expect to pick with this nozzle tip. Add a few millimeters on top of data sheet dimension for tolerances. This property will be used in present and future up-looking camera operations to restrict the region of interest (Auto-Focus, MaskCircle etc.).

Max. Part Height determines the height of the tallest part you ever expect to pick with this nozzle tip. Add a few tenths of a millimeter on top of data sheet dimension for tolerances. This property will be used to start probing above a part with unknown height. Furthermore, it will be used for dynamic Safe Z, again as long as a part height is unknown.

Tool Changer

As soon as at least one ContactProbeNozzle has an active probing method, the Tool Changer tab will show extra elements:

Tool Changer

Touch Location lets you define a special Z probing touch location. It will be the reference for all other Z coordinates on your machine, therefore it should represent a fundamental and "eternal" reference surface for your machine. At the same time it should be very close to the changer locations so the extra moves for Z calibration do not take much time.

Nozzle Tip Change and Z Calibrate

After capturing the X, Y coordinates with the camera, you must initially probe the reference Z coordinate with the middle button:

Probe

CAUTION: do not use the probe button later. You will lose your "eternal" Z reference!

Tool Changer Z Calibration

Auto Z Calibration determines when the Z calibration happens.

Auto Z Calibration

  • Manual switches automatic Z calibration off. You can manually calibrate and the obtained Z offset will be stored in the configuration (machine.xml). Note: Z calibration is per nozzle, i.e. Manual calibration assumes all nozzle tips have equal length and will be loaded consistently. This calibration can handle uneven nozzles in a multi-nozzle machine.
  • MachineHome performs automatic Z calibration if this nozzle tip is loaded when the machine is homed. Note: Z calibration is per nozzle, when other nozzle tips are later loaded to the same nozzle, no additional Z calibration is triggered, i.e. MachineHome calibration assumes all nozzle tips have equal length and will be loaded consistently. This calibration can handle uneven nozzles in a multi-nozzle machine, as well as inconsistent Z homing.
  • NozzleTipChange performs automatic Z calibration whenever this nozzle tip is loaded to a nozzle. In addition, Z calibration also happens if this nozzle tip is loaded when the machine is homed. Note: Z calibration is now per nozzle tip. This can handle everything, from uneven nozzles to inconsistent homing to uneven nozzle tips with different heights or inconsistent loading.

Fail Homing? If enabled, aborts the homing cycle when Z Calibration fails as part of it. If disabled, continues the homing cycle and only displays an error message.

Z (behind the Auto Z Calibration) indicates the last obtained Z calibration offset.

Reset removes the current Z calibration offset.

Calibrate now performs manual Z calibration.

Z Calibration and Safe Z

Z Calibration affects all the nozzle Z motion as well as the capturing of Z coordinates from the current nozzle position. But it does not affect Safe Z, as Safe Z is relative to the raw axis coordinate system, not the calibrated nozzle Z coordinate system. To balance a multi-nozzle machine's nozzles in Safe Z, use the Axis capture buttons instead.

Z Calibration inside the Tool Changer

The following does only apply, if Auto Z Calibration is set to NozzleTipChange, i.e. when Z calibration happens per nozzle tip and not per nozzle. For machines with uneven nozzle tips.

Z Calibration is referencing the coordinate system Z to the point of the nozzle tip (the red dashed line in the illustration below). This is obviously the most important Z reference point for a pick & place machine. However, when loading and unloading a nozzle tip, the point of the tip is not actually relevant, other features of the nozzle tip are: There are flanges etc. on the tip that come into contact with the changer slot and allow it to pressed on, or pulled off, these might be at different Z, as measured from the nozzle tip point (case B in the illustration below). And there is the coupling of the nozzle with the nozzle tip, these might be at different Z, as measured from the flange (case C in the illustration below).

nozzle_tip_different_Z_calibration

Case A and B may actually use the same changer slot Z coordinates, because the flange is at the same (uncalibrated) nozzle Z. Case B's nozzle tip is longer, so after Z calibration, B is lifted up a bit.

Case C however, because the nozzle is inserted less when coupling, needs a special slot configuration with higher-up (uncalibrated) Z coordinates, otherwise it would likely collide with the slot when pushed down as much as case A. After Z calibration, case C is lifted up to compensate for the lesser coupling depth.

When you initially capture the changer slot locations, the nozzle is not yet Z calibrated (or it is neutrally calibrated for the "unloaded" state i.e. the bare nozzle). These captured Z coordinates must not be made subject to Z calibration, as you can easily see, when you mentally try to load or unload case B or C with calibrated instead of uncalibrated Z. Therefore, OpenPnP voids the Z calibration immediately before unloading a nozzle tip.

Z Calibration for the bare Nozzle

For machines with very inconsistent Z homing and/or very uneven multiple nozzles, there must be a way to calibrate Z even before we can load any nozzle tips. There is a simple trick in OpenPNP to do that: just create a nozzle tip that is named "unloaded". The calibration system will automatically use this stand-in whenever the bare nozzle needs to be calibrated and compensated. The "unloaded" stand-in can be configured for Z calibration, like regular nozzle tips. The Z calibration will then be used for unloading/loading any nozzle tip. CAUTION: On a machine with very inconsistent Z homing, you must unload all the nozzle tips before exiting OpenPnP, power-cycling or homing the machine. On the next startup the bare nozzle can be measured as the first thing. The "unloaded" stand-in is explained in the similar context of nozzle tip runout calibration.

Cloning Settings

Cloning Settings

Among the other settings, the Z Calibration settings can be cloned to/from other nozzle tips, so you need to configure them only once. The Touch Location is automatically translated according to the First Location (along with the other locations).

Marking this nozzle tip as the Template makes the Touch Location Z the global machine reference Z.

Use the Clone Tool Changer Settings to all Nozzle Tips button to distribute the Z calibration settings to all the other nozzles.

Use the Callibrate all Touch Locations' Z to Template to reference them to the global machine reference Z.

See also the Nozzle Tip Changer page.

Clone this wiki locally