How to completely Speed-up OpenPnP 2.0 (Latest Test download version)

727 views
Skip to first unread message

Developer Algo

unread,
Feb 21, 2025, 8:08:56 PM2/21/25
to OpenPnP
I have managed to get my PnP to run  small test jobs of placing about 12 to 24 parts on 6 boards on a panel  with only 3 Nozzles due to test parts that I have (Cheap 0402 resistors) but my PnP has 6 Nozzles in total.

I am looking at practical ways to increase the speed of OpenPnP dramatically from what it is at the moment. I have gone through a few topics here on the channel and made some adjustments.

If any expert in OpenPnP can take a look at my almost finished machine.xml , Duet3 6XD controller config.g file and give some practical suggestions to achieve high speeds between 3000 CPH to 5000 CPH  eventually

Currently its doing about 646.4 CPH with 3 Nozzles 

My Axes  X & Y Axis speeds are still low but i want to gradually increase them as i test but great suggestions for ultimate speed are welcome
Duet3-6XD-Controller_config.g
machine.xml

Developer Algo

unread,
Feb 21, 2025, 10:09:00 PM2/21/25
to OpenPnP
Made further tweaks to from about 646 CPH to 733 CPH . Here is the log for the run 
First_Run_PnP_Tests_733-CPH_.txt

Chris Campbell

unread,
Feb 22, 2025, 1:11:22 AM2/22/25
to ope...@googlegroups.com
I doubt you will get many takers ready to analyze such a broad general
issue just from logs. From watching the machine work, surely you have
some idea of where the bottleneck lies, or at least a more specific
aspect to ask about? What are the 'adjustments' you tried? What does
'low' speed mean? How much closer to your target of 3000 could you get
just by running at full speed? Nobody but you can have any clue about
this...

It would also be nice to mention how you got from 646 to 733,
obviously because it might help other people out, but also to avoid
would-be helpers from wasting their time suggesting things you've
already tried.
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/167a30ce-e8ed-4c9a-ae0e-44d2c3c220c7n%40googlegroups.com.

Jan

unread,
Feb 22, 2025, 4:39:34 AM2/22/25
to ope...@googlegroups.com
Hi!
I'm excited to follow your progress!
As Chris pointed out, providing a video would be helpful to make more
suggestions.
From what I've leaned so far, I can say

- Acceleration is king. Try to increase it as much as you can. The fast
the machine runs, the more CPH you get.

- Try to avoid decisions to be taken by OpenPnP. The more vision
operations you have or stuff like vacuum sensing, the slower the overall
operation is. For each of them, OpenPnP has to request the controller to
finish all its pending motion, then do the requested decisions before it
can instruct the controller how to continue. Furthermore: each of them
can fail causing more issues.

I eg. disabled all vision adjustments to the feeders (setting them up
carefully before the job is sufficient), use static pick and place dwell
times, configured fixed settling times.
Finally I played around with raising the bottom vision Z to Safe-Z.
That gave an other performance boost of about 10%.

Jan

PS: I've an equal test job that runs at about 2500CPH (dual nozzle, both
for 0402, all parts with bottom vision).

On 22.02.2025 04:08, Developer Algo wrote:
> Made further tweaks to from about *646 CPH* to *733 CPH* . Here is the
> log for the run
>
> On Friday, February 21, 2025 at 8:08:56 PM UTC-5 Developer Algo wrote:
>
> I have managed to get my PnP to run  small test jobs of placing
> about 12 to 24 parts on 6 boards on a panel  with only 3 Nozzles due
> to test parts that I have (Cheap 0402 resistors) but my PnP has 6
> Nozzles in total.
>
> I am looking at practical ways to increase the speed of OpenPnP
> dramatically from what it is at the moment. I have gone through a
> few topics here on the channel and made some adjustments.
>
> If any expert in OpenPnP can take a look at my almost finished
> machine.xml , Duet3 6XD controller config.g file and give some
> practical suggestions to achieve high speeds between *3000 CPH to
> 5000 CPH*  eventually
>
> Currently its doing about *646.4 CPH* with 3 Nozzles
>
> My Axes  X & Y Axis speeds are still low but i want to gradually
> increase them as i test but great suggestions for ultimate speed are
> welcome
>
> --
> 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 visit https://groups.google.com/d/msgid/
> openpnp/167a30ce-e8ed-4c9a-ae0e-44d2c3c220c7n%40googlegroups.com
> <https://groups.google.com/d/msgid/openpnp/167a30ce-e8ed-4c9a-
> ae0e-44d2c3c220c7n%40googlegroups.com?utm_medium=email&utm_source=footer>.

vespaman

unread,
Feb 22, 2025, 4:50:05 AM2/22/25
to OpenPnP
I second that, and also - it is just good to learn to study the logs sooner rather than later, and start by splitting the big parts up. This will give you a pie chart if you put the times into a spreadsheet, then you can go deeper and deeper, until you have mapped all parts up. This will give you a good view of where to put in the attacks.

And, if you are anywhere like me, you'll keep on tweaking, so again, log reading is king. :-)

And also decide how you are measuring the cph; you probably want to standardize this somewhat, (same feeder, same component type, etc).

The cph result reported at job end is not really a good indicator, since it is very variable.


I sometimes plays with an idea to create a cph log parser, that could give a histogram, that would be very useful both in optimizing details, as well as  the full job.

No doubt should you be able to hit 3000+, on my 2-nozzle machine, peak is about 3500. (But job cph is rather low at ~1800cph depending on manual nozzle changes and some components that I move slow).


 - Micael

SM

unread,
Feb 22, 2025, 10:51:13 AM2/22/25
to OpenPnP
If you add up the times from the logfile, you can see where there is room for improvement:

algo_773cph.PNG

The movements [move & feed/pick] are too slow, as both the acceleration and the top speed are not particularly high.

The settling times also show that the stepper motors with the high moving mass do not find it easy to settle the system quickly enough.

The high times for the vacuum measurements are probably due to the fact that only a few measurements/second are permitted.

Toby Dickenson

unread,
Feb 22, 2025, 10:54:08 AM2/22/25
to ope...@googlegroups.com
On Sat, 22 Feb 2025 at 15:51, 'SM' via OpenPnP <ope...@googlegroups.com> wrote:
>
> you can see

Nice picture! how do you generate that?

simpl...@tuta.io

unread,
Feb 22, 2025, 11:04:15 AM2/22/25
to Openpnp
a coffee, excel 2007 and 40 minutes of my spare time ;-)


Feb 22, 2025, 16:54 by to...@tarind.com:
On Sat, 22 Feb 2025 at 15:51, 'SM' via OpenPnP <ope...@googlegroups.com> wrote:

you can see

Nice picture! how do you generate that?

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

Mike Menci

unread,
Feb 22, 2025, 11:31:13 AM2/22/25
to OpenPnP
Well done ! Coffee did the magic!   :-)) 

Developer Algo

unread,
Feb 22, 2025, 5:12:38 PM2/22/25
to OpenPnP
@simpl..
This is fantastic work with Excel and well appreciated. Please someone give @simple.... a  gallon of Coffee!!!!! 

Developer Algo

unread,
Feb 22, 2025, 5:20:02 PM2/22/25
to OpenPnP
it would really be a great idea to include a log parser in OpenPnp 2.0  to be able to create such a nice, simple  and clear picture of a job , indicating what is actually going on with the machine through the logs 

Developer Algo

unread,
Feb 22, 2025, 5:42:19 PM2/22/25
to OpenPnP
a few pointers so far that have been mentioned by @simple... & others  in order to improve speed on the PnP machine 

1. The Acceleration is affecting Move & pick 
2. The  settling times
3. Vacuum Pressure measurements 

(1) 
  •  GCodeAsyncDriver   motion control type:
    • i have Motion Control Type as ModeratedconstantAcceleration  ,  does it matter if i change it to Simulated3rdOrderControl and test it. Earlier when i tried it , there was a lot of jerking and sudden slow and fast movements during some movement sequence but i thought because i was not finished with all configurations , i would look at it again. if there is no benefit of using it then i am ok with that 

  • Acceleration on X & Y Axis to start. For this PnP machine , i have NEMA 34 ,  
    • Increase  Feed Rate [/s]
    • Increase  Acceleration [/s^2]

On Saturday, February 22, 2025 at 10:51:13 AM UTC-5 simpl...@tuta.io wrote:

