Your experience needed! The beginning of my BLDC + lead screws project for X&Y axis etc.

3,726 views
Skip to first unread message

Mikael Bohman

unread,
Aug 21, 2018, 1:45:05 PM8/21/18
to OpenPnP
First I used smoothie, then I made my custom daughter cards.

I have played around with both XMOS and FPGA-ZYNQ based controllers for stepper motors. 

I now feel ready to enter the world of BLDC motors.

I'm thinking of using a lead-screw or ball screw with a pitch of 10 mm or more.

The price seems to rise > 10 mm pitch. :(

To create 1 m/s I would ned 6000 rpm from the motor @ 10 mm pitch. There seems to be many 3 phase BLDC motors for RC outrunners, and some NEMA23 sized ones. 
The plan is to use a capacitive CUI decoder for the angle/position. That gives me up to 8192 steps per rev. of encoder feedback.

The coil currents will be measured with isolated 20MHz delta sigma modulators, decimated with a factor of 64 to 312.5 kHz including polyphase antialias FIR pre-filtering. 
The output MOSFET power stage would be driven at 78 , 156 or 312 kHz via gatedrivers. 
I will probably do it with XMOS, since it is easy to connect several chips together over "long" distance with a CAT cable for an example. (4 twisted pairs)

It would be nice if the maximum fundamental tone feeding the BLDC <= 100Hz to avoid audible tones higher up in frequency excluding small pitched screws.

I found this oDrive converted liteplacer to get inspiration from

An alternative is to use a very small pulley and timing belt as in the video.

For Z and C axes, I will cont. to use steppers.

I bought many parts last time from a German shop, and was so happy with the tolerances of everything they delivered, which is not the case from some China parts I bought.

So I'm considering using this series of screws from the same shop.

Any advices regarding the mechanical hardware !?


Overall I'm looking for a system with (at least) 3 XMOS PCB.

1) A micro sized PCB one located on the head, with 3 stepper drivers and LED drivers for Z,C0,C1 and camera LED.
2) One or two PCB driving X&Y axis BLDC motors.
3) The "mothership" with USB, controlling the vacuum pressure ADC, MOSFETs for all actuators etc. and translating GCODE to commands sent over the network.

The head will need a power cable + CAT6 cable transmitting the XMOS Xlink traffic over LVDS instead of my current harness of power cables.
All the signalling between the cards will be galvanically isolated to avoid loop currents in signal cables and ground loops.

It is possible to create large networks with XMOS chips without any overhead, since every chip has a built in switch. 
Any CPU core can communicate with any other core on the XMOS network. Most chips has at least 2 external links so you can also daisy-chain them.

For debug purposes an extra connector for XTAG2 ( JTAG)  can be added to each card, making even the debug phase interconnected. 
Without each card needs to be debugged independently with a XTAG2 connector.

The motherchip will send the code in the flash memory at boot time to all nodes in the network with only Xlink's. 
Only one large program is needed to be stored in 1 flash chip. 

Even though a FPGA solution is more powerful,  the XMOS solution is easier to use in a distributed net.

Having a distributed system, make it easier to upgrade just one PCB of the system.
Also when doing stupid things with the motor drivers like creating smoke etc at 50Amp, I will not destroy the entire system.

One PCB per motor is nice in that perspective.


Michael Anton

unread,
Aug 21, 2018, 2:38:27 PM8/21/18
to OpenPnP
Save yourself some grief, and take a look at ClearPath servos: https://www.teknic.com/products/clearpath-brushless-dc-servo-motors/.  I bought some DMM Tech servos when I was planning my build, and ended up getting 400W motors and drivers.  When I bought a machine that I consider to be fairly fast, I was surprised to find that it uses 50W motors.  I can only imagine what a machine running 400W motors would do!!!  I figure that the 400W motors are probably big enough to drive my small milling machine.

Marek T.

unread,
Aug 21, 2018, 2:58:32 PM8/21/18
to OpenPnP
50Watt? I have brush motors but they are 300Watt and 180Watt. All depend how heavy head you have and how fast you want to go...

My machine have ballscrew 22mm pitch and motors 3000RPM (two channels incremental encoders 1000ppr each, I use 2x mode). Screw is driven by pulley and small 20mm width belt.

1m/s is not impressing but with 22mm screw we may go...:-).

Waiting for your effects because cheap fast controller with over 300kHz could be interesting for my solution. Some problem to get step/dir signals from it? I mean to use it as just motion controller not full driver.

Michael Anton

unread,
Aug 21, 2018, 3:25:57 PM8/21/18
to OpenPnP
Yeah, 50W, which really surprised me as well (Panasonic motors and drives).  They are NEMA17 size, and it is a belt driven machine.  Round trip placement time is something like 2.75s or so, so not a really fast machine, but for a benchtop unit it is pretty good.  This is an old ECM97 from almost 20 years ago.  The picture is from before I cleaned it up, so it looks much better now...

DSCN1291.JPG

Mark

unread,
Aug 21, 2018, 5:39:45 PM8/21/18
to ope...@googlegroups.com
I guess Mikael is not into “Save yourself some grief”… :-)

He is into learning stuff by the truckload!

Impressive.

_Mark

Mikael Bohman

unread,
Aug 21, 2018, 7:06:50 PM8/21/18
to OpenPnP
Den tisdag 21 augusti 2018 kl. 23:39:45 UTC+2 skrev ma...@makr.zone:
I guess Mikael is not into “Save yourself some grief”… :-) 

I have worked within research and development my hole life. When I was a kid, I was building electronics when my classmates where playing with star-wars or playing Zelda on Nintendo.

I am usually as interested in buying something already commercialized as a cow is in buying milk.

I have already spent over 2 years, slowly building every now and then on my machine without yet picked and place even one component.

 * * *

I think that I will make a daughter card with only motor driver to test things out. I will probably use the same family of gate-drivers and MOSFETS as in oDrive, since it seems to work.

For Y-axis where motor weight is irrelevant I'm thinking of using this bad boy delivering 2.6Nm. 


For X -axis with smaller moving mass-

or


That would also mean that I could keep my current pulleys for now, since I will get twice the torque compared to my current steppers, and a top speed that is 15X of the steppers ... at least. You can even by water cooled shields to the motors, how cute!

This is about the maximum load that my large 15mm HDT 3 belt can handle without shorten the lifespan. 

Looking at the motor configuration


with 14 magnets and 12 coils - it looks like a half turn is symmetric with opposite sign, so feeding this with 1 Hz 3 phase should make it  turn 60 rpm !?

Going 1 m/s in this config equals 666.7 rps or a 11.1 Hz electrical current. 

My stepper with 200 step/ rev needs 555 Hz current, creating some 2:nd and 3:rd tone in the mechanical domain making it audible even with perfect electrical sinewave.

11.1 Hz plus some unavoidable 2:nd and 3:rd tone distortion would be almost completely inaudible!? (Not consider all other parts as dragchain and pulleys.)

Gino Magarotto

unread,
Aug 21, 2018, 10:41:46 PM8/21/18
to OpenPnP
Hi Mikael, I started the development of my own brushless servo drive a while ago, but I haven't dedicated much time to develop it further. I was using the 200V version of the 6EDL04 family of gate drivers, as they give the design quite a bit of flexibility with the motor power supply and they're cheap, at a bit more than $2 each. Those drivers don't include any analog signal conditioning for measuring phase current, but that can be easily handled with external opamps, or even inside the microcontroller, if it has sufficient analog capabilities. You could use higher voltage NEMA brushless motors, or some used industrial units, to keep the cost in check (I'm not personally a fan of hobby brushless motors).

Here's the board I developed (the one with the 6 FETs of course:

Brynn Rogers

unread,
Aug 21, 2018, 11:20:26 PM8/21/18
to OpenPnP
Hi Mikael,


On Tuesday, August 21, 2018 at 6:06:50 PM UTC-5, Mikael Bohman wrote:
Den tisdag 21 augusti 2018 kl. 23:39:45 UTC+2 skrev ma...@makr.zone:
I guess Mikael is not into “Save yourself some grief”… :-) 
I agree :-) 

I have worked within research and development my hole life. When I was a kid, I was building electronics when my classmates where playing with star-wars or playing Zelda on Nintendo.

I am usually as interested in buying something already commercialized as a cow is in buying milk.

I have already spent over 2 years, slowly building every now and then on my machine without yet picked and place even one component.

 * * *

I think that I will make a daughter card with only motor driver to test things out. I will probably use the same family of gate-drivers and MOSFETS as in oDrive, since it seems to work.

For Y-axis where motor weight is irrelevant I'm thinking of using this bad boy delivering 2.6Nm. 


This type of motor is awesome for power to weight ratio, and power density.     But--
One obstacle I see is that these motors all have no feedback.  So like the video you linked, you will at a minimum need to add an encoder.
The video you linked has the encoder attached with a belt drive, which somewhat defeats the accuracy of the encoder by not having it on the actual motor shaft.
So if you do end with that type motor I would want to have a shaft mounted encoder.
These are also 'sensorless' motors, which, without sensors, run poorly at below 10% speed.    But you must have an encoder to use them in this application, and that is enough to make it work.
However, it is much easier to have hall effect sensors to tell you the rotor position.  Otherwise you have to have a initialization that moves the motors til you find the index mark on the encoder, and after that all commutation would have to be done relative to the encoders position.    Easier to have the commutation relative to the 3 hall effect sensors, and not have to deal with 'virtual' commutation sensors.

I believe many of the high powered motors used for RC cars have gone back to using the hall effect sensors for commutation.
 


