Part on/off vacuum checks

891 views
Skip to first unread message

Jason von Nieda

unread,
Apr 15, 2020, 1:04:50 AM4/15/20
to ope...@googlegroups.com
Hi all,

Wanted to get a quick consensus on the fixes needed to the current part on/off vacuum checks.

Currently, we make the following checks:

1. isPartOn: After pick.
2. isPartOn: After alignment / bottom vision.
3. isPartOn: Right before place, to ensure part is still on.
4. isPartOff: Right after place, to ensure part came off.

Question 1: Should any of those be removed, or changed?

Question 2: The isPartOff check seems to be a source of issues for people. Currently we place the part, which turns off the vacuum, then we turn it back on to check if the part is off. I seem to remember that folks don't like this behavior. How should it change?

I know that there are requests to make all these optional, and per package/part, etc. but let's just focus on the minimal changes to fix the problems right now, and we'll add flexibility later.

Thanks,
Jason


Jarosław Karwik

unread,
Apr 15, 2020, 1:37:55 AM4/15/20
to OpenPnP
The 4.

For systems which have "blow" after vacuum off this part is not relevant - the part can stay basically only when you have "vacuum" / "no vacuum" setup with small components and possibly dirty nozzle.

For such systems it could be global setting. For others - only small parts can be affected so package specific setting ?

Marek T.

unread,
Apr 15, 2020, 4:22:39 AM4/15/20
to OpenPnP
4. Nakes sense. It's also test whether the tip is clear, happens it hits in paste or gets dust (if small size 501). But directly after place eats time. First valve must be on add vacuum need time to can grow if nozzle is not clear. I've moved it to before pick, after the motion giving mentioned time.

Marek T.

unread,
Apr 15, 2020, 4:29:43 AM4/15/20
to OpenPnP
1. I guess it's after nozzle raise...

I'd add the serie of checkings in the loop (20*10ms is optimal) when the nozzle is still down to raise it at once when proper level is reached. And confirm when nozzle is up to catch the message to throw if error. Then all these dwell times are needed for nothing. I've it done this way since long time and it works great.

bert shivaan

unread,
Apr 15, 2020, 5:20:14 AM4/15/20
to OpenPnP
And don't forget those of us with no Vacuum check, we need to be able to disable them all? (Work around I guess is to reply with correct answer to let oPNP think all is well?

On Wed, Apr 15, 2020 at 4:29 AM Marek T. <marek.tw...@gmail.com> wrote:
1. I guess it's after nozzle raise...

I'd add the serie of checkings in the loop (20*10ms is optimal) when the nozzle is still down to raise it at once when proper level is reached. And confirm when nozzle is up to catch the message to throw if error. Then all these dwell times are needed for nothing. I've it done this way since long time and it works great.

--
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/db6be08c-c667-4344-9bdc-db02a55785e6%40googlegroups.com.

Jim

unread,
Apr 15, 2020, 5:32:17 AM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 7:04:50 AM UTC+2, Jason von Nieda wrote:
Question 2: The isPartOff check seems to be a source of issues for people.

@Jason, i made it selectable.

selectable.PNG


Marek T.

unread,
Apr 15, 2020, 5:44:43 AM4/15/20
to OpenPnP
Hi Jim,

I think this is optimal. From experience I know that in some job's it is sometimes usable to have some check active or not.

Marek T.

unread,
Apr 15, 2020, 5:51:26 AM4/15/20
to OpenPnP
I need help.

I'm testing 2.0 on simulator.
Have job containing only one part set Alert.
Feeder has 3 pickRetryCounts.