dc42

unread,
Feb 23, 2025, 12:24:12 PM2/23/25
to OpenPnP
If the settling time is needed because the tool head is vibrating immediately after movement stops, enabling input shaping may allow a lower settling time to be used.

Wayne Black

unread,
Feb 23, 2025, 12:36:45 PM2/23/25
to OpenPnP
Hey David,
I just got a new head/accelerometer on my Duet machine and I'm just starting in on the tuning. Z ringing is very apparent with rapid Y motion. Is this basically all the info available User manual: Tuning | Duet3D Documentation

Developer Algo

unread,
Feb 23, 2025, 12:42:04 PM2/23/25
to OpenPnP
Does changing   Motion Control Type from ModeratedconstantAcceleration to  Simulated3rdOrderAcceleration make any difference considering , AFAIK, Duet3D 6XD controller is a Constant Acceleration Type of Board. What is the benefit if any ? Smoothness, Faster speeds , vibration reduction, etc ?

If there benefits in that it will improve Speed , Smoothness and lower Vibrations(if any) it would be nice to try as one of the options.

SM

unread,
Feb 23, 2025, 1:58:18 PM2/23/25
to OpenPnP

You are the designer of your machine and you decide which components you use.

The travel speed results from the maximum motor speed multiplied by the pitch of the ball screw. For example, if your stepper motor only manages 1500 rpm (= 25 rps), then you will only be able to travel at a maximum of 250 mm/s with an SFU2510. If your ball screw has a pitch of 40mm and you have an AC servo motor with 4000rpm then up to 2.66m/s are possible.

With most AC servos, the optimum control behavior (shortest possible settling times) and the maximum acceleration can be determined using the manufacturer's tuning software. However, the high acceleration forces must also be damped accordingly if the moving mass is high. The design, the bearings and the substructure must be able to withstand these forces. It is not for nothing that placement machines that accelerate the gantry at 20000-30000mm/s² have a very high dead weight.

I would therefore first (carefully) try to find out what maximum values your axes allow and only then consider which motion profile should be used.

Apart from your urge to make the machine as fast as possible, you should never disregard the safety aspects.

Developer Algo

unread,
Feb 23, 2025, 3:36:04 PM2/23/25
to OpenPnP
@simpl....
i agree with your suggestions and that's what i am looking to work on but my first priority is safety of the PNP machine. That's why i am starting with a very low speed on X & Y  ( just about 170 to 200 /s^2  Feed rate ). As they say "Speed without control kills" , in this case Speed without control you will have a lot of damaged Nozzles, Broken boards , damaged Axes , Burnt motors , and the list goes on and on. So Safety first for me with gradual improvement to the maximum acceptable speeds of the X & Y NEMA 34 Closed-Loop Stepper Motors , 8Nm (86HSE8N-BC38) on this PnP machine.

Here is an initial movement X & Y test at about 170 [/s^2]  (or 10200 [/min] )

86hse8n-bc38.pdf
86hse8n-bc38_2.pdf

simpl...@tuta.io

unread,
Feb 23, 2025, 4:18:30 PM2/23/25
to Openpnp
i'm using the 12Nm version on my cnc with 75V power supply where it works ok because there are no high speeds and high accelerations necessary

if you look in the datasheet then you should see that this stepper motor is not good for a pick and place ma hine because it has low topspeed, low torque at high rpm and only a 1000 line encoder and the hss86 driver does not perform very well on dynamic loads (high settling times)




Feb 23, 2025, 21:36 by develope...@gmail.com:
--
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.

Developer Algo

unread,
Feb 23, 2025, 5:04:54 PM2/23/25
to OpenPnP
In my future options to improve on speed and smoothness , i am also looking at near future upgrades of AC servo motors with 2-axis controller for X & Y axis  to later replace the current NEMA 34 i have on this PnP machine for X & Y. Any suggestions on which great affordable AC Servos for high performance PnP  i.e  3000 ~ 6000 rpms with good enough torque, that most of the high performing DIY PnP users favor   

simpl...@tuta.io

unread,
Feb 23, 2025, 6:51:04 PM2/23/25
to Openpnp

I wouldn't try to reinvent the wheel, but look at what some low-cost manufacturers are doing

whereas in the past panasonic, then sigriner were used, now they fall back on lesai, presumably for profit maximizing reasons


Feb 23, 2025, 23:04 by develope...@gmail.com:

Developer Algo

unread,
Feb 23, 2025, 7:53:16 PM2/23/25
to OpenPnP
Here is a small video of my PnP initial Test for  X, Y, Z-based axes(Z,U,V)  and all other rotational Axes ( W,A,B,C,D, k) movements including Vacuum Pressure and Cameras at lower speeds & Accelerations for X & Y axis 

Jan

unread,
Feb 24, 2025, 4:18:38 AM2/24/25
to ope...@googlegroups.com
Hi!
You can read about Motion Control Types in the Wiki:
https://github.com/openpnp/openpnp/wiki/GcodeAsyncDriver#motion-control-type
Basically, OpenPnP can not do more then operating your controller. IIRC
only TinyG support jerk control. The difference between the Motion
Control Types, is the way it operates your controller. With
ModeratedConstantAcceleration your controller is operated using lower
acceleration and feedrate settings as supported for smoother motion and
less ringing. The amount of reduction depends on the direction of motion
and on your jerk setting. With very high jerk settings you'll get the
same results as with ConstantAcceleration (I think).
Simulated3rdOrderControl tries to simulate a controller with jerk
control by splitting each acceleration/deceleration segment into
multiple segments with different acceleration limits. This generates a
lot of traffic towards the controller and hence requires a fast
communication link. In addition, the controller has to be configured to
queue some segments up before motion starts in order to execute them as
a single fluent motion sequence. Duet with Ethernet interface supports that.
The recommended setting is ModeratedConstantAcceleration.

Jan

On 23.02.2025 18:42, Developer Algo wrote:
> Does changing   Motion Control Type from ModeratedconstantAcceleration
> to  Simulated3rdOrderAcceleration make any difference considering ,
> AFAIK, Duet3D 6XD controller is a Constant Acceleration Type of Board.
> What is the benefit if any ? Smoothness, Faster speeds , vibration
> reduction, etc ?
>
> If there benefits in that it will improve Speed , Smoothness and lower
> Vibrations(if any) it would be nice to try as one of the options.
>
>
> On Sunday, February 23, 2025 at 12:24:12 PM UTC-5 dc42 wrote:
>
> If the settling time is needed because the tool head is vibrating
> immediately after movement stops, enabling input shaping may allow a
> lower settling time to be used.
>
> On Saturday, 22 February 2025 at 22:42:19 UTC develope...@gmail.com
> wrote:
>
> a few pointers so far that have been mentioned by @simple... &
> others  in order to improve speed on the PnP machine
>
> 1. The Acceleration is affecting Move & pick
> 2. The  settling times
> 3. Vacuum Pressure measurements
>
> (1)
>
> *  GCodeAsyncDriver   motion control type:
> o i have Motion Control Type as
> ModeratedconstantAcceleration  ,  does it matter if i
> change it to Simulated3rdOrderControl and test it.
> Earlier when i tried it , there was a lot of jerking and
> sudden slow and fast movements during some movement
> sequence but i thought because i was not finished with
> all configurations , i would look at it again. if there
> is no benefit of using it then i am ok with that
>
>
> * Acceleration on X & Y Axis to start. For this PnP machine ,
> i have NEMA 34 ,
> o Increase  Feed Rate [/s]
> o Increase  Acceleration [/s^2]
>
>
> On Saturday, February 22, 2025 at 10:51:13 AM UTC-5
> simpl...@tuta.io wrote:
>
> If you add up the times from the logfile, you can see where
> there is room for improvement:
>
> algo_773cph.PNG
>
> The movements [move & feed/pick] are too slow, as both the
> acceleration and the top speed are not particularly high.
>
> The settling times also show that the stepper motors with
> the high moving mass do not find it easy to settle the
> system quickly enough.
>
> The high times for the vacuum measurements are probably due
> to the fact that only a few measurements/second are permitted.
>
> On Saturday, February 22, 2025 at 4:09:00 AM UTC+1
> develope...@gmail.com wrote:
>
> Made further tweaks to from about *646 CPH* to *733
> CPH* . Here is the log for the run
>
> On Friday, February 21, 2025 at 8:08:56 PM UTC-5
> Developer Algo wrote:
>
> I have managed to get my PnP to run  small test jobs
> of placing about 12 to 24 parts on 6 boards on a
> panel  with only 3 Nozzles due to test parts that I
> have (Cheap 0402 resistors) but my PnP has 6 Nozzles
> in total.
>
> I am looking at practical ways to increase the speed
> of OpenPnP dramatically from what it is at the
> moment. I have gone through a few topics here on the
> channel and made some adjustments.
>
> If any expert in OpenPnP can take a look at my
> almost finished machine.xml , Duet3 6XD controller
> config.g file and give some practical suggestions to
> achieve high speeds between *3000 CPH to 5000 CPH*
> eventually
>
> Currently its doing about *646.4 CPH* with 3 Nozzles
>
> My Axes  X & Y Axis speeds are still low but i want
> to gradually increase them as i test but great
> suggestions for ultimate speed are welcome
>
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/
> bf900d42-484a-455a-9954-41b20752fb47n%40googlegroups.com <https://
> groups.google.com/d/msgid/openpnp/
> bf900d42-484a-455a-9954-41b20752fb47n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