That would also mean that I could keep my current pulleys for now, since I will get twice the torque compared to my current steppers, and a top speed that is 15X of the steppers ... at least. You can even by water cooled shields to the motors, how cute!

I don't believe you actually need much in the way of current feedback unless you want to control torque.  
 
Here is a App note for BLDC motors with hall effect sensors NXP_appNote

The out runners and also RC car types are all probably not rated for 100% use.    They all figure your batterys are good for 15 minutes and then you'll have a cool down.
I'd be worried about getting these to hot if run too long.

I know you want to build your own everything, but I have some experience with building a PMSM drive, and for my PnP machine I chose to use servo drivers that the motor mfg sold for them.
Way easier as all the 10-20 motor parameters are all known, and the drive can already do acceleration, s-curves, and anything I need and way more.   I know that many man-months of time would be required for me to get a fraction of this functionality.    And I got three of these drives off ebay for about $125 each.  and they can handle 2.8kW  (which my linear motor tables can consume).   That requires 240v it give them that much power, but the drives also work on 120v with a slightly limited output (Accelerations are not quite capable of reaching the 50M/s/s at 120v)

 

This is from a MyData machine. Y-wagon screw
I've seen an X screw and motor too, and they are much bigger, but I couldn't find it this search.   Plus the X screw is for an older machine, all their current stuff use linear motors for X (and maybe Y, too)
.

Brynn 

Brynn Rogers

unread,
Aug 22, 2018, 12:00:22 AM8/22/18
to OpenPnP
I also wonder how these hobby motors can claim '2.1kW' and then have a 5mm output shaft  (one I saw on that website that does have sensors Sensored 2.1kW motor
That is almost 3hp.    I have a 3hp servo, and it's output shaft is like 30mm diameter.  Here is a picture of a 2.8kW servo:  A real 2.8kW servo

Brynn

Paul Kelly

unread,
Aug 22, 2018, 12:07:38 AM8/22/18
to ope...@googlegroups.com

Power is just a number you get by multiplying torque by rpm

Your servo with the 30mm diameter shaft probably maxes out at 2500rpmbut can deliver 10Nm of torque (for 2.5(ish) kW of power)

A brushless hobby motor spinning at 10000rpm (and some go a LOT faster) only has to deliver 1Nm of torque to lay claim to 2KW of power.

 

PK

--
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 post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/3cf47b9e-3efb-4e39-8285-7dc6acca176d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daren Schwenke

unread,
Aug 22, 2018, 12:53:32 AM8/22/18
to OpenPnP
I used a 250w BLDC motor on my prototype 3D printer. I can tell you this:
The inrush current was a PITA.  It's on it's own leg, with a bank of capacitors, and the lights still dim when I spin it up.
Heat wasn't an issue for me, but I seldom run mine above 20% and it's attached to a liquid cooled plate.  Still, the center of most of them is an AL sleeve with the plates press fit so a touch of heat sink compound when you screw it down would probably work pretty well.
Save yourself a world of grief and use a sensored motor.  I imagine your end result could run a lot cooler then as well living in the 'servo' world versus the stepper world of holding torque.
ESC's of the all nfet variety could possibly be reprogrammed for this.  Some have tried, all have failed, but the hardware is right...  Relatively fast mosfets on all legs/both rails..

Brynn Rogers

unread,
Aug 22, 2018, 2:17:28 AM8/22/18
to ope...@googlegroups.com
One of those hobby motors had a cool resistance of .007 ohms, which certainly would make inrush currents huge.  The big servos are running off as much as 340v. Which would reduce the current by a factor of 10 or so.

--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/HuK_q1Embjw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.

To post to this group, send email to ope...@googlegroups.com.

Michael Anton

unread,
Aug 22, 2018, 3:07:58 AM8/22/18
to OpenPnP
Which also makes running cables to the motor more difficult, or you lose a lot of power in the lead wires.

Brynn Rogers

unread,
Aug 22, 2018, 3:14:13 AM8/22/18
to ope...@googlegroups.com
Yes,  the low voltage motors require heavier gauge wire to carry the higher currents.  

The power supply might be 150A 24v, which is going to be spendy.     

My servo motors run off 120 or 240vac.
The'power supply'  is internal to the controller and is a diode bridge and a big cap.


--
You received this message because you are subscribed to a topic in the Google Groups "OpenPnP" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/openpnp/HuK_q1Embjw/unsubscribe.
To unsubscribe from this group and all its topics, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.

Mikael Bohman

unread,
Aug 22, 2018, 8:42:21 AM8/22/18
to OpenPnP
THANK YOU ALL FOR YOUR INPUT!
Here is some answers in pictures.

I am planning to use CUI encoders on the motor shaft. Giving me up to 8192 ticks per rev.



What I understand from the out-runner motors is that you often can change the shaft, since the shaft is connected to the outer magnetic part.


If I want to have it simple, I can pay some extra and bay the motors directly from the oDrive shop with dual shaft. You then put the CUI encoder on the back side. But in the video they did use some bulkier encoder.


I have been looking for motors with as low KV value as possible, meaning being high voltage relative to batteries.


Since the Delta-Sigma modulator moves the signal conditioning to the digital side, I do not need any extra circuits. Just a first order RC filter.

The input range is [-50 50] mV.


ti.png



The capacitors close to the MOSFET will need to have very low ESR. There exist low priced 1000uF with ESR of 16mOhm. A set of these in parallel could do the job. And or maybe 2 of these in series to cover the inrush current, making life easier for the PSU. ½F would by definition drop 100mV /ms. 

Mikael Bohman

unread,
Aug 22, 2018, 8:45:17 AM8/22/18
to OpenPnP
½F would by definition drop 100mV /ms @ 50A. They are designed to handle 100A.

Mikael Bohman

unread,
Aug 22, 2018, 9:28:19 AM8/22/18
to OpenPnP
PSU current limiter for motor inrush currents.

If you look at a typical Meanwell PSU, say 48V 10A, it has constant current limiting built in. Also protection against over voltage and over temperature.
So if the cap's are decarghed the voltage over the H bridge would drop until "only" 10A are taken from the PSU.
Is the inrush current really a problem with a SMPS ?

Daren Schwenke

unread,
Aug 22, 2018, 10:44:14 AM8/22/18
to OpenPnP
Yep, Low Kv good, high Kv bad, for this use anyway.  1200 was as low as I could go in the form factor I needed.  
The only other things in my setup running at the actual supply voltage was my motion steppers, which were never affected by the BLDC inrush.  I actually ran my 3S rated motor on 24v though, so it was probably drawing closer to 500w when it spun up.  Surprisingly my 4S rated ESC survived as well...  :)  Eventually, I had to replace the 3mm shaft at which point I lowered the entire system voltage to about 19v.

Before that, I noticed that nothing behind the buck converters running off that 24v rail were ever affected.  I added another $2 buck converter, put my lighting supply on it, and stopped caring at that point.  Still left the bypass caps in though.

Brynn Rogers

unread,
Aug 22, 2018, 10:51:06 AM8/22/18
to OpenPnP
a typical PSU like that is probably only talking about the inrush to fill it's internal caps when you turn it on is protected.
I would not expect that supply (the 48v 10A you mention)to be able feed those big outrunners well at all.

your encoder at 8192 cpr is also 8192cpr/10mm screw pitch= .031 inches/count (unless im doing math wrong).  you'll need more like .002 inches/count to place 0402
(I  have no feel for fractions of a mm, but I know thousands of an inch)  I think you need 131072 cpr encoder if on leadscrew shaft with 10mm pitch.
leadscrew will also have some backlash.     encoder on old commercial pnp that use screws is on head position, not screw shaft, I believe.
new pro pnp all use linear motors with encoders on actual head position,

also, at 6000rpm a 8192 cpr encoder will put out 8192000 counts/sec.  can it handle that? I tried to look it up,but the datasheet i found only went up to 2048cpr at 7500rpm.
and you'd need 100,000 cpr which would give 100,000,000 counts/second,  doubt the encoder can handle it

Brynn

Jason von Nieda

unread,
Aug 22, 2018, 10:56:51 AM8/22/18
to ope...@googlegroups.com
Your math is off: 10mm / 25.4 mm per inch / 8192 counts = 0.000048 inches per count. I'll probably work :)

Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.

To post to this group, send email to ope...@googlegroups.com.

Brynn Rogers

unread,
Aug 22, 2018, 11:18:29 AM8/22/18
to OpenPnP


On Wednesday, August 22, 2018 at 9:56:51 AM UTC-5, Jason von Nieda wrote:
Your math is off: 10mm / 25.4 mm per inch / 8192 counts = 0.000048 inches per count. I'll probably work :)

Jason

Oops.   Short on coffee and sleep this morning.

You will still be getting 8192cpr * 6000RPM / 60sec/min= 819200 couints per second.   thats about 3x faster than the CUI datasheet talks about for 4096 cpr

The only CUI datasheets I found don't mention 8192, just 4096 at 4000rpm max and 2048 at 8000 RPM max

 
Brynn

Mikael Bohman

unread,
Aug 22, 2018, 12:34:47 PM8/22/18
to OpenPnP
It is 2048 periods per rev.  == 4 flanks on each period which can indicate 8192 positions per rev. 7500 max RPM with that 
or
15 000 rpm with 512 periods per rev. => 2048 pos. per rev.

Message has been deleted

Gino Magarotto

unread,
Aug 22, 2018, 2:01:22 PM8/22/18
to OpenPnP



The board in question:

IMAG0119.jpg

Mark

unread,
Aug 22, 2018, 2:20:47 PM8/22/18
to ope...@googlegroups.com