I run the job, get valve on, read vacuum (I send answer it's low level 20, in partDetection have set range 470-480), get valve off, another read (send again low level) and mesage "No part detected on nozzle before place.
There is no motion before second read.

Understand nothing of it.
What do I do wrong?

Marek T.

unread,
Apr 15, 2020, 6:10:43 AM4/15/20
to OpenPnP
Update:
I have started it in debug mode to see the steps.
It does the pick, check vacuum, makes discard, go to align, check vacuum and throws message that "no part before place".
Somewhere is eaten pick repetition and message that "no part after pick".

Jim

unread,
Apr 15, 2020, 6:19:14 AM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 12:10:43 PM UTC+2, Marek T. wrote:
Update:
I have started it in debug mode to see the steps.
It does the pick, check vacuum, makes discard, go to align, check vacuum and throws message that "no part before place".
Somewhere is eaten pick repetition and message that "no part after pick".

@Marek, feed() was ok?

Marek T.

unread,
Apr 15, 2020, 6:20:43 AM4/15/20
to OpenPnP
It's AutoFeeder with no feed, is set to 0.

ma...@makr.zone

unread,
Apr 15, 2020, 6:47:08 AM4/15/20
to OpenPnP
Hi

I performed some experiments on my machine using the smallest nozzle tip and 0402 (Samsung CP40 N045 1.0 * 0.45).


The nozzle opening is tiny. With the part off it takes ages for under pressure to decay. It is a day-and-night difference to the next larger tip (N08 1.5 * 0.8) that I must have used before (with 0603 parts).

It can easily be seen that fast part on/part off determination will simply not be possible with today's absolute measurements. The decay is too slow, even when waiting for half a second(!), the measurement change is too small, because the initial pump pressure is too varied. This may work, if you have industrial strength vacuum generation but not with the simple aquarium pump and soft hoses used by the Liteplacer kit (and many other users).

I have some ideas to cope with that, using two measurements and trending them. Not sure this will work. I'll experiment and may later propose a PR.

_Mark

Marek T.

unread,
Apr 15, 2020, 7:18:01 AM4/15/20
to OpenPnP
Hi Mark

Do you have a few minutes to help me with 2.0? You're close to these modifies.

I have created three vaccuum actuators in the heads actuators. I understood that it is the same actuator used for valve control and for vacuum level sensing.
So in gcode driver I have assigned there both codes to control, read and get regex. And it works.

In the Nozzles/ReferenceNozzle/Vacuum I have assigned this actuator name to the Vacuum Actuator. Blow Off Actuator left unused. VacuumPumpActuator in ReferenceHead left unused.
Part detections values I have On=485-490, Off=470-480.
While tests I send value 20 only.

Pick and Place does not work for me. There is no "after Pick" message at all and no pickRetries.
In debug I see in nozzle properties:
VacuumActuatorName = as created H1VAC1.
VacuumSenseActuatorName = null

Some idea where I do a mistake?

ma...@makr.zone

unread,
Apr 15, 2020, 7:57:49 AM4/15/20
to OpenPnP
Hi Marek

> While tests I send value 20 only.

I don't know the "simulator" (is it the NullDriver?).

> Pick and Place does not work for me. There is no "after Pick" message at all and no pickRetries.

Can you send the log with trace level?

_Mark



Marek T.

unread,
Apr 15, 2020, 8:08:36 AM4/15/20
to OpenPnP
Simulator are two serial port terminals (driver and subdriver) sending real gcodes. From Openpnp point of view it's talking with real machine but slower.
Log in a moment.

In the meantime:
I have set pickRetriesCount to 0 - and from this moment I get "No part detected after pick", don't get it if pickRetries are >0.
So it looks I didn't make any mistake in config.

Jim

unread,
Apr 15, 2020, 8:14:42 AM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 2:08:36 PM UTC+2, Marek T. wrote:
So it looks I didn't make any mistake in config.

@Marek, current OpenPnP2 does not work correct with automatic pick retry + vaccum checking.
A fully automatic pick retry with vacuum checking and without unnessary discard/feed needs still to be implemented and therefore you have to modify the ReferencePnpJobProcessor. I think i said that already in the OpenPnP 2.0 pick retry thread.

Jim

Marek T.

unread,
Apr 15, 2020, 8:21:54 AM4/15/20
to OpenPnP
Attached two logs. One with retriesProbe=0 and second =2. See difference.
Ignore that there is not z movements.
For me this code is somewhere broken and I can't understand why nobody have seen this, nobody sets it >0?
log_pickRetries_is2.txt
log_pickRetries_is0.txt

Marek T.

unread,
Apr 15, 2020, 8:26:24 AM4/15/20
to OpenPnP
@Jim, maybe I missed it, sorry, I will seek it to read.

But in the form like now this is totaly not acceptable IMHO, and programming value above 0 should be locked in the code until it is not solved.
With restriction: maybe I still do something wrong testing this.

Jim

unread,
Apr 15, 2020, 8:35:37 AM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 2:26:24 PM UTC+2, Marek T. wrote:
But in the form like now this is totaly not acceptable IMHO, and programming value above 0 should be locked in the code until it is not solved.
With restriction: maybe I still do something wrong testing this.

Yes, i stated that already last year when i switched over to 2.0.
But it looks like that only loudest voices are heared.
And I understand it when someone gets nuts because of only new (unnecessary) things are implemented but old elementary bugs are not fixed.

Marek T.

unread,
Apr 15, 2020, 8:47:11 AM4/15/20
to OpenPnP
Absolutely agree with you about new features and elementary bugs.
It's like buying great new car with one small manfulction - lack one tire only but multimedia are awsome 😁.

I think I'll stay with my custom of 1.0 yet. Or try fix here something if covidv will rule longer. Good for me, now I have machine.xml converted to 2.0 for future...

Jason von Nieda

unread,
Apr 15, 2020, 10:57:43 AM4/15/20
to ope...@googlegroups.com
Well, that did not go well. Instead of consensus on changes needed the thread was derailed into support.

I am trying very hard to fix the bugs in OpenPnP 2.0, but discussions like this make it very difficult. 

If this topic is of interest to you, and it is important to you that you see these bugs fixed, please answer the questions in the original post and let's decide what needs to be done, if anything. Pick / feed retry is next on my list, but it will be a different thread.

Thanks,
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.

Marek T.

unread,
Apr 15, 2020, 11:34:44 AM4/15/20
to OpenPnP
Sorry for the mess so, you're right it was issue for the separated thread...

1. isPartOn: After pick.
+, but it requires a time to give it to vacuum to drop if part is lost on the Z way. Delay generator so.

2. isPartOn: After alignment / bottom vision.
-, rather before

3. isPartOn: Right before place, to ensure part is still on.
+, but it's very rare situation that part is lost in transit. But possible.

4. isPartOff: Right after place, to ensure part came off.
-, again, it need time to let vacuum do raise after valve on. Delay generator so.

5.isPartOff: Right before pick instead of 4.

In fact, as more sense point as more problems to solve what to do if error appears. And more complicated algorithm to cover eventual retries.


W dniu środa, 15 kwietnia 2020 16:57:43 UTC+2 użytkownik Jason von Nieda napisał:
Well, that did not go well. Instead of consensus on changes needed the thread was derailed into support.

I am trying very hard to fix the bugs in OpenPnP 2.0, but discussions like this make it very difficult. 

If this topic is of interest to you, and it is important to you that you see these bugs fixed, please answer the questions in the original post and let's decide what needs to be done, if anything. Pick / feed retry is next on my list, but it will be a different thread.

Thanks,
Jason


On Wed, Apr 15, 2020 at 7:47 AM Marek T. <marek.tw...@gmail.com> wrote:
Absolutely agree with you about new features and elementary bugs.
It's like buying great new car with one small manfulction - lack one tire only but multimedia are awsome 😁.

I think I'll stay with my custom of 1.0 yet. Or try fix here something if covidv will rule longer. Good for me, now I have machine.xml converted to 2.0 for future...

--
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.

ma...@makr.zone

unread,
Apr 15, 2020, 12:29:41 PM4/15/20
to OpenPnP

Currently, we make the following checks:

1. isPartOn: After pick.

To be a bit more specific, it is after pick and lift to Safe Z, which is good, because it breaks the seal on the part by lifting the nozzle away from the part (unlike original OpenPNP 1.0).

 
Question 1: Should any of those be removed, or changed?


As long as the isPartOn() does not use extra dwell time, I see no reason to remove any of the checks.

 
Question 2: The isPartOff check seems to be a source of issues for people.

Agree.
 
Currently we place the part, which turns off the vacuum, then we turn it back on to check if the part is off. I seem to remember that folks don't like this behavior. How should it change?


 Again, to be more specific, we place the part, which turns off the vacuum, then we dwell, then we lift the nozzle to safe Z, which is good, because it breaks the seal on the part, then we turn vacuum back on, then we dwell with the pick time, then we check if the part is off.

This is problematic for various reasons:
  1. The time while dwelling and lifting to safe Z would be useful to let the vacuum decay, we waste it by switching the vacuum on again
  2. We need another dwell time to let the switched on vaccum take effect, wasting more time
  3. With the vacuum switched on, the smallest nozzle tips create too much flow resistance, the signal will be inconclusive
A checkbox should allow this to be switched off. Or it should always be switched off.

Also a seperate dwell time should be provided, using the pick time is not ideal.

To be useful in all scenarios including 0402, I believe we could (optionally) measure the change in pressure, not the absolute value, and it becomes a two-folded question:

  • when should the reference measurement take place?
  • when should the comparison measurement take place?
For machines with a second sensor on the pump (reservoir) the reference measurement can be taken on this sensor. No delay needed. The pump Actuator can be used to read the value.

For other machines, the pick reference measurement should be taken a certain time after switching the valve on (maybe half the pick dwell time). The place reference measurement should be taken right before switching the valve off.

The Part On / Part Off ranges could then be specified in percent of the reference measurement. This is also easier to understand and will work with varying and drifting vacuum levels.

The absolute/relative/pump relative models could be a combobox choice, so nobody has to use it, if they don't like it.

If we could agree to such a scheme I will experiment and create a PR. It seems I absolutely need uch a solution anyway.


_Mark

Marek T.

unread,
Apr 15, 2020, 12:41:26 PM4/15/20
to OpenPnP
1. isPartOn: After pick.
only to detect the feeder was empty. Without any dwell times so because level will not change in this situation.

2. isPartOn: Before alignment/bottom vision
movement took a time needed for vacuum to grove. We get confirmation the pick is succesfull with not any extra time loosing.

3. isPartOn: Right before place, to ensure part is still on.
+, not very necessary but why not2.

4. isPartOff: Before pick
After place we turn on the vacuum. Movement took a time needed for vacuum to grove if nozzle is dirty. We get confirmation the pick is possible.

IMHO this is the most fast and effective.
Dwell times are other story, IMO needed for nothing.

Duncan Ellison

unread,
Apr 15, 2020, 12:49:41 PM4/15/20
to OpenPnP
Disclaimer : I don't have great experience in this area.  

For reference, I have solenoid valves controlling micro ejectors, maybe 1.2m from the head with 4mm tubing and blow off also solenoid driven.  I have reliable Panasonic vacuum / pressure sensors for each nozzle mounted on the head so I can physically watch the head pressures. 

However, I never got my vacuum sense to work reliably and for now just switched it off, but I can make the following comments :

1. From my tests, fully agree that with small nozzles the pressure differential is VERY small indeed and hard to detect reliably below a 503 nozzle.  For this reason I'm unlikely to want to have vacuum sensing on for these very small parts.  I don't see an easy way to make this reliable enough.

2. There can be quite a variation in pressure even between good picks.

3. Considering all the different configuration people here have, I agree with the suggestion to make this a checkbox option.

4. Jason's Discord comment about moving this to Part makes sense to me.  Some parts are just going to be more problematic than others and the ability to say "with this part, I don't care about post pick vacuum, just continue regardless" I think could get you out of a hole if you are in a jam tying to get a run completed.

Duncan    

bert shivaan

unread,
Apr 15, 2020, 12:50:33 PM4/15/20
to OpenPnP
And for those with no vacuum check ability?
Need to remove them all :)