dc42

unread,
Feb 24, 2025, 6:04:56 AM2/24/25
to OpenPnP

jbussmann

unread,
Feb 24, 2025, 6:41:26 AM2/24/25
to OpenPnP
Adding to all that has already been said, I would like to express a few more thoughts from the perspective of a mechanical engineer. Mechanics are the basics of every motion system but at the same time also the most neglected aspects.

> Acceleration is king.
Thanks to the awesome work of SM, we know that the motion system is the bottleneck. Therefore acceleration really is king in speeding things up. This should be the main goal, going forward. 

>  in order to improve speed [...] increase Feed Rate [/s]
This might be a false assumption because feed rate only becomes important if travel distances are large enough. However judging from your latest video where your machine moves really slow, increasing feed rate will certainly help a lot at this stage.

> As they say "Speed without control kills"
I have never heard such a thing. I only know that from blindly repeating what others say, one learns how to lie. I also know that speed without responsibility kills. The responsible and safe thing would be to test the limits of your system in an unharmful way and then dial back by a safety margin. Blaming someone or something else (lack of control in this case) neither makes your machine safe nor does it make you responsible. 

What strikes me the most is your rash approach and neglect of requirements, which is common to a lot of inexperienced designers (and something even I fall victim to, every now and then). Let me start be reciting an exchange from a past conversation, where you shared the first pictures of your machine:
SM: the moving mass of both the head and the complete gantry should be kept as low as possible.
Algo: Yes, Did that already (Using only Aluminum for entire build).
SM: Well, aluminum also has a lot of weight. I would try to save a few hundred grams, e.g. by not using such thick plates on the head or through deliberate cut-outs, without compromising the rigidity of the construction. 
Algo: The machine is very well balanced as concerns the mass of the Head and other parts. Almost little to no vibrations at high speeds. So I am happy with that for the time being.

It is immediately clear that you changed your requirements from "speed is not important" during design to "speed is important" after the design is finished. This is already bad. Even worse, you are blatantly lying: your machine is not balanced in any way with respect to mass distribution and there is a lot of vibration already at low speeds. Be a bit humble an think about what others suggest, they might be more knowledgeable than you. Applying first principles to this issue, it should become immediately obvious that a = F / m and therefore 10% weight reduction directly translates to 10% increased acceleration capabilities, given a certain amount of torque available by the motors. So maybe it would be a good time to revise your design of the head/gantry and make it considerably lighter and more compact? I estimate there to be 30-50% weight reduction possible in both head and gantry. The whole head assembly is wiggling at what I assume to be laughably low speeds for the capabilities of your motion system components. Also your whole table is shaking due to all the mass you are moving. This is only becoming worse, if you increase speed and acceleration. Reducing moving mass is just the simplest, safest and most economical way to improve things, just as SM pointed out.

>  To improve on speed and smoothness, I am also looking at near future upgrades of AC servo motors.
For the reasons outlined above, this is actually the very opposite of what you want. Faster and more powerful motors just cause more vibration, longer settling time, more energy in the system and thus less safety and higher risk of substantial damage. For reference: I run my LumenPnP at 800m/s and 4000m/s² and I crashed it countless times already due to me being an idiot some times. But the mass and torque are just too low to cause serious damage to anything. Even at several hundreds of g, one does not need massive metal plates to hold a head, if it is built light enough.

> I wouldn't try to reinvent the wheel, but look at what some low-cost manufacturers are doing.
It feels like I'm actually just reiterating an all the points SM has already made. No need to overengineer things, just follow well known principles and listen to others if they point those things out to you. Low-cost manufacturers will remove whatever they can from their design because they operate by KISS. They know that the best part is no part because it has no cost, no mass and doesn't take time (and therefore cost) to design and source. Less mass means less torque required which allows for a smaller, cheaper and lighter drive system, which again reduces mass. Reducing mass (especially if it is moving mass) is just a virtuous cycle all around.

Developer Algo

unread,
Feb 24, 2025, 1:59:53 PM2/24/25
to OpenPnP
@jbussmann,
i do appreciate your suggestions, i am open to criticism and will gladly make adjustments if i have to. 

Marshall S. (Alakuu)

unread,
Feb 24, 2025, 2:40:54 PM2/24/25
to OpenPnP
My equipment runs ~500cph and I know a huge amount of what's slowing my machine down is 'feed' being non-async. In that the head moves to the feeder, waits for a feed, then picks. It doesn't do feeds while moving. I believe Async can be setup on with Openpnp but failed horribly.
If it's not been setup on your machine I'd wager that Async when properly setup can have one of the largest improvements on CPH. 

jbussmann

unread,
Feb 24, 2025, 3:17:26 PM2/24/25
to OpenPnP
Your next steps largely depend on what your goals are.

- Are you looking for getting as much speed as possible with as little work as possible?
Then start by tuning the feed rate, acceleration and jerk if applicable. If you don't know how to go about this, there is a wiki article that should get you started with the basics.

- Are you looking for getting as much speed as possible and don't care how much work goes into it?
Overhaul your machine design. Start with the head: get rid of all the unnecessary stuff like the cable coils, displays and whatever else there is which isn't strictly necessary. Ask people if it really is faster if the valves are on the head compared to them being stationary (I have no feel for this). You are probably better off removing the driver boards from the head too. Again, ask people with more knowledge and experience than me about the pros and cons of having the drivers on the head and balance them according to your requirements. If I would go all out on this, I would probably design a small driver only PCB that goes to the head so only control lines and power need to go through the drag chain. Next you can get rid of most of that aluminium. By feel, half the thickness is plenty enough (maybe even 1/3 or a quarter), make cut-outs and remove all material that isn't load bearing (holding a few grams of PCB is not load bearing). Again, ask people how much faster 6 nozzles really are, compared to 4 or 2 nozzles. There is a trade-off because less nozzles is lighter and thus potentially faster. I also have absolutely no feel for the degree of optimization on multi nozzle machines. Maybe more nozzles is even slower either way because of all the additional movements and OpenPnP lacks the capabilities to e.g. optimize where the feeders go on the machine. I also don't know if your nozzles are the same pitch as the feeders to allow simultaneous picking or at leas picking without x and y movement. Nor do I know if OpenPnP supports this and I doubt it optimizes for it. Maybe also think about arranging the nozzles in a 3 by 2 arrangement because this makes the head much narrower and thus safes material and mass (Mike has such an arrangement, maybe he is kind enough to share the link to his online CAD resources). Then go for the gantry, again by feel you are unlikely to reduce stiffness by a noticeable amount, if you go with half the thickness of the aluminium plates and add cut-outs.

@Marshall
The feeders here look professional grade, speed is usually not a concern with them, even if they don't feed async.

Developer Algo

unread,
Feb 27, 2025, 2:11:02 PM2/27/25
to OpenPnP
Hey Jbussmann,

Thanks for the well thought suggestions and i appreciate it. At the moment , i am looking to get as much speed as possible with as little work as possible. But once i get that going and have run a couple of production jobs , i will have a better feel on what works and what doesn't .  At that point , I will start the process of  redesigning an extremely lighter head assembly (Not reinventing the wheel - use existing off-the-shelf parts that are light and work well) and will remove the expansion boards or any other unnecessary parts from the redesigned head. Also may be change the NEMA 34 to AC Servo motors