> Yeah, 50W, which really surprised me as well (Panasonic motors and drives).  They are NEMA17 size, and it is a belt driven machine.  Round trip placement time is something like 2.75s or so, so not a really fast machine, but for a benchtop unit it is pretty good.  This is an old ECM97 from almost 20 years ago.  The picture is from before I cleaned it up, so it looks much better now...

 

 

Video please!

 

_Mark

Mikael Bohman

unread,
Aug 22, 2018, 10:04:42 PM8/22/18
to OpenPnP
I found some outrunners with very low kv=60, which can deliver 8.5 Nm from a 360g heavy motor.
Should give around 0.15 Nm/A holding torque, similar values to my current steppers, but with the possibility to deliver much more torque and speed.
It could pull my belt with 500 N at 3 m/s, but would soon overheat without forced cooling.
But running it at 50W would mean currents below 10A.



Den tisdag 21 augusti 2018 kl. 19:45:05 UTC+2 skrev Mikael Bohman:

Juha Kuusama

unread,
Aug 23, 2018, 11:16:42 AM8/23/18
to OpenPnP


On Thursday, August 23, 2018 at 5:04:42 AM UTC+3, Mikael Bohman wrote:

I found this oDrive converted liteplacer to get inspiration from
<..>
Any advices regarding the mechanical hardware !?


Regarding the LitePlacer expriment, a couple of issues to consider: It used only about a quarter of the power that was available(!). The limiting factor was GT2 belt teeth. If you use a belt drive in a strong machine, pay attention to belt selection. Another factor was the legs of the table. In other words, fast acceleration needs a stupidly sturdy base.

Mikael Bohman

unread,
Aug 23, 2018, 11:33:09 AM8/23/18
to OpenPnP
Hi

Thanks, I have actually read the datasheets for my belt type. I'm using a steel reinforced HDT3 belt 15mm wide. That takes a lot more load than standard GT2 6mm.

Mikael Bohman

unread,
Aug 23, 2018, 11:41:19 AM8/23/18
to OpenPnP
A large problem with outrunners, when not driving a propeller seems to be axial load due to a pulley and belt.
Here is my idea how to solve it, and place the CUI encoder as well.
There will be a ball bearing on each side of the pulley. One in the motor and one above the encoder.
Will make a new shaft from 8mm shaft steel with my friends CNC lathe. The shaft need 3 indentation. One for C-Clip, one for the pulley screw and one for the motor connection screw.
This way the rotor would not touch the stator due to axial load from the timing belt.
Any problems with my idea ??

Nema23 fäste v49.png

Marek T.

unread,
Aug 23, 2018, 11:48:03 AM8/23/18
to OpenPnP
Some maybe helpful info is that in my machine, which is not my cosntruction but original solution of Philips/Yamaha, every belts are HTD3M-15mm not GT2.
It's old but professional machine so I believe that designed without compromises or costs saving but to get high quality (I have measured large capacitor 4.7mF/200V and after 25 years lost maybe some 5%, price €170).
Optibelt, Conti, Gates if not Chinese.

Agree about the weight. Machine like this should be at least 100kgs as for me to be solid stable...

Jason von Nieda

unread,
Aug 23, 2018, 11:57:32 AM8/23/18
to ope...@googlegroups.com
Isn't backlash an issue with that tooth profile? I was under the impression that the "timing" profiles experienced backlash while the GT2 profiles were specifically for linear motion.

Jason


--
You received this message because you are subscribed to the Google Groups "OpenPnP" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+u...@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.

Marek T.

unread,
Aug 23, 2018, 12:11:26 PM8/23/18
to OpenPnP
Hi Jason,
Do you ask about this HTD3M? No, zero backlash compensation in Openpnp was needed to apply and no problems with this on original machines (have them 3) nor on the retrofited one.
For C there is used same HTD3M but 9mm instead of 15mm like for XY axis. They are short like 225mm arround and drive tooth wheel fixed on the ball screw.
Few posts above I have written mistakely they are 20mm what is not true, sorry.

Mikael Bohman

unread,
Aug 23, 2018, 1:14:55 PM8/23/18
to OpenPnP
I have almost a unmeasurable small backlash with my belts.
Compare 0:08 and 0:22

This is without any compensation, and the head starts moving right, and end moving left without passing "zero".
It is beyond 1 pixel. Using cross-correlation of the 2 images in MATLAB shows a small offset.

Jason von Nieda

unread,
Aug 23, 2018, 4:10:34 PM8/23/18
to ope...@googlegroups.com
Fair enough - carry on! :)

Michael Anton

unread,
Aug 23, 2018, 10:41:30 PM8/23/18
to OpenPnP
My ECM97 machine uses 10mm wide S2M belts, which are similar to GT2, but with a flat spot on the end of the teeth.  They seem to work ok, and I've never had one break or skip teeth.  It uses fairly large pulleys though.

Michael Anton

unread,
Aug 23, 2018, 10:42:39 PM8/23/18
to OpenPnP
I'll try to shoot some the next time I run boards.  I'm not sure where I'll post it though, since I don't have a Youtube account, but I'll come up with something.

Trampas Stern

unread,
Aug 26, 2018, 7:28:16 AM8/26/18
to OpenPnP
I forgot to mention that if you want a fast machine it needs to be heavy. 

I could run my machine on NEMA 17 with smart steppers fast enough to knock parts off tape feeders when it changed directions.  I finally had to bolt it down and add weight to table, and it still shook.  Hence F=Ma so you need mass if you want to accelerate fast... 

The commercial PnP I have is VERY heavy.  I ran int on some moving casters and even it would vibrate so I had to take off casters to make stable. 

Trampas 

oliver jackson

unread,
Aug 26, 2018, 8:05:27 AM8/26/18
to ope...@googlegroups.com
I saw an article on BBC news that gave me inspiration. Washing machines have added mass to stop the spin cycle shaking them around the room. Its usually a few breeze blocks. This mass makes them hard to move around and adds to the cost of transportation.

A student had an idea so simple its amazing no one had thought of it before. Why not just have a large tank of water as the mass, that you only fill once the machine is in its final location. I live and work in rented space. When I get around to building it it will be great to have a machine I can move around easily using man power occasionally by draining the tank, but I can have the necessary mass when the machine is operating.
--
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 post to this group, send email to ope...@googlegroups.com.

Mikael Bohman

unread,
Aug 26, 2018, 2:01:05 PM8/26/18
to OpenPnP
I'm thinking of this solution for an evaluation prototype for driving one brushless motor.

The bottom board is XMOS explorer.
The middle PCB has gate drivers and DeltaSigma modulators for current measurements.
The top PCB has MOSFET with low ESR caps.
The total ESR of the capacitors is 0.9 mOhm. 
Low copper resistance, since all copper area is used as the conductor for Rail, Out or PGND.
<= 10x10 cm, 2 layer to get dirty cheap price of PCBs.

 DUMP.png


Mark

unread,
Aug 26, 2018, 2:24:06 PM8/26/18
to ope...@googlegroups.com

Am I right to assume you want to store all braking energy in the caps and avoid burning it in a brake resistor?

 

https://docs.odriverobotics.com/#hardware-requirements

 

_Mark

Daren Schwenke

unread,
Aug 26, 2018, 2:29:09 PM8/26/18
to OpenPnP
Heh.. that should suppress the startup surge alright.  Say hello to my little friends...  
Mine was just a brick of about that form factor hot melt glued together.

Mikael Bohman

unread,
Aug 26, 2018, 3:24:09 PM8/26/18
to OpenPnP
Thanks.

That is what you call rail-pumping in audio amplifiers!? But the problem is much worse here when you are feeding in DC currents storing mechanical energy in the moving mass.

I have a power NPN transistor as a shunt (amplified Zener) from rail to ground. The largest surface mount black thing on the PCB. But that would probably overheat without an external heatsink. Great that you mentioned that.

I looked at oDrive and the resistor earlier. Is there any good reasons to not use a BJT shunt instead of MOSFET with a  power resistor ?? Or a BJT + power resistor on the collector.
Do I need to have a digital control ??

Brynn Rogers

unread,
Aug 26, 2018, 4:07:37 PM8/26/18
to OpenPnP
This looks like it will solve the problem that the motors want 150A or some ridiculous amount of power.   
These will have a different (but easier to solve) problem, where all these caps will want a huge surge of current to get charged when turned on.
The solution is that your 24-48v power supply that is feeding the caps needs to be current limited so it doesn't burn up trying to supply the caps with their initial charge.

The regeneration where your braking motors will charge up the capacitor bank will save you a bit of power, but since those motors are only 80-85%  efficient you only get back so much.
The gemini controller I am using provides a connection to an external smart power resistor.    It kicks in at 360v to bleed off excess capacitor charge (the capacitors are in the Gemini).
This is optional, and the old machine I disassembled to get my slides did not use one.   I am not sure if I'll need one - If I only power up with 120vac, I doubt I'll need them, but if I do go for 240vac then it might be best to add one.   Pretty simple device to make.

I still think you are making a number of unnecessary hurdles for yourself by choosing the sensorless outrunner type motor.    I believe you will have much less work to do if you start with a motor that has hall effect sensors, like the RC car 'inrunner' type motors.   You can also clamp a heat sink to the motor or a liquid cooled jacket to help cool them more easily.
Although I also think the the 'Hobby' type motors have some other gotchas that make them less ideal:  
1) they have low efficiency which means lots of heat generation
2) they are low voltage which makes them require an extra power supply, in your case you designing super high current ones that take cost and effort.

