OpenPnP 2.0 Breaking Change

1,011 views
Skip to first unread message

Jason von Nieda

unread,
Nov 24, 2019, 5:03:30 PM11/24/19
to ope...@googlegroups.com
Hi all,

I've just merged a breaking change in I want to let you know about. Get the full details here: https://github.com/openpnp/openpnp/blob/develop/CHANGES.md#breaking-change-vacuum-valve-and-pump-actuation-remodel

In short, vacuum and pump control is now handled by actuators, rather than explicit commands on the GcodeDriver. This improves flexibility of vacuum handling and makes it possible to create interesting new Nozzles that do more than just turn vacuum on and off. As an example of the kind of flexibility that offers, there is a new Nozzle type that can detect when the part is on and immediately lift, instead of waiting for a long delay.

Your configuration will need to be migrated to this new model, but it's pretty easy. See instructions in the link above and the links within those instructions. I will also be updating the Setup and Calibration Guide in the next day or two to reflect the changes.

This work was done by @markmaker and I owe him a debt of gratitude for his hard work and long hours on this complex and large feature. Thank you Mark!

Thanks,
Jason



bert shivaan

unread,
Nov 24, 2019, 6:01:42 PM11/24/19
to OpenPnP
Are you saying the "pick" and "place" sections will no longer exist in the nozzles? So where I have specific M codes for each nozzle to lower,raise,vac on/off,blow on/off this has been moved to actuators?

So the correct actuator will be fired when the nozzle needs to pick or place the same way the m-codes were sent before?
So for my pneumatic head, all I need to do is create an actuator for each and copy the pick section into it?

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CA%2BQw0jxW-1cKUzpG0rD8Z_KTXHmvKbFhv%3DkaTZK3mufenY%3DS%2BA%40mail.gmail.com.

Jason von Nieda

unread,
Nov 24, 2019, 6:05:05 PM11/24/19
to ope...@googlegroups.com
You may be referring to the PICK_COMMAND and PLACE_COMMAND in GcodeDriver. This has been moved to the Nozzle.

So, to put it another way, now you have a vacuum actuator for each nozzle, and the nozzle will use the right one for three operations: turn vacuum on, turn vacuum off, and read vacuum level.

And in the same way, the PUMP_ON_COMMAND and PUMP_OFF_COMMANDs have been moved from GcodeDriver to an Actuator on Head.

Check out the docs linked in the update for basic instructions, and step by steps are coming soon.

Jason


Jason von Nieda

unread,
Nov 26, 2019, 1:51:21 AM11/26/19
to ope...@googlegroups.com

The Vacuum Sensing, Actuators, and Nozzles sections have all been updated, as well.

Please let me know if you think the instructions could be improved!

Thanks,
Jason

ma...@makr.zone

unread,
Nov 26, 2019, 3:14:50 AM11/26/19
to ope...@googlegroups.com

Thank you Jason.

Always a bit envious about in how few and simple words you manage to describe complex things so comprehensibly!

_Mark

Marek T.

unread,
Nov 26, 2019, 5:00:48 AM11/26/19
to OpenPnP
Yes, he's really perfect with this :-).
And also very appreciated that always fully understandable for non-native English speakers!

Mike M.

unread,
Nov 26, 2019, 7:00:39 AM11/26/19
to OpenPnP
Hello,
To do use this update Open PnP 2 needs to be updated first ? Correct?
Update does not work for me?

I download latest V2 and install over July version?
see enclosed.

Mike
OpenPnP - Update.png
About OpenPnP 2.png

Steven Doyle

unread,
Nov 26, 2019, 9:00:12 AM11/26/19
to OpenPnP
Hi all,

Has anyone setup the ContactProbeNozzle for a liteplacer machine ? I would like to know what the GCODE is for the probing actuator and what POSITION_REPORT_REGEX  should be.

Thanks !

Steve

Jason von Nieda

unread,
Nov 26, 2019, 10:08:36 AM11/26/19
to ope...@googlegroups.com
That's correct Mike - just download 2.0 and install it and that will switch you to the OpenPnP 2.0 branch. Your config will be saved in a different directory, so you can always go back easily.

Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

Peter Chaisty

unread,
Nov 26, 2019, 11:58:35 AM11/26/19
to OpenPnP
Thanks Jason

That's very neat and sensible.

Peter


On Sunday, 24 November 2019 22:03:30 UTC, Jason von Nieda wrote:

ma...@makr.zone

unread,
Nov 26, 2019, 12:18:34 PM11/26/19
to ope...@googlegroups.com

Hi Steve

see the PR Description, section "Instructions for Use" here:

https://github.com/openpnp/openpnp/pull/859

The examples there are from my Liteplacer with Smoothieware setup (except for the pump where I have a hysteresis solution, so the given pump on/off commands are fictitious).

If you have the TinyG instead, I guess you must translate the G-Code slightly.

If you're successful, please share :-)

_Mark

Mike M.

unread,
Nov 27, 2019, 10:28:26 AM11/27/19
to OpenPnP
Hi Mark/Jason

- change to this update-
Up to here it works;

If you already have one or more ReferenceNozzles set up, close OpenPNP, edit your machine.xml and replace all

<nozzle class="org.openpnp.machine.reference.ReferenceNozzle"
with
<nozzle class="org.openpnp.machine.reference.ContactProbeNozzle"

Start OpenPNP again and add a new probing Actuator for each Nozzle. On the Nozzle, assign the probe:

After modifying machine.xml  row 15 & 17
Error -
How to solve?

Mike

Jason von Nieda

unread,
Nov 27, 2019, 10:30:23 AM11/27/19
to ope...@googlegroups.com
Most likely just a syntax error. If you open the file in a syntax highlighting editor like Sublime it should make it clear what's wrong. If not, post the machine.xml here.

Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

Mike M.

unread,
Nov 27, 2019, 11:34:07 AM11/27/19
to OpenPnP
Solved - thanks Jason
Was my mistake in copy -paste...   

On Wednesday, 27 November 2019 16:30:23 UTC+1, Jason von Nieda wrote:
Most likely just a syntax error. If you open the file in a syntax highlighting editor like Sublime it should make it clear what's wrong. If not, post the machine.xml here.

Jason


To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

Mike M.

unread,
Nov 27, 2019, 12:12:30 PM11/27/19
to OpenPnP
But now this test -sensing is not working for me:

I enclose my machine file please review!
Thanks
Mike
machine.xml

Mike M.

unread,
Nov 27, 2019, 1:38:43 PM11/27/19
to OpenPnP
Here is my Trace file;