--
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/c1079b82-859d-407a-85cd-d5465819ed36%40googlegroups.com.

Marek T.

unread,
Apr 15, 2020, 1:02:04 PM4/15/20
to OpenPnP
Remove those who don't have ability or checking? :-) :-).
Yes, it sucks, you can't remove actuator in 2.0 to don't loose valve control, right?
So at least single checkbox like general disable vacuum check? Or all vacuum values set to 0 - meaning there are no sensors in the machine to read?

Jim

unread,
Apr 15, 2020, 1:14:21 PM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 7:02:04 PM UTC+2, Marek T. wrote:
Or all vacuum values set to 0

<thread_hijacking_mode> Correct. </thread_hijacking_mode>

Jason von Nieda

unread,
Apr 15, 2020, 1:32:12 PM4/15/20
to ope...@googlegroups.com
Yes - just to confirm for Bert - when vacuum sense values are set to 0, which is the default,  o checks take place.

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.
--
Sent from my BeOS enabled toaster

bert shivaan

unread,
Apr 15, 2020, 1:50:01 PM4/15/20
to OpenPnP

ma...@makr.zone

unread,
Apr 15, 2020, 1:56:39 PM4/15/20
to OpenPnP

4. Jason's Discord comment about moving this to Part makes sense to me.  Some parts are just going to be more problematic than others and the ability to say "with this part, I don't care about post pick vacuum, just continue regardless" I think could get you out of a hole if you are in a jam tying to get a run completed.