My main goal is Speed and Precision of the PNP using OpenPNP. 

How fast can we run OpenPNP if everything is optimized ? and what are  the best affordable off-the-shelf parts to use that can be used effectively to optimize an OpenPNP for ultimate Speed and Precision ?

if we can collectively answer those questions then i believe that will help a lot of the new and advanced  users

Developer Algo

unread,
Feb 27, 2025, 2:20:16 PM2/27/25
to OpenPnP
i have managed so far to get it to 745 CPH on 3 Nozzles test. i will keep tuning the Feedrate, acceleration & Jerk values to see where i get.  What are you using in terms of GCodeAsyncDriver Motion Controller type  ModeratedConstantAcceleration or Simulated3rdOrderAcceleration  ? and does it make a difference ?

Michael Anton

unread,
Feb 28, 2025, 1:20:20 AM2/28/25
to OpenPnP
Take a look at some of the videos of my ECM Luna EXP machine running here: https://www.youtube.com/@michael_anton/videos.  This is a single head commercial machine from 2009 running proprietary software, and not OpenPnP.  With one nozzle picking, it can do a bit over 1800cph using flying vision (using bottom vision its around 700-900cph, but the bottom vision is quite slow).  It uses Cool Muscle NEMA23 sized AC servos.  Note that they use a sneaky method to allow the X axis motor to be stationary by rotating one of the Y axis linear rods.  The rod has spline grooves cut into it, and the linear bearing that rides on it, and also rotates a pulley that drives the X axis belt.  It uses a vacuum ejector, and the valves and ejector are mounted on the machine frame.  Running the length of hose to the head after the ejector doesn't appear to cause any major performance loss.

Jan

unread,
Feb 28, 2025, 4:21:23 AM2/28/25
to ope...@googlegroups.com
I recommend to go with ModeratedConstantAcceleration. Simulated3rdOrder
requires additional configurations and a supported controller. If not
setup properly the results will be worth.
I'd also recommend to disable jerk initially (set it to 0). This will
always drive with the configured acceleration and feed rate limits. If
that causes to much vibrations, you can try to reduce them by setting a
jerk value. Reasonable jerk values are about one order of magnitude
larger then the acceleration.
I'd further suggest to setup a test motion sequence using the Motion
Planner (Machine Setup -> Machine (root node) -> Motion Planner Tab).
With Motion Planner Diagnostics you can tune your settings.

Jan
> wiki article <https://github.com/openpnp/openpnp/wiki/Machine-
> Axes#what-values-should-i-set> that should get you started with
> --
> 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 visit https://groups.google.com/d/msgid/
> openpnp/477ef70a-6718-45b2-9024-580ee4f2cd18n%40googlegroups.com
> <https://groups.google.com/d/msgid/
> openpnp/477ef70a-6718-45b2-9024-580ee4f2cd18n%40googlegroups.com?
> utm_medium=email&utm_source=footer>.

jbussmann

unread,
Feb 28, 2025, 5:42:54 AM2/28/25
to OpenPnP
@Michael
Thanks for sharing that insight. I goes to show just how far manufacturer go to reduce moving mass as much as possible. It's simply the single most important aspect of a moving system and also the sole reason why a complicated thing like CoreXY exists.

@Developer Algo
> Its about 7.2 to 8.0 lbs with everything on it.
That's about 3.5kg, quite hefty...

> At the moment , i am looking to get as much speed as possible with as little work as possible.
Maybe you can also find something in between. I see you have a large coil of white cable siting on top of your head assembly and a black coil on top of the drag chain. Do they really need to be there or can you eliminate them by spending like 10-20 minutes on this issue? I think that would be worth it. 

> What are you using in terms of GCodeAsyncDriver Motion Controller type  ModeratedConstantAcceleration or Simulated3rdOrderAcceleration  ? and does it make a difference ?
I'm using the non-async GCodeDriver and ModeratedConstantAcceleration. I want to experiment with the more advanced stuff at some point but right now it's good enough and other things have priority. Another reason is that those two allow for quite compact and easily readable logs. I already achieved a leap in performance from the stock config by disabling ToolpathFeedRate and tune the individual axes.

> How fast can we run OpenPNP if everything is optimized?
Much much faster than a PnP machine can move. Your primary constraint will always be the motion system. If you optimize it heavily, vision might become the next bottleneck. But vision can be disabled or upgraded to fly by vision and just like that are you back to being constrained by the motion system again. If you want specific numbers, test camera settling. This will show you, how long image processing takes. This is likely the most computationally intensive (recurring) task and I think my low power mini PC does this in 5ms. Lets be generous and allocate another 5ms for all the rest and you end up with 10ms compute time per placement. In other words: unless your machine can do 100k+ CPH, OpenPnP ist just leisurely strolling along. 

> if we can collectively answer those questions then i believe that will help a lot of the new and advanced  users
I disagree. New users should focus on understanding the system. If they want speed without understanding, a professional machine is the way to go. Advanced users should be able to mostly answer those questions themselves, otherwise they shouldn't be considered advanced. Also there is no global answer as the design is equally important because a = F/m still holds. You can either brute the hell out of it by increasing the force or you can put thought into lowering the mass. To put it in other words: if you gave me all your off the shelf parts and would tell me to build the fastest machine possible, it would probably be more than 2x faster than yours. 

> i just started my tuning using LIS3DH
Do you actually understand how to tune a motion system using an accelerometer or are you doing this because it sound complicated and therefore must be something good? Or is this an automatic procedure?

Having said all this, it seems to me that you are a bit stuck and don't really know (or dare) how to take your machine to it's limits. Let me compile for you a list of steps to follow. Keep in mind: I have no experience with machines as powerful as yours and these methods might be unsuitable, do at your own risk. Other users may speak up and correct me. To tune my much lower power machine with open loop steppers, I did the following:

- Make sure the machine is in good shape mechanically. For you this means to make sure all your cable coils sit tight as they may come lose. Also you need to get rid of this dangling orange cable. It applies an uneven and unpredictable force to the head and additionally creates an unnecessary torque which leads to unreliable and unrepeatable results.
- Switch to ConstantModeratedAcceleration or start with jerk disabled, as Jan suggested. Two rates per axis are enough of a challenge for now.
- Start with the x axis and move it from endpoint to endpoint using the soft stops. If you want a bit of safety margin, you can set the soft stops a bit short of the hard stops. But feed rate can only be tuned on long enough travels.
- Because your feed rate is soooo low, increase it until the machine accelerates and decelerates a substantial part of the distance.
- Increase acceleration until the machine makes a strange noise and stops midway through the move. This means you have exceeded the limits and your steppers have lost steps. This might be quite violent with your machine but unless you have closed loop control, I'm unaware of another way to test this limit.
- Take note of this noise, because it is very important. Do the following step whenever you ever hear it again.
- Since the machine is no more where the controller and OpenPnP think it is, you must immediately rehome the machine. Otherwise you might run into hard stops and damage something. Do this step every time you have lost steps.
- If you think you heard something that sounded like losing steps but it doesn't seem obvious, you can also move to the homing fiducial and check if the coordinates are still spot on. If not, rehome.
- Now you have found the acceleration limit. Turn it back a bit until the machine can handle it again. Now increase feed rate.
- If you loose steps again, try reducing acceleration a bit. Try to find the maximum value the machine can tolerate until it loses steps. Take not of these values, as they are the absolute limit of what is possible.
- If at some point increasing rates doesn't change anything anymore, your are likely running against a rate limit in the controller. Increase it and continue.
- If possible, you can also increase motor drive current to increase torque. Take care to not overstrain divers and motors and check their temperature every now and then.
- You are of course free to stop at any point if the mechanical integrity of your machine, the table it stands on or your house is at risk. 
- Move on to the y axis and do the same. Because your y axis is asymmetric (drive only on one side), do it once with the head close to the drive and once with the head furthest from the drive.
- If you have found the limits for individual motions, start moving diagonally. You might start losing steps again. Reduce the rates one at a time and figure out which one is the limit and tune it in a way the machine can handle it again.
- Move diagonally with the x distance being larger than the y distance. This is to strain both axes to their limit, which only happens if the presumably faster x axis travels further.
- At this point your rates should be quite stable. For my machine I found a weak spot when jogging multiple 10mm segments in quick succession. Play around and try to make the machine loose steps again and reduce rates accordingly.
- Take note of the rates you found, they should be your baseline. I expect them to be 500-1000m/s and 5000-10000m/s².
- If you feel confident, run a job and be prepared to stop the machine if you hear it lost steps.
- If you feel les confident, turn all rated down by maybe 20%. If you have done all the above, this should be very safe.
- If you want more, start looking at how the camera settles (as described in the wiki) or use your accelerometer. At this point you can also bring jerk into the game. Switch to a motion control type that allows jerk limit and use it to reduce ringing by following Jan's suggestion.
- After using the machine like this for a while, your PCB tower on your head might start to come apart. Actually, I fully expect it to break rather quickly if you run the machine close to its capabilities. Be prepared to hit emergency stop, in case this testimony of bad mechanical design should manifest.