Personally I think you could find some commercial servos on ebay for a comparable price and less effort.
1) they are higher efficiency and if properly cooled will run 100% duty cycle, something I doubt you can easily get from the Hobby motor
2) they have both hall effect sensors and encoders built in, so you don't have to mess with that.
3) they typically run on high voltages, so they have simple inexpensive power supplys
4) used driver/controllers are available that will save you man-years of development to get the kind of features they have.


Brynn

Mikael Bohman

unread,
Aug 26, 2018, 4:16:39 PM8/26/18
to OpenPnP

I added a terminal to connect a power resistor between the rail and the Darlington collector.


DUMP.png

Mark

unread,
Aug 26, 2018, 5:57:11 PM8/26/18
to ope...@googlegroups.com

> Great that you mentioned that.  I looked at oDrive and the resistor earlier. Is there any good reasons to not use a BJT shunt instead of MOSFET with a  power resistor ?? Or a BJT + power resistor on the collector.

Do I need to have a digital control ??

 

I don’t know the internals. It’s just something that impressed me at the time I first heard about it (I’m following the O-Drive since almost the beginning). Plus the fact that you can actually use a battery as a “huge” capacitor.

https://discourse.odriverobotics.com/t/lead-acid-battery-as-charge-buffer/117/5

 

The previous discussion (in this thread) about alleged huge inrush currents I don’t understand, really. Your driver will (have to) be current controlled, right? So it will remain within current specs (as huge as these may be). Plus the motor coils have considerable impedance, so no inrush there – au contraire, you’ll have plenty of time to react. The discussion about the small motor coil ESR is inconsequential unless your current control fails.

 

However, the inrush will happen into the caps. Again I guess you can assume that any modern PSU has current limit and soft start.

 

IMHO the only real concern with these insane decelerations is the braking power i.e. reverse current into the PSU. A common PSU will not handle that, AFAIK. Body diodes of your FETs will just let it through … and that is a good thing, as otherwise you’ll create a monster boost converter, very easily generating thousands of volts.

 

It guess the same actually happens with steppers. Why exactly we can ignore it, I don’t know. I can only guess that by avoiding step “losses” on deceleration we avoid the braking power issue by implication/at the same time (?).

 

_Mark

 

Brynn Rogers

unread,
Aug 26, 2018, 7:14:57 PM8/26/18
to OpenPnP


On Sunday, August 26, 2018 at 4:57:11 PM UTC-5, ma...@makr.zone wrote:

> Great that you mentioned that.  I looked at oDrive and the resistor earlier. Is there any good reasons to not use a BJT shunt instead of MOSFET with a  power resistor ?? Or a BJT + power resistor on the collector.

Do I need to have a digital control ??

 

For the bleed resistor and transistor that keeps your Vbus from going to high,  It can be FET, BJT, Darlington, even a Zener diode.  You don't care much about loss in the transistor because the goal is to loose the extra energy.   So just design it so if you want the loss to be in the transistor that it has proper heat sink.  Or just use a good FET, no heat sink, and let all the loss happen in the power resistor.

 

I don’t know the internals. It’s just something that impressed me at the time I first heard about it (I’m following the O-Drive since almost the beginning). Plus the fact that you can actually use a battery as a “huge” capacitor.

https://discourse.odriverobotics.com/t/lead-acid-battery-as-charge-buffer/117/5

 

The previous discussion (in this thread) about alleged huge inrush currents I don’t understand, really. Your driver will (have to) be current controlled, right? So it will remain within current specs (as huge as these may be). Plus the motor coils have considerable impedance, so no inrush there – au contraire, you’ll have plenty of time to react. The discussion about the small motor coil ESR is inconsequential unless your current control fails.

 

However, the inrush will happen into the caps. Again I guess you can assume that any modern PSU has current limit and soft start.

I would assume not assume that, especially with cheap chinese supplies or even 'good' home built ones.  I have designed a number of supplies and you must think of everything and account for everything and be right about it, or you will see things like a trace evaporate when the inrush current happens.
Unless it is some bulletproof US designed commercial supply, I'd have my doubts.  Even if it takes it a few hundred times, will it last?
Power supplies are often the first subsystem to fail in any design. 

 

 

IMHO the only real concern with these insane decelerations is the braking power i.e. reverse current into the PSU. A common PSU will not handle that, AFAIK. Body diodes of your FETs will just let it through … and that is a good thing, as otherwise you’ll create a monster boost converter, very easily generating thousands of volts.

You will not get more than double your voltage into the motor during regen, unless your trying to do some magic boost converter using the motor coils.
Or if you are adding energy into the system, like an electric car going down hill.
 

 

It guess the same actually happens with steppers. Why exactly we can ignore it, I don’t know. I can only guess that by avoiding step “losses” on deceleration we avoid the braking power issue by implication/at the same time (?).

Good question.   My theory would be that because the steppers are so much less efficient to begin with, they can't* ever get more energy out than in.

* Unless your adding energy to the system, and pretty much nobody is using steppers in electric cars that go on hills.    Maybe someone driving a stepper driven robot on a hill,  but usually by the time people are running their robots on hills they have advanced to BLDC motors.
 

 

_Mark

 

Mikael Bohman

unread,
Aug 26, 2018, 8:17:51 PM8/26/18
to OpenPnP
Regarding PSU: I do not need to assume, because I read the datasheets.

Here you can read about the CCS and hiccup mode.

And here you can choose the one with a constant current mode.

As long as you do not saturate the transformer core with magnetic flux, nothing bad needs to happen. The power loss in the secondary coil due to an external load is dependent on the current, not the output voltage.
This is not the same as something bad can happen with a shorten Chinese PSU, which may not adapt the duty-cycle so it effectively gets a high output impedance eg. becomes a constant current source.

Mikael Bohman

unread,
Aug 26, 2018, 8:29:09 PM8/26/18
to OpenPnP

It guess the same actually happens with steppers. Why exactly we can ignore it, I don’t know. I can only guess that by avoiding step “losses” on deceleration we avoid the braking power issue by implication/at the same time (?).

 

_Mark

 

 
A hypothesis:
For steppers, the common driver uses the recirculation mode during braking as much as possible, meaning that both the lower MOSFET are conducting, making the energy to dissipate in the stepper instead of charging the rail. That together with the high resistance compared to BLDC would make the energy transfer into heat in the stepper. As if you shorten the coils of the steppers and start to rotate it.
Anyway, the inrunner BLDC and stepper motor is almost the same thing from a physics perspective, but with much fewer steps per rev. You could run a BLDC as a stepper without feedback, but each step would make a large jump in angle. And you would need to constantly load the coils to know that it would hold the current step.

Mikael Bohman

unread,
Aug 26, 2018, 8:45:54 PM8/26/18
to OpenPnP

 

The previous discussion (in this thread) about alleged huge inrush currents I don’t understand, really. Your driver will (have to) be current controlled, right? So it will remain within current specs (as huge as these may be). Plus the motor coils have considerable impedance, so no inrush there – au contraire, you’ll have plenty of time to react. The discussion about the small motor coil ESR is inconsequential unless your current control fails.



I do not think that I will have any problem with "inrush currents" either at the starting moment. But I do believe there can be states when the coils get close to being only resistive when it changes from being a motor to a generator. In that state, the switching might become tricky since the inductive "constant current" thing is lost. My controller might need to react to that pretty fast, but since I will have a closed loop response at deadtime at least 5 times lower than any other typically digital controller it should be solvable. If not I will have a huge charge in the capacitors that would like to rush into the coils that will have less than 100mOhm? resistance, even with KV=60. I might blow up some FET's. I will start without any caps on the PCB, just feeding it with a linear PSU with current limit. 

There exist libraries for FOC for XMOS, but I have not studied it yet.



Mikael Bohman

unread,
Aug 26, 2018, 8:59:22 PM8/26/18
to OpenPnP
An old video from an XMOS exhibition. 

Up to 142kHz inner loop performance with the old XS1 processor.

Nowadays you can just live probe signals or store it to disk over XTAG with the IDE with help of XLINKS.
(As you are looking at analog signals on an oscilloscope, which are running in realtime in the DSP)

Den tisdag 21 augusti 2018 kl. 19:45:05 UTC+2 skrev Mikael Bohman:
First I used smoothie, then I made my custom daughter cards.

I have played around with both XMOS and FPGA-ZYNQ based controllers for stepper motors. 

I now feel ready to enter the world of BLDC motors.

I'm thinking of using a lead-screw or ball screw with a pitch of 10 mm or more.