I don't think so. Nozzle tip is the correct place in general, maybe with an option to override by package for exotic exceptions, but certainly not by part. And it only makes sense by package, if the package has a single nozzle tip compatibility.

_Mark

Jim

unread,
Apr 15, 2020, 2:55:48 PM4/15/20
to OpenPnP
On Wednesday, April 15, 2020 at 7:56:39 PM UTC+2, ma...@makr.zone wrote:

4. Jason's Discord comment about moving this to Part makes sense to me.  Some parts are just going to be more problematic than others and the ability to say "with this part, I don't care about post pick vacuum, just continue regardless" I think could get you out of a hole if you are in a jam tying to get a run completed.

I don't think so. Nozzle tip is the correct place in general, maybe with an option to override by package for exotic exceptions, but certainly not by part. And it only makes sense by package, if the package has a single nozzle tip compatibility.

From my humble experience with our small production quantities i have to agree with Jason.

Example: If you have loaded 20 reels with 0402 and only one of company xy has problems with stuck parts and all the others work well, a selection per part makes more sense.

Jim



ma...@makr.zone

unread,
Apr 15, 2020, 3:13:57 PM4/15/20
to ope...@googlegroups.com

IMHO, better make a 0402xy package and assign it to the part. If you have a second reel of company xy, its quickly assigned too and from then on you can centrally tune it.

