Hello! I wondered when the Power Shield version of SimpleFOC will be released.
I am looking for a low cost BLDC controller that is easy to learn, and SimpleFOC seems perfect, but 5amps is a little low for the burst of speed I am looking to get. My project runs fine with ODrive, but i am looking for a smaller, single-BLDC controller that isnt so expensive.
But the Power Shield looks just right! Can I have a early version? haha j/k
Any suggestions on a controller that is similar to the Power Shield’s specification and is easy to learn? (Arduino preferred)
Hey @stiener,
I’m happy you like it.
I’m working on intgrating the LDO and making it stackable and then I’ll release the version v1.
Version that is available in the repo at the moment is not stackable but it can already do the torque control and all the features that the simplefoc supports at the moment.
You can order it from the jlcpcb directly and the price for the batch of 2 boards for me was around 60$ (including shipping) It’s still pretty high but its reasonable.
Regarding the early versions, I do have one early version (v0.1) board (without in-line current sensing). If you are interested in having it send me a PM. I’d be happy to send you one, as I am not using it any more.
Keep in mind that 30 Amps is rather optimistic. It says in the specs that the drivers can handle this, but you should read the entire spec, not just the top :
Specified R thJA value is according to Jedec JESD51-2,-5,-7 at natural convection on FR4 2s2p board; The Product
(Chip+Package) was simulated on a 76.2 x 114.3 x 1.5 mm board with 2 inner copper layers (2 x 70ÎĽm Cu, 2 x 35ÎĽm Cu).
Where applicable a thermal via array under the exposed pad contacted the first inner copper layer.
The board is not that big or made from those materials, so you should think of 10 Amps max.
Putting a heatsink on the top of the plastic when the device was designed to dissipate heat through the bottom can lead to a cracked housing.
The board is still in the testing phase and i have really no idea about the true current capacity of it.
I’d say that’s the heat evacuation is not the biggest problem but also the size of copper traces and their thickness.
I still have to test everything properly, but what i can confirm is that I’ve tested it up to 10Amps and it works without any problem.
The housing gets a bit warm.
Bit as I said, this board is still in it’s early stages.
That sounds like a less effective way to design things.
More usual would be to set your design-goals first.
I think that approach would lead to a different design, where you would first find a heatsink exactly the size of an Arduino shield or have one made. It would then have through-hole components instead of surface-mount.
( JLCPCB doesn’t do via’s to an inner layer )
But maybe nobody needs more than 10 Amps ?
Interesting to see a bridge with integrated driver.
Concerning the heat dissipation. Since the shield is just about 60x60mm you could integrate a 60mm cooling fan on top, just by rounding out the corners and making holes for standoff´s With active cooling, I would say 30 amp, hmm why not. You would need a fan controller though or just a small Mosfet for gnd wire. Then again, the fan would need to be VIN voltage tolerant (12/24V).
Thanks for the post. I was considering using the Infineon before but couldn’t find clear information, if it is compatible with absolute or incremental encoders? I only know that it supports one Hall sensor. Can you help me out with that? Thanks!
The Infineon shield is a driver shield only, it is “neutral” to the type of sensor used. It has hall sensor inputs, but to use them you would have add and remove some resistors on the board.
So I think the better strategy is just to use some spare pins on the MCU board to connect the sensor to the MCU board. But you will have to check carefully the pins used by the shield to make sure the sensor will work on the pins you choose. e.g. SPI sensors need pins that can have the SPI signals.
Which MCU do you plan to use?
But I think you should also check the other threads related to the IFX007T, the power shield and these Infineon FETs. It seems you have to run the PWM quite slowly, and they are maybe not the best boards for BLDC motor control, depending on your use case…
I will read a little bit more into the topics you mentioned.
I was planing to use the STM32 Nucleo MCU, because I’ve red that it should be the most suitible and fastest option available for tackling most SimpleFOC projects. I hope I’ve got that right so far, hehe.
For my project I am trying to realize an electricly operated rotary valve for a small 2-stroke engine. In this case the rotary valve (which is about the size of a CD and has a transmission ratio of 1 to 1 to the crankshaft) made of very thin metal isn’t directly operated/rotated by the crankshaft itself, but it has to be rotated by a BLDC motor. That would bring many advantages to the engine.
The maximum RPM of the engine is about 7000 to 8000 RPM and the change in RPM is quite dynamic since it is a moped engine.
I guess building a closed loop controller that can operate a BLDC motor quite good to the velocity of the crankshaft might be somehow possible but I am very concerned it might not be fast enough to controll the position of the rotary valve relative to the crankshaft good enough. The accuracy of the rotaty valve disc needs to be at least 2 degrees relative to the crankshaft at any moment.
It this even possible?
I’m online coming from a mechanical engineering background so I online know the control technology basics and beginning to learn more about MCU and BLDC projects because it is very interesting.
Edit:
For this application I need two absolute encoders. One for the crankshaft and one for the rotary valve disc. The encoder of the crankshaft feeds the closed loop control with the setpoint values.
I have to admit I don’t know enough about combustion engines to really picture what’s going on here… are you saying the BLDC makes the valve disk follow the crank shaft’s rotation, so when the crank shaft goes slower or faster, the valve disc does too? May I ask why it isn’t attached to the crank shaft in this case?
I think the 2° accuracy should be possible, most magnetic encoders are far more sensitive than this, 0.2° should be possible.
8000RPM is however quite fast - with a good MCU and sensor it should be possible, but you’d want to hit around 10000 iterations/s or more on your loopFOC() call I suspect.
Yes, you’ve got that right. The BLDC makes the valve disk follow the crank shaft’s rotation as if it was mechanically coupled to it. And yes, normally that would be the case, that the valve disk is directly coupled to the crankshaft.
A rotary valve is somehow the gold standard when it comes to the intake control of a 2-stroke combustion engine, but it’s rare on original because it’s quite expensive in production and also difficult to setup in an engine that doesn’t have it, because you have to machine all the couplings and fit it to a certain place on the engine in order to connect to the crankshaft.
By driving it with a BLDC all that difficulties do not apply. This also has the huge advantage that the port durations could be variable and controlled while running the engine, so it’s power band is broader. That doesn’t work for fixed rotary valves.
I’ve never seen it done before, so I’m curios if there might be a catch with setting up the control electronics. But if you think that it works out dynamically, I will have to try it out.
I think it is definately worth trying it. I wonder if the vibration of the combustion engine will be a problem for the sensor. You’ll have to try it out, and please do let us know how it goes!