Because this is all very abstract, I found a video describing this process here, just to get you a look and feel for it. It's a CNC with another control software, but the process stays the same.

Developer Algo

unread,
Feb 28, 2025, 8:07:30 AM2/28/25
to OpenPnP
@Jbussman & others 
Thank you for the in depth suggestions and process. i really appreciate you guys taking your time to help.

Developer Algo

unread,
Feb 28, 2025, 8:42:12 AM2/28/25
to OpenPnP
@Jbussmann
>   I expect them to be 500-1000 m/s and 5000-10000 m/s².

did you mean millimeters?  or as is in Meters ? 

jbussmann

unread,
Feb 28, 2025, 9:05:58 AM2/28/25
to OpenPnP
Sorry for the confusion, I meant 500-1000 mm/s and 5000-10000 mm/s². A supersonic pick and place would be quite a feat. :)

Developer Algo

unread,
Feb 28, 2025, 10:09:18 AM2/28/25
to OpenPnP
@Jbussman
Thanks , Are your FeedRate & Acceleration values the same for your X & Y-Axis or they are different for X & Y-axis ?

Developer Algo

unread,
Feb 28, 2025, 12:01:52 PM2/28/25
to OpenPnP

My Initial attempts to tune my X & Y-Axis to improve speeds and accelerations 


Managed to get the maximums where X-axis and Y-axis misses steps or stalls  and then i dialed them down to the following by about 20%

X-Axis: Feed rate = 250 mm/s (15000 mm/min), Acceleration = 5800 mm/s²   

Y-Axis: Feed rate = 250 mm/s (15000 mm/min), Acceleration = 2600 mm/s² 

Motion Control Type :   Simulated3rdOrderAcceleration with Interpolation configured  ( but also tested ModeratedConstantAcceleration)  

Clemens Koller

unread,
Feb 28, 2025, 12:49:05 PM2/28/25
to ope...@googlegroups.com
Hi!

I’m joining this discussion a bit late, but I hope these points haven’t already been covered.
This is my R&D approach I recommend based on my practical experience in motion control systems:

To maximize the performance of a motion system - up to its physical limits and trade-offs
consider the following:

Weight Reduction: Minimize the weight of moving axes while maintaining stiffness. Avoid
introducing variable resonances in the axis, frame, and attached components (hoses, belts, cables).
A first-order, constant-frequency resonance can be compensated for in motion control, but if the
resonance frequency varies or reaches higher-order harmonics, compensation becomes exponentially
more complex. It’s best to avoid these issues from the start.

(Stepper) Motor Performance: Higher supply voltages generally allow motors to reach higher
speeds, but thermal constraints, noise, and mechanical weaknesses impose limits.

Motion Tuning Workflow: Start with PID (or equivalent, the Integral part might be optional) tuning
of the motion system. Once stable, introduce velocity, acceleration, and jerk limits, followed by
velocity/acceleration/jerk feed-forward tuning. (I’m not sure how soon the Duet firmware will reach
its practical limits.)

Stepwise Tuning Approach: Begin tuning the X- and Y-axis directly via the Duet command line in all
operating points before integrating your results into the OpenPnP settings.

In my case (Lite-Placer + Duet 6HC), the primary physical limitation is the stepper-to-belt interface.
Performance depends on belt tension / wear at high torque, and stepper motors skipping at high speeds.
At extreme speeds, the impulse energy in the system reaches a level where mechanical integrity (and
motion accuracy) become critical factors. When impulse energies get high, safety also becomes an
important concern, as sudden failures or uncontrolled movements can pose a risk to both the machine
and the operator.

YMMV.

Greets,

Clemens
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Developer Algo

unread,
Feb 28, 2025, 2:00:20 PM2/28/25
to OpenPnP
@Clemens 

What do you have at the moment for your X and Y-axis settings ?

jbussmann

unread,
Feb 28, 2025, 3:18:16 PM2/28/25
to OpenPnP
@Clemens
I'm not sure you saw it, here is a video of the machine in question. At the moment, I don' think impulse energy is something to worry about. Also I think these are open loop steppers, so no PID to worry about.

@Developer Algo
> Are your FeedRate & Acceleration values the same for your X & Y-Axis or they are different for X & Y-axis?
Your machine is unique, rates of other machines are irrelevant to you. Different axes usually have different rates, in your case it is to be expected that the y axis has lower acceleration than the x axis. This is again a = F/m: the force is the same if you have identical drive systems. But the y axis has to additionally drive the mass of the gantry therefore m is larger and the resulting acceleration smaller. On my machine I have two motors on the y axis and additionally the are allowed a higher drive current. So there really is nothing in my rates that is relevant to you.

> Managed to get the maximums where X-axis and Y-axis misses steps or stalls.
The acceleration looks about plausible but the feed rates are still surprisingly low. What happens if you for example half the acceleration, will your feed rate still not go higher? Are you running against a RPM limit in your controller or in the motor? I'm afraid this is where my expertise ends because I don't know much about motors nor am I experienced with your controller. 

Developer Algo

unread,
Feb 28, 2025, 4:09:24 PM2/28/25
to OpenPnP
i was just continuing to tune my PNP machine . I did a simple test run on Duet3D 6XD controller with attached macro txt script file . On Duet3D logs it says  "  Maximum printing acceleration 50000.0, maximum travel acceleration 50000.0 mm/sec^2  "  , while in OpenPNP , i can barely get to those values at all for Acceleration . I get around  X-axis 5800 mm/s^2  and -Axis 2600 mm/s^2 . Not sure what to take as the correct values to work with. 
complete_pick_n_place_tests
Duet3D_6XD_Log_acceleration.png

Developer Algo

unread,
Feb 28, 2025, 4:15:33 PM2/28/25
to OpenPnP
i can't seem to able to go above Feedrate:  250mm/s ( 15000 mm/min)  for both  X and Y-axis . Note sure if its a limit somewhere on the NEMA 34 Closed-Loop ,8.0 Nm , 1.8 Degrees , 200 KHz , connected to  DC a PSU 48V, 12.5A 

On Friday, February 28, 2025 at 3:18:16 PM UTC-5 jbussmann wrote:

Clemens Koller

unread,
Feb 28, 2025, 4:25:20 PM2/28/25
to ope...@googlegroups.com
Hi, Developer Algo,

I cannot look it up now as the system is put away in storage.

Clemens
> > https://drive.google.com/drive/folders/1-vxVI1WPQSlR-zpBYCvT4SloUvY9AmqW?usp=sharing <https://drive.google.com/drive/folders/1-vxVI1WPQSlR-zpBYCvT4SloUvY9AmqW?usp=sharing>
> >
> > Managed to get the maximums where X-axis and Y-axis misses steps or stalls  and then i dialed them down to the following by about 20%
> >
> > X-Axis: Feed rate = 250 mm/s (15000 mm/min), Acceleration = 5800 mm/s²
> >
> > Y-Axis: Feed rate = 250 mm/s (15000 mm/min), Acceleration = 2600 mm/s²
> >
> > Motion Control Type :   Simulated3rdOrderAcceleration with Interpolation configured  ( but also tested ModeratedConstantAcceleration)
> >
> >
> > On Friday, February 28, 2025 at 10:09:18 AM UTC-5 Developer Algo wrote:
> >
> > @Jbussman
> > Thanks , Are your FeedRate & Acceleration values the same for your X & Y-Axis or they are different for X & Y-axis ?
> >
> > On Friday, February 28, 2025 at 9:05:58 AM UTC-5 jbussmann wrote:
> >
> > Sorry for the confusion, I meant 500-1000 mm/s and 5000-10000 mm/s². A supersonic pick and place would be quite a feat. :)
> >
> > --
> > 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 visit https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%40googlegroups.com> <https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%40googlegroups.com?utm_medium=email&utm_source=footer <https://groups.google.com/d/msgid/openpnp/b6f5100e-6719-41f5-b86d-4020a5f10f24n%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 visit https://groups.google.com/d/msgid/openpnp/480057b4-5123-47f6-a6cb-36ddfd34fbe5n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/480057b4-5123-47f6-a6cb-36ddfd34fbe5n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Developer Algo

