How to control BLOW-OFF properly?

255 views
Skip to first unread message

vespaman

unread,
Mar 21, 2023, 12:21:36 PM3/21/23
to OpenPnP
Hi all,

I have this issue when picking 0402, that the nozzle when arriving to pick, are still blowing (before actuating the VAC). So components blows away from their pockets.

How can I make sure blow pump is off (or blow valves closed) before arriving to pick a new component? Ideally, I guess it should be off after delivering its component, or when both nozzles are empty.
The blow pump seems to run continuously after its first activation in my setup.


  - Micael

Jan

unread,
Mar 21, 2023, 3:48:47 PM3/21/23
to ope...@googlegroups.com
Hi Micael!
To my understanding the values of the CHM-T are of T-type which either
connected to the vacuum or blower pump. So there is no way to specify,
that you only wont to blow when placing parts.
However, you might be able to enable and disable the blower at certain
points as part of other actuators like switch it off when the vacuum
value is opened (place) and switch it on when the value is closed for
vacuum. The blower will then be on as long as there is a component on
the nozzle.
However 2: I faced the same issue with the blower and decided to not
use it. Instead I've configured small pick (20ms) and place (40ms) dwell
times. That works very well for me.

Jan
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 22, 2023, 4:21:23 AM3/22/23
to OpenPnP
Hi Jan,
Yes, I also think the valve only can be vacuum or blow, so any more control must involve the pump(s).

I suppose I have to disable my blow-off as well then. However, I have seen that on discard, the lightest components sometimes still hangs on the nozzle, even after vacuum off so this is not ideal.


I also found things that makes it worse; the actuator on value seems to be hard coded to 10, so no matter what I put in this dialog;
(at least when I am stepping or running a job)

Screenshot_20230322_085101.png

10 is way too much on my machine, I think 1 or 2 is more appropriate.
Strange thing is, that if I actuate manually from the  "Machine controls->Actuators->H1:BLOW" it sends 2 as it should.

Also, even if I select ActuateOff on "Homed" in "machine state", it still runs after I home. Maybe I misunderstood the meaning of this setting though.

Maybe the intent is that Blow only just does a short blow? I.e. a timed blow? In this case we can change the firmware, so it just "puff". I never (during step or run) see a actuateOff.

 - Micael

Jan

unread,
Mar 22, 2023, 9:56:51 AM3/22/23
to ope...@googlegroups.com
Hi Micael!
For actuators of "Value Type" "Double" as in your screenshot, the "ON
Value" and "OFF Value" are presets, that are hand over to the GCode
driver. There you can use the value as part of the GCode the actuator
wonts. I've my blower configured as "M812 S{IntegerValue}". This way the
2.000 of you screenshot is converted into the integer 2 and then send to
the controller, which - with my firmware where the blower output is
configured as PWM - generates a PWM of 2% duty cycle. (The original
firmware operated the blower at 2%.) Btw: on the actuators tab you can
debug entering values you like and use the presets for ON and OFF.
Actually I did not had problems with parts sticking to the nozzle tip
after placing yet, except if the PCB-Z or component height was not
correct. I place a lot of 0402 and they all stick well in the paste if
PCB-Z is the level of the PCB. With ~0.1mm of paste on the PCB the
actual surface the component is placed on, is a little higher and the
spring of the nozzle tip presses the component firmly down.

Jan

On 22.03.2023 09:21, vespaman wrote:
> Hi Jan,
> Yes, I also think the valve only can be vacuum or blow, so any more
> control must involve the pump(s).
>
> I suppose I have to disable my blow-off as well then. However, I have
> seen that on discard, the lightest components sometimes still hangs on
> the nozzle, even after vacuum off so this is not ideal.
>
>
> I also found things that makes it worse; the actuator on value seems to
> be hard coded to 10, so no matter what I put in this dialog;
> (at least when I am stepping or running a job)
>
> https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 22, 2023, 10:28:49 AM3/22/23
to OpenPnP
Yes, I have based my machine.xml on yours, so I also have this 'M812 S{IntegerValue} ; BLOW M812 at [%]'
But only if you use the actuator control from the  "Machine controls->Actuators->H1:BLOW" (tab in the jog control pane), does it send the set 'ON' value (2 in my case) as it should.

However, if you look in the log, while running or stepping a job, this value is not used, but a hard coded value of 10 instead. 10 makes the components migrate to Africa, or thereabouts, when the nozzle arrives.

And, never any OFF (0) value from there on (in the logs).

- Micael

vespaman

unread,
Mar 23, 2023, 4:26:15 AM3/23/23
to OpenPnP
Hi Jan,