This way you have both benefits: you can change all parts through their common package (very powerful) and you can change individual parts.

Otherwise, imagine if you wanted to change the settings for all R0402 packages, but you have dozens or hundreds (like I have)! 

_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.

Jason von Nieda

unread,
Apr 15, 2020, 3:39:03 PM4/15/20
to ope...@googlegroups.com
To clarify: the Discord comment was about moving the pick retry counter to part, not vacuum settings. Not related to this thread.

Jason


Jason von Nieda

unread,
Apr 15, 2020, 11:34:04 PM4/15/20
to ope...@googlegroups.com
Thanks for the responses everyone. We don't quite have consensus, but based on what I'm reading there seems to be a few clear changes to be made:

1. It sounds like the biggest improvement is just to add the checkboxes, a la Jim.
2. I agree with Marek that it makes more sense to do the isPartOff check at the start of the cycle, instead of the end. So, after place and lift we turn the vacuum back on so that it has time to build, and then make the isPartOff check before the next pick.

The other thing this discussion has brought out is that maybe there isn't as big of a problem here as I thought. I was under the impression there were serious issues with these checks, but it sounds like it's mostly just people wanting to disable some of them - which would be possible with the checkboxes. So, with that, I'll put these changes on my list and move on to pick retry (in a new thread) which seems to be the more contentious issue.

Thanks,
Jason


ma...@makr.zone

unread,
Apr 16, 2020, 1:48:30 PM4/16/20
to OpenPnP
Hi

I made some first steps. The user can select what method is wanted and the complexity is only shown when needed. This is not yet fully fleshed out, so before I go on and spend more time, I wanted to see if such a solution would be OK.

See the mini movie:
I would add the checkboxes a la Jim to that.

You would also see the last reading in the real pick/place sequence with the correct timing, so you can tune your range much more easily (i.e. without having to find the needle in the haystack of a log).

There are even two more methods in my mind:

I think Marek has mentioned such a thing once: instead of waiting a fixed time for vacuum to build or decay, you could wait for it to reach the wanted range in a polling loop. The dwell time would then only be a timeout and the expiration of that timeout would at the same time be the negative detection result. This might be much faster in many "good" cases and still allow for a tolerant/longer buildup/decay time for "near miss" situations.

Like I said this is not yet finished, so whether the trending will at all work with 0402 remains to be seen. But I believe this is useful anyway.


> 2. I agree with Marek that it makes more sense to do the isPartOff check at the start of the cycle, instead of the end.



> So, after place and lift we turn the vacuum back on so that it has time to build, and then make the isPartOff check before the next pick.

This should always be a choice. With a large nozzle tip such a long opening of the valve would quickly defeat my pump, despite the large reservoir (and it takes a long time to recover). Multi-nozzle users might even lose the other part. 

_Mark

Marek T.

unread,
Apr 16, 2020, 2:19:34 PM4/16/20
to OpenPnP
Hi Mark,

I use two loops 20x10ms.

In place to find the partOff level is reached and then raise immediately or if loop counter is finished. And I don't read sensor anymore to generate the message but turn on the valve and step is finished. isPartOff in pick step is first action. Maybe it's faulty because part could be not placed but step is positively done. Nobody's perfect... Maybe it should be added new and last step of entire pick/place sequence containing only this reading and finishing planned placement?

In pick, the second loop is reading for isPartOn level to raise immediately, or raise if counter is finished. And now I read isPartOn to generate alarm. Without any dwell time. So alarm will occur only if loop was ended (never reached isPartOn level because feeder was empty), if we lost part on z transit the vacuum will not have time to grow. So in Align or Place, another isPartOn will tell the true.

I'm not sure if you shouldn't wait until Jason re-write the jobProcessor.

ma...@makr.zone

unread,
Apr 20, 2020, 8:36:47 PM4/20/20
to ope...@googlegroups.com

Hi all

I made a PR:

Feature List

  1. Easier setup with Measurement Method combo box. Detection can be switched off without having to overwrite your values.
  2. The method combo box controls the visible fields in the Wizard, so it can be easy or it can be advanced, as users like it.
  3. New "Difference" method allows you to specify the permissible change in the vacuum level, in addition to the absolute level.
  4. Therefore, much finer nuances in changes of the vacuum level can be discriminated, which is essential for the very small nozzle tips with high air flow resistance and/or strong pumps and/or vacuum reservoir systems and/or multi-nozzle systems with crosstalk.
  5. The vacuum level can be monitored/polled while picking or placing a part, so OpenPNP can go on, as soon as the desired buildup/decay level is reached. The former dwell time becomes a timeout.
  6. Much faster picks and places result in the majority of cases, while gaining robustness for the few exceptions. The timeout/dwell time can now be increased without general speed penalty. The wait will only be incurred in the rare worst case.
  7. Graphical diagnostics allow a much more informed approach. How fast do the vacuum levels build up or decay? How fast is your sensor? How fast is OpenPNP in querying the controller? No more guesswork! No more browsing in the endless log.
  8. I wanted to hook up the oscilloscope, but then thought, why not use OpenPNP instead?

What do you think?

More info including a detailed explanation of all the fields here:

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

_Mark

Marek T.

unread,
Apr 20, 2020, 9:45:58 PM4/20/20
to OpenPnP
Wow!

Jason von Nieda

unread,
Apr 20, 2020, 10:41:06 PM4/20/20
to ope...@googlegroups.com
Nice work Mark, this looks really great!

I've merged the PR into the test branch so that others can download and try it out without having to build it themselves. Test branch downloads can be found here: http://openpnp.org/test-downloads/

Once this has seen some testing and use, we can get it merged into develop.

Thanks,
Jason


On Mon, Apr 20, 2020 at 8:46 PM Marek T. <marek.tw...@gmail.com> wrote:
Wow!


--
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,
Apr 21, 2020, 4:06:33 AM4/21/20
to OpenPnP
Hi Marek,

do you have a way to monitor your pressure during pick/place? I'm wondering what the differences are with/without part on when you use your finest 0402 nozzle tip.

Does your machine have artificial air flow restriction after the valve?

Otherwise, I'm more and more convinced that the better your pump/venturi/reservoir/whatnot, the harder it is to see a conclusive pressure difference at all.