unread,
Feb 28, 2025, 4:39:58 PM2/28/25
to OpenPnP
improved my tests today from around 745 CPH yesterday to 821 CPH today 
Test_821_CPH.png

Clemens Koller

unread,
Feb 28, 2025, 4:52:30 PM2/28/25
to ope...@googlegroups.com
Hi, jbussmann!

Just from looking at the video, my five cents / guesses are:

This system is mainly limited in it's performance by it's head assembly design
and the ball screws.

The pitch of the ball screws for this application seems to be very low or too low.
I would go for a pitch of 10..20mm/turn.
The maximum RPM (@some torque) of the steppers (I believe those are steppers) will
currently limit the max travel speed of the head. You can however try to max out
the motor velocity at max. supply voltage to see where this will end up.

The weight of the ball screws itself and the head assembly in this constellation
might be another limiting factor for the max possible acceleration.

The height of the head assembly with the stack of pcbs and metal sheets and sensors
is IMO critical. If you would be able to tune the X-(Y-)axis to max without running
into already mentioned limits, you should be able to rip that stack in pieces.

You can see the uppermost board vibrate already at slow speeds.

Regards,

Clemens


On 28/02/2025 21.18, jbussmann wrote:
> @Clemens
> I'm not sure you saw it, here <https://drive.google.com/file/d/1uF-hwlJkJAUQ6FpUYfRXNr1A6gJ7x2Sx/view> is a video of the machine in question. At the moment, I don' think impulse energy is something to worry about. Also I think these are open loop steppers, so no PID to worry about.
> --
> 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 visit https://groups.google.com/d/msgid/openpnp/1c678e65-0591-41a0-bcec-b4c019d4f7b9n%40googlegroups.com <https://groups.google.com/d/msgid/openpnp/1c678e65-0591-41a0-bcec-b4c019d4f7b9n%40googlegroups.com?utm_medium=email&utm_source=footer>.

Message has been deleted

Developer Algo

unread,
Feb 28, 2025, 5:06:52 PM2/28/25
to OpenPnP
FYI ,

For X & Y-axis , i have NEMA 34 (86HSE8N-BC38) Closed-Loop ,8.0 Nm , 1.8 Degrees , 200 KHz , connected to  DC a PSU 48V, 12.5A  with HSS86 Hybrid Driver .  The X and Y-axis both have Ballscrew  DFU 2510  (i.e Pitch: 10mm ) which is 700mmin overall length but travel length is   X: 340mm and Y: 447mm 

Doing a few tests with above script , i would expected the acceleration values from Duet3D 6XD controller and OpenPNP values to be pretty close. i will dig into it further 

thanks 
HSS86.pdf

Developer Algo

unread,
Feb 28, 2025, 8:17:07 PM2/28/25
to OpenPnP
FYI , i took a peek at the HSS86H  Driver setting using ESS Protuner  Software . Here is the config file for the HSS86 Driver and also a screenshot of the configs default. The only thing i have changed on the driver is micro stepping using the DIP switches 
ESS_ProTuner_HSS86_Driver_X_n_Y-Axis_config.png
X-Axis-NEMA34-HSS86-Driver-settings

jbussmann

unread,
Mar 1, 2025, 6:48:10 AM3/1/25
to OpenPnP
@Clemens
A lot of what you point out has already been discussed, good to read someone having the same thoughts as me. Some of your other thought came to my mind, immediately after I sent the previous message. Lets unwrap them further down. Also it seems this controller is in deed closed loop and uses a PID to control motor current, therefore my previous assertion was false. Since the controller is specifically designed for this motor series, I would expect it to perform adequately. However I'm afraid there is no practical way to check on the control loop performance or even observe the motor current approaching it's limit, unless the ESS ProTuner's monitoring feature provides such a functionality.

> you should be able to rip that stack in pieces
It might be mischievous, but I'm a bit disappointed this did not yet happen and is unlikely to happen anytime soon.

@Developer Algo
As I said before, we are leaving my field of expertise. But as with many discussion on this group, physics and logic can solve the majority of questions. So let's do exactly this.

> improved my tests today from around 745 CPH yesterday to 821 CPH today
First of all, congratulations to this improvement. Unfortunately I doubt there is much more to have without substantial modifications to the machine. 

> i can't seem to able to go above Feedrate:  250mm/s ( 15000 mm/min)  for both  X and Y-axis.
I looked through the information you provided and did some research and it seems your motors won't go any faster. With a pitch of 10mm on your ball screw, at 250 mm/s your motors are at 25 rev/s or 1500 RPM. I think this is very much the limit of how fast these steppers or steppers in general can rotate. So if you want to increase feed rate further, you either need faster turning motors, which could be difficult as 1500 RPM seems to be more of a general limit. Or you increase the pitch of your ball screw. If you go to let's say 20 mm pitch, you might reach a feed rate of closer to 500 mm/s but likely at the expense of halved acceleration capability. It's hard to say if in the end this will be faster or not. You could however compensate for the loss in acceleration by halving the moving mass too. Or you brute your way along with faster and/or more powerful motors. Either way, it's unlikely to be cheap. 

> For X & Y-axis , i have NEMA 34 (86HSE8N-BC38) Closed-Loop ,8.0 Nm , 1.8 Degrees , 200 KHz , connected to  DC a PSU 48V, 12.5A  with HSS86 Hybrid Driver .
As expected, these are poorly specified/documented parts from (likely multiple) no-name (most certainly) Chinese companies. Variometrum at least provides this table/graph:

As you can see, at 1500 RPM your motors have basically no torque left. And because acceleration vs velocity is constant, this limits the overall acceleration. From this graph, I would assume that if you limit your feed rate to maybe 80 mm/s which is equivalent to 500 RPM (one third), that you can reach acceleration rates of 3 times the current rates. Which will of course not help you in any way making the machine faster. Another thing to consider is this data is from an 60 V AC supply, which is roughly 80 V DC. The effective torque of your motors at high RPM is therefore likely even lower. The cheapest way to speed things up might therefore actually be the power supply. The controller support up to 110 V DC, with you being at less than half of that. This will likely increase torque at high speeds but speed itself is unlikely to increase much further, at least not without the risk of ultimately destroying the motor through overspeed. This will therefore only be useful in combination with a higher pitch ball screw.

I could now go ahead and roughly estimate the torque required to drive the head on the x axis to see if this all actually adds up. But with so little to gain, It's not worth the effort right now. I might do it later. 

With all this said, I even more than before start wondering what your actual goal is? Provided you have built this machine yourself, it seems like you randomly assembled whatever parts you could find. Your design decisions seem to be totally random and maybe this is because there were no design decisions to begin with. Either way, there doesn't seem to be a pattern towards a specific goal. Your machine is neither fast, nor cheap, nor light, nor simple, nor anything else that could matter. If I were in your situation, I would either leave it as is or start from scratch, because everything else seems a waste to me. I thought this all along and kept it for myself but today, I randomly stumbled across a 6 nozzle assembly on aliexpress closely resembling what you have on your head, for almost the cost of what I paid for my LumenPnP. This is of course no fair comparison but still, my LumenPnP does 600 CHP out of the box being really badly configured on not optimized at all. I fully expect it to reach your current 800 CPH with the next job I run on it. For the price of maybe 3/4 of the price of only your head. This is just to give you a bit of a broader perspective in your decision in how you want to go forward, because you seem to be unaware of it. I hope you can accept this criticism as such because I do not mean to attack you or deny your achievements so far in any way!

Developer Algo

unread,
Mar 2, 2025, 11:05:20 AM3/2/25
to OpenPnP
@Jbussmann,