So, this morning, I changed the Blow M812 to always send '1' regardless of what the argument actually was, and also created a 'BLOW-DISABLE' that sends 812S0.
While it was much better, I think it is not enough to just reduce to '1'; blower definitely needs to be off when arriving for pick. At least the components are picked (not blown away), but it can sometimes be tombstone-picked.
But at least, now discard works good. (I'm discarding a lot of component since I have a lot of new component reels loaded to the machine).

Right now, I cannot think of a way to activate the BLOW-OFF from another reference actuator, since it needs some logical expression, but maybe it can be done with script actuator.
Or, I'll add a variant of M812 to the firmware, that returns blower to off after 50ms or so later on.

But for now, I'll leave the blower off when running jobs, so I can arrive to the next issue :-)

 - Micael

Jan

unread,
Mar 23, 2023, 5:11:13 AM3/23/23
to ope...@googlegroups.com
This sounds like a bug. You might wont to open a new issue so that it
does not get lost.

On 22.03.2023 15:28, vespaman wrote:
> Yes, I have based my machine.xml on yours, so I also have this 'M812
> S{IntegerValue} ; BLOW M812 at [%]'
> But only if you use the actuator control from the  "Machine
> controls->Actuators->H1:BLOW" (tab in the jog control pane), does it
> send the set 'ON' value (2 in my case) as it should.
>
> However, if you look in the log, while /running or stepping a job/, this
> https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer>>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com?utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/6e9a4a59-e56c-4e1e-a381-1122b5925bb8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/6e9a4a59-e56c-4e1e-a381-1122b5925bb8n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 23, 2023, 5:11:47 AM3/23/23
to ope...@googlegroups.com
If you change the actuator type from "Double" to "Boolean" you can
configure different commends for ON and OFF.
While preparing my first response to your question, I was wondering to
just switch off machine coordination for the vacuum valve. However, I
quickly had to realize, that while closing the valve for vacuum at
Save-Z - while the nozzle is just going down to the pick location -
might be fine, disabling the vacuum on place with the nozzle still
somewhere about PCB-Z is certainly a no go. So a better solution for
T-type values might be to switch to vacuum before lowering the nozzle at
the pick location and disable vacuum when the nozzle is at its desired
place location. This might still not be perfect as the air flow into the
nozzle while lowering the nozzle to the pick location might pull light
components out of their pockets. I suppose that's what the big guys do:
carefully coordinate the value and the nozzle so that no dwell time or
blow-off is needed. I'm not sure if GCode would permit to close the
valve lets say 50ms before the nozzle arrives at its pick location.

Jan
> However, if you look in the log, while /running or stepping a job/,
> https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com>> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer> <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/e18f22cb-3f0b-4e32-a90a-6db807e363a8n%40googlegroups.com?utm_medium=email&utm_source=footer>>>.
> >
> > --
> > 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
> > <mailto:openpnp+u...@googlegroups.com>.
> > To view this discussion on the web visit
> >
> https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/6764275e-6bc2-4c98-9220-1be45c2ac148n%40googlegroups.com?utm_medium=email&utm_source=footer>>.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/a1d35b54-ac6d-423d-860e-45d64547374bn%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/a1d35b54-ac6d-423d-860e-45d64547374bn%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Mar 23, 2023, 5:56:03 AM3/23/23
to OpenPnP
torsdag 23 mars 2023 kl. 10:11:47 UTC+1 skrev Jan:
So a better solution for
T-type values might be to switch to vacuum before lowering the nozzle at
the pick location and disable vacuum when the nozzle is at its desired
place location. This might still not be perfect as the air flow into the
nozzle while lowering the nozzle to the pick location might pull light
components out of their pockets.

Yes, I thought about this too. But I think, like you, that this is also not optimal - there ought to be a risk for light components to rise (tombstone) when the nozzle is arriving.

I basically think, that the blow pump should be activated like it seems to be now; when the nozzle is arriving to its place coordination. (not sure off memory when it is activated, but I think it is just before lowering z).
I have so far not had two nozzles loaded with components, so I am not sure if the BLOW actuator is activated on also the second "placing". Hopefully it is.
But then it needs to shut off, once the placing (or discarding) has been done with one or both nozzles (if both nozzles where used during the operation). At least well before starting a new pick.

Trying to mess with the vacuum valve timing is probably to complex/risky imho.

 - Micael

mark maker

unread,
Mar 23, 2023, 7:21:01 AM3/23/23
to ope...@googlegroups.com

Hi,

you (Jan) explained how that "T-type" works here:

https://groups.google.com/g/openpnp/c/P2-vgP8-6qo/m/hSEpwqFRCQAJ

I quote:

I'd like to share my experience with blow-off and the confetti
calibration: On my CHM-T36VA there is a blower and a vacuum pump linked
to the nozzle using a single valve. So either the vacuum or the blower
is connected to the nozzle tip.

So all you can do is control the pump voltage (PWM) in general, which will likely be slow to react to changes, right?

We talked about the "confetti calibration" there and you said:

If I operate the blower at the
configuration of the original Chinese software (16kHz PWM @2%) the
confetti is blown away after the nozzle as put it down. I archived good
results with blower switched off and temporarily increased place dwell
time.

In this T-type configuration (if I understand correctly), you should control the pump PWM, not the valve. Being a T-type, the valve must simply be controlled by the normal vacuum valve actuation.

Again, to make it clear: there are two separate actuators, one controls the blower pump, the other the vacuum T-valve. Not to be confused in the text below.

This separation means you need to disable the Closes Vacuum Actuator? checkbox, here:

If you disable the Machine Coordination / Before Actuation? on the blower actuator, it should send the command before the move to placement, i.e. the blower pump has some time to adjust while the motion takes place (you should confirm the early actuation in the log):

However, with dual nozzles, the move from the first placement to the second placement on the PCB will be likely be quite small, so I'm not sure this will suffice to adjust. It likely also depends on how diverse the Place Blow-Off Levels are configured on Nozzle Tips (and overridden on Packages). So you'd probably need some extra Place Dwell Time for the worst case.


The second problem is the pick. Ideally you want the blower off or at least at low "standby" level when picking from the feeder.

There are two scenarios:

  1. The "puff" scenario: the blower builds up pressure while the part is on the nozzle, then releases it in a "puff" when the normal vacuum valve actuator is switched OFF (which means switched over to blow in the T valve configuration). If such a puff is sufficient to safely disengage the part from the nozzle tip, we can immediately dial down the blower PWM inside the vacuum valve OFF command, i.e. a second G-code line that dials down the pump PWM after the vacuum valve switch (note we are mixing actuators here). An extra G4 dwell could also be inserted in between the two commands to give the puff a duration.
    Note, if this happens between the two placements of the two nozzles, the dial down command is immediately overridden by the blow off actuator command setting the blow-off level for the second nozzle, so the blower pump will not actually ramp down.
    But after the second nozzle placement, this immediate dialing down of the blower pump will remain effective and make sure blower pressure is low when picking from the next feeder.
    That's the ideal scenario.

  2. The "continuous" scenario: if the puff is not possible, because it needs to blow longer and through the lifting to Safe Z of the nozzle, to safely disengage the part from the nozzle tip, then it becomes more complicated.
    Which is discussed below:

Short of scripting there is currently no facility in OpenPnP to do that.

But it could be easily added. We need to dial down blower pressure later in time. There would have to be a second field on the Nozzle Tip called Standby Blow-Off Level. OpenPnP would revert to that level at the right moment (to be determined), so pressure will be low when picking from the next feeder.

But first, you guys have to tell me if what I'm thinking is right, and if the machine can ramp up/down the blower pressure in reasonable time. Plus this has to be doable with the T-valves switched either way (I guess all four states of two T-valves on two nozzles). If the ramping up/down takes seconds, this is all futile. 🙁

> If you change the actuator type from "Double" to "Boolean" you can configure different commends for ON and OFF.

That won't work for the blower actuator. Unlike other actuators, it is hard-coded to be a Double actuator. And if I understand the situation right, you do want Double to control the PWM on the pump, as explained above...

_Mark

vespaman

unread,
Mar 23, 2023, 12:02:27 PM3/23/23
to OpenPnP
Hi Mark,

The 'T-valve', just so we are all on the same page:
Afaict, this valve is one of two; either vacuum line is "connected" with the nozzle OR the blower line is connected to the nozzle. Exclusively. Both the vacuum and the blower pumps can be controlled with PWM.
Each nozzle has their own valve, but sharing the pumps.


In this T-type configuration (if I understand correctly), you should control the pump PWM, not the valve. Being a T-type, the valve must simply be controlled by the normal vacuum valve actuation.

This is what I think as well!

 

Again, to make it clear: there are two separate actuators, one controls the blower pump, the other the vacuum T-valve. Not to be confused in the text below.

This separation means you need to disable the Closes Vacuum Actuator? checkbox, here:

I have disabled mine (on both nozzles).

If you disable the Machine Coordination / Before Actuation? on the blower actuator, it should send the command before the move to placement, i.e. the blower pump has some time to adjust while the motion takes place (you should confirm the early actuation in the log):

OK, good to know, I have not looked too much into the actuation 'on', since it is currently never switched off.

 

However, with dual nozzles, the move from the first placement to the second placement on the PCB will be likely be quite small, so I'm not sure this will suffice to adjust. It likely also depends on how diverse the Place Blow-Off Levels are configured on Nozzle Tips (and overridden on Packages). So you'd probably need some extra Place Dwell Time for the worst case.

Hmm, I don't see the "Place Blow-Off Level" setting on my nozzle configuration. Is that something that is new (or old)? Or does it depend on something that I have misconfigured?
Maybe this is where my mysterious Blow value of '10' comes from, even if it is currently hidden in my setup?
 
 

The second problem is the pick. Ideally you want the blower off or at least at low "standby" level when picking from the feeder.

I think, given my tests this morning, it needs to be off when arriving for a pick. At least on my machine. This might differ a bit I suppose, from pump to pump.
 

There are two scenarios:

  1. The "puff" scenario: the blower builds up pressure while the part is on the nozzle, then releases it in a "puff" when the normal vacuum valve actuator is switched OFF (which means switched over to blow in the T valve configuration). If such a puff is sufficient to safely disengage the part from the nozzle tip, we can immediately dial down the blower PWM inside the vacuum valve OFF command, i.e. a second G-code line that dials down the pump PWM after the vacuum valve switch (note we are mixing actuators here). An extra G4 dwell could also be inserted in between the two commands to give the puff a duration.
    Note, if this happens between the two placements of the two nozzles, the dial down command is immediately overridden by the blow off actuator command setting the blow-off level for the second nozzle, so the blower pump will not actually ramp down.
    But after the second nozzle placement, this immediate dialing down of the blower pump will remain effective and make sure blower pressure is low when picking from the next feeder.
    That's the ideal scenario.

 This might work. I have very little experience. Maybe any sustained pressure difference between placement 1 and placement 2 is a factor that makes it less attractive.
  1. The "continuous" scenario: if the puff is not possible, because it needs to blow longer and through the lifting to Safe Z of the nozzle, to safely disengage the part from the nozzle tip, then it becomes more complicated.
    Which is discussed below:

Short of scripting there is currently no facility in OpenPnP to do that.

But it could be easily added. We need to dial down blower pressure later in time. There would have to be a second field on the Nozzle Tip called Standby Blow-Off Level. OpenPnP would revert to that level at the right moment (to be determined), so pressure will be low when picking from the next feeder.

Yes, this sounds better to me. "Standby Blow-Off Level"  would in my case be set to 0.

If done like this, and the "Standby Blow-Off Level" can take place after both/all nozzles has placed their components, we might have a better and more "even result" regardless if it is first or second placement.

But first, you guys have to tell me if what I'm thinking is right, and if the machine can ramp up/down the blower pressure in reasonable time. Plus this has to be doable with the T-valves switched either way (I guess all four states of two T-valves on two nozzles). If the ramping up/down takes seconds, this is all futile. 🙁

On my machine ramping up is a matter of hundreds of ms. But how many? I don't know. Maybe I can hook up a scope on the vaccum sensor (not sure if the vacuum sensor works properly with positive pressure, though).
Guestimate is about 100-200ms.  Maybe less, maybe slightly more.

Ramp down, again, on the charmhigh, should be also very fast, since this is so little pressure, and both nozzles are open for "discharge". Is there any situation where a ramp down would takes place with both the valves set to 'vacuum'?
If this is the case, the pump will stop quickly, but may the pressure is still in the pipes for some time. (I have no clue for how long!).

 - Micael

mark maker

unread,
Mar 23, 2023, 12:46:53 PM3/23/23
to ope...@googlegroups.com

> Hmm, I don't see the "Place Blow-Off Level" setting on my nozzle configuration.

Nozzle tip. It makes sense, larger bores likely need more blower pressure. Btw. you can also override it on the package.

> Guestimate is about 100-200ms.  Maybe less, maybe slightly more.

That is fast, even if parts are close together on the PCB the move between them (including move to save Z) will likely take longer.

> Is there any situation where a ramp down would takes place with both the valves set to 'vacuum'?

Probably not.

But I suggest you first try the "puff" scenario. Only when this does not work, should be make it more complicated.

_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/7003301e-0be4-4545-b6d4-83f3fdf8fc95n%40googlegroups.com.

vespaman

unread,
Mar 24, 2023, 3:14:49 AM3/24/23
to OpenPnP

>> Hmm, I don't see the "Place Blow-Off Level" setting on my nozzle configuration.

>Nozzle tip. It makes sense, larger bores likely need more blower pressure. Btw. you can also override it on the package.

There it is! And of course it was 10 on my 502. The fog is clearing :-)

