Driving a 2.5ohm resistance 40.000 RPM BLDC motor

Ouch! That’s one motor demo I didn’t enjoy so much as most :rofl: :rofl: :rofl:

I would also read it in the way that it would use FOC at lower speeds, but who knows? I’m not saying it isn’t possible to do at 40kRPM, just that it would be very hard, and not something that would “just work” with our library. And this isn’t so much a problem of the code as of the speed of Arduino hardware, the sensors available, etc…

I think it would probably work.

I’m not sure this would be so simple. Your intuition is correct that the current would have to be sensed very quickly to switch the driver off in time to prevent damage.
You need 3 current sensors, on in series with each phase. Or you could place a single sensor in the path from the driver to the GND, that should work too. Then the MCU would continuously monitor the current sensor, but how would it limit the current? You’d essentially need a huge buck-converter to dynamically change the voltage, or some other very fast-reacting but high-current capable switch…
Normally the current is controlled by the driver stage itself, its the natural place to do it.

That said, you might be able to find a power-supply that just limits the current for you in the desired way. Not sure what’s out there in that department…

The Chinese driver is using a hardware FOC implementation (dedicated FOC MCU driver with the algorithm hard-wired in the silicon). Hardware FOC MCU is very different from SimpleFOC generic software implementation.

Hardware FOC could be incredibly fast.

Probably it would. However, two important points. First, this is a dedicated driver. You cannot run SimpleFOC. You can only control the speed via simple potentiometer and direction / brake via switches.

Second, the driver package itself is laser-etched to hide the real part number. Zoom in to picture:

This is a huge red flag. Means the driver is probably a reject and they had to etch the top markings to hide the part number and batch number so they don’t get caught.

Cheers,
Valentine

PS Having a more careful look at the driver and the PCB, this seems like a knock-off of this driver

It’s not the same driver, however, the idea is similar. You don’t really know what algorithm the driver is using internally.

1 Like

Thanks for your answer…

So, i thought about possible solutions, using that chinese driver (380W, 5 to 50 volts DC as input, and 16A load without cooling and 32A with cooling)

Can you tell me if any of these would work and problems that could arise from each?

First:

I could wire a current sensor from the supply path to ground, measure it in an MCU, and if the current gets too high, I could disable the drivers enable pin, for an instant and reenable it again as the current gets lower. It would be a quick turn off and turn on when the current gets higher then I want.

Second:

i could lower the PWM ratio (speed) when the current gets too high. Would it decrease the current draw? The RPM would certainly…

Third:

As you said, I could provide a supply with enough voltage, 48V, but let’s say only 2A. But by doing so, wouldn’t the supply overheat if the load gets too high?

Fourth:

By reading this post here, I assumed this method would work… change the current sense resistor!

https://electronics.stackexchange.com/questions/343030/changing-current-limit-on-a-cheap-bldc-motor-controller

By looking at the datasheet you sent, I got the formula for the current sense resistor for that driver that may be similar: 0.1/max current.