It might work with sluggish pumps and switching them on/off with each pick, so you get different slopes (but that's slow as hell).

And it will also be problematic with multi-nozzles.

Thanks for your info,
Mark

ma...@makr.zone

unread,
Apr 21, 2020, 4:08:12 AM4/21/20
to OpenPnP
Hi Everybody,

Who is actually using Vacuum Sensing successfully with 0402?

How?

Thanks for your infos,
_Mark

Marek T.

unread,
Apr 21, 2020, 4:27:44 AM4/21/20
to OpenPnP
Hi Mark,
501 for 0201 is hard to use because settings are off-470 and n-490. So sizeCheck is better then instead.
Juki 502 for 0402 works ok. But also sizeCheck added to detect picks by the edge.

Marek T.

unread,
Apr 21, 2020, 4:34:03 AM4/21/20
to OpenPnP
"Does your machine have artificial air flow restriction after the valve"
I'm not convinced that understand what you ask. I have only switchable ventouri microejectors. Switching changes constant sucking into constant blowing. Blow is adjustable mechanically (screw on the ventouri) and it's set to blow gently, not so strong like sucking is, some 15%. Not any other valves at all.

Marek T.

unread,
Apr 21, 2020, 4:40:17 AM4/21/20
to OpenPnP
I'll play with your job later. However only on terminals, bacause cannot use stock 2.0 for my machine. So it will be hard to test everything but I'll try.
I guess you didn't touch to the pickRetries system?

Marek T.

unread,
Apr 21, 2020, 4:45:48 AM4/21/20
to OpenPnP
Establish level ang Probing time.
Can you give little more details how it works?

ma...@makr.zone

unread,
Apr 21, 2020, 6:02:46 AM4/21/20
to ope...@googlegroups.com
Am 21.04.2020 um 10:45 schrieb Marek T.:
Establish level and Probing time.
Can you give little more details how it works?

The "Establish level" life vacuum level monitoring and waiting is only used in the pick and the place, when the nozzle tip is down on the part.

The "Probing time" is a fixed time, where the valve is quickly opened and then closed again. This time we don't want to reach a specific level, but we want to measure the change in pressure at the end of the probing time (either in Absolute terms or as a Difference).

This should tell you if a part in on or off.

This works well for my second-smallest nozzle tip/0603 and up. But on my 0402 nozzle tip the difference between Part On and Part Off is very small. I'm still tuning. Maybe I'll have to conclude it doesn't work.

The problem is I can't adjust the air flow. The suction that is good for large ICs and clunky inductors with large cup nozzle tips, will almost completely stall on the finest nozzle tip. It then doesn't matter much whether a tiny 0402 part is on or off.

I should add that for 0402 the finest nozzle tip is still quite large actually, the hole is almost larger than the part surface. And the part is sometimes picked slightly off-center, so some amount of leakage is normal, the part is still picked firmly.

So I get false negatives if i set the thresholds too firmly.

So far in all my tests bottom vision has always complained and caught all missing or tomb-stoned picks.

I was hoping to do 0402 without vision, but maybe that's asking too much. For reliable 0402 vacuum tests, I guess one needs a programmable air flow restriction. Note that programmable air flow restriction and programmable pressure are not the same, I want high pressure, but only if there are no leaks.

This is for liquids, but I guess it's similar for air:

https://techblog.ctgclean.com/2012/03/reducing-flow-vs-reducing-pressure-which-is-it/

Also funny:

https://www.tlv.com/global/US/calculator/air-flow-rate-through-orifice.html

_Mark


Duncan Ellison

unread,
Apr 21, 2020, 6:31:00 AM4/21/20
to OpenPnP

Firstly @_Mark, thank you for your effort, this wasn't a 10 min. hack :-)  I wish I had good enough Java skills to be able to contribute more to this.

Next, I did some test runs this morning with 'Absolute Mode' using Jason's merged test build and it worked 100% including auto pick retries.

I have to say that I'm using 0805 components on a 503 nozzle, but it gives you another data point.  

I've never been able to get Vacuum sensing to work before and had just turned it off, so this is a big help.

Great stuff, will post more results as I get them.

Looking forward to getting this merged into Main branch

Duncan

ma...@makr.zone

unread,
Apr 21, 2020, 7:10:47 AM4/21/20
to ope...@googlegroups.com

Thanks, Duncan!

--
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.

Marek T.

unread,
Apr 21, 2020, 7:55:10 AM4/21/20
to OpenPnP
Have you modified something related to the pickRetries?

ma...@makr.zone

unread,
Apr 21, 2020, 8:01:52 AM4/21/20
to ope...@googlegroups.com

No, not knowingly. I have reviewed my own work countless times, so very unlikely.

And I don't think its fixed, I got stuck all the time while testing yesterday. But I haven't actually analyzed all the details of the problem, it's just that I had to stop the Job and restart it to be able to continue.

_Mark

Marek T.

unread,
Apr 21, 2020, 9:03:15 AM4/21/20
to OpenPnP
I'm asking only because of surpriced what Duncan said. For me retries didn't work properly as also Jim has also confirmed. Highly likely Duncan doesn't know where the issue is.

Duncan Ellison

unread,
Apr 21, 2020, 11:15:04 AM4/21/20
to OpenPnP
@Marek T. - All I can tell you is that I've never seen retries happen before, just the job stopping complaining about no part on nozzle from the vision stage.

But after applying the test version this morning and testing out _Mark's cool vacuum code, I observed the head repeatedly finding no part on the nozzle and going back to the feeder for another try.  In some cases, it appeared to be in an infinite cycle and would have exhausted the reel if I'd let it, but I assumed that this was down to my bad configuration.

I've only played with this for 30 mins this morning, I got stuck when I tried to add a second nozzle, then had to go back to the day job :-0

Marek T.

unread,
Apr 21, 2020, 11:22:06 AM4/21/20
to OpenPnP
Ok, I know where the wrong behaviour was, so when find a bit of time only I will check whether it's still wron or not.
Simple test: set pickRetries nr to 2 (0 and 1 worked identical and wrong) and try pick part from empty feeder.
You should see 2 or 3 (depend on philosophy if value is total tries or retries over the first probe) and get "Part not detected after Pick". But in my case it always continued transit to place (if no vision) and shout "Part not tdetected before Place". Messages worked properly if number of pickRetry was 0.

Duncan Ellison

unread,
Apr 21, 2020, 1:08:08 PM4/21/20
to OpenPnP
I may have mis-spoken  :-0

Running some more tests, It looks like what I was seeing was not a genuine retry on the same part, it was deferring that part and moving on to the next.  

For the purposes of testing I have a reel of 12,000 0805 resistors I bought on Ebay for $5 and change all the components in the job to this one, so I was seeing it keep returning to the same feeder after a mis-pick, but it was actually trying the next part.

Sorry about that.

Marek T.

unread,
Apr 21, 2020, 1:29:14 PM4/21/20
to OpenPnP
So can you confirm it works as I said if you set 2-3 pick repetitions?

John deGlavina

unread,
Apr 21, 2020, 3:28:15 PM4/21/20
to OpenPnP
Mark - I'm convinced you are a Java coding madman. haha. Awesome. 

I'll get to testing this soon enough, but one of the issues I was having with the existing vac sense is the time it takes to buildup vacuum because of the length of my vac lines to the sensors.  I can't do much for the length of the lines because of the way the board is mounted/configured, so I'm hoping excluding the check right after pick will solve this issue (as long as it's not taking too long to build up vac). 