> Provided you have built this machine yourself, it seems like you randomly assembled whatever parts you could find. Your design decisions seem to be totally random and maybe this is because there were no design decisions to begin with. Either way, there doesn't seem to be a pattern towards a specific goal. Your machine is neither fast, nor cheap, nor light, nor simple, nor anything else that could matter. If I were in your situation, I would either leave it as is or start from scratch, because everything else seems a waste to me. I thought this all along and kept it for myself but today, I randomly stumbled across a 6 nozzle assembly on aliexpress closely resembling what you have on your head, for almost the cost of what I paid for my LumenPnP. 


i always value your suggestions, research and help. i think comparing LumenPnP to my PnP or making assumptions about randomness in design or my goal is a little out of context in this case. I am not in the game of comparisons or what others choose to build or own. Everyone have their own reasons and its not my place to criticize someone for what they build or choose to build. I have my own reasons as to why i did not buy LumenPnP or any Chinese PnP. i could if that was my goal but it wasn't.

My goal on this first PnP was very simple Push OpenPnP 2.0 to its limits with a PnP that can reach  a high Speed and Precision(Accuracy) using off-the-shelf parts or design one myself. This first PnP machine was like a prototype for me, you have a lot of PnP users online proclaiming to be experts in PnP but are completely of no value. So in order to understand those parameters of actual real life operations of OpenPnP and well built DIY PnP , i wanted to learn , research and know what parameters can be easily tweaked and are mechanically viable. Some of Chinese products are cheap but completely useless but some are clones of better Western products, you might get lucky with some parts. 

In terms of items that i need to work on for this first PnP machine:

- Reduction in the weight of the Head and other unnecessary parts 
- Increase in pitch of the Ballscrews for X & Y-axis ( i am looking at Grounded SFU/DFU 2040 or 2540 or 2560  at 1000mm )
- Reduction in weight of other build parts but maintain rigidity of the PNP machine
- Use AC Servo motors with their own Motion Control Driver on X and Y-axis  (Yaskawa or Delta or Leadshine )  that can hold great Torque with high RPM (Yaskawa is a candidate but expensive --- Please feel free to mention any )

@Jbussmann & others., as always your suggestions and criticisms are valued at anytime. 

Mike Menci

unread,
Mar 2, 2025, 12:01:53 PM3/2/25
to OpenPnP
I have a Yaskawa X (100W) and Y (200W) servo packs - I purchased used units from eBay and I never regret it, old models but still state of art technology that the Smootheibord hardly can keep up with ... some test you can find on my You Tube :  https://www.youtube.com/watch?v=-c7TfBAKy88

Developer Algo

unread,
Mar 2, 2025, 12:06:33 PM3/2/25
to OpenPnP
@mike, 
which models of Yaskawa do you have ?

Mike Menci

unread,
Mar 2, 2025, 12:23:07 PM3/2/25
to OpenPnP
ServoPacks ; SGDV-R90A001B   and SGDV-1R6A01B   - 200V (230V -EU) for Step+Dir controlled motion   Motors SGMJV type 100+200W /230V

Mike Menci

unread,
Mar 2, 2025, 12:25:37 PM3/2/25
to OpenPnP

Wayne Black

unread,
Mar 2, 2025, 12:39:44 PM3/2/25
to OpenPnP
I use the Yaskawas on my full cast iron CNC and they work terrific. But before you go out searching for better motors Id rethink your head design. Yes, weight is an issue, but not your biggest. Any 6 nozzle machine is going to be heavy relatively speaking. Given the fact it's going to be heavy, you need to focus on balancing the head. 

I would rethink your camera placement as this seems to extend and cantilever the heaviest part of the head, the motors, away from the gantry. Moving the Z/motor assembly as close the X gantry stage and hang the camera anywhere else that makes sense. This will likely reduce a lot of the sandwiched AL plate you're using and result in lower overall weight with less oscillation with rapids.

Developer Algo

unread,
Mar 2, 2025, 2:31:58 PM3/2/25
to OpenPnP
@Mike,
fantastic , love that redesign suggestion

Mike Menci

unread,
Mar 2, 2025, 3:38:23 PM3/2/25
to OpenPnP
Re-design- suggestion -? which one you mean ?
Mike  

Developer Algo

unread,
Mar 2, 2025, 3:53:11 PM3/2/25
to OpenPnP
The head assembly to reduce the weight. 

In the future upgrades , i am actually thinking of redesigning the head completely to allow me a lot of flexibility with weight. Using very thin light Aluminium alloy 1/8" . Move all other expansion boards out of it and reducing the size of the head drastically.  i will be aiming to get it to  < 4 lbs if i can and i might need to reduce the nozzles to 4 if necessary.

Developer Algo

unread,
Mar 2, 2025, 3:58:35 PM3/2/25
to OpenPnP
oops!!!  sorry @mike, that was in reply to @black... suggestion

Wayne Black

unread,
Mar 2, 2025, 5:05:50 PM3/2/25
to ope...@googlegroups.com
I can't design your machine for you but;
- I wouldn't focus on reducing plate thickness...
- I would  focus on getting the center of mass or COG of the head as close to the X gantry as possible. I would assume your COG is the midpoint of your head motor array. Shortening the distance from the COG of the head to where the head physically attaches to the X gantry should be your primary concern. And while doing this I would err on the side of thicker plate vs thinner plate.

The last time I looked at your machine you have a rather large cavity that extends the motors way over the front of the machine. It appears that this is just to accommodate the down camera. Forget the camera for a moment, get the head 'smaller' and 'closer' to the gantry. The head will be lighter and more balanced as the result. Then sort the camera position.




--
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 visit https://groups.google.com/d/msgid/openpnp/48c82a1e-b2b9-47ce-b436-94bec75a6cb3n%40googlegroups.com.


--
Wayne Black
Owner
Black Box Embedded, LLC

Developer Algo

unread,
Mar 3, 2025, 10:22:57 AM3/3/25
to OpenPnP
 Today i continued the initial basic pick and place speed test with 6 Nozzles . A little improvement compared to only 3 nozzles but as expected not much 

from 845 CPH for 3 Nozzles on 24 parts  to  965 CPH  for 6 Nozzles  on 24 parts 
Test_965_CPH_6Nozzles.png

jbussmann

unread,
Mar 3, 2025, 3:06:33 PM3/3/25
to OpenPnP
Hi Developer Algo,
I apologize for my harsh message last time. I guess my bottom line would be this: if you want to learn and understand DIY PnP, then you chose a hell of a complex machine to start. That frustrated me a bit because I held you to my own standards, which of course is not fair in any way. I mentioned the LumenPnP because it's the only machine I have experience with and I think it's one of the best platforms to learn on: cheap, easy and quick to setup, very easy to understand and modify because completely open source and mostly 3D printed and as you gradually gain the knowledge and experience to max it out, it even offers quite decent performance. But enough of that, there are other thoughts to share.

I finally got around to do some math. I'm out of shape and it took me several attempts so please someone check it. Assuming your head is 3.5kg and accelerates at 5.8m/s², it requires 20N to do so. If I got it right, this should be around 0.3Nm, which really isn't much but plausible if according to the specs, this is 1/3 of the torque at 1/2 the voltage. I also took into consideration the ball screw which makes up for less than 1% and the motor is hard to tell but should be below a few percent max. Conclusion: unless your head is really really light, low inertia motors are unlikely to be significantly beneficial. If you choose to change motors, I would gladly offer my opinion an a specific type, if you are interested.

I also had another thought about the torque vs RPM graph I inserted before. Here it is again but redrawn because the original didn't even have a linear x axis, which is needed for this to work.
Untitled.png
I added a line of "equivalent acceleration" in blue, which actually is a line of constant power. It goes through 1Nm at 1500RPM because I think this is currently your limit. Meaning if you change the pitch of the ball screw you will move along this line and if the yellow line is above the blue line, you are in for more acceleration and/or more feed rate. From this I deduce that 60mm pitch will be too much because that would require 6Nm at 250RPM to reach the current acceleration. You will likely not rech this because the motors seems t lack low end torque. 40mm pitch on the other hand seems to be quite optimal. This will be 4Nm at 375RPM, again probably not much more acceleration to have due to the low end limit, but likely some more feed rate. Also I assume the fist number is the diameter and 20mm is plenty enough, because 20N is as little as nothing for such a thing. By feel I would estimate there to be one or even two orders of magnitude headroom in there. 

