勇気とユーモア
--
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/4e291491-ef6f-4641-a1d1-97a29e71c437o%40googlegroups.com.
勇気とユーモア
Agreed, and I think to see if its worth the trade-off (purpose built s-curve controllers vs established) we need to get some prototypes going. Then we need to profile the time spent on movement, and see how big of a difference s-profiles can make.Almost entirely unrelated, but is there any thought or work to making moves in smothieware via SPI commands? There seems to be very little work on it in any of the gcode controllers, so I'm guessing its either difficult or zero demand.
-Scott
--
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/dd07afed-f436-4ce7-8930-e980b249ea68o%40googlegroups.com.
勇気とユーモア
I don't know why you are talking about the tricky consideration of CnC controlling here.
Here -as I've mentioned several times before-, the constrains are not the sames. Algos can be much simpler and also faster. Motion is faster too.
Also, I'm sorry but I've shown a method to calculate without iteration a true perfect S-Curve motion. XY synchronism is simply a matter of controller implementation.
Finally, to test/measure implementation, I've a very simple solution: With some low cost FPGA board (like the CYC1000 I've mentioned also before), I'll make a high resolution counter (10ns res) to count the pulses and store time arrival. These data can be stored locally on the board and then downloaded afterward for analysis.
Some have.
https://www.trinamic.com/products/integrated-circuits/details/tmc4361a-la/
The can even do asymmetric entry/exit velocity and acceleration, though it seems to be limited to some combinations.

