Although the subject talks about SeeedStudio let's leave that part alone for a 
moment and discuss what the Beagle's part is in all this.
 
I'd like to take everyone back to geometry learned in school.  SQRT(X^2+Y^2) = 
hypotenuse of a right angle triangle.   When we look at velocity we can use the 
same math.  If both X and Y axis are moved at 12 IPM then the movement along 
that path happens at 16.97 IPM.  SQRT(144+144).  
 
So when you set a G-Code value of F12 and execute a move with G1 set then X and 
Y will _not_ move at 12 IPM.  First the distance of each axis is determined.  
Assume for this example it's the same distance of 12".  That means the total 
distance moved along the hypotenuse is 16.97" and as we move along that path we 
want that to be done at 12 IPM because of the F12.
 
Well that's (144) = (X^2+Y^2) or in this case because we have a 45 degree angle 
with equal X and Y it's SQRT(144/2) = SQRT(72) = 8.48 IPM.  So both X and Y 
will be moved at 8.48 IPM.   (in really we use the cos and sin of the angle to 
proportion the speed to achieve the F speed value.
 
It's more complicated than that if the acceleration for each motor is 
different.  So the simple path planner will use the lowest acceleration and 
make both motors accelerate at that speed so they move at the same rate per 
second per second to reach the velocity.  Same with deceleration.  
 
Once this has been calculated the next question is how to translate a real 
world velocity (IPM) into steps per second.  Once again not really hard if the 
reduction drive on each axis is identical.  A bit harder if one uses 4:1 and 
the other uses 3:1.  
 
Now the software has to decide when to create each step pulse.  Assuming both 
axis require the same number of steps to move 1 inch (0.2" per rev and 10 
uSteps/Step = 2000 steps per rev = or 2000 steps to move 0.2")
 
We're asking for 12 IPM which is 0.2" per second so that's 2000 steps per 
second.  That's a step pulse every 500 uS.  Our DMA clock is set to run at 1MHz 
spitting out the 16 bits into the SPI device so we get a 1uS long step pulse.
 
Or in simple terms we get one 16 bit packet, with X and Y STEP pins both set 
high and another packet with X and Y STEP pins set low .  Then the next 498 
packets do not change the X and Y step pins.  So for one second of data we need 
at 1000 byte array with 500 values where only one of those has X and Y set 
high.  We need a second 1000 byte array with 500 values for the next 1 second 
worth of messages.  
 
The trajectory planner has one second to populate the array.  The DMA 
controller signals when it switches to the next array and we ping pong back and 
forth.  When there isn't any motion the array just has the DIR pins and the 
COOLANT pins set to their previous values.  The output doesn't appear to change 
even though the SPI hardware is loaded by the DMA hardware to spit out new data 
at a 10Mhz rate.
 
The question is…who and what populates the array and when and how.
 
John Dammeyer
 
 
 
 
 
From: machinekit@googlegroups.com [mailto:machinekit@googlegroups.com] On 
Behalf Of John Dammeyer
Sent: March-12-20 4:59 PM
To: 'Machinekit'
Cc: beaglebo...@googlegroups.com
Subject: RE: [Machinekit] Seeed to design and build Machinekit focused Cape for 
BeagleBone Black/AI
 
One has to be careful here not to spec in a 10 ton dump truck for that once a 
year 500 lb utility trailer load of peat moss for the garden.  For one thing 
they are hard to parallel park and really expensive for fuel.
 
There already exists, and will for some time, systems that can handle multiple 
spindles, closed loop control of the encoders back to the PC along with 
multiple FPGA controlled I/O and smart serial motor control for these 
retrofitted large commercial milling machines.  Those users will never ever 
install a BBB with a cape that has slow HMDI screen updates and limited I/O.
 
So forget them.
 
By the same token, the customers who are using Ardunio based duos or whatever 
the latest flavour is for their 3D printers are also of no interest.  If they 
were we'd have seen the Replicape on a BBB become the standard with Machinekit 
or Linux as the backbone.  Hasn't happened.  Won't happen.  Not sure why.  
Probably price.
 
So what is the target market for this type of product?  Well who is buying the 
ready to go $200 to $500 CNC boxes in China and for what machines? 
 
If I were to venture a guess I'd say the ones that are about this size:
https://www.grizzly.com/products/Grizzly-7-x-27-1-HP-Mill-Drill-with-Stand/G0704
 
They come in all sorts of flavours.  They are generally driven open loop with 
stepper motors and require only a spindle sensor for quadrature and maybe a 
second quadrature input for an MPG control although those can be had pretty 
inexpensively as USB devices.  And to tell you the truth I really like my 
ShuttleExpress over the USB MPG pendant. 
 
As along as the BoB has a FAULT input, which I forgot to put on my previous 
list, you can even use intelligent drives like the step-servos that close the 
loop but provide a FAULT output when something goes wrong.  My STMBL, Bergerda 
and HP_UHU drives all have that.  I think the GECKO I have on the KNEE also 
does but I'm not using it at the moment.  All open collector outputs that pull 
the signal low when a fault occurs.
 
Anyway, that size of a machine and the price tag associated with it will set 
the price of the CNC conversion.  Most of the cost is in the mechanics and the 
electricals.  
 
So two PRU accessed quadrature inputs are more than enough to close the loop 
for power tapping as long as the spindle speed control is responsive.
 
About the only limitation I see in my list is that 500kHz stepping is really 
fast.  I used that number because that's the step rate for the Bergerda AC 
servos with the 2500 line encoder.    That math works out to 10,000 edges per 
revolution and 3000 RPM is 50 RPS which means a 1:1 ratio is 500kHz.  The 
Bergerda can scale the step pulses in order to match the encoder with slower 
step rates.  I don't know if the STMBL AC Servo drive can do that.  Pretty sure 
the HP_UHU with the dsPIC can or almost can.
 
But for this target market, using standard stepper motors with micro-stepping 
drives we're back to 25kHz max before we see the motor torque drop off to a 
point where step speed doesn't matter.  And if you are using the step-servos 
the selection of the encoder will determine what's required.
 
So I'll agree with Chris that it's the I/O on the BBB that is the limiting 
factor.  But 10MHz SPI bus could take care of that. 
 
What I would do is use the PRU to load the DMA device to write two bytes to and 
read two bytes from the SPI port at a 1MHz rate.  It's the BBB's main 
processors responsibility to keep this filled or to stall it with step levels 
low and dir at last used value.  
 
The trajectory planner is responsible for setting the step pulses ON within the 
two byte packet to send out the SPI port.  The next two bytes hold the 
direction and drop the STEP.  Any other outputs on that buffer will also be 
left as is.  
 
Now you have hardware generating 6 pairs of step/dir as high as 500kHz.  The 
amount of time the 8th pair is ON and OFF is dependent on the PWM frequency and 
PWM pulse period within that frequency.   It's a simple matter of keeping the 
queues with this information full and default values when they aren't.
 
John Dammeyer
 
 
 
From: machinekit@googlegroups.com [mailto:machinekit@googlegroups.com] On 
Behalf Of Chris Albertson
Sent: March-12-20 3:33 PM
To: Jason Kridner
Cc: Machinekit
Subject: Re: [Machinekit] Seeed to design and build Machinekit focused Cape for 
BeagleBone Black/AI
 
 
 
Isn’t that something the Beagle is strong at with the eQEP and PRUs?
 
 
Strong only until you hit up against the limited number of I/O pins.  A PRU 
based solution is cheap and simple but can't scale.
 
In general TI's idea to place a small microcontroller on the same chip as their 
ARM Cortex-A was good and we see others doing this too but a big machine tool 
like a 5-axis mill with tool changer and cooling and saftey interconnects is 
going to need something bigger than a PRU.  FPGAs work well as wold an STM32 
tht had on order about 100 pins.
 
-- 

Chris Albertson
Redondo Beach, California
-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to machinekit+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/machinekit/CABbxVHs5uknWtEY-sP-hxfb13LNZ8CWBxxK30TiBn%3DOQ820K%2BA%40mail.gmail.com
 
<https://groups.google.com/d/msgid/machinekit/CABbxVHs5uknWtEY-sP-hxfb13LNZ8CWBxxK30TiBn%3DOQ820K%2BA%40mail.gmail.com?utm_medium=email&utm_source=footer>
 .
-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to machinekit+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/machinekit/09d301d5f8ca%244521c160%24cf654420%24%40autoartisans.com
 
<https://groups.google.com/d/msgid/machinekit/09d301d5f8ca%244521c160%24cf654420%24%40autoartisans.com?utm_medium=email&utm_source=footer>
 .

-- 
website: http://www.machinekit.io blog: http://blog.machinekit.io github: 
https://github.com/machinekit
--- 
You received this message because you are subscribed to the Google Groups 
"Machinekit" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to machinekit+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/machinekit/09ea01d5f8d4%24d7601090%24862031b0%24%40autoartisans.com.

Reply via email to