How is this setting treated with respect to the setting in the actuator? I.e. if I set it to zero, will it use the setting of the actuatorOn? Or is zero a valid number here (i.e. it will not enable the blow pump, even if it is set to something in actuator)?

Will test puff, thanks.

 - Micael

mark maker

unread,
Mar 24, 2023, 4:23:28 AM3/24/23
to ope...@googlegroups.com

> How is this setting treated with respect to the setting in the actuator? I.e. if I set it to zero, will it use the setting of the actuatorOn? Or is zero a valid number here (i.e. it will not enable the blow pump, even if it is set to something in actuator)?

I'm not sure I understand the question right, but guessing there is a confusion between Boolean and Double actuator semantics. There is no "ON" or "OFF" with a Double actuator. You can just set a numeric value. The value is then integrated into G-code commands, sent and interpreted by the controller.

However, zero may mean "OFF" in practical, electrical terms. With PWM, I believe this is the case (zero duty cycle) and there might even be semantics in the controller MCU to then really switch the PWM generator and IO port off, completely.

Having said that, I'm not sure switching the blower pump off completely is the best solution. It might be necessary to keep it running at some low standby level, so the pressure is quicker to ramp up when needed. The standby level would have to be chosen sufficiently low, so no parts are blown from feeders.

_Mark