The price seems to rise > 10 mm pitch. :(

To create 1 m/s I would ned 6000 rpm from the motor @ 10 mm pitch. There seems to be many 3 phase BLDC motors for RC outrunners, and some NEMA23 sized ones. 
The plan is to use a capacitive CUI decoder for the angle/position. That gives me up to 8192 steps per rev. of encoder feedback.

The coil currents will be measured with isolated 20MHz delta sigma modulators, decimated with a factor of 64 to 312.5 kHz including polyphase antialias FIR pre-filtering. 
The output MOSFET power stage would be driven at 78 , 156 or 312 kHz via gatedrivers. 
I will probably do it with XMOS, since it is easy to connect several chips together over "long" distance with a CAT cable for an example. (4 twisted pairs)

It would be nice if the maximum fundamental tone feeding the BLDC <= 100Hz to avoid audible tones higher up in frequency excluding small pitched screws.

I found this oDrive converted liteplacer to get inspiration from

An alternative is to use a very small pulley and timing belt as in the video.

For Z and C axes, I will cont. to use steppers.

I bought many parts last time from a German shop, and was so happy with the tolerances of everything they delivered, which is not the case from some China parts I bought.

So I'm considering using this series of screws from the same shop.

Any advices regarding the mechanical hardware !?


Trampas Stern

unread,
Aug 27, 2018, 5:16:13 PM8/27/18
to OpenPnP
Yes the road crew do this now with orange barriers. Filled with water if you hit them it also absorbs the energy.  

The problem with water in house is that if you have to put water in sealed container which means the installers have to be smart enough to fill the unit (not getting water on floor) and then putting cap on the unit to seal it off.  

Trampas Stern

unread,
Aug 27, 2018, 5:47:04 PM8/27/18
to OpenPnP
I looked at doing BLDC drive.  Some of the motors are rated for 1500W (2HP) ! 

For example this motor is 1800W  for $42

The specs show 19V with 100A.  Like stepper motors they have an inductive coil and hence you need much higher source voltage to ramp up the current  to 100A.  So for example you might need a 60V-100V supply to get speed from the motor. 

This also means you need to dump that much power to stop as quickly.  So you need large bank of high voltage capacitors if you want to store and source that energy.  

Again if you do not need 2HP you can get by lower current and voltage, but for speed and power you need high voltage to get speed and high current to get high power.

  



Michael Anton

unread,
Aug 27, 2018, 5:58:17 PM8/27/18
to OpenPnP
I don't think you are correct in the case of this style of motor.  The resistance of the windings on this motor are 0.0094 ohms.  How large do you think the inductance can be?  These will likely reach rated power at 19V, since the peak current at 19V would be 2021A.  The ESCs that these are driven with don't usually have any sort of boost circuit, and the motor ratings are based on the rated voltage, unlike other motors.

Trampas Stern

unread,
Aug 27, 2018, 7:12:57 PM8/27/18
to OpenPnP
I am not sure on the inductance, but I assume it is reasonably high. 

Specifically if the inductance was zero then it would not create a magnetic field and the motor would never turn.  So they want most of the electrical energy to be converted to magnetic field, to move the motor, which requires non zero inductance. We also know the inductance changes based on the load.  

For the motor above the no load current is 2.9A and if we assume that is with 18.5V input and running at max speed, what input voltage do you need to get 100A at max speed?   

So since current changes linearly you would need 100/2.9*18.5 ~= 638V.  (now of course this is over the 1800W limit)

Another way to look at this is:

If you dropped max speed in half (and assume inductance did not change) then with 18.5V you could get twice the no load current into motor.  So if max speed is ~38,000 RPM  with 2.9A you would have:


With 18.5V 
38,000 = 2.9A
19,000 =5.8A
9,500   = 11.6A
4,750 = 23.2A
2,375 = 46.2A
1,187 = 92.8A

So yes with less than ~1000 RPM you could get maximum current into motor assuming no load inductance and 18.5V. With load and 18.5V your maximum RPM at 100A would drop due to higher inductance. 

Now with something like a PNP you have high torque requirements when starting and then once at speed you have low torque. So yea at 18.5V you should be able to get high torque to start at low speed but can not maintain that torque after getting RPMs up.  

1800W is a lot of power, most homes have 15A 120V circuits in the US and hence 1800W is the max you power from wall outlet, and 100A is A LOT of current. 

So yea I guess it can work with 18.5V and provide maximum current (depending on load and speed). 



  








Mark

unread,
Aug 28, 2018, 5:05:19 AM8/28/18
to ope...@googlegroups.com

> I am not sure on the inductance, but I assume it is reasonably high. 

 

It seems to be much lower than with steppers but still substantial. See some values mentioned in this thread:

 

https://discourse.odriverobotics.com/t/2-different-odrives-v3-4-with-different-motors-give-phase-inductance-out-of-range-on-devel-branch/409/4

 

There are ~10uH and ~320uH measurements mentioned. That’s up to ~200 times less than steppers. Add to that the much less “steps” per rotation.

 

So high voltages are not as much a must as with steppers, I guess.

 

_Mark

 

 

  

 

Mikael Bohman

unread,
Aug 28, 2018, 11:47:31 AM8/28/18
to OpenPnP

Dump1.png

Dump2.png


I have incremental encoder input (8192 flanks per rev).

3 isolated delta-sigma modulators 20MHz measuring the actual coil current (not the FET currents). (SuperAudio CD used a 2,8224 MHz bitstream)

3 inputs for Dallas digital thermometers, one for the heatsink, and one for the motor and one extra. Maybe to monitor the gate driver temperature.

Connector for the external bleed resistor to avoid overvoltage on the rail.

MOSFETs in TO220 package so I can run with high switching loss, to find the optimal condition for quiet control.

Testpoints for all interesting signals, that is not hidden by the top PCB.


PGND and CPU GND is only connected at one spot to avoid current loops.


1000-2000 MIPS of DSP power if needed.


I ordered 1 motor to start with 60KV EMF. With alienpowersystem you can get almost any KV value, but you need to wait some weeks for them to be made.

Lower KV means more turns in the coils, thus higher impedance. The motors are balanced after assembly.

Since my current stepper can emit 10W of heat, this motor should at least with a 3D printed fan blade on the back of rotor be able to emit at least as much power. 

Forced convection should help, but on the other side, the coils are in the middle of the motor.

The brushless engine with feedback will have much higher efficiency, (but not as high as an in-runner as mentioned above), so I should be able to put in more electrical energy.

To be used with Field Orientation Control, using both rotor angle and coil currents as sensor feedback data, somehow... Just a small ocean with math to conquer :)


                              

Marius Liebenberg

unread,
Aug 28, 2018, 1:01:02 PM8/28/18
to OpenPnP
Very impressive work Mikael

Mikael Bohman

unread,
Sep 6, 2018, 1:13:05 PM9/6/18
to OpenPnP
I got my BLDC motor today from Alien Power Systems.

The first test is to measure the little beast.

I do not have an mechanically grounded motor-bed to mount it on, so the measurements have some caveats. 
Below is the impedance between 2 phases. The motor is placed on a gel bed. A measurement without the effects of the measurement cabels etc. says DC resistance of 1.20 Ohm. 
A small dip @ 3kHz can be seen. That is the first mechanical resonance that couples so it clearly emits sound. Very nice that it is so high up in frequency. I am not planning to feed the engine with 3 kHz  (180 000 rpm ?)

aps ohm.gif

Same thing but showing the current in dB when feeding a constant voltage to the motor. The green curve is when I am holding it with my fingers. Red is with the gel thing. Right now I have a mechanical resonance between the moving mass and the compliance of my fingers, or the surface in the freq. range [50 200] Hz. I predict that you would see a first order function with a proper engine mount without the resonance.

aps I.gif


Mikael Bohman

unread,
Sep 6, 2018, 2:15:02 PM9/6/18
to OpenPnP

To measure the KV value, I rotate the motorshaft with my handheld drilling machine. 

It generates 24V @138.9 Hz. 12 Coils 14 magnets 3 phases. I'm pretty sure that it would mean 138.9*60/6 = 1389 rpm or 2 m/s with my current pulley.

I do not know if kw value is a RMS value. Using peak voltage I get 1380/24  = 57.9 rpm/V.

It is specified to kv=60

For going at 1 m/s I need an amplitude of 12V peak between 2 phases to just overcome the back EMF.




gen.gif

Mikael Bohman

unread,
Sep 6, 2018, 3:58:22 PM9/6/18
to OpenPnP
I can now estimate some motor performance curves.
 75% max efficiency, that fits well with measured data on the web for similar motors.

n.png

Daren Schwenke

unread,
Sep 8, 2018, 4:11:47 AM9/8/18
to OpenPnP
Wow... That's actually kind of impressive you got anywhere near the right value.
My math is very rarely ever so close to 'actual' in matters of inductance.  This is probably because I'm ignoring things that matter, but I do tend to ignore the math until 'actual' comes to bite in the ass later.  
An engineer and a math major walk into a bar...

Mikael Bohman

unread,
Sep 8, 2018, 12:01:10 PM9/8/18
to OpenPnP
This simplified model was used to calculate the plots.
 
R=1.2; %measured
kv = 138.9 * 10 / (24/sqrt(2)); %measured
L = 100/(2*pi*20000); %measured

rpm=0:5:3000;
v = rpm/60*0.09;
w = 2*pi*rpm/60;
j=sqrt(-1);
   
V = I*(R + j*w*L) + rpm/kv; % Voltage
T
= I*5.7/65; %Tourque/I factor from "datasheet"
Pe = abs(V*I); %E power
Pm = T * w;    %M power

Mikael Bohman

unread,
Sep 8, 2018, 2:58:34 PM9/8/18
to OpenPnP
Ohh , I have a bad hangover today but I manage to create a Space Vector Modulation from scratch.

Two very nice properties of SVM:
  1.  You can get +-48 diff voltage from a single 48V supply for all 3 phases. You can not do that with standard PWM you could only get 41.6V. The trick is to make the middle node in the motor coils (the sum) free floating. 15.5% higher voltage out!
  2. Each MOSFET half-bridge gets to rest from switching 33% of a full period. Less switching loss!
The example shows an accelerating motor with 99% modulation. 

SPM.png

Dimitar Penev

unread,
Sep 9, 2018, 6:41:39 AM9/9/18
to OpenPnP
Hi Mikael Bohman,

I am new to BLDC motors so I will appreciate if you or somebody else clarify

1. You seems to use single phase motor but on your plots there are 3 phases shown?
2.  For the shaft position are you going to use the rotation pulse encoder as a feedback for the control? 
     Or is the phase current you want to measure going to close the feeadback? 
3. For your project are you going to develop the control algorithm or a popular open option is available?
4. Is the main purpose of the braking resistor to prevent the power rail voltage from getting high while the motor is stopping.

    