2019-11-27 19:22:09.577 Main DEBUG: Bienvenue, Bienvenido, Willkommen, Hello, Namaskar, Welkom, Bonjour to OpenPnP version 2019-11-26_19-29-03.4d29b3f.
2019-11-27 19:22:16.887 ReferenceMachine DEBUG: setEnabled(true)
..........
2019-11-27 19:32:35.606 ReferenceMachine DEBUG: setHomed(true)
2019-11-27 19:33:50.816 ReferenceActuator DEBUG: ON_N1_VAC.actuate(true)
2019-11-27 19:33:50.817 GcodeDriver DEBUG: sendCommand(M800, 25000)...
2019-11-27 19:33:50.829 GcodeDriver DEBUG: sendCommand(serial://COM4 M800, 25000) => [ok]
2019-11-27 19:34:02.769 ReferenceActuator DEBUG: ON_N1_VAC.actuate(false)
2019-11-27 19:34:02.769 GcodeDriver DEBUG: sendCommand(M801, 25000)...
2019-11-27 19:34:02.781 GcodeDriver DEBUG: sendCommand(serial://COM4 M801, 25000) => [ok]
2019-11-27 19:34:08.711 ReferenceActuator DEBUG: ON_N2_VAC.actuate(true)
2019-11-27 19:34:08.711 GcodeDriver DEBUG: sendCommand(M802, 25000)...
2019-11-27 19:34:08.714 GcodeDriver DEBUG: sendCommand(serial://COM4 M802, 25000) => [ok]
2019-11-27 19:34:10.668 ReferenceActuator DEBUG: ON_N2_VAC.actuate(false)
2019-11-27 19:34:10.669 GcodeDriver DEBUG: sendCommand(M803, 25000)...
2019-11-27 19:34:10.671 GcodeDriver DEBUG: sendCommand(serial://COM4 M803, 25000) => [ok]
2019-11-27 19:34:39.488 ReferenceMachine DEBUG: homing machine
2019-11-27 19:34:39.488 ReferenceMachine DEBUG: setHomed(false)
2019-11-27 19:34:39.489 ReferenceHead DEBUG: H1.home()
2019-11-27 19:34:39.489 GcodeDriver DEBUG: sendCommand(G28 Z0, -1)...
2019-11-27 19:34:40.104 GcodeDriver DEBUG: sendCommand(serial://COM4 G28 Z0, -1) => [ok]
2019-11-27 19:34:40.105 GcodeDriver DEBUG: sendCommand(G28 Y0 X0, -1)...
2019-11-27 19:34:42.377 GcodeDriver DEBUG: sendCommand(serial://COM4 G28 Y0 X0, -1) => [ok]
2019-11-27 19:34:42.377 GcodeDriver DEBUG: sendCommand(G28.3 Z0, -1)...
2019-11-27 19:34:42.382 GcodeDriver DEBUG: sendCommand(serial://COM4 G28.3 Z0, -1) => [ok]
2019-11-27 19:34:42.382 GcodeDriver DEBUG: sendCommand(G92X0Y0Z0, -1)...
2019-11-27 19:34:42.383 GcodeDriver DEBUG: sendCommand(serial://COM4 G92X0Y0Z0, -1) => [ok]
2019-11-27 19:34:42.384 ReferenceFiducialLocator DEBUG: Looking for FIDUCIAL-HOME at (57.000000, 4.500000, 0.000000, 0.000000 mm)
2019-11-27 19:34:42.384 ReferenceHead DEBUG: H1.moveToSafeZ(0.9)
2019-11-27 19:34:42.384 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.9)
2019-11-27 19:34:42.384 ReferenceNozzle DEBUG: N2.moveToSafeZ(0.9)
2019-11-27 19:34:42.385 ReferenceCamera DEBUG: DOWN.moveToSafeZ(0.9)
2019-11-27 19:34:42.385 ReferenceActuator DEBUG: ON_N1_VAC.moveToSafeZ(0.9)
2019-11-27 19:34:42.385 ReferenceActuator DEBUG: ON_N2_VAC.moveToSafeZ(0.9)
2019-11-27 19:34:42.385 ReferenceActuator DEBUG: VAC_Read_N1.moveToSafeZ(0.9)
2019-11-27 19:34:42.385 ReferenceActuator DEBUG: VAC_Read_N2.moveToSafeZ(0.9)
2019-11-27 19:34:42.386 ReferenceActuator DEBUG: V_PUMP1.moveToSafeZ(0.9)
2019-11-27 19:34:42.386 ReferenceCamera DEBUG: moveTo((57.000000, 4.500000, NaN, 0.000000 mm), 0.9)
2019-11-27 19:34:42.386 GcodeDriver DEBUG: sendCommand(G1 X57.0000 Y4.5000   F13500, 25000)...
2019-11-27 19:34:42.388 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X57.0000 Y4.5000   F13500, 25000) => [ok]
2019-11-27 19:34:42.388 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:43.067 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:43.067 ReferenceCamera DEBUG: moveTo((57.000000, 4.500000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:43.067 ReferenceHead DEBUG: H1.moveToSafeZ(0.9)
2019-11-27 19:34:43.068 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.9)
2019-11-27 19:34:43.068 ReferenceNozzle DEBUG: N2.moveToSafeZ(0.9)
2019-11-27 19:34:43.069 ReferenceCamera DEBUG: DOWN.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceActuator DEBUG: ON_N1_VAC.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceActuator DEBUG: ON_N2_VAC.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceActuator DEBUG: VAC_Read_N1.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceActuator DEBUG: VAC_Read_N2.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceActuator DEBUG: V_PUMP1.moveToSafeZ(0.9)
2019-11-27 19:34:43.070 ReferenceCamera DEBUG: moveTo((57.000000, 4.500000, NaN, 0.000000 mm), 0.9)
2019-11-27 19:34:43.071 ReferenceCamera DEBUG: moveTo((57.000000, 4.500000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:43.101 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:43.102 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:43.113 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:43.393 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:43.395 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:43.401 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:43.623 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.284294, 5.901590, 0.000000, 0.000000 mm)
2019-11-27 19:34:43.625 ReferenceCamera DEBUG: moveTo((56.284294, 5.901590, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:43.626 GcodeDriver DEBUG: sendCommand(G1 X56.2843 Y5.9016   F13500, 25000)...
2019-11-27 19:34:43.628 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X56.2843 Y5.9016   F13500, 25000) => [ok]
2019-11-27 19:34:43.629 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:43.742 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:43.742 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.284294, 5.901590, 0.000000, 0.000000 mm)
2019-11-27 19:34:43.742 ReferenceCamera DEBUG: moveTo((56.284294, 5.901590, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:43.775 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:43.775 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:43.777 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:44.054 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:44.055 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:44.060 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:44.272 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.135189, 5.752485, 0.000000, 0.000000 mm)
2019-11-27 19:34:44.273 ReferenceCamera DEBUG: moveTo((56.135189, 5.752485, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:44.273 GcodeDriver DEBUG: sendCommand(G1 X56.1352 Y5.7525   F13500, 25000)...
2019-11-27 19:34:44.275 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X56.1352 Y5.7525   F13500, 25000) => [ok]
2019-11-27 19:34:44.275 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:44.318 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:44.318 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.135189, 5.752485, 0.000000, 0.000000 mm)
2019-11-27 19:34:44.318 ReferenceCamera DEBUG: moveTo((56.135189, 5.752485, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:44.346 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:44.346 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:44.349 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:44.626 ReferenceActuator DEBUG: UpCamLights.actuate(false)
2019-11-27 19:34:44.626 GcodeDriver DEBUG: sendCommand(M811, 25000)...
2019-11-27 19:34:44.629 GcodeDriver DEBUG: sendCommand(serial://COM4 M811, 25000) => [ok]
2019-11-27 19:34:44.838 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.284294, 5.722664, 0.000000, 0.000000 mm)
2019-11-27 19:34:44.838 ReferenceCamera DEBUG: moveTo((56.284294, 5.722664, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:44.839 GcodeDriver DEBUG: sendCommand(G1 X56.2843 Y5.7227   F13500, 25000)...
2019-11-27 19:34:44.841 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X56.2843 Y5.7227   F13500, 25000) => [ok]
2019-11-27 19:34:44.842 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:44.878 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:44.878 ReferenceFiducialLocator DEBUG: FIDUCIAL-HOME located at (56.284294, 5.722664, 0.000000, 0.000000 mm)
2019-11-27 19:34:44.878 ReferenceCamera DEBUG: moveTo((56.284294, 5.722664, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:44.880 GcodeDriver DEBUG: sendCommand(G92X0Y0, -1)...
2019-11-27 19:34:44.882 GcodeDriver DEBUG: sendCommand(serial://COM4 G92X0Y0, -1) => [ok]
2019-11-27 19:34:44.882 ReferenceNozzle DEBUG: N1.home()
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N1.home() nozzle tip Juki 503_N1 calibration neeeded
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home()
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home() nozzle tip Juki 504_N2 calibration reset
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home() nozzle tip Juki 503_N2 calibration neeeded
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home() nozzle tip Juki 506_N2 calibration reset
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home() nozzle tip Juki 502_N2 calibration reset
2019-11-27 19:34:44.883 ReferenceNozzle DEBUG: N2.home() nozzle tip Juki 505_N2 calibration reset
2019-11-27 19:34:44.886 ReferenceMachine DEBUG: setHomed(true)
2019-11-27 19:34:50.718 ReferenceNozzle DEBUG: N1.moveTo((88.400000, -59.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:50.719 GcodeDriver DEBUG: sendCommand(G1 X100.0000    F13500, 25000)...
2019-11-27 19:34:50.721 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X100.0000    F13500, 25000) => [ok]
2019-11-27 19:34:50.721 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:51.617 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:53.049 ReferenceNozzle DEBUG: N1.moveTo((88.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:53.050 GcodeDriver DEBUG: sendCommand(G1  Y100.0000   F13500, 25000)...
2019-11-27 19:34:53.052 GcodeDriver DEBUG: sendCommand(serial://COM4 G1  Y100.0000   F13500, 25000) => [ok]
2019-11-27 19:34:53.052 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:54.888 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:57.578 ReferenceNozzle DEBUG: N1.moveTo((98.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:57.579 GcodeDriver DEBUG: sendCommand(G1 X110.0000    F13500, 25000)...
2019-11-27 19:34:57.582 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X110.0000    F13500, 25000) => [ok]
2019-11-27 19:34:57.582 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:57.869 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:57.869 ReferenceNozzle DEBUG: N1.moveTo((108.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:57.870 GcodeDriver DEBUG: sendCommand(G1 X120.0000    F13500, 25000)...
2019-11-27 19:34:57.880 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X120.0000    F13500, 25000) => [ok]
2019-11-27 19:34:57.880 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:58.163 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:58.163 ReferenceNozzle DEBUG: N1.moveTo((118.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:58.164 GcodeDriver DEBUG: sendCommand(G1 X130.0000    F13500, 25000)...
2019-11-27 19:34:58.167 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X130.0000    F13500, 25000) => [ok]
2019-11-27 19:34:58.167 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:58.452 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:58.452 ReferenceNozzle DEBUG: N1.moveTo((128.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:58.452 GcodeDriver DEBUG: sendCommand(G1 X140.0000    F13500, 25000)...
2019-11-27 19:34:58.457 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X140.0000    F13500, 25000) => [ok]
2019-11-27 19:34:58.458 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:58.741 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:58.742 ReferenceNozzle DEBUG: N1.moveTo((138.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:58.742 GcodeDriver DEBUG: sendCommand(G1 X150.0000    F13500, 25000)...
2019-11-27 19:34:58.745 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X150.0000    F13500, 25000) => [ok]
2019-11-27 19:34:58.745 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:59.028 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:59.029 ReferenceNozzle DEBUG: N1.moveTo((148.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:59.029 GcodeDriver DEBUG: sendCommand(G1 X160.0000    F13500, 25000)...
2019-11-27 19:34:59.036 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X160.0000    F13500, 25000) => [ok]
2019-11-27 19:34:59.037 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:59.320 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:59.321 ReferenceNozzle DEBUG: N1.moveTo((158.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:59.322 GcodeDriver DEBUG: sendCommand(G1 X170.0000    F13500, 25000)...
2019-11-27 19:34:59.323 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X170.0000    F13500, 25000) => [ok]
2019-11-27 19:34:59.323 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:59.607 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:34:59.608 ReferenceNozzle DEBUG: N1.moveTo((168.400000, 41.000000, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:34:59.608 GcodeDriver DEBUG: sendCommand(G1 X180.0000    F13500, 25000)...
2019-11-27 19:34:59.611 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X180.0000    F13500, 25000) => [ok]
2019-11-27 19:34:59.611 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:34:59.895 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:03.894 ReferenceHead DEBUG: H1.moveToSafeZ(0.9)
2019-11-27 19:35:03.895 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.9)
2019-11-27 19:35:03.895 ReferenceNozzle DEBUG: N2.moveToSafeZ(0.9)
2019-11-27 19:35:03.895 ReferenceCamera DEBUG: DOWN.moveToSafeZ(0.9)
2019-11-27 19:35:03.895 ReferenceActuator DEBUG: ON_N1_VAC.moveToSafeZ(0.9)
2019-11-27 19:35:03.896 ReferenceActuator DEBUG: ON_N2_VAC.moveToSafeZ(0.9)
2019-11-27 19:35:03.896 ReferenceActuator DEBUG: VAC_Read_N1.moveToSafeZ(0.9)
2019-11-27 19:35:03.896 ReferenceActuator DEBUG: VAC_Read_N2.moveToSafeZ(0.9)
2019-11-27 19:35:03.896 ReferenceActuator DEBUG: V_PUMP1.moveToSafeZ(0.9)
2019-11-27 19:35:03.896 ReferenceCamera DEBUG: moveTo((176.565048, 95.691057, NaN, 0.000000 mm), 0.9)
2019-11-27 19:35:03.897 GcodeDriver DEBUG: sendCommand(G1 X176.5650 Y95.6911   F13500, 25000)...
2019-11-27 19:35:03.900 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X176.5650 Y95.6911   F13500, 25000) => [ok]
2019-11-27 19:35:03.900 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:04.111 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:04.111 ReferenceCamera DEBUG: moveTo((176.565048, 95.691057, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:07.558 ReferenceHead DEBUG: H1.moveToSafeZ(0.9)
2019-11-27 19:35:07.559 ReferenceNozzle DEBUG: N1.moveToSafeZ(0.9)
2019-11-27 19:35:07.559 ReferenceNozzle DEBUG: N2.moveToSafeZ(0.9)
2019-11-27 19:35:07.559 ReferenceCamera DEBUG: DOWN.moveToSafeZ(0.9)
2019-11-27 19:35:07.559 ReferenceActuator DEBUG: ON_N1_VAC.moveToSafeZ(0.9)
2019-11-27 19:35:07.560 ReferenceActuator DEBUG: ON_N2_VAC.moveToSafeZ(0.9)
2019-11-27 19:35:07.560 ReferenceActuator DEBUG: VAC_Read_N1.moveToSafeZ(0.9)
2019-11-27 19:35:07.560 ReferenceActuator DEBUG: VAC_Read_N2.moveToSafeZ(0.9)
2019-11-27 19:35:07.561 ReferenceActuator DEBUG: V_PUMP1.moveToSafeZ(0.9)
2019-11-27 19:35:07.562 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:07.562 GcodeDriver DEBUG: sendCommand(G1 X188.1650 Y154.6911   F13500, 25000)...
2019-11-27 19:35:07.565 GcodeDriver DEBUG: sendCommand(serial://COM4 G1 X188.1650 Y154.6911   F13500, 25000) => [ok]
2019-11-27 19:35:07.565 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:08.704 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:08.704 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, 0.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:12.585 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -10.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:12.586 GcodeDriver DEBUG: sendCommand(G1   Z-10.0000  F13500, 25000)...
2019-11-27 19:35:12.588 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-10.0000  F13500, 25000) => [ok]
2019-11-27 19:35:12.588 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:12.914 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:13.432 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -20.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:13.434 GcodeDriver DEBUG: sendCommand(G1   Z-20.0000  F13500, 25000)...
2019-11-27 19:35:13.436 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-20.0000  F13500, 25000) => [ok]
2019-11-27 19:35:13.437 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:13.762 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:22.838 ReferenceActuator DEBUG: ON_N1_VAC.actuate(true)
2019-11-27 19:35:22.838 GcodeDriver DEBUG: sendCommand(M800, 25000)...
2019-11-27 19:35:22.841 GcodeDriver DEBUG: sendCommand(serial://COM4 M800, 25000) => [ok]
2019-11-27 19:35:28.382 ReferenceActuator DEBUG: ON_N1_VAC.actuate(false)
2019-11-27 19:35:28.382 GcodeDriver DEBUG: sendCommand(M801, 25000)...
2019-11-27 19:35:28.385 GcodeDriver DEBUG: sendCommand(serial://COM4 M801, 25000) => [ok]
2019-11-27 19:35:40.220 ReferenceActuator DEBUG: V_PUMP1.actuate(true)
2019-11-27 19:35:40.220 GcodeDriver DEBUG: sendCommand(M808 ; turn on pump, 25000)...
2019-11-27 19:35:40.224 GcodeDriver DEBUG: sendCommand(serial://COM4 M808 ; turn on pump, 25000) => [ok]
2019-11-27 19:35:52.120 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -19.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:52.120 GcodeDriver DEBUG: sendCommand(G1   Z-19.0000  F13500, 25000)...
2019-11-27 19:35:52.123 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-19.0000  F13500, 25000) => [ok]
2019-11-27 19:35:52.123 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:52.213 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:52.929 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -18.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:52.930 GcodeDriver DEBUG: sendCommand(G1   Z-18.0000  F13500, 25000)...
2019-11-27 19:35:52.935 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-18.0000  F13500, 25000) => [ok]
2019-11-27 19:35:52.935 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:53.026 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:53.383 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -17.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:53.385 GcodeDriver DEBUG: sendCommand(G1   Z-17.0000  F13500, 25000)...
2019-11-27 19:35:53.389 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-17.0000  F13500, 25000) => [ok]
2019-11-27 19:35:53.389 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:53.480 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:55.662 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -18.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:55.662 GcodeDriver DEBUG: sendCommand(G1   Z-18.0000  F13500, 25000)...
2019-11-27 19:35:55.664 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-18.0000  F13500, 25000) => [ok]
2019-11-27 19:35:55.664 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:55.755 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:35:56.555 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -19.000000, 0.000000 mm), 0.9)
2019-11-27 19:35:56.556 GcodeDriver DEBUG: sendCommand(G1   Z-19.0000  F13500, 25000)...
2019-11-27 19:35:56.558 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-19.0000  F13500, 25000) => [ok]
2019-11-27 19:35:56.558 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:35:56.648 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:05.596 ReferenceActuator DEBUG: ON_N1_VAC.actuate(true)
2019-11-27 19:36:05.596 GcodeDriver DEBUG: sendCommand(M800, 25000)...
2019-11-27 19:36:05.598 GcodeDriver DEBUG: sendCommand(serial://COM4 M800, 25000) => [ok]
2019-11-27 19:36:12.839 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -18.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:12.840 GcodeDriver DEBUG: sendCommand(G1   Z-18.0000  F13500, 25000)...
2019-11-27 19:36:12.842 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-18.0000  F13500, 25000) => [ok]
2019-11-27 19:36:12.842 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:12.933 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:13.405 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -17.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:13.406 GcodeDriver DEBUG: sendCommand(G1   Z-17.0000  F13500, 25000)...
2019-11-27 19:36:13.409 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-17.0000  F13500, 25000) => [ok]
2019-11-27 19:36:13.409 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:13.499 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:13.654 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -16.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:13.654 GcodeDriver DEBUG: sendCommand(G1   Z-16.0000  F13500, 25000)...
2019-11-27 19:36:13.658 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-16.0000  F13500, 25000) => [ok]
2019-11-27 19:36:13.659 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:13.750 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:13.855 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -15.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:13.855 GcodeDriver DEBUG: sendCommand(G1   Z-15.0000  F13500, 25000)...
2019-11-27 19:36:13.858 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-15.0000  F13500, 25000) => [ok]
2019-11-27 19:36:13.858 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:13.947 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:14.099 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -14.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:14.099 GcodeDriver DEBUG: sendCommand(G1   Z-14.0000  F13500, 25000)...
2019-11-27 19:36:14.102 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-14.0000  F13500, 25000) => [ok]
2019-11-27 19:36:14.102 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:14.194 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:14.311 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -13.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:14.312 GcodeDriver DEBUG: sendCommand(G1   Z-13.0000  F13500, 25000)...
2019-11-27 19:36:14.315 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-13.0000  F13500, 25000) => [ok]
2019-11-27 19:36:14.315 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:14.412 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:14.519 ReferenceNozzle DEBUG: N1.moveTo((176.565048, 95.691057, -12.000000, 0.000000 mm), 0.9)
2019-11-27 19:36:14.520 GcodeDriver DEBUG: sendCommand(G1   Z-12.0000  F13500, 25000)...
2019-11-27 19:36:14.521 GcodeDriver DEBUG: sendCommand(serial://COM4 G1   Z-12.0000  F13500, 25000) => [ok]
2019-11-27 19:36:14.522 GcodeDriver DEBUG: sendCommand(M400 ; Wait for moves to complete before returning, 25000)...
2019-11-27 19:36:14.612 GcodeDriver DEBUG: sendCommand(serial://COM4 M400 ; Wait for moves to complete before returning, 25000) => [ok]
2019-11-27 19:36:22.505 GcodeDriver DEBUG: sendCommand(M105 : Read Vacuum N1, 25000)...
2019-11-27 19:36:22.522 GcodeDriver DEBUG: sendCommand(serial://COM4 M105 : Read Vacuum N1, 25000) => [ok N1:282.0 /0.0 @0 N2:630.7 /0.0 @0]
2019-11-27 19:36:22.523 ReferenceActuator DEBUG: VAC_Read_N1.read(): 630.7

ma...@makr.zone

unread,
Nov 27, 2019, 2:40:47 PM11/27/19
to OpenPnP
Hi Mike

Do you have a Nozzle with contact probe?

I know only of Liteplacer that has this. The nozzle is spring loaded and there is a limit-switch that is pressed, when the nozzle tip touches the surface and pushes up the whole column:



If you look closely, you might see it in this GIF:

ContactProbe.gif



_Mark

ma...@makr.zone

unread,
Nov 27, 2019, 2:42:56 PM11/27/19
to OpenPnP
The GIF does not work. Retry as attachment.
ContactProbe.gif

ma...@makr.zone

unread,
Nov 27, 2019, 2:44:57 PM11/27/19
to OpenPnP

Mike M.

unread,
Nov 27, 2019, 2:47:42 PM11/27/19
to OpenPnP
No - I do not have it!

Mike M.

unread,
Nov 27, 2019, 2:50:08 PM11/27/19
to OpenPnP
but I removed all that from Open PnP was no use!
Mike

ma...@makr.zone

unread,
Nov 27, 2019, 2:58:06 PM11/27/19
to ope...@googlegroups.com

But isn't this your video? That's even nicer!!

https://www.youtube.com/watch?v=DO8lbh_2isU

https://groups.google.com/d/msg/openpnp/S7pDpZGIjmk/Soa8hZSqAAAJ

Without a probe, I'm afraid you can't use the ContactProbeNozzle.

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/11eec0a7-05ba-4668-af12-0c79a9da14fc%40googlegroups.com.

Mike M.

unread,
Nov 27, 2019, 3:12:24 PM11/27/19
to OpenPnP
Hi,
Yes but that was Year 2017 - now we are entering 2020 !!
I thot this is vacuum Z sensing upgrade ?
Mike

On Wednesday, 27 November 2019 20:58:06 UTC+1, ma...@makr.zone wrote:

But isn't this your video? That's even nicer!!

https://www.youtube.com/watch?v=DO8lbh_2isU

https://groups.google.com/d/msg/openpnp/S7pDpZGIjmk/Soa8hZSqAAAJ

Without a probe, I'm afraid you can't use the ContactProbeNozzle.

_Mark


Am 27.11.2019 um 20:47 schrieb Mike M.:
No - I do not have it!

On Wednesday, 27 November 2019 20:44:57 UTC+1, ma...@makr.zone wrote:
Nope. Here's the file:
--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

Mike M.

unread,
Nov 27, 2019, 3:21:51 PM11/27/19
to OpenPnP
Mark
I think it CAN be done - IT IS DUABLE with my SMC vacuum displays:
Here see the picture enclosed: One for each nozzle
I am using analog output now for pressure sensing to smoothe thermistor pins ...
But this SMC vacuum sensor can be programmed and they have 2 more outputs...
Manual enclosed - see Pressure switch output

Mike
OpenPnP Two nozzle vacuum,.jpg
SMC ZSE40A-01-R-M -Code.png
Operation Manual ZISE40A.eng.pdf

Mike M.

unread,
Nov 27, 2019, 3:24:49 PM11/27/19
to OpenPnP
Here:

Mike M.

unread,
Nov 27, 2019, 3:40:32 PM11/27/19
to OpenPnP
Mark
First I would ask you to look at my machine file why this Z lovering and start sensing is not working for me??
My very latest machine enclosed herewith

On Wednesday, 27 November 2019 18:12:30 UTC+1, Mike M. wrote:
machine.xml

ma...@makr.zone

unread,
Nov 28, 2019, 2:05:44 AM11/28/19
to ope...@googlegroups.com

Hi Mike,

> I thot this is vacuum Z sensing upgrade ?

I remember there was a discussion about using the vacuum sensing to detect contact. The nozzle tip would be lowered very slowly while taking "sniffs" and measuring the vaccum level, detecting contact as soon as the nozzle tip is blocked by the surface.

But the ContactProbeNozzle is not about that. This nozzle will probe every pick and every place, so it must be very fast. It must use some sort of mechanical contact sensor. Vacuum "sniffing" is very slow and won't work, if you have the part on the nozzle i.e. in a place action.

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/10a0eeaf-d7a1-4139-b2d3-590507952b58%40googlegroups.com.

Jim

unread,
Nov 28, 2019, 4:00:42 AM11/28/19
to OpenPnP
But vaccum height sensing would be something that everyone (with spring loaded nozzles) could use - for pcb height, feeder strip height, etc.
It would not be super accurate but very helpful and not so expensive like a $1000 laser height sensor most comercial machines have.
The height measurement should be anchored in the gui (e.g. for pcb or feeder setup).

Mike M.

unread,
Nov 28, 2019, 5:18:16 AM11/28/19
to OpenPnP
@Mark
Than this upgrade to Open PnP2 is related to OpenPlacer type of Z only with single nozzle / Samsung -With limit switch On Z?
Am I correct?
I will make a short video to show how this SMC vacuum sensor works - I hope I can show that it is fast enough for confirming part is on the nozzle and to Sense the pickup Z high !
- Sensing Z it’s only needed when setting up feeders, PCB and other stuff on PnP..., so it does not need to be very fast and it should not be needed during production run to my understanding of operation of PnP machine...
- For confirmation of pickup vacuum value change is needed only /per nozzle and placement vacuum sensing should not be needed if “puff” valve opens On time as it should- no way part would remain on Nozzle.

I’m not a software Guy or programmer - when I started this PnP with LightPlacer and TinyG, I moved to Open PnP because I had 2 nozzles and I could not Z limit switch /on two nozzle setup,.. so I moved to Smoothie and Open PnP (See above video date - 2017) and still today this is unsolved to my understanding.

Final question - how than this new feature suppose to work with two heads or Quadro head ?

Mike


ma...@makr.zone

unread,
Nov 28, 2019, 5:20:15 AM11/28/19
to ope...@googlegroups.com

Hi Jim

Agree completely, but Z height probing (as opposed to contact probing) is a different, more general use case, one that is planned to be added later.

Jason has already introduced the Z-probe Actuator on the head for that:

Different ways to probe: laser, vacuum sniffing, stereoscopic (and also the nozzle with contact probe) have been discussed. The idea is to allow probing generically wherever a Z value must be captured. So we probably need another one of these blue-framed buttons, something like this:

It is not so easy to do this generically. The probe takes many forms and may have its own X, Y offset from the OpenPNP coordinate system (i.e. from the Camera). It could be a completely separate device (in case of a laser) or it could be the down-looking camera (stereoscopic) or it could be a nozzle (with vacuum sniffing or with contact probe) and perhaps only one nozzle out of multiple can do it and/or only one nozzle tip is calibrated for sniffing. So aiming and deploying the probe is wildly different and may involve X, Y moves (in case of the stereoscopic method, the camera would have to quickly move laterally and take two shots), it may even involve changing the nozzle tip for consistent vacuum sniffing.

The idea is to both support the cheap way with stuff already on the machine (vacuum sniffing, stereoscopic) and the enhanced way with precision laser ranging etc. through he same common interface. So we can build many useful solutions on top of that common interface.

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

ma...@makr.zone

unread,
Nov 28, 2019, 7:49:13 AM11/28/19
to ope...@googlegroups.com

@Mike M.

> Than this upgrade to Open PnP2 is related to OpenPlacer type of Z only with single nozzle / Samsung -With limit switch On Z? Am I correct?

Note: it is the Liteplacer, not Openplacer.

There are multiple perspectives: from a purely "what new features do I get right now?" standpoint, you are more or less right. If you don't have the sensor for a ContactProbeNozzle, there are only small benefits right now:

  • You can now also switch the valve and pump from the machine controls. Useful for measuring vacuum levels that you can then use for the part on/part off ranges.
  • You can independently enable "isPartOn" and "isPartOff" checks (by setting both values of that range to zero).
  • For new users, I believe the setup is now easier, more logical and also more uniform. Once you know how to setup one Actuator, you have the knowledge for all of them.

As a basis for further development, the upgrade is much more. See the other Mail to Jim for a glimpse. There are many other ideas. You have to read the PR discussion including some previous PRs to understand.

> I will make a short video to show how this SMC vacuum sensor works - I hope I can show that it is fast enough for confirming part is on the nozzle and to Sense the pickup Z high !

Yes, this is valuable. Thanks.

> Final question - how than this new feature suppose to work with two heads or Quadro head ?

The ContactProbeNozzle? Same way it does with one. Why have you removed the hall sensors? I'm sure it would have worked nicely with those two.

_Mark

Marek T.

unread,
Nov 28, 2019, 8:14:15 AM11/28/19
to OpenPnP
This is never a problem to fast check the value of vacuum.
Real problem is that since the nozzle touches to the part the vacuum starts to be built and it takes relatively long time.
The same situation is when the nozzle touches to the tape covering the part (or other surface but not the part). You will get info the part is On, raise the nozzle and to be sure we should check the vacuum again to confirm it. But in case of the tape touching, after nozzle rasing the vacuum starts droping, and in case of Juki502 it is at least 80ms to untill vacuum gets partOff value.
Simple test is to compile the loop and check vacuums in some 10ms time distances to see how it changes.

I know it is maybe litle off topic but very related. And generally using vac checks in pnp is making the oprations very slow. I can't understand how works machines having 10K cph and vacuum testings.
But I already understand why Bert is not using vacuum tests in his machine, it took me long time but I got it :-).

ma...@makr.zone

unread,
Nov 28, 2019, 8:28:15 AM11/28/19
to ope...@googlegroups.com

> to be sure we should check the vacuum again to confirm it. ... You will get info the part is On, raise the nozzle and to be sure we should check the vacuum again to confirm it.

That is already improved in OpenPNP 2.0, because it now lifts the nozzle, before checking. Unless you have a superfast Z, this already adds some time for the vacuum value to deteriorate if no part was picked. So you don't need to enter a long extra dwell time for that ... but you still can if you have superfast Z as with your pneumatic "shooters" ;-).

This not only detects when the covering tape was still on, but also when no part was in the pocket and the tip smooched the pocket bottom. Like after a tape feed error perhaps or with an empty cut strip or tray.

_Mark

Marek T.

unread,
Nov 28, 2019, 8:51:08 AM11/28/19
to OpenPnP
I know it is improved in 2.0. Not so good as I personally think it could be done but much more logical than in 1.0.

Sure, the situation of empty pocket is identical like not uncovered part (covered by the tape) of course.
But I'm close to oppinion that it is better (faster) to don't check vacuum after lifting at all but confirm it over the bottom vision using the script checking the size of the part (runScript stage). And automaticaly pick again if part is missing. It is saving some 80-100ms (depend on nozzle, as smaller as longer) at each part pick. Re-picking are rather rare but vac check must be done at each pick - so remowing it should save a lot of time in total.
Unfortunately scripting is also not very fast, so I'm thinking to create a new stage hoping it has a chance to be faster.

Mike M.

unread,
Nov 28, 2019, 9:15:02 AM11/28/19
to OpenPnP
Hello Mark,
Thank you for your reply and I DO appriciate your work on Open PnP you guys do magic!

Here are two videos which I just made with above discribed sensors I have on my Open PnP.
1) Just display values - no output preset, but Analog out to Smoothie termistor pins - If you look at the picture above reading could be seen from Open PnP.
2) With preset value - 12.00 units (units can be preset in SMC sensor) and change Output to O1
Sensor has 2 outputs+ Analog read output... https://youtu.be/62G2wHviVoM
On left right corner on Nozzle 1 ONLY settings were done -turns Red.
For settings which can be made see manual enclose.

I purchased this two sensors from eBay becouse they were cheeper than if I was making new PCB with soldering parts to it - they are not new but working great.

I hope this helps!
Mike
Operation Manual ZISE40A.eng – kopija.pdf
SMC vacuum ISE40_ZSE40.pdf

Mike M.

unread,
Nov 28, 2019, 9:24:04 AM11/28/19
to OpenPnP
Why I could not use Output 1 as a probe?

ma...@makr.zone

unread,
Nov 28, 2019, 11:20:54 AM11/28/19
to ope...@googlegroups.com

Yes, Marek this might be right for your powerful machine with professional vacuum system. But most hobby machines have weak "aquarium" vacuum pumps that will be completely depleted if the nozzle tip valve is left open so long with no part on it. Especially if you have a multi-nozzle machine, that may pick another part before going to the bottom camera. Even worse: when the vacuum dies down, the other nozzle(s) will lose their (potentially expensive) parts too!

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

ma...@makr.zone

unread,
Nov 28, 2019, 11:34:28 AM11/28/19
to ope...@googlegroups.com

For 2) Frankly, Mike, I think this is way too slow to use for each and every pick.

While I made it and still think it is useful, you shouldn't overestimate the benefit of the ContactProbeNozzle. I hope it will be useful for the passives that I hope to be able to place without bottom vision. Then it is nice you don't have to setup the part height precisely for these numerous feeders. 

But for all the parts that use bottom vision, you need to setup part heights quite precisely. Otherwise you get focal plane/parallax errors. So the ContactProbeNozzle has not much benefit there (yet).

You should be patient for the real Z probing.

_Mark

bert shivaan

unread,
Nov 28, 2019, 12:07:56 PM11/28/19
to OpenPnP
Thanks for the credit Marek, but I can't say I was thinking that. My commercial machine worked that way so I just kept it going like that. My commercial machine only took seconds at most to load 6 nozzles and grab a pic of each. It could decide faster than I could if it had a part.

Marek T.

unread,
Nov 28, 2019, 12:18:05 PM11/28/19
to OpenPnP
Yes, I know you were forced with your machine setup to work as you work... But I think that this method really makes sense - and I'm gonna to test it soon.

Mike M.

unread,
Nov 28, 2019, 2:46:15 PM11/28/19
to OpenPnP
@Marek - good news - so I am not alone with this.....

@Mark/ Jason
My add feeder "+" does not work after this update - OpenPnP 2.0 Breaking Change
I attach screenshot here;

How can I resolve this?
Can you give me some hints? sujestion what shall I try ?

Thanks
Mike

Jason von Nieda

unread,
Nov 28, 2019, 3:38:10 PM11/28/19
to ope...@googlegroups.com
This seems to be working fine for me. Can you check your OpenPnP.log and see if there is an error there when you try this?


Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

Mike M.

unread,
Nov 28, 2019, 4:02:19 PM11/28/19
to OpenPnP
Jason
I have here two folders - one from OpenPnP 1.0
and V2. which I havew over-writen when installer asked destination of files.
Which files might be missing here ?

Mike

On Thursday, 28 November 2019 21:38:10 UTC+1, Jason von Nieda wrote:
This seems to be working fine for me. Can you check your OpenPnP.log and see if there is an error there when you try this?


Jason


On Thu, Nov 28, 2019 at 1:46 PM Mike M. <mike...@gmail.com> wrote:
@Marek - good news - so I am not alone with this.....

@Mark/ Jason
My add feeder "+" does not work after this update - OpenPnP 2.0 Breaking Change
I attach screenshot here;

How can I resolve this?
Can you give me some hints? sujestion what shall I try ?

Thanks
Mike

On Thursday, 28 November 2019 18:18:05 UTC+1, Marek T. wrote:
Yes, I know you were forced with your machine setup to work as you work... But I think that this method really makes sense - and I'm gonna to test it soon.

W dniu czwartek, 28 listopada 2019 18:07:56 UTC+1 użytkownik cncmachineguy napisał:
Thanks for the credit Marek, but I can't say I was thinking that. My commercial machine worked that way so I just kept it going like that. My commercial machine only took seconds at most to load 6 nozzles and grab a pic of each. It could decide faster than I could if it had a part.

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

Mike M.

unread,
Nov 28, 2019, 4:05:34 PM11/28/19
to OpenPnP
Log works under OpenPnP_2

Jason von Nieda

unread,
Nov 28, 2019, 4:07:34 PM11/28/19
to ope...@googlegroups.com
In the .openpnp2 folder there should be an OpenPnP.log file (no number). Try to open the feeder dialog, then see if there is any errors at the end of that file, or just send me the whole file.

Jason


To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/850cd4ff-ace4-4cd2-9653-35de83041948%40googlegroups.com.

Mike M.

unread,
Nov 28, 2019, 4:10:06 PM11/28/19
to OpenPnP
In Old log there was long time no change - I have not used that OpenPnP 1 since July

Which folder I have to compare ?
Mike

Mike M.

unread,
Nov 28, 2019, 4:12:48 PM11/28/19
to OpenPnP
Please review last logs from today;
enclosed

On Thursday, 28 November 2019 22:07:34 UTC+1, Jason von Nieda wrote:
In the .openpnp2 folder there should be an OpenPnP.log file (no number). Try to open the feeder dialog, then see if there is any errors at the end of that file, or just send me the whole file.

Jason


OpenPnP.1.log
OpenPnP.2.log
OpenPnP.3.log
OpenPnP.4.log
OpenPnP.0.log

Jason von Nieda

unread,
Nov 28, 2019, 4:17:54 PM11/28/19
to ope...@googlegroups.com
Error is: Caused by: java.lang.ClassNotFoundException: org.openpnp.feeder.AutoNozzleFeeder

It looks like you had maybe added a custom feeder previously and now the OpenPnP version you have installed does not have that class.

Jason



To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/dafddfb3-3231-4262-995a-94a3fec77e55%40googlegroups.com.

Mike M.

unread,
Nov 28, 2019, 4:21:54 PM11/28/19
to OpenPnP
Yes - OK Jason, thank you.
Mike

Mike M.

unread,
Nov 29, 2019, 3:09:20 PM11/29/19
to OpenPnP
@ Mark
You wrote;  " If you don't have the sensor for a ContactProbeNozzle"

But I do have a sensor  Switch in my SMC vacuum Output 1 see enclosed :
It might be slow - but I could test at slow speed if it works ?
I have no recollection where to this sensor should be connected to on Smoothie?

Thanks

Mike
Z-probing.jpg
Zprobing.jpg

ma...@makr.zone

unread,
Nov 30, 2019, 5:05:49 AM11/30/19
to ope...@googlegroups.com

Hi Mike

the problem is that currently, probing is done both on pick() and place() it can't be disabled for the place() and you can't use your method with the part on the nozzle, right? :-)

For this to work, I would have to add checkboxes to the configuration. I might do that, but right now I don't have the time, unfortunately.

_Mark

Mike M.

unread,
Nov 30, 2019, 6:45:58 AM11/30/19
to OpenPnP
Hello Mark,
To have the checkbox option will help yes, please do so.
I would like to check the speed with vacuum and
I am looking into Keyence sensors which are small and could be installed on my head as alternative option...

Thanks Mark
Mike

Marek T.

unread,
Nov 30, 2019, 7:29:45 AM11/30/19
to OpenPnP
Play with gui changes is shity work, for me at least. While for the test you can comment the part of the code in place() on your own in few secunds... It's always easier than to add something :-).

Steven Doyle

unread,
Dec 2, 2019, 5:40:05 AM12/2/19
to OpenPnP
I'm beginning to think that TinyG is more trouble than it worth. However the smooothie boards are hard to come by at the moment most retailers are out of stock.

Does anyone have the equivalent TinyG commands for the below ?

{True:G38.2 Z-4 F1200   ; Probe down max. 4mm for contact with picked/placed part }
{True:M400          ; Wait until machine has stopped }
{True:M114.2        ; Report current realtime position, as M114 does not report rotation }
{False:G91 G0 Z1 G90; Retract 1mm }
{False:M400         ; Wait until machine has stopped }
{False:M114.2       ; Report current realtime position, as M114 does not report rotation }

I tried just the G38.2 command but kept getting an A axis error unable to perform probe while axis is moving.

cheers

Steve


On Tuesday, 26 November 2019 17:18:34 UTC, ma...@makr.zone wrote:

Hi Steve

see the PR Description, section "Instructions for Use" here:

https://github.com/openpnp/openpnp/pull/859

The examples there are from my Liteplacer with Smoothieware setup (except for the pump where I have a hysteresis solution, so the given pump on/off commands are fictitious).

If you have the TinyG instead, I guess you must translate the G-Code slightly.

If you're successful, please share :-)

_Mark


Am 26.11.2019 um 15:00 schrieb 'Steven Doyle' via OpenPnP:
Hi all,

Has anyone setup the ContactProbeNozzle for a liteplacer machine ? I would like to know what the GCODE is for the probing actuator and what POSITION_REPORT_REGEX  should be.

Thanks !

Steve



ma...@makr.zone

unread,
Dec 2, 2019, 7:39:37 AM12/2/19
to ope...@googlegroups.com

Yep, that's a downer:

https://github.com/synthetos/TinyG/wiki/Probing-Description-and-Operation

I guess it is that quirk that is biting you "G4P0 does not wait for end of movement":

https://github.com/openpnp/openpnp/wiki/TinyG#quirks

Try these things:

1. Make sure you have the workaround by Jason in place. Also use it in the wait after probing.

   "It is possible to use M2 for end of move detection, example using lazy Json - https://justpaste.it/1d3ht"

2. If this does not help, use the standard F20 they seem to use with the TinyG. There are error reports on the web with other feedrates. However F20 will probably be too slow for "always" probing in PnP.

So something like this, I don't know if it is valid syntax with the double curly brackets:

{True:G38.2 Z-4 F20 ; Probe down max. 4mm for contact with picked/placed part }
{True:{gc:"g91x0y0z0m2"}; Wait until machine has stopped }
{True:{sr:n}; Wait until machine has stopped }
{True:M114.2        ; Report current realtime position, as M114 does not report rotation }
{False:G91 G0 Z1 G90; Retract 1mm }
{True:{gc:"g91x0y0z0m2"}; Wait until machine has stopped }
{True:{sr:n}; Wait until machine has stopped }
{False:M114.2       ; Report current realtime position, as M114 does not report rotation }

> I'm beginning to think that TinyG is more trouble than it worth.

You might be right. I guess there are good reasons, Jason issued a warning here:

https://github.com/openpnp/openpnp/wiki/Motion-Controllers#tinyg
https://github.com/openpnp/openpnp/wiki/TinyG#quirks

That's why I went with Smoothieware from the start.

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/52d2065a-eba9-4133-9768-90123f01f757%40googlegroups.com.

Steven Doyle

unread,
Dec 2, 2019, 8:24:09 AM12/2/19
to OpenPnP
Thanks Mark, I'll give it a go.  Will report back.

I've also ordered a smoothie board, so I will be changing over :)

You've got a liteplacer I think, could you post your smoothie config file please.

Thanks !

Steve
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.

ma...@makr.zone

unread,
Dec 2, 2019, 10:00:03 AM12/2/19
to ope...@googlegroups.com

One thing that came to mind: you could try to cheat and look into the Liteplacer software that does contact probing too:

https://github.com/jkuusama/LitePlacer-DEV/blob/master/LitePlacer/CNC.cs#L583

> You've got a liteplacer I think, could you post your smoothie config file please.

I should finally put some stuff on the blog. For now I'll send it PM to you, as I'm not yet happy with the documentation.

_Mark

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/2ac85978-3440-4cff-a7e5-679fc612e2c4%40googlegroups.com.

Mike M.

unread,
Dec 11, 2019, 2:30:15 PM12/11/19
to OpenPnP
Hi,

With two nozzles and one vacuum pump the changes in vacuum reading seams to be quite large in order to adjust the levels accordingly.
I am waiting for second vacuum pump to try this again.....

Is there a way to temporary disable vacuum sensing for pick up and after placing without loosing all this settings ?

Mike

Jim

unread,
Dec 11, 2019, 3:44:18 PM12/11/19
to OpenPnP
Hello Mike,

I recommend using a professional vacuum pump (like a thomas 2650, get a used one from e.g. ebay) and insert a simple vacuum valve (to regulate input pressure to -0.2 .. -0.3bar).
This kind of pumps are made to run all day long and deliver really good vacuum and the values stay in an useable range.
In my humble opinion using vaccum sensors are not really necessary in production, only for measurement after feed/pick from feeders to get empty-reel info earlier, but usually never after vision or placement.

Jim 

Marek T.

unread,
Dec 11, 2019, 4:37:09 PM12/11/19
to OpenPnP
Hi Jim,
I use it DURING pick and place when nozzle is lowered. I track vacuum in the loop in every 5-10ms to get known if can raise nozzle or need still wait. This way don't need to program any constant dwell times at all.
After pick I test if part is not lost during the lifting.
And before pick to be sure if nozzle is empty and ready to pick.

Jim

unread,
Dec 11, 2019, 5:37:32 PM12/11/19
to OpenPnP
Hi Marek !

That is a good example how to save milliseconds on a professional machine equipped with professional ejectors, mechanics, etc. like you have on your (former) highend yamaha/philips/assembleon inline production system.
But dwell times i normally set nearly to ZERO, except for some sensitive plants, most is regulated with speed parameter to prevent parts blowing away ;-)

After placing several thousend parts during a job i never lost a part from feeder to camera to pcb - and checking vacuum after placement is luxury (costs valuable time), so i made it selectable in the v2 ReferencePnPJobProcessor.
When stencil printing is perfect (fresh T4/T5 paste & good stencils) there never be troubles on the panels (no tombstoning, bad part adhesion, shorts, etc.).

What would be really cool (i think you mentioned that in former times) is an automatic slot feeder pick up position correction based on averaged vision results.
When you change reels sometimes pickup position changes (the pretty old yahama cl system is not super accurate, but you know that of course).

As christmas is coming soon, there is one point on top on my wish list for santa: fly over vision (yamaha currently accomplish this with > 3 m/s !)

Jim

Marek T.

unread,
Dec 11, 2019, 6:35:09 PM12/11/19
to OpenPnP

I don't check vac directly after place. I did it priorly but it time costs, vac valve must be on and need wait long time to give it a chance to vac level could build up if part is not left on the board. So I've removed it from here and test it before the pick, so after the motion from place to pick location is done. During this move the vac level has time to rise if there is a part...


Feeder location correction - I have had this idea but lack of time... :-(.

Fly over vision, vision on the fly... yes, in Openpnp 3.0 :-).

Trinh Dinh Huu

unread,
Dec 11, 2019, 10:28:02 PM12/11/19
to ope...@googlegroups.com
This upgrade I found it suitable for use with compressed air system and nozzle suitable for yamaha CL. My Openpnp machine is using one end and has many speed limitations. I will upgrade to 2-4 nozzle system with auto feeder to make it faster.
Thanks Jason Von Nieda!

Vào Th 5, 12 thg 12, 2019 vào lúc 06:35 Marek T. <marek.tw...@gmail.com> đã viết:

I don't check vac directly after place. I did it priorly but it time costs, vac valve must be on and need wait long time to give it a chance to vac level could build up if part is not left on the board. So I've removed it from here and test it before the pick, so after the motion from place to pick location is done. During this move the vac level has time to rise if there is a part...


Feeder location correction - I have had this idea but lack of time... :-(.

Fly over vision, vision on the fly... yes, in Openpnp 3.0 :-).

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/5be29254-661f-4b9b-a7a7-7d3a1e115d0b%40googlegroups.com.


--
Đinh Hữu Trình
TDC Bắc Giang
Điện thoại 0978691222; 0912851598

ma...@makr.zone

unread,
Dec 12, 2019, 2:12:49 AM12/12/19
to ope...@googlegroups.com

Hi Jim

> so i made it selectable in the v2 ReferencePnPJobProcessor

This should no longer be needed in the version that this thread is about (i.e. with PR #859 merged).

If you set your "Part Off Nozzle Vacuum Range" both to zero, it won't be checked.

I made it two separate criteria:

Nozzle.isPartOnEnabled()
Nozzle.
isPartOffEnabled()

https://github.com/openpnp/openpnp/pull/859/files#diff-a593adfb65af36a22ab0278f18e54f1a

_Mark

Jim

unread,
Dec 12, 2019, 2:48:55 AM12/12/19
to OpenPnP
Hi Mark,

Zeroing the vac values for all the nozzle tips is a way, but as i do not want to change the painstakingly determined values i made global switches.
So it is much more comfortable for me.

vac.PNG


In addition, I have made fundamental changes in the v2 code that I can not easily import an update because my configuration files (e.g: machine.xml, pipelines.xml) have long since become incompatible. Therefore, every time a meaningful PR is introduced, I have to match my version with the changes.

Jim

Mike M.

unread,
Dec 12, 2019, 4:00:21 AM12/12/19
to OpenPnP
Mark,

I changed the values to "0" -on vacuum, but now the Vacuum on N1 is switched OFF imediatly after pick up and stays off up to checking part with bottoom camera and up to pšlacement on PCB..  - N2 works properly, but than bouth nozzles do not place the part on PCB - stay at Z 0 ??


See trace file enclosed
Mike
TraceVacuumErrorN1.txt

Mike M.

unread,
Dec 12, 2019, 4:05:07 AM12/12/19
to OpenPnP
@Jim
I like your way with global switches.  This is very useful during testing of the machine, and you can very easy turn all that on or off during JOB if you see things are going good.
Mike

ma...@makr.zone

unread,
Dec 12, 2019, 8:30:47 AM12/12/19
to ope...@googlegroups.com

Hi Jim

Ah, I see. In deed the option could even make sense per package.

_Mark

ma...@makr.zone

unread,
Dec 12, 2019, 8:33:17 AM12/12/19
to ope...@googlegroups.com

You've got scripting exceptions:

2019-12-12 09:51:04.336 VisionUtils WARNING: javax.script.ScriptException: ReferenceError: "camera" is not defined in Vision.PartAlignment.Before.js at line number 9
    at jdk.nashorn.api.scripting.NashornScriptEngine.throwAsScriptException(NashornScriptEngine.java:470)

_Mark

--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/e719bb6b-e84f-481d-b75e-6efff4e77c47%40googlegroups.com.

Jim

unread,
Dec 12, 2019, 10:55:44 AM12/12/19
to OpenPnP
On Thursday, December 12, 2019 at 2:30:47 PM UTC+1, ma...@makr.zone wrote:
In deed the option could even make sense per package.

Hi Mark,

An ambivalence seems to be manifesting - the technician in me says: yeah, that would be great, but the worker says: please, not even more complicated ;-)

 

Mike M.

unread,
Dec 13, 2019, 9:08:55 AM12/13/19
to OpenPnP
Solved that but still errors with N1:
see enclosed;
Basically I use the ContactProbeNozzle but have
                  <vacuum-actuator-name>ON_N1_VA
</vacuum-actuator-name>

<contact-probe-actuator-name>ON_N1_VAC</contact-probe-actuator-name>
This is wrong.
The second actuator need to be a binary (true-false) actuator that does the gcode
Mike
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
TraceVacuumErrorN1.txt

ma...@makr.zone

unread,
Dec 13, 2019, 11:26:25 AM12/13/19
to ope...@googlegroups.com

Sorry Mike I don't understand what you mean.

_Mark

Mike M.

unread,
Dec 13, 2019, 11:55:26 AM12/13/19
to OpenPnP
Mark thanks
I have it running now- nevermind.
Mike

Mike M.

unread,
Dec 23, 2019, 5:19:56 PM12/23/19
to OpenPnP
Hi Mark,

With extensive help from my code guy - we managed to get hight sensing working
- a short video here: https://youtu.be/_JP87Ndb4uU
and some more on my YouTube chanel...
Mike
Reply all
Reply to author
Forward
0 new messages