vespaman

unread,
Mar 24, 2023, 8:43:41 AM3/24/23
to OpenPnP
If this yellow value is set to 0...
Screenshot_20230324_132040.png

will it still take precedence over this (red);

Screenshot_20230324_131639-1.png


Or will yellow being zero, (like on other places) mean that it is not overriding "actuator ON value" (red).
(The mouse over text says on the yellow line, that it is the "default if not set on package")

Basically the question boils down to, if this "Actuator ON value" (red) is used at all, apart from the actuator control in the  "Machine controls->Actuators->H1:BLOW" (tab in the jog control pane).

I can of course test this myself, once I get to the machine, but it is always nice to know what to expect.

 - Micael

mark maker

unread,
Mar 24, 2023, 8:56:23 AM3/24/23
to ope...@googlegroups.com

The ON and OFF values are only relevant if an actuator is actuated with Boolean semantics. That is not the case with normal blow-off actuator use, as programmed in OpenPnP.

If you use Machine State actuation...

https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Actuators#actuator-machine-states

... or the interactive Actuator Control Panel dialog boxes with their On and Off buttons...

https://github.com/openpnp/openpnp/wiki/Setup-and-Calibration_Actuators#actuator-control-panel

... then the ON and OFF values come into play, of course.

_m

vespaman