Otherwise your plan sounds fine. Reducing weight should be the next priority. I think 1/8" aluminium is still plenty enough and I would absolutely go for it, although Wayne wouldn't focus on that. He is though absolutely right about the COG. Here are two things to consider: if your head moves along the x axis, the COG is ideally at the ball screw (in y and z direction) because this is the acting point of the force. When moving in y direction, the forces act through the linear rails so the COG should be between those two (in z direction). Speaking of which: I would argue that one is enough. If you remove one, place the other as close as possible to the ball screw and the COG of the head in between these two. The further away the COG is, the longer the lever arm the force acts on and the larger the rotational force that makes the head oscillate. 

As you can see from your 6 nozzle test, double the nozzles brings only a speed increase of 14%. Therefore I'm certainly in favour of your plan to get rid of at least 2 nozzles. Maybe you could repeat the test with 4 and 2 nozzles, because there are your realistic options. You won't ever end up with 3 nozzles. I would actually go for only 2 nozzles. Because more nozzles are only really beneficial if you specifically optimise other areas of the machine and especially the software. As far as I know there is not all that much multi nozzle optimization in OpenPnP. On the topic of the test: I would go for a much larger test, at least 100 components to get a more accurate test with different numbers of nozzles. Also I would use as many feeders as possible. The shorter the test the higher the chance of e.g. the 6 nozzle test to be unfairly in advantage or disadvantage compared to the 3 nozzle test.

> Push OpenPnP 2.0 to its limits with a PnP.
I don't really understand what you mean by this. I already made the argument a while back that it needs a monster chip shooter with a high 5 figure CPH to push OpenPnP. Do some optimisations and its easily 6 figures. I'm not sure such machines even exist. 

Oh and BTW: have you optimized the z axes as well? I just watschend the video and they seem to move rather leisurely. Since they are cam actuated, the limit is likely reached when the cam lifts off rather when the motor stalls.

@Wayne
Why would you err on the side of thicker plates? The head pulls just about half a g right now, putting it stationary on its side would be double the mechanical load. Certainly these thick plates are massively oversized. 

Wayne Black

unread,
Mar 3, 2025, 6:20:40 PM3/3/25
to ope...@googlegroups.com
@JBussman
My last statement was overly brief as I feel like Ive tried to explain my point several times over. From what I've seen of Algos machine, the Z stage plate is decoupled/extended from the X carriage plate by what I'm guessing 40-80mm. This is accomplished by stacking 4 AL plates that looks to be 5-10mm thick. Algos response to shedding head weight is to simply stack 1/8" or 3mm plate?! What purpose is served by staking the plate and extending the head from the X carriage? Algo hasn't stated, but from the pics I saw it's simply to accommodate the down camera by making a cavity. Maybe there is another purpose such as extending the reach of the head for some other reason, but he doesn't say. The entire head structure looks very much like a house of cards. 

Adding velocity to that mass at the end of a longer than needed lever arm makes me cringe. Lose the 4 stacked plates for a single plate. Keep the single plate thickness adequate to accommodate recessing bolt heads, creating alignment datums and provision for a camera mount. It's hard for me to believe he can accomplish this using a single 3mm thick plate. Maybe I'm wrong. With the pnp heads Ive desgined with only 2 nozzles, I used 5-6mm plate with 4/5mm hardware with good results.



--
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.
Message has been deleted

Developer Algo

unread,
Mar 4, 2025, 12:30:38 PM3/4/25
to OpenPnP
@Jbussmann & @black..

Thanks guys for the well thought out suggestions and research notes. 

- In terms of reducing the Head weight , i will be looking to redesign the head assembly such that it has very small footprint, weight and the COG is as close to the Ballscrew as possible. This will also include reducing the size of linear Top X-axis bar/plate on the machine. So that Y-Axis motor doesn't have to deal with a lot of weight. For Head Assembly itself, I am thinking of using 1/8" plate (3.125mm) or Maybe 3/16" plate ( 4.7625mm ) with very reduced  footprint.
- In terms of Ballscrew,  i will be looking at Grounded SFU/DFU  2040 & 2540   (this 2 most likely ) & 2560 ( might be a little too much ) 
- In terms of AC Servos, i will be looking at Yaskawa & Delta Servos with Motion Controllers ( 200W to 750W range , 3000 rpm rated with Max: 6000 ~ 7000 rpm with high precision )
 

This are my thoughts for the future upgrades for this PNP machine but are subject to change with suggestions and research on what might work well .

Developer Algo

unread,
Mar 5, 2025, 10:30:30 AM3/5/25
to OpenPnP
A quick question for anyone who might have an idea on how to do this or have done it on this HSS86 rivers . How do you smooth the speed of a closed-loop stepper motor? or even modify the parameters of the HSS86 Driver ?

On this PnP machine , For  X & Y-axis i have  JSS-MOTOR  NEMA 34 Closed-Loop Stepper Motors ( 86HSE8N-BC38), 8 Nm, 1.8 Degrees, 200 Khz  with  HSS86 Driver connected to 60V (changed this from 48V to 60V) .  

Microstepping configured using DIP switches on the HSS86 Driver :   3200 Pulses/Rev  ( 16 microsteps) .I know that microstepping doesn't produce accurate fractions of a step. its basically designed to smooth continuous running of a motor.

Currently , In OpenPnP the maximum Speeds that are comfortable to use without stalling or missing steps : 

X-Axis:  Feedrate :  300 mm/s  (18,000 mm/min)  , Acceleration : 4600 mm/s^2   , Jerk :  500 000 [/s^3]

Y-Axis:  Feedrate :  300 mm/s  (18,000 mm/min)  , Acceleration : 2300 mm/s^2   , Jerk :  500 000 [/s^3]

With the above values i think i might have reached near max values that the motors can handle. I currently  just above 1025 CPH in my tests with 6 Nozzles. 

So  How do you smooth the speed of a closed-loop stepper motor? or even modify the parameters of the HSS86 Driver to smooth out the speed?

Mike Menci

unread,
Mar 5, 2025, 12:54:13 PM3/5/25
to OpenPnP
The rotating speed of the stepper motor is determined by the speed of the pulse frequency (Hz) given to the driver, and it is possible to freely change the motor rotation by simply changing the number of input pulses or frequencies to the driver. How can this be done on your stepper controller I dont know   :-)     - In Yaskawa servo-pack there is separate software that is used -and you can use to adjust this.... 

Wayne Black

unread,
Mar 5, 2025, 1:05:39 PM3/5/25
to OpenPnP
Tune the driver using the software. IIRC, your using Duet and have an accelerometer? If so use the DWC shaping plugin along w the tuning software

Developer Algo

unread,
Mar 5, 2025, 1:20:38 PM3/5/25
to OpenPnP
HSS86 Driver software (ESS Pro Tuner )  doesn't allow you to change anything. 

Wayne Black

unread,
Mar 5, 2025, 1:51:43 PM3/5/25
to OpenPnP
Are you sure? Have you tried putting the switches to default and then tried adjusting and saving the parameters? 
Do you have the Duet accelerometer?

jbussmann

unread,
Mar 5, 2025, 3:13:55 PM3/5/25
to OpenPnP
What is your exact goal? I can't make sense of what you mean by "smooth the speed". Do you want more microsteps? What is the problem your are encountering?

Have you tried this button?
Untitled.png

Developer Algo

unread,
Mar 5, 2025, 3:47:24 PM3/5/25
to OpenPnP
Not yet but i have accelerometer LIS2DW12 that i am using to tune the X and Y-axis from Duet

Developer Algo

unread,
Mar 5, 2025, 3:58:04 PM3/5/25
to OpenPnP
> What is your exact goal? I can't make sense of what you mean by "smooth the speed". Do you want more microsteps? What is the problem your are encountering?

- i think Speed & Acceleration are fine . The Microsteps is set to 16 microsteps ( 3200 pulses/rev) which i think is more than enough for this NEMA 34 Stepper Motors. What i am trying to do to have "smoothness to the speed"  during acceleration and deceleration  . It does have very very little vibrations so that's ok. 

> Have you tried this button?  Yes . it doesn't save any changed parameters. i will try what @black... suggests of setting the DIP switches to default and try it. 

Reply all
Reply to author
Forward
0 new messages