See also:
https://www.trinamic.com/technology/motion-control-technology/
_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/be71d4ee-ec54-40e4-8009-3adca7ae1eeao%40googlegroups.com.
Some have.
https://www.trinamic.com/products/integrated-circuits/details/tmc4361a-la/
The can even do asymmetric entry/exit velocity and acceleration, though it seems to be limited to some combinations.
See also:
https://www.trinamic.com/technology/motion-control-technology/
_Mark
Am 31.08.2020 um 10:36 schrieb Marmelade:
--@Scott
The trinamic stepper drivers do not have build-in s-shaped ramp generators.Some of them have trapezoidal and a few have SixPoint ramp generators.
For true 7-segment s-shaped motion you need separate ramp generators (motion controller, fpga, etc.)And for monitoring and parameter setup the fastest solution is using chips with spi bus.
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ope...@googlegroups.com.
Yes, if you want to make that distinction. Strictly speaking, as
soon as ramps are generated it is always a motion controller,
so it doesn't really matter whether if it is in one or two or
three ICs.
The important distinction (that I believe Scott wanted to point
out) is whether the MCU is generating the ramp or not. Btw. I
agree that it does not make sense. The MCU can and should do it.
Nevertheless, @Scott, such a thing does exist, look at the TRAMS
(linked below). That's not S-curves, but I guess the pattern would
be the same. It does only make sense for an 8bit controller (and I
really don't know why these 8bit buggers even exist anymore).
https://github.com/trinamic/TRAMS
https://www.trinamic.com/support/eval-kits/details/trams/
_Mark
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/6f90fe2f-ec65-4573-9edf-e8be7850a726o%40googlegroups.com.
No, the TMC4361A is a motion controller (expensive), not a stepper driver.It's a nice chip except for very high acceleration values combined with high resolution.
--
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/ca8d348a-5548-4e31-b7af-4a960fc5dbc0n%40googlegroups.com.
勇気とユーモア
> Is it actually only for one axis at a time? ( in which case a multi-axis system would need as many TMC4361 as it has axes, with maybe nozzle steppers being ok controlled the classic way ).Yup- its only single axis.
--
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/CACK509UAVd5Wd50BKxw%3DiXuOh8iETZFhj1d141F9137o4N-JUA%40mail.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.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/4e2ccb82-48ff-4672-a720-e4040a8771f9o%40googlegroups.com.
勇気とユーモア
Hi dc42
The major problem (AFAIK) in PnP are vibrations of the head and
attachments. The speeds and accelerations are so high that the
whole rig starts to bend and swing (we're talking DIY mechanics
here). Often machines are also badly misbalanced (like my
Liteplacer) but even for better construction, some of that
imbalance is unavoidable with the drag chain unrolling etc.
You see some of the bad effects here:
https://groups.google.com/g/openpnp/c/bEVZvYoXO98/m/hl14FcspBwAJ
I guess there are some (low) resonant frequencies in the
construction and I also started to think about actively cancelling
these frequencies. I guess one could do a (damped) integral over
the past acceleration and inverse-feed it back into the motion
planning.
For now, I'm exploring adding some Jerk control from OpenPnP for
controllers that don't have it. OpenPnP plans full 3rd order ramps
i.e. the full 7 segments including constant acceleration segments
(not the simplified rigid "S-curves" of some controllers, those
get slower and slower in the longer moves, which are so important
for OpenPnP). The moves planned/predicted by OpenPnP are then
interpolated into small segments of constant acceleration, shaped
to simulate Jerk control (and other types of advanced motion
control, like motion blending in the future). Obviously this does
not create fully smoothed ramps but a
nicer-that-a-trapezoid-looking velocity ramp is approximated
(like a polygon).
Just uploaded a new video of the effects on fluids and springs:
I think some jerk control is needed. But it isn't the silver
bullet. Also, it must work with look-ahead planning i.e. solutions
with entry/exit velocity/acceleration 0 are unacceptable, IMHO.
My planner is intended as a future starting point for
implementation in a strong MCU. I was carefully preparing it for a
C++ port, i.e. simple array data, no dynamic memory, etc..
It can now do single moves, with any entry/exit conditions,
including uncoordinated moves, i.e. going through corners
smoothly, overshoots and blends etc. But it can't do multi-move
optimization, i.e. can't find the optimal junction velocity and
acceleration for the overall path yet.
https://github.com/markmaker/openpnp/blob/test/src/main/java/org/openpnp/model/MotionProfile.java
Note, that once that is working, there is no longer a need for hacks like "junction deviation" etc.
I would be willing to try to integrate that into Duet3D, once it
is ready. Like I said, this will only work on a strong MCU like
Duet 3.
I haven't really explored Duet step generation yet, but my
thinking goes into pre-calculating pulse-buffers ahead of time.
There is enough RAM now. I'm sure there are powerful algorithms
that can dither those curves into pulses very efficiently when
done for many cycles at a time and in advance. The pre-recorded
pulses would then ideally be pushed out by DMA (RAM to GPIO), i.e.
perfectly clocked/no nasty real time constraints. Or at least by a
very dumb and quick IRQ.
_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/4e2ccb82-48ff-4672-a720-e4040a8771f9o%40googlegroups.com.
Hi dc42
The major problem (AFAIK) in PnP are vibrations of the head and attachments. The speeds and accelerations are so high that the whole rig starts to bend and swing (we're talking DIY mechanics here).
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b97548eb-bf90-ffed-3048-6a83945d0b6e%40makr.zone.
勇気とユーモア
New video link, had to delete the old ... forgot to delete the
audio :-].
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/b97548eb-bf90-ffed-3048-6a83945d0b6e%40makr.zone.
>There are good reasons why industrial machines are so heavy
I agree.
But: wouldn't it be even cooler, if we could drive a cheap, bad
rig so "intelligently", that at least some of the problems vanish?
:-)
Consider how these huge building cranes haul stuff. They're the
antithesis of rigid. But if you watch them, you see how incredibly
efficient the are. They deliberately decelerate early, let it
swing to target and then just quickly counter-act the pendulum
(don't really know how to describe, but I guess you know what I
mean). With a good operator, the payload stays right over the
target. Incredible. A bit of that built into a controller would be
veery nice.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CAMHZkm6kexX1TOMsR5kstow7oFG0-kRdQnn%3DgUdyuEty3vPXKg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/8a353b16-b7ee-3d6f-4669-dc0510d5242f%40makr.zone.
勇気とユーモア
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/6b7e2048-75fa-6faa-17b3-1bb08eb0d696%40makr.zone.
> In this thread you talk about smoothieware and S-curves
but it seems you are adding S-curves to OpenPNP so that we can
use any controller i.e. Smoothie or Marlin or ?? and get the
benefit.
Yes that's exactly the idea. OpenPnP predicts the motion with full 3rd order (Jerk) control then interpolates it on a constant acceleration Controller. I found that would be most useful to all those people (including me) that don't want to rip out a controller and rewire the machine.
The move is split into many small segments and the allowed
acceleration is then stepped up and down, approcimating what it
would be with Jerk Control.
Just to avoid misunderstandings: this is just one possibility
for the new MotionPlanner in OpenPnP. It could also send the
commands directly to a true 3rd order motion controller,
and that would obviously be a much better solution. Or you can
switch back to constant acceleration if your machine is very stiff
(unlike mine).
You will have the choice:

To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CAEm8oEQQhSNp9iS9CeeunYLPxzvPOu_V6fX3oVYqQXjg6eTgWA%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/137ec2b5-7db3-8c0e-c86c-2a29f01fddff%40makr.zone.
勇気とユーモア
Hi Arthur
> If you turn this host-side s-curve code into a library,
this can be used in 3D printing software like Slic3r and laser
software like Visicut, with great benefit, by the way.
Note that this is still work in progress. Single moves work, but
multi-move optimization is unfinished. I want the true 3rd order
optimum (i.e. with acceleration != 0 in junctions) and this is a
tough nut to crack. There are simplified approaches for OpenPnP's
simple move patterns (and I will soon have a solution there), but
a general solution (e.g. for 3D printing or even true 5-axis CNC)
seems far away.
But it's all open source ;-) and mostly in one
file. Tried to make it simple to port to C++.
>Note there's unit-testing code for Smoothie that ( I believe ) allows testing Smoothie's planner without a physical board,
Good to know. At the moment, the
testing focus is on the actual timing when run on the
board with all the other stuff (interrupts, command processing,
USB comm etc.) happening at the same time. So the board is needed,
I think.
One thing I wanted to ask: how do you tune the config.txt planner_queue_size to the maximum?
I tried 64 (didn't boot), then 48 (seems to work). But these are just wild guesses. Any hints?
I used the mem console command:
Unused Heap: 864 bytes
Used Heap Size: 25472
Allocated: 20076, Free: 3900
Total Free RAM: 4764 bytes
Free AHB0: 9556, AHB1: 10440
Block size: 88 bytes, Tickinfo size: 280 bytes
But no idea what is "enough" free space.
_Mark
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/CAMHZkm5L3BvaFKL%3DAASXOb13%3D2PkZq5CYO-%3D6jYA9_F89qdJQA%40mail.gmail.com.
Hi Arthur
> If you turn this host-side s-curve code into a library, this can be used in 3D printing software like Slic3r and laser software like Visicut, with great benefit, by the way.
Note that this is still work in progress. Single moves work, but multi-move optimization is unfinished. I want the true 3rd order optimum (i.e. with acceleration != 0 in junctions) and this is a tough nut to crack. There are simplified approaches for OpenPnP's simple move patterns (and I will soon have a solution there), but a general solution (e.g. for 3D printing or even true 5-axis CNC) seems far away.
But it's all open source ;-) and mostly in one file. Tried to make it simple to port to C++.
>Note there's unit-testing code for Smoothie that ( I believe ) allows testing Smoothie's planner without a physical board,
Good to know. At the moment, the
testing focus is on the actual timing when run on the board with all the other stuff (interrupts, command processing, USB comm etc.) happening at the same time. So the board is needed, I think.
One thing I wanted to ask: how do you tune the config.txt planner_queue_size to the maximum?
I tried 64 (didn't boot), then 48 (seems to work). But these are just wild guesses. Any hints?
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/bc3a2a1c-5cb2-0d31-e401-9839fe71e47d%40makr.zone.
勇気とユーモア
--
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/a23b4351-84dd-459e-8542-b2cae9d7b0f5n%40googlegroups.com.