And from examining the chinese driver’s picture, I guess that this one is the sense resistor (R002 - it seems larger than a 1206 (1 WATT). Probably a 2W one:

So… what if I change this R002 to a higher value and test it until it gets to the max current I would allow? Let’s say 2A?

If that formula from that datasheet from a similar driver is right, then 0.1/50 would give 0.002 ohms. This driver says that the max current is 32A, and not 50A. But just for testing, I could then use a (0.1/2) 0.05 ohms (R05) in the place of the R002.

Bu doing so would it still run at 48V, but limit it’s current to 2A? Would it work normally? Would
It get to full speed and limit it’s max current? Is that that simple? Are there any problems that should arise?

Thanks for helping me out!

Since you do not know exactly what is the real driver chip, tricking the driver sounds like the easiest and least invasive approach to limit the current. Everything else you described seems a bit hard to execute and debug, too many moving parts, code to write, interface an MCU, etc. But be careful because at that high resistance you may have to dissipate more power and you cannot cool the resistor unless you short it of have some really fancy liquid cooling :grinning:

Also, why do you think that driver can get you to 40k rpm?

Hi!!

Thanks! Still trying to find out the chip… and then it’s datasheet…

But this is what’s written one of the seller’s listing:

Maximum speed: 224000 RPM (2-pole motor), 74000 RPM (6-pole motor), 40000 RPM (12-pole motor), 35000 RPM (14-pole motor)

Does it seem correct? It seems that all of the speeds have one more zero at the end… does it make sense? Can a motor run at 224000 RPM?

I can try to see how many magnets/poles are inside my motor…

$10 price.
Lasered off model and serial number.
Claims to drive a motor at quarter million rpm.
Aliexpress.

:thinking:

To put things in perspective, the worlds fastest centrifuge runs at about 150k rpm and requires a vacuum chamber due to heating the air and glowing red from the friction otherwise due to the rotor breaking the sound barrier.

A small motor rotating at 225k rpm would reach linear peripheral rotor speeds faster than the bullet velocity of a military machine gun.

I dont know… what do you think?

Hi… in dentistry we’ve got for ages air powered small handpieces that reach 300k, 350k RPM. That’s why my ignorance didn’t allow me to think that more than 40k RPM would be a tough task in an electric BLDC motor…

But, here’s an update:

My motor has 12 poles inside, so at least matches the driver’s description of RPM for 12 poles-> 40K.

After searching a lot, these are the two sop-20 chips on that chinese board, taken from google search for the same board, not laser etched…

One is for sure a Nuvoton MCU and the other I can’t figure out. Can you decipher it?? It’s probably the driver…

Can you figure out the driver?? :grimacing::grimacing::grimacing:

Thanks a lot!!!

Yes, these are micro-turbines that float on air, they are may be 2mm diameter so you can spin that tiny sucker faster than the speed of sound.

Please send me the exact link. Thanks! I’m curious, too.

Valentine

MCU

The image I found that has the best possibiliy for reading the chip’s details is this one:

i can read something like: FQRT??? in the first line,

FD?22BT (or L) in the second line

And maybe QL??? in the third…

Does it help?:grimacing::grimacing:

Perfect.

That’s a fortior driver.

I’ve used it in a design before. Let me get you the exact part number. Give me a minute.

MCU

https://www.nuvoton.com/resource-files/DS_N76E003_EN_Rev1.07.pdf

Driver

What else do you need?

Cheers,
Valentine

PS By the way the N76E003 Nuvoton MCU is an 8-bit 16MHz very simple MCU, there is no way this could drive a motor very fast, especially if the motor is sensored and runs a closed loop. Not enough processing power.

Great!!

My motor is not sensored, doesn’t have hall sensor or encoder… I guess I’ll have to buy one of these boards and test it…

There is one thing I don’t understand.

This driver (FD6288T) doesn’t have a current sense resistor in it’s datasheet. And the other component in the pcb, besides the MCU, is a DC DC buck converter, A XL7005.

So, where does that 0.002 ohms resistor comes from? Is that a current sense resistor?

Even if this board runs my motor at 40K RPM, I still need a way to limit the current. Iif the 0.002 resistor is not the current sense one, is there any other that does that? Where would it sense? In the driver? In the MCU?

The strange thing is that the version of this board, that has the hall sensor inputs, has a known chinese complete driver (JY01) that has a current sense resistor…

Input current sensor. It limits the total input current to protect the entire board (my guess since I don’t have the schematics).

I’m guessing a mosfet on the other side of the board senses the current. My guess its that this cuts the current if it exceeds certain limit. It’s probably a P-channel mosfet.

The other option is that the opamp is on the other side of the board and feeds the MCU. Very hard to tell without schematics.

No, that’s definitely the current sensor. But on the combined input.

There are many strange things with that board. Hope it works for you.

Cheers.

Thanks!!

I’ll have to give it a try then. I’ll buy a couple for testing and will disassemble the heatsink to check what’s in the back then I’ll let you know… but I’ve seen one picture on the internet and in this one there were only those 6… mosfets (are they mosfets)?

So, if that R002 resistor limits the current on the combined input, if I increase it’s value it could work also to protect the motor from high currents, right? Just have to make some tests. But it could work right?

And look at how reall really this strange driver is:

There are variations of the same board, with the same name, model (ZS-X11F), and specs and description, that all look the same…. but…. In one there’s no input sense resistor!!! And in another that big 22K resistor is not there, but the sense resistor is!! :rofl::rofl:

And forgive me my lack of knowledge, but could
This DC-DC Buck converter (XL7005) be the one that controls the current??

And if this XL7005 allows 70VDC as input, why does it outputs from 1.25 to max 18VDC? If my motor runs at 48V, that means that it will never get the 48V and max 18V? So the RPM would be much slower? Or this voltage has nothing to do with the voltage that gets to the motor?

Thanks for all your sharing of knowledge and help!!

:blush::blush:

Without schematics not much could be done.

No. This buck converter feeds the high side of the mosfet gates. It’s got nothing to do with driving the motor.

It will get 48V.

All the best with your project.

Cheers,
Valentine

Thanks!!

I’ll let you know how it goes when the drivers arrive and how things go!!

Thanks for taking your time to help me out!!

Rodrigo

Hi!

Well, I ordered from China two versions of the same 380W controller (ZS-XF11). Both have the same 0.02ohm resistor that I’ll test later as a current limit changer when the resistor pack arrives…

Here are my impressions and more details now that I put the motor to run on both of them:

The “older board”, the one with one big 1000uF/50V capacitor at the input has two chips in it: One is the FORTIOR FD6288T and the other is a NUVOTON N76E003AT20

The “newer board” (Callled ZS-XF11 - V2) has two capacitors instead of only one: Two of 300uF/63V. The chips are different for this board. In the place of the FORTIOR, there is one marked EG2134, which google tells me it’s a “Three phase semi-bridge axle driving chip” and the other is another NUVOTON, this time the MS51FB9AE.

I tested my 48V (?) BLDC dental motor on both boards, and used the pcb-soldered blue trimpot to adjust the speed. I used a tachometer to measure the speed also with a bur attached to a handpiece attached to the motor.

Both boards got my motor to 40.000 RPM, and a little beyond when at 48V (42.000 RPM). If I kept the DC supply at 45V I got 39.900RPM at full speed.

The acceleration time is super fast. I was afraid it would give me a slow start but they go from 0 to max speed almost instantaneously in my motor.

The older board, the V1, gives me a slowest speed at 3400 RPM. It doesn’t turn the motor in slower speeds than that, at 45V. At 48V, the slowest is close to 4000 RPM.
It provides a strong torque, compared to my original motor installed on my bench, even at slower speeds, like 10000 RPM.

The newer board, the V2 is unsuitable for me. The min speed is close to 10000RPM. It doesn’t turn the motor on lower speeds than that. The torque seems really bad. It looses a lot of speed when I put some pressure on the bur attached to the motor. The current doesn’t increase much to compensate the effort. The other board, V1, increased the current to compensate the “effort” and didn’t seem to loose speed.

I have one doubt then…

The ideal for me would be to have 2000 RPM as min speed. The least I had was 3400-4000RPM with the “older” version of the controller.

If I use 0-5V PWM signal to control it (it has a PWM port), instead of the internal trimpot that I used for testing, would it be possible to achieve a slower min speed, like the 2000 RPM I want? Or the min speed is something coded in the chip and no matter what I do I won’t be able to turn the motor on a slower speed?

Regards, Rodrigo

These two drivers are identical.

This is an 8-bit / 16MHz processor, think Arduino Nano.

This is an 8-bit 24MHz processor, think Arduino Mega.

The drivers are identical but your “newer” board brain is somewhat faster/bigger (not too much) than the “old” board brain.

This is entirely due to the code running on the board. The second “new” board should be able to perform better, apparently however, the code is worse. Go figure.

Seems very doubtful. The min/max speeds are entirely dependent on the code executed and I do not believe that switching from a potentiometer to PWM would change internally the RPM min/max scaling. However, since yo do not know the algorithm, it may be worth trying, but no guarantee at all. This whole thing as you can tell is very random.

Cheers,
Valentine

Hi!
Just did some tests with PWM… The PWM regulation speed indeed is just like the potentiometer, not better. The min speed I got is 3150 RPM which is not bad at all… I’d prefer 2.000 RPM.

There’s another similar Chinese made PCB brushless driver (18-50V) which is based in a IC called JY02A, from JUYTECH, called JYQD-V8.5E. The start torque can be adjusted by resistor, the sense resistor also, and there’s an option with a 1 second soft start time. As it’s cheap… it may be worth purchasing one for testing it’s algorithm.

This is the datasheet for this chip: JY02A datasheet