Mikael Bohman

unread,
Sep 9, 2018, 7:03:07 AM9/9/18
to OpenPnP


Den söndag 9 september 2018 kl. 12:41:39 UTC+2 skrev Dimitar Penev:
Hi Mikael Bohman,

I am new to BLDC motors so I will appreciate if you or somebody else clarify

I have been looking at this material:
They also have youtube videos.
 
1. You seems to use single phase motor but on your plots there are 3 phases shown? 

My motor has 3 cables, where the coils are connected in a Y configuration (I hope) => 3 phases.
 
2.  For the shaft position are you going to use the rotation pulse encoder as a feedback for the control? 
     Or is the phase current you want to measure going to close the feeadback? 
 
3. For your project are you going to develop the control algorithm or a popular open option is available?
 I will implement the algorithm in XMOS. That way everything is software controlled, and thus it is possible to change things. 

4. Is the main purpose of the braking resistor to prevent the power rail voltage from getting high while the motor is stopping.
Yes! 

Mikael Bohman

unread,
Sep 9, 2018, 7:12:00 AM9/9/18
to OpenPnP

I manage to add error feedback (delta sigma type) to SVM. The result was even better than expected regarding distortion components < 20kHz even at full modulation.

The 200+ Hz tone is the component that will create motor torque (We are still in the digital domain. No errors from the MOSFET etc. are included)



spm99pmod.pngspm9pmod.png

Dimitar Penev

unread,
Sep 10, 2018, 6:03:54 AM9/10/18
to OpenPnP
Hi Mikael,

Thank you for the pointers!
-So you have purchased "APS 5065 Outrunner brushless motor 60KV 1800W" from Alienpowersystem, correct?
-I've saw kappaiq.com suggests cascading the Position, Velocity and Torque PI loops. 
 It is interesting if independent position and velocity loops will benefit the system? In your case it is all in the digital domain. 
- I don't have experience but using  XMOS system looks to me as an overkill tool for this application. 
  After all we are talking about something like 10000 rpm which means like 1MHz from your 8192 steps position encoder.
  Do you think that inexpensive FPGAs like  http://www.latticesemi.com/Products/FPGAandCPLD/iCE40Ultra could do the job?
- I am also trying to understand your measurements. For the impedance for example have you used a network analyzer? 
  Did you use some kind of driver so you excite the phase with more natural for the motor amplitudes. 
  While the motor is rotating I guess you will have a different impedance behavior, no?

Regards
Dimitar        

Mikael Bohman

unread,
Sep 10, 2018, 3:47:16 PM9/10/18
to OpenPnP


Den måndag 10 september 2018 kl. 12:03:54 UTC+2 skrev Dimitar Penev:
Hi Mikael,

Thank you for the pointers!
-So you have purchased "APS 5065 Outrunner brushless motor 60KV 1800W" from Alienpowersystem, correct?
Yes! 

-I've saw kappaiq.com suggests cascading the Position, Velocity and Torque PI loops. 
 It is interesting if independent position and velocity loops will benefit the system? In your case it is all in the digital domain. 
- I don't have experience but using  XMOS system looks to me as an overkill tool for this application. 

Since XMOS does not have hardware acceleration for different motor-blocks, as with some TI DSP, more MIPS is needed. 

 
  After all we are talking about something like 10000 rpm which means like 1MHz from your 8192 steps position encoder.
  Do you think that inexpensive FPGAs like  http://www.latticesemi.com/Products/FPGAandCPLD/iCE40Ultra could do the job?

My biggest issue with FPGAs is that trail and error easily become trial and horror. The compile time for the HDL code is much longer than for compiling C code. FPGA is great when you know exactly what to do.
I tested an FPGA controller with Xilinx ZYNQ to my steppers. It worked, but it took some time to get it up and running. 

XMOS can be connected to FPGAs as an external service over XMOS channels. 
The XMOS switch will handle all communication with the FPGA without any software overhead. 
 

- I am also trying to understand your measurements. For the impedance for example have you used a network analyzer? 

I measured with MLS at 0.5V to minimize the effect of an angle-dependent impedance of the motor. 
It is a standard method to measure loudspeakers.
The outcome is an impulse response of the current. 
Knowing the voltage applied, the impedance can be calculated. 
A class-D power amp was used to deliver the current to the coils.
As long as that the system is linear and time-invariant, the transfer function is constant and independent on the signal. 
Using a low measurement voltage is like taking a linearization of the motor at one point. 

Mikael Bohman

unread,
Sep 11, 2018, 2:24:04 PM9/11/18
to OpenPnP

  After all we are talking about something like 10000 rpm which means like 1MHz from your 8192 steps position encoder.
  Do you think that inexpensive FPGAs like  http://www.latticesemi.com/Products/FPGAandCPLD/iCE40Ultra could do the job?

I'm planning to run the inner current loop at ~150kHz, the outer control-loops for velocity feedback must have a lower bandwidth to sustain stability. 
There will be many multiplications running in real-time all together, but none of them will run above 150 kHz. 
The problem looks more like a sequential problem than a parallel problem. 
I'm thinking that you would end up in using an FPGA with many FPGA blocks, but each block would run at 0.05% of maximum clock speed.
In that sense, a sequential solution is better.

I would consider using one of the Cortex M series + FPGA in the same package. 
I would not primarily recommend the ZYNQ platform since the latency between the PL side and the PS side is high. It is designed for block to block transfer of data, which is impossible for a feedback loop.
I'm afraid of using nested interrupt based solutions thought. Interrupts beyond one layer is a real-time nightmare. With XMOS I can use events, this is similar to interrupts, but the difference is that I as a programmer decides when they can be executed in the loop. The XMOS toolchain can then give me a best/worst case of how long time the loop can take assuring that the CPU will not be starved out of time. 

Mikael Bohman

unread,
Sep 11, 2018, 2:26:44 PM9/11/18
to OpenPnP

Trying a new raytracer of the 3D PCB. Very photorealistic so far!


WIN_20180911_20_21_40_Pro.jpg

Mikael Bohman

unread,
Sep 12, 2018, 6:04:39 PM9/12/18
to OpenPnP

WIN_20180912_23_53_51_Pro.jpg


20180912-0002.gif

Active gate control. The gate driver is controlled over SPI. It uses a constant current source during a time window to control the slew rate of the MOSFETs. This is with the BLDC connected and without any RC snubber, and without heatsinks on the MOSFET!

Dimitar Penev

unread,
Sep 14, 2018, 5:04:54 AM9/14/18
to OpenPnP
Hi Mikael,

I see
It sounds to me that  even STM32 Cortex M4 may do the job. 
Probably after some optimizations.  I think the oDrive people are using such a CPU.
STM32 has advanced timer system so I guess one can connect the position encoder directly to its timer input.
As you plan to control your switches using SPI do you think solution without FPGA is possible? 

Note that my questions are only out of curiosity. 
Right now I don't have free resources to work on so interesting project. :)  
But will follow you progress with great interest.

Do you plan to open the design sometime in the future or you rather keep it close? 


Dimitar Penev

unread,
Sep 14, 2018, 5:06:52 AM9/14/18
to OpenPnP


On Thursday, September 13, 2018 at 1:04:39 AM UTC+3, Mikael Bohman wrote:

WIN_20180912_23_53_51_Pro.jpg


20180912-0002.gif

Active gate control. The gate driver is controlled over SPI. It uses a constant current source during a time window to control the slew rate of the MOSFETs. This is with the BLDC connected and without any RC snubber, and without heatsinks on the MOSFET!



You mean using the Meanwell PS over-current protection, right?
Or you have designed your own current source?


Mikael Bohman

unread,
Sep 15, 2018, 8:47:12 AM9/15/18
to OpenPnP
SPI is only used to "program" the gate driver. For controlling the gates, XMOS does the PWM. 
The gatedriver is called a "smart" driver. The outputs are directly connected to the MOSFET gates, and the signal is actively controlled with feedback.
I have programmed the driver to use a special profile that controls the current to the gates over time that matched the MOSFETs.
A constant current into the capacitance of the GATE will create a voltage with constant slew-rate. With maximum slewrate, the switching transient is horrific and would destroy MOSFETs and drivers etc due to overvoltage on the rail (probably faster than the voltage shunt can regulate)
Right now I'm using a laboratory linear PSU.
All software will be on GitHub, and all design files are on Circuit maker.

Next up is the current ADC, and I will go deeeeeep into this. I have lost count over how many shitty ADC implementations on DSP cards for development that I have encountered. 
It is impossible to create an acoustically quiet current control if there are strong spurious tones in the audible range. 

 

Mikael Bohman

unread,
Sep 15, 2018, 4:02:04 PM9/15/18
to OpenPnP

First ADC measurement with grounded input.
The "raw data" is the 20MHz 1-bit bitstream out from the ADC captured with a logic analyzer.
The task is to create a decimation filter that matches the SNR of the ADC, with as low group delay as possible.
As seen in the raw data FFT, signals up to 100 kHz can be captured with a constant noise floor. 
Using a CIC filter is the recommended solution, so let's start with that.
The power(f) is the integrated spectrum power up to that frequency, it can also be seen as SNR(f). 
Example, the SNR up to 3kHz is 100dB.
Example, the SNR up to 100kHz is 83dB.

As long as the green curve is not higher than the red curve, the decimation is working without any signal degradation.

CIC3.png


The impulse response of the filter before decimation is like this. It is a minimum phase solution.

CIC3imp.png

The first spurious tone is at 652 kHz and it disappears after decimation. A perfect result in the audible range.
 From now on it can only get worse. Let's add some switching on the MOSFETs and see what happens. 