unread,
Mar 24, 2023, 12:22:06 PM3/24/23
to OpenPnP
Got it!

Thx,
 - Micael

Jan

unread,
Mar 27, 2023, 6:31:39 AM3/27/23
to ope...@googlegroups.com
Hi Mark!
Many thanks for your comprehensive answer. It's always a pleasure to
receive such an incredible about of knowledge in so little words.
I'll put my comments between the lines.

On 23.03.2023 12:20, mark maker wrote:
> Hi,
>
> you (Jan) explained how that "T-type" works here:
>
> https://groups.google.com/g/openpnp/c/P2-vgP8-6qo/m/hSEpwqFRCQAJ
>
> I quote:
>
> /I'd like to share my experience with blow-off and the confetti//
> //calibration: On my CHM-T36VA there is a blower and a vacuum pump
> linked//
> //to the nozzle using a single valve. So either the vacuum or the
> blower//
> //is connected to the nozzle tip. //
> /
>
> So all you can do is control the pump voltage (PWM) in general, which
> will likely be slow to react to changes, right?
>
Yes, that's correct. Both Vacuum and Blower can be controlled using PWM.

> We talked about the "confetti calibration
> <https://youtu.be/md68n_J7uto?t=462>" there and you said:
>
> /If I operate the blower at the //
> //configuration of the original Chinese software (16kHz PWM @2%) the //
> //confetti is blown away after the nozzle as put it down. //I
> archived good //
> //results with blower switched off and temporarily increased place
> dwell //
> //time./
>
> In this T-type configuration (if I understand correctly), you should
> control the pump PWM, _not_ the valve. Being a T-type, the valve must
> simply be controlled by the normal vacuum valve actuation.
>
> Again, to make it clear: there are /two /separate actuators, one
> controls the blower pump, the other the vacuum T-valve. Not to be
> confused in the text below.
>
Yes, I think so too. I asked a member of the PnP group to scope the
blower before the conversion a few month before and he reported the
16kHz and 2%. He did not reported if/that it was difficult to observe
the PWM or if the blower is only "part time" operated. Just recently
I've seen a video of the original firmware and found, that the Z axis is
incredible fast. I'm sure its less likely to face blower issues if the
nozzle is very fast. So actually I can't tell how the Chinese are
operating the blower.
Anyhow, I do remember, that I operated the blower manually (at 2%)
while performing the confetti test you quoted using a 502 Juki nozzle
tip and that it did blow the test object away.
I just checked my configuration again and found, that
a) I've a "Blow Off Actuator" configured for all nozzles,
b) have configured the blower actuator as "Value Type" "Double" and set
the "ON Value" to correspond to the 2% duty cycle I wont,
c) verified the operation using the "Actuators" tab in the "Machine
Controls" section,
d) never noticed the blower to be operated except when manually
controlled and
e) still have the default"Place Blow-Off Level" (0) on each nozzle tip.
As I said, I'm now running as per my configuration without blower but
with 20ms "Pick Dwell Time" and 40ms "Place Dwell Time" configured on
all nozzles and no additional dwell time settings per nozzle tip. That
seems to work fine, at least it does a good job for the confetti test
(I've repeated it quite often due to the top camera mounting/drifting
issue and I'm pretty sure the confetti is always placed safely).

> This /separation /means you need to /disable /the *Closes Vacuum
> Actuator?* checkbox, here:
>
> If you /disable /the *Machine Coordination / **Before* *Actuation?* on
> the blower actuator, it should send the command /before /the move to
> placement, i.e. the blower pump has some time to adjust while the motion
> takes place (you should confirm the early actuation in the log):
>
> However, with dual nozzles, the move from the first placement to the
> second placement on the PCB will be likely be quite small, so I'm not
> sure this will suffice to adjust. It likely also depends on how /diverse
> /the *Place Blow-Off Level*s are configured on *Nozzle Tips* (and
> overridden on *Packages*). So you'd probably need some extra *Place
> Dwell Time* for the worst case.
>
I can confirm, that the blowers startup time shall be sufficiently short
to change the level between the nozzles when placing multiple parts. (I
just checked, that the blowers rotation is audible slower then both
values are activated, closing the hoses towards it. It then might take
about 1sec for the blower to reach its steady state, which shall still
be fine.) However, its as always, the major difficulty would be to find
out/measure reasonable values to use...

> > The second problem is the *pick*. Ideally you want the blower off or at
> least at low "standby" level when picking from the feeder.
>
> There are two scenarios:
>
> 1. The "puff" scenario: the blower builds up pressure while the part is
> on the nozzle, then releases it in a "puff" when the normal vacuum
> valve actuator is switched OFF (which means *switched over to blow
> *in the T valve configuration). If such a puff is sufficient to
> safely disengage the part from the nozzle tip, we can immediately
> dial down the blower PWM inside the vacuum valve OFF command, i.e. a
> second G-code line that dials down the pump PWM after the vacuum
> valve switch (note we /are /mixing actuators here). An extra G4
> dwell could also be inserted in between the two commands to give the
> puff a duration.
> Note, if this happens between the two placements of the two nozzles,
> the dial down command is /immediately /overridden by the blow off
> actuator command setting the blow-off level for the /second /nozzle,
> so the blower pump will _not_ actually ramp down.
> But after the second nozzle placement, this immediate dialing down
> of the blower pump will remain effective and make sure blower
> pressure is low when picking from the next feeder.
> That's the ideal scenario.
>
> 2. The "continuous" scenario: if the puff is not possible, because it
> needs to blow longer and /through /the lifting to Safe Z of the
> nozzle, to safely disengage the part from the nozzle tip, then it
> becomes more complicated.
> Which is discussed below:
>
> Short of scripting there is currently no facility in OpenPnP to do that.
>
> But it could be easily added. We need to dial down blower pressure later
> in time. There would have to be a second field on the Nozzle Tip called
> *Standby**Blow-Off Level*. OpenPnP would revert to that level at the
> right moment (to be determined), so pressure will be low when picking
> from the next feeder.
>
> But first, you guys have to tell me if what I'm thinking is right, and
> if the machine can ramp up/down the blower pressure in reasonable time.
> Plus this has to be doable with the T-valves switched either way (I
> guess all four states of two T-valves on two nozzles). If the ramping
> up/down takes /seconds/, this is all futile. 🙁
>
I like the idea of the "puff". To my understanding the blower shall help
to release the vacuum more quickly on place. I guess that's easily
achievable when enabling the blower before the place.
However, it sounds like lots of work and many unknown to figure out
when and how to enable the blower for a "good" puff. One could probably
facilitate the vacuum sensor. (The alternative is still a few ms dwell
time per place operation.)
I do agree, that the blower shall be switched off (or to a configurable
standby level) after the placement and I'd like to see a check box to
enable this feature (and a box to configure the level).

> /> //If you change the actuator type from "Double" to "Boolean" you can
> configure different commends for ON and OFF. /
>
> That won't work for the blower actuator. Unlike other actuators, it is
> hard-coded to be a *Double *actuator. And if I understand the situation
> right, you /do want /*Double *to control the PWM on the pump, as
> explained above...
>
It's great to hear, how the internals are working and that all I've
observed are by intention. To avoid future confusion may I suggest to
add warnings to I&S solutions, that
a) an actuator configured as "Blow Off Actuator" on any nozzle shall be
of "Double" type? (at present I get a warning, that "The blow off
actuator BLOW has no ACTUATOR_BOOLEAN_COMMAND assigned.") and
b) the "Blow Off Actuator" has no notable function as long as no level
is defined on any nozzle tip. (a pure warning/information would help to
understand why there is no blow off with just the defaults.)
(At least I was not aware of this two requirements and hence have no
good experience with the blower yet to report.)

Jan
> https://groups.google.com/d/msgid/openpnp/2219963a-00a4-311e-1b8b-9aed1d08cfdb%40makr.zone <https://groups.google.com/d/msgid/openpnp/2219963a-00a4-311e-1b8b-9aed1d08cfdb%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Mar 27, 2023, 6:57:00 AM3/27/23
to ope...@googlegroups.com

>     I do agree, that the blower shall be switched off (or to a configurable standby level) after the placement and I'd like to see a check box to enable this feature (and a box to configure the level).

I hope you have seen and understood that this should be possible without any change in OpenPnP, through clever use of G-code (as I described).

I agree it would be more elegant to support this directly and cleanly from OpenPnP (It would also allow the blower actuator on a different controller/driver than the vacuum actuator), however I'm reluctant to add this before it is proven to work using the G-code way.


> b) the "Blow Off Actuator" has no notable function as long as no level is defined on any nozzle tip. (a pure warning/information would help to understand why there is no blow off with just the defaults.)

I don't understand the sentence and/or the idea behind this, please elaborate.

_Mark

Jan

unread,
Mar 27, 2023, 9:37:15 AM3/27/23
to ope...@googlegroups.com
Hi Mark!

On 27.03.2023 12:56, mark maker wrote:
> />     I do agree, that the blower shall be switched off (or to a
> configurable standby level) after the placement and I'd like to see a
> check box to enable this feature (and a box to configure the level). /
>
> I hope you have seen and understood that this should be possible
> /without/ any change in OpenPnP, through clever use of G-code (as I
> described).
>
Yes, I do!

> I agree it would be more elegant to support this directly and cleanly
> from OpenPnP (It would also allow the blower actuator on a different
> controller/driver than the vacuum actuator), however I'm reluctant to
> add this before it is proven to work using the G-code way.
>
Agreed, would be nice to have, no need to action.

>
> /> b) the "Blow Off Actuator" has no notable function as long as no
> level is defined on any nozzle tip. (a pure warning/information would
> help to understand why there is no blow off with just the defaults.) //
> /
>
> I don't understand the sentence and/or the idea behind this, please
> elaborate.
>
I just was not aware of the relations until you explainted them within
this thread. I did configure the blower some time ago hopeing to get
this feature to work. Unfortunately setting the blower to double was
rather a way to express my wish to configure it's on value to 2% then
the understanding that the blower has to be of double type. I also was
not aware, that I have to configure a blow off value on the nozzle tip
to actually make it work automatically (or make it do something that I
can notice physically). Previously I enabled the blower manually (until
I discovered that dwell times work better for me). (Actually I did the
same manual operation of the vacuum pump until you introduced the "Pump
Control" feature.)
I suggested the two additions to I&S because it would have helped me in
understanding the blower setup: a) make sure the blower actuator is of
the correct type and b) inform/warn me, that I shall review the blow off
value on the nozzle tip.

Jan
> https://groups.google.com/d/msgid/openpnp/019d7787-5c0e-8042-6bef-e0588e79758b%40makr.zone <https://groups.google.com/d/msgid/openpnp/019d7787-5c0e-8042-6bef-e0588e79758b%40makr.zone?utm_medium=email&utm_source=footer>.

Jan

unread,
Mar 27, 2023, 9:37:42 AM3/27/23
to ope...@googlegroups.com
Hi Mark!

On 27.03.2023 12:56, mark maker wrote:
> />     I do agree, that the blower shall be switched off (or to a
> configurable standby level) after the placement and I'd like to see a
> check box to enable this feature (and a box to configure the level). /
>
> I hope you have seen and understood that this should be possible
> /without/ any change in OpenPnP, through clever use of G-code (as I
> described).
>
Yes, I do!

> I agree it would be more elegant to support this directly and cleanly
> from OpenPnP (It would also allow the blower actuator on a different
> controller/driver than the vacuum actuator), however I'm reluctant to
> add this before it is proven to work using the G-code way.
>
Agreed, would be nice to have, no need to action.

>
> /> b) the "Blow Off Actuator" has no notable function as long as no
> level is defined on any nozzle tip. (a pure warning/information would
> help to understand why there is no blow off with just the defaults.) //
> /
>
> I don't understand the sentence and/or the idea behind this, please
> elaborate.
>
I just was not aware of the relations until you explained them within
this thread. I did configure the blower some time ago hoping to get this
feature to work. Unfortunately setting the blower to double was rather a
way to express my wish to configure it's on value to 2% then the
understanding that the blower has to be of double type. I also was not
aware, that I have to configure a blow off value on the nozzle tip to
actually make it work automatically (or make it do something that I can
notice physically). Previously I enabled the blower manually (until I
discovered that dwell times work better for me). (Actually I did the
same manual operation of the vacuum pump until you introduced the "Pump
Control" feature.)
I suggested the two additions to I&S because it would have helped me in
understanding the blower setup: a) make sure the blower actuator is of
the correct type and b) inform/warn me, that I shall review the blow off
value on the nozzle tip.

Jan

> https://groups.google.com/d/msgid/openpnp/019d7787-5c0e-8042-6bef-e0588e79758b%40makr.zone <https://groups.google.com/d/msgid/openpnp/019d7787-5c0e-8042-6bef-e0588e79758b%40makr.zone?utm_medium=email&utm_source=footer>.

mark maker

unread,
Mar 27, 2023, 1:17:07 PM3/27/23
to ope...@googlegroups.com

> b) inform/warn me, that I shall review the blow off value on the nozzle tip.

Ahh, now I understand.

Unfortunately, I assume setting 0 is a valid level, so I&S should not complain.

_Mark

Jan

unread,
Mar 27, 2023, 2:13:29 PM3/27/23
to ope...@googlegroups.com


On 27.03.2023 19:17, mark maker wrote:
> /> b) inform/warn me, that I shall review the blow off value on the
> nozzle tip. //
> /
>
> Ahh, now I understand.
>
> Unfortunately, I assume setting 0 is a valid level, so I&S should not
> complain.
>
I'm sorry for still being imprecise: I don't wont I&S to "complain" just
present a warning/information, that addition work might be needed.
When ever any/a new blower actuator is assigned to any nozzle, I&S may
1) check if the actuator is of the correct type (and complain if not)
and 2) always present the warning/info, that the value shall be visited.
This would inform the user that without checking this setting she/he
might not get the desired results. One would just acknowledge the
message without any consequence.
This type of info would help to setup the blower without you (and
others) spending hours explaining how it has to be setup.

Jan

> On 3/27/23 15:37, 'Jan' via OpenPnP wrote:
>> b) inform/warn me, that I shall review the blow off value on the
>> nozzle tip.
>
> --
> 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
> <mailto:openpnp+u...@googlegroups.com>.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/openpnp/db095be0-b0af-3017-bce0-b70f773b1c03%40makr.zone <https://groups.google.com/d/msgid/openpnp/db095be0-b0af-3017-bce0-b70f773b1c03%40makr.zone?utm_medium=email&utm_source=footer>.

vespaman

unread,
Apr 8, 2023, 2:51:45 AM4/8/23
to OpenPnP

For future reference, Wayne has already done a lot of work detailing the blow/vac. https://github.com/openpnp/openpnp/wiki/Charmhigh-36VA-Pneumatics

 -  Micael

mark maker

unread,
Apr 8, 2023, 3:24:04 AM4/8/23
to ope...@googlegroups.com

Great!

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/8f0cc584-661c-4a2c-bb88-7f5dee138965n%40googlegroups.com.
Reply all
Reply to author
Forward
0 new messages