ma...@makr.zone

unread,
Apr 21, 2020, 4:02:48 PM4/21/20
to ope...@googlegroups.com

Thanks, John

"vac lines to the sensor", so you mean the electrical signal, or do you mean the vacuum tube?

The electrical signal should be no problem, have you've got a proper amplifier on it?

https://makr.zone/vacuum-sensor/192/

If it's the vacuum tubes, yeah its best to have the valve and the sensor on the head. Otherwise you get a lot of air volume in tubes that the system must move in or out with each valve switch.

_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.

Duncan Ellison

unread,
Apr 21, 2020, 5:29:07 PM4/21/20
to OpenPnP
OK, I ran a scientific a test as I could.

I put a used piece of tape in the feeder and ran a job that that consists of placing a single 0805 - no bottom vision.

I tried 0,1 & 2 Pick retries on the feeder.  The results were all the same.  Went to pick, found no part, made a detour via the discard bin then parked.  Info message in the log :

 
INFO: R1: No part detected on nozzle before place.

Here's the log if it helps.

Marek T.

unread,
Apr 21, 2020, 5:48:03 PM4/21/20
to OpenPnP
So it is wrong. Message about the missing part after pick was not thrown.
However my tests on develop with set 0 shown this mispick properly.

But, ignoring small difference between my and your test - we can say, it's still working wrong.
So we must wait till Jason will re-write the jobProcessor adding new algorithm of retry.

ma...@makr.zone

unread,
Apr 22, 2020, 5:26:03 AM4/22/20
to ope...@googlegroups.com

Hey Duncan, Marek

could you please move this discussion over to the right thread "Feed and pick retry in OpenPnP 2.0"?

https://groups.google.com/d/topic/openpnp/kbnMKnDArIk/discussion

This one should discuss the "Part on/off vacuum checks". I know one plugs into the other, but its still not the same thing ;-)

Thanks,
Mark


Marek T.

unread,
Apr 22, 2020, 5:54:02 AM4/22/20
to OpenPnP
You're right, sorry.

Jason von Nieda

unread,
Apr 22, 2020, 11:51:26 PM4/22/20
to ope...@googlegroups.com
Well folks, it took all night, but now we have a test that proves you are right, and that pick retry is broken:

2020-04-22 22:45:46.962 ReferencePnpJobProcessor$Finish INFO: Job finished 0 parts in .0 sec. This is .0 CPH
2020-04-22 22:45:46.962 ReferencePnpJobProcessor$Finish INFO: Errored Placements:
2020-04-22 22:45:46.962 ReferencePnpJobProcessor$Finish INFO: R1: No part detected on nozzle before place.
Failed tests:
  RetryTest.pickRetryTest:191 Feed count should be 3. expected:<3> but was:<1>

So, now to fix it :)

Jason


On Wed, Apr 22, 2020 at 4:54 AM Marek T. <marek.tw...@gmail.com> wrote:
You're right, sorry.


--
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.

Jason von Nieda

unread,
Apr 23, 2020, 12:34:24 AM4/23/20
to ope...@googlegroups.com
Woops, I posted in the wrong thread too. Further updates in the "Feed and pick retry in OpenPnP 2.0" thread. Sorry about that.

Jason

ma...@makr.zone

unread,
May 17, 2020, 3:37:38 AM5/17/20
to OpenPnP
The Wiki page has been updated:
All feedback welcome, including language related (not a native speaker).

Jason, I moved OpenPnP 2.0 up. OK?

_Mark

Jason von Nieda

unread,
May 17, 2020, 12:35:05 PM5/17/20
to ope...@googlegroups.com
Looks great - thank you Mark!

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.
Reply all
Reply to author
Forward
0 new messages