Mikael Bohman

unread,
Sep 15, 2018, 6:14:50 PM9/15/18
to OpenPnP

Below is when the MOSFETs are switching with 50% duty cycle at the decimation frequency ~300kHz. The tones are suppressed by the CIC filter.

Since the ADC is floating, the supply to the ADC is now also switching. Some spurious tones, but no strong ones.


CIC3 med 300k.png


Below: Connecting an 8 Ohm resistor + amp-meter and running 1 A in the load. The 0Hz component is suppressed in the FFT.

All good here up to 2+kHz. The 300kHz switching component is strong when using a resistive load.

CIC3 med 300k 1A.png

Dimitar Penev

unread,
Sep 16, 2018, 3:01:24 AM9/16/18
to OpenPnP
Hi Mikael,

I have browsed your design files and got some more idea about what you are doing.  


On Sunday, September 16, 2018 at 1:14:50 AM UTC+3, Mikael Bohman wrote:

Below is when the MOSFETs are switching with 50% duty cycle at the decimation frequency ~300kHz. The tones are suppressed by the CIC filter.

Since the ADC is floating, the supply to the ADC is now also switching. Some spurious tones, but no strong ones.


CIC3 med 300k.png


Below: Connecting an 8 Ohm resistor + amp-meter and running 1 A in the load. The 0Hz component is suppressed in the FFT.

All good here up to 2+kHz. The 300kHz switching component is strong when using a resistive load.

CIC3 med 300k 1A.png



So you get something like 13 bit of analog resolution up to 100KHz. 
Is the first plot with the motor attached?
Do you have the frequency response of your decimation filter handy? 

Mikael Bohman

unread,
Sep 16, 2018, 8:28:50 AM9/16/18
to OpenPnP

The 3 stage CIC filter (or sinc3 filter) is similar to a rectangular window cascaded 3 times.

At a first glance, it looks like a bad anti-alias filter, but the zeros match the tones from the PWM if both are run in sync.

A way of looking at it is that it is an LP filter + a comb filter that matches the PWM.


CIC3freq.png


I made a simulated example below.

CIC3 SVM.png


Even if I add a lot of 2: nd tone distortion to the PWM signal it works without aliasing.

CIC3 SVMdist.png


What I suspect could be a problem is if the MOSFETs starts to create non-harmonic distortion during heavy currents, or if the modulation spectral width becomes wider than the CIC filter comb-filter.

The good news is that I have written XMOS code for FIR filtering a bitstream. It is actually possible to process the 20MHz stream with a 512 tap FIR filter (no restrictions) in realtime in one thread.

With a lookup-table, it is possible to reduce that problem by summing 32 table lookups for each output sample (or one lookup per input byte).

The CIC filter is equivalent to a 3*64 tap long FIR filter. I could also use a 512 tap long minimum phase constrained equiripple filter.

FIRimp.png

FIRfreq.png



This filter would filter out all nasty things above 275 kHz that might get created by the MOSFETs.
Time will find out what is needed!

Mikael Bohman

unread,
Sep 16, 2018, 9:47:13 AM9/16/18
to OpenPnP
Let's run the real-time decimation in XMOS and verify.

CIC3 XMOS PWM.png

And connect the motor.

CIC3 XMOS PWM 3A.png

We can no observe an increase in noise below 1 kHz and some noise at 20kHz. It could be from the switching, or it could be aliased HF products from the switching and thus be from bad decimation.

To test which. let's change to a 512 tap Chebyshev window instead. It will filter out everything above 150kHz, but it has a longer group delay. Good for testing, bad for feedback.

CIC3 XMOS PWM 3A cheb.png

Conclusion: The observed increase in noise seems to be baseband noise, and not aliased components from the decimation. Good!





Mikael Bohman

unread,
Sep 16, 2018, 11:09:02 AM9/16/18
to OpenPnP
Testing with modulating the current in one phase. (The motor will not spin with one phase and the current cannot change direction)

CIC3 XMOS PWM signal time.png

CIC3 XMOS PWM signal time zoom.png

CIC3 XMOS PWM signal.png

Yes. it seems to work!

 The spectrum between the tones from my rectified sinewave current is still at a good level.

A very good sign.

No "inrush current" behaviour is observed.

I love real-time DSP probes over USB :) that makes the measurement possible without a headache. 



Mikael Bohman

unread,
Sep 16, 2018, 11:13:38 AM9/16/18
to OpenPnP
With my current, current sensing resistor, the linear measurement range is -+50A. Total range is +-64A.
I will probably change the resistors to a higher value when I know my max currents to improve the SNR.

Mikael Bohman

unread,
Sep 16, 2018, 11:47:03 AM9/16/18
to OpenPnP
What is the non-linear step response when the motor is free to move?

Changing between 6V DC to 0V DC (6V created with PWM)

CIC3 XMOS step.png

The reactive behaviour is probably from the stored mechanical rotating energy. 
The motor will do "1 step" and then halt, then back to the neutral state when the current dissipates. It should be a resonance between the rotating mass and the force from the magnetic fields acting like a spring.

Mikael Bohman

unread,
Sep 16, 2018, 12:46:38 PM9/16/18
to OpenPnP

One missing part. What is the load on the PSU? 

In a perfect world, only 2A would be drawn @ 50% modulation when 4A is going in the coil. 

The capacitors shall deliver the current so that the PSU can give 12V 2A transforming to 6V 4A in the coil.


4A DC in the motor coil. 2A from the PSU. 50% modulation. 

Using 6 of 24 possible capacitors.

Current PSU.png




Below: Captured during the rising phase of the step.


Current PSU up.png


Seems to work!

Dimitar Penev

unread,
Sep 16, 2018, 1:26:51 PM9/16/18
to OpenPnP
What is the current shape you are measuring ? I don't get it here.

Last years I am not much in signal processing but I still remember I've read about efficient poly-phase decomposition of the decimation filters. 
I guess you may apply something like this for your CIC filter if needed?
  

Mikael Bohman

unread,
Sep 16, 2018, 2:27:28 PM9/16/18
to OpenPnP
What is the current shape you are measuring ? I don't get it here.

Which one of the measurements?  It is either coil currents or current from the PSU shown.

Last years I am not much in signal processing but I still remember I've read about efficient poly-phase decomposition of the decimation filters. 
I guess you may apply something like this for your CIC filter if needed?
  
Yes, it is a poly-phase filter. 63/64 samples are thrown away in the decimation. 

Mikael Bohman

unread,
Sep 16, 2018, 4:01:33 PM9/16/18
to OpenPnP
First test with a PI regulator for the coil current.
A low setting on the Integrating part. 
I had to change the Y scale.

PI1 Ilow.png





Below: A much higher I setting of the PI controller.


PI1.png




Below: Increasing I with a factor 4 compared to above. Now very close to instability.

PI1 4I.png

Dimitar Penev

unread,
Sep 16, 2018, 4:49:30 PM9/16/18
to OpenPnP
In your plots you show the fft of the decimated output as response of the measured current, correct? The current depends of your driver stimulus. I was not clear about what control/current you had for those plots.

I meant a polyphase decomposition often used in the multirate filters in order to get efficient implementation.I am not sure how applicable it is in your case, just mentioning.

Mikael Bohman

unread,
Sep 16, 2018, 5:29:31 PM9/16/18
to OpenPnP


Den söndag 16 september 2018 kl. 22:49:30 UTC+2 skrev Dimitar Penev:
In your plots you show the fft of the decimated output as response of the measured current, correct? The current depends of your driver stimulus. I was not clear about what control/current you had for those plots.


I will add more real-time probes further on, so interesting signals can be plotted.
Until now, I have been mostly concerned with the SNR and spurious free range.
 

I meant a polyphase decomposition often used in the multirate filters in order to get efficient implementation.I am not sure how applicable it is in your case, just mentioning.


The filtering is done at the output data rate, not the input data rate, as with polyphase filters. It lowers the computational burden 64 times.

Soon I will need to start with the rotating frame of reference for FOC. The trick is to glue the frame onto the rotor. 
That transforms an A(t)* e^jw   signal to just the amplitude A(t) or the I(t) * sin(wt) function to just I(t). 
I(t) is proportional to the motor torque T(t). It will vary over time, but much slower than sin(wt).
A signal that a PI controller loves.

This is my current understandings:
The objective is to create 0 holding torque, and only rotating torque. Almost opposite of a stepper motor controller, where you create holding torque to avoid slip. 
With steppers, you never want to reach a 90 deg. load angle, because then you slip. 
With FOC you always want to have a 90 deg load angle, because the holding torque just creates heat and no mechanical work.
You can even create a "negative holding torque" to counteract the magnetic fields from the magnets to run the motor faster without increasing the rail voltage.


Dimitar Penev

unread,
Sep 18, 2018, 4:47:19 AM9/18/18
to OpenPnP
Hi Mikael


On Monday, September 17, 2018 at 12:29:31 AM UTC+3, Mikael Bohman wrote:


Den söndag 16 september 2018 kl. 22:49:30 UTC+2 skrev Dimitar Penev:
In your plots you show the fft of the decimated output as response of the measured current, correct? The current depends of your driver stimulus. I was not clear about what control/current you had for those plots.


I will add more real-time probes further on, so interesting signals can be plotted.
Until now, I have been mostly concerned with the SNR and spurious free range.
 

I meant a polyphase decomposition often used in the multirate filters in order to get efficient implementation.I am not sure how applicable it is in your case, just mentioning.


The filtering is done at the output data rate, not the input data rate, as with polyphase filters. It lowers the computational burden 64 times.

OK I will take a look in your code after it get available. 
 
Soon I will need to start with the rotating frame of reference for FOC. The trick is to glue the frame onto the rotor. 
That transforms an A(t)* e^jw   signal to just the amplitude A(t) or the I(t) * sin(wt) function to just I(t). 
I(t) is proportional to the motor torque T(t). It will vary over time, but much slower than sin(wt).
A signal that a PI controller loves.

This is my current understandings:
The objective is to create 0 holding torque, and only rotating torque.

I am not into this but if you want to decelerate the shaft will you not need stopping torque?

Mikael Bohman

unread,
Sep 18, 2018, 12:32:56 PM9/18/18
to OpenPnP


Den tisdag 18 september 2018 kl. 10:47:19 UTC+2 skrev Dimitar Penev:
Hi Mikael

On Monday, September 17, 2018 at 12:29:31 AM UTC+3, Mikael Bohman wrote:


Den söndag 16 september 2018 kl. 22:49:30 UTC+2 skrev Dimitar Penev:
In your plots you show the fft of the decimated output as response of the measured current, correct? The current depends of your driver stimulus. I was not clear about what control/current you had for those plots.


I will add more real-time probes further on, so interesting signals can be plotted.
Until now, I have been mostly concerned with the SNR and spurious free range.
 

I meant a polyphase decomposition often used in the multirate filters in order to get efficient implementation.I am not sure how applicable it is in your case, just mentioning.


The filtering is done at the output data rate, not the input data rate, as with polyphase filters. It lowers the computational burden 64 times.

OK I will take a look in your code after it get available. 
 
Soon I will need to start with the rotating frame of reference for FOC. The trick is to glue the frame onto the rotor. 
That transforms an A(t)* e^jw   signal to just the amplitude A(t) or the I(t) * sin(wt) function to just I(t). 
I(t) is proportional to the motor torque T(t). It will vary over time, but much slower than sin(wt).
A signal that a PI controller loves.

This is my current understandings:
The objective is to create 0 holding torque, and only rotating torque.

I am not into this but if you want to decelerate the shaft will you not need stopping torque?

Then you change direction with 180 deg from -90 deg to 90 deg. 
A stepper in static position would be at 0 deg. All magnetic force is in the outward direction and nothing in the rotational direction.
There is one more way to stop. It is braking by current recirculation, as common with steppers. You short the coils, and the braking energy becomes heat in the coil instead of heat in an external bleed resistor.

 

Mikael Bohman

unread,
Sep 19, 2018, 3:44:03 PM9/19/18
to OpenPnP

I have been postponing this for some years, but now I needed it, and I finally got it working.

A composite USB device for XMOS, meaning that a single device has several interfaces. In this case 2 Virtual COM ports.
A "nightmare" of reading extremely dry usb.org docs, and Microsoft development docs.

The benefit is that I can connect openPnP on one interface, and connect a custom-made GUI for real-time control of the BLDC's to the other interface over the same USB connection.
It also works with the standard Windows drivers, since custom drivers for X64 need to be securely signed. 
It is plug and play, and it enumerates automatically.
I also got a custom device working in Bulk mode, that can transfer ~ 38Mbyte/s, if I need more bandwidth for transferring signals to the host for analysis.
I have started on the GUI as well.

In the example below, I'm running 2 terminals from Windows to XMOS in parallel on COM9 and COM10. 

CDC.png


Dimitar Penev

unread,
Sep 20, 2018, 11:28:17 AM9/20/18
to OpenPnP
Hi Mikael,

Your quick progress got my interest even more.
I have checked your XMOS board so eventually I make few samples and reproduce your test
Do you consider it ready for testing?

I've saw that the PHY you have used is not easy to source now. 
People recommend replacing with DP83867IR/CR or  KSZ9031RNA.

Mikael Bohman

unread,
Sep 20, 2018, 4:28:17 PM9/20/18
to OpenPnP
You should use the latest version of the Gerber for the eXplorer Kit from XMOS. Ver 1.1

You do not need to populate the ETH part or the accelerometer and I2C devices for openPnP.
You need the XMOS, Flash, PSU and USB.

It is fully possible to use a network socket with several ports instead of USB if you populate ETH. I have been considering using it instead of USB. 

I'm doing the GUI in QT (the open source version) + minGW-w64 compiler to avoid all commercial licenses. 
You should be able to compile the same code for all possible platforms.

I have successfully used QT to create GUI with sockets earlier. I want to learn USB this time, so I will go that way first.

My 2 board designs are not free from errors. 
I got my second shipment from Digikey today. I will populate the rest of the components.

I should have an errata ready this Sunday, so I can correct the PCB problems for you.

Cool, with a follower :)

Mikael Bohman

unread,
Sep 20, 2018, 4:36:36 PM9/20/18
to OpenPnP

I got the second shipment from DIGIKEY today. Experience has told me to not order everything you think you need the first time.

Just order the free shipment value.

The heatsink is from an old Intel Slot1 processor.

Easy to add a fan, if you need to. And you can find them for "free".


WIN_20180920_22_30_51_Pro.jpg


I am now ready to start to rotate things.

Dimitar Penev

unread,
Sep 21, 2018, 12:52:23 AM9/21/18
to OpenPnP
Hi Mikael,

Oh i haven't realized that your version is similar/same as the kit xmos offer. It may be less expensive to me just to order this kit from farnell.
Unless other people from Europe want some xmos kit bare PCBs? I can organize this with a Chinese PCB house in case of interest. Good PCB house will ask for something like $400 for 30 pcs or similar. It is 4 Layers PCB.

Mikael Bohman

unread,
Sep 21, 2018, 6:14:32 AM9/21/18
to OpenPnP
I needed to know the position of all connectors on the kit, so I imported the XMOS design files into circuitmaker.

My boards fit the 2-5 $ offers from elecrow/ allpcb/ jlcpcb. 
Otherwise, I can send you 1+1 board with the post, but you would need to make the same mods that I have done. It is ~3€ in postage within Europe.

bert shivaan

unread,
Sep 21, 2018, 6:23:45 AM9/21/18
to ope...@googlegroups.com
I have been following this thread (admitedly its mostly over my head) with great interest.

Just now I finally looked up what XMOS is and BAM!!!

What an awesome family of uP's. I think this is even more exciting than PIC32MZ - NO I am sure it is!!! I may have found my new favorite controller.
THANK YOU for the inadvertent heads up!
-Bert

--
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+unsubscribe@googlegroups.com.
To post to this group, send email to ope...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/openpnp/cfbacc99-463e-4244-9232-1dc292d9f638%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

Mikael Bohman

unread,
Sep 21, 2018, 6:59:46 AM9/21/18
to OpenPnP
I jumped on the XMOS train when they had the first chip out over 10 years ago. I was also playing with dsPIC and PIC32 before XMOS (and others)
Have not switched after that. 
Very nice chips for real-time applications. You never have to go crazy over real-time issues with your nested interrupts, because you do not need any interrupts (But you can if you want)  
They have some old codebase for robotics and motor control.

They once made the XMOS start KIT for 5$, but I wish they sold a simple USB "stamp" with a XUF216-256-TQ128 chip for 19.99$ to attract more beginners with a breadboard.
XMOS has a large codebase on GitHUB.  The errata over the chip hardware is very small, mostly non-existing. Never any trouble with the I/O hardware part. 
You can always expand your project with a larger chip or even more chips. They once sold a board with 16 chips x(4tile  8 thread/cores) = 512 threads/cores in total. 

Den fredag 21 september 2018 kl. 12:23:45 UTC+2 skrev cncmachineguy:
I have been following this thread (admitedly its mostly over my head) with great interest.

Just now I finally looked up what XMOS is and BAM!!!

What an awesome family of uP's. I think this is even more exciting than PIC32MZ - NO I am sure it is!!! I may have found my new favorite controller.
THANK YOU for the inadvertent heads up!
-Bert
On Fri, Sep 21, 2018 at 6:14 AM, Mikael Bohman <bohman...@gmail.com> wrote:
I needed to know the position of all connectors on the kit, so I imported the XMOS design files into circuitmaker.

My boards fit the 2-5 $ offers from elecrow/ allpcb/ jlcpcb. 
Otherwise, I can send you 1+1 board with the post, but you would need to make the same mods that I have done. It is ~3€ in postage within Europe.

Den fredag 21 september 2018 kl. 06:52:23 UTC+2 skrev Dimitar Penev:
Hi Mikael,

Oh i haven't realized that your version is similar/same as the kit xmos offer. It may be less expensive to me just to order this kit from farnell.
Unless other people from Europe want some xmos kit bare PCBs? I can organize this with a Chinese PCB house in case of interest. Good PCB house will ask for something like $400 for 30 pcs or similar. It is 4 Layers PCB.

--
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 post to this group, send email to ope...@googlegroups.com.

bert shivaan

unread,
Sep 21, 2018, 8:21:10 AM9/21/18
to ope...@googlegroups.com
Ok, just a little off topic for one more post then I will quit interrupting. So each core can control a BLDC on its own? If so, does it do sensorless the same? In theory one could have 16 motors running without breaking a sweat?
(so 3 zero crossing detect, 6 lines for PWM out, maybe even some current detect to look for stalled motor?

If so, this is like the dream boat of uP's!!!

To unsubscribe from this group and stop receiving emails from it, send an email to openpnp+unsubscribe@googlegroups.com.

To post to this group, send email to ope...@googlegroups.com.

bert shivaan

unread,
Sep 21, 2018, 8:22:23 AM9/21/18
to ope...@googlegroups.com
I didn't apply if there were enough I/O for 16 motors, just looking at the theory
It is loading more messages.
0 new messages