Compatible motor controller

for my project i would need to run a bldc with up to 20 Amps for a short time.
I would like to use the simple foc library on an arduino because of the postion control.

The shield from simple foc itself is not rated for this amount of current.
Does anybody know an alternativ controller that would work with simple foc library ?

thanks in advance

the B-G431B-ESC1 worked out ok for me however it is hard to solder to and lacks SPI and some other stuff. Probably a better approach is an output stage combined with a nucleo board, I don’t know what the options are for an output stage in that range, and you wouldn’t get current sensing etc. Duly logged this post in the list of circumstances the Lepton 3.0 would be suitable for.

What motor are you pairing it with?
I’ve used and like vesc.

Hello @karlleit
there is a bts7960* halfbridge which is 43A rated. You’d need three of them (3€ each on AliExpress).
But then you’d have 6-PWM and current sensing.

That looks like a nice low cost replacement for the l298 type boards which are so common. If it proves to be suitable. I did not verify 6 pin pwm is possible, I think you have to have the mosfets separately not half h-bridges for that. The board pinout does not suggest current sensing is possible?

I haven’t played with them myself. Just saw a discussion on another forum.
Their link shows schematics with R_IS and L_IS which interpret as current sense.

I would need to set the angle of the bldc according to an angle i will get via a CAN shield. The bldc i need to use has 3 hall sensors. I would also need to use those to measure the angle of bldc. Would this be possible with the B-G431B-ESC1 ?

I dont know what motor it is because it is already build in a worm drive and I am not able to open the housing without destroying it. I only know that it is a bldc and it has 3 hall sensors

It’s possible, you can try it, but Hall Sensors are less precise than other options and may not work as well for you for position control.

To implement position control you will need to know the number of pole pairs of the motor. If you don’t know it, you may have to look inside the motor to count the permanent magnets, or you may be able to run code to run the motor in open loop, and measure the angle to estimate the pole pairs.

To run any kind of closed loop control you will need to know the electrical zero position of the motor. The calibration can find it, but this runs the motor in open loop mode - if the motor is heavily loaded, this calibration can fail. So depending on the load caused by the worm drive, this may just work fine, or it may be necessary to remove the load from the motor to run the calibration.

1 Like

If you are lucky the hall sensors and the motor would be aligned? I don’t know what the standard alignment is but surely there is one that can be assumed as a first try.

Interestingly, the high frequency injection that VESC uses might be able to work with this motor and get you actual angle information at a higher resolution than the hall sensors. Especially if you could combine that information with the sensors you could get the info you need, but the VESC boards are like $150USD or something. They are open source so I think you should be able to get in there and grab the information about the rotor position that it is using to commutate the motor in sensorless mode with HFI. Try doing that with some kind of proprietary black box!

You could probably sneak in there and modify the code to export the rotor position over the serial port, then I would use a pico or something to read the hall sensors and combine that with the signal from the VESC and you might get pretty good information.

However there is probably an easier way to do what you really really want. Like an encoder on the actual output of the worm gear assembly?

Thanks for the help. regarding the encoder, it maybe would be possible to use one but I am very resticted with the avaliable space.
I read about the sensorless/ open loop position control with simplefoc. would this be possible with the B-G431B-ESC1 you mentioned above and can this give an accurate postion ?

You can use open loop the same as a stepper motor. It will be less accurate than a stepper motor as there are fewer steps per revolution. The problem is that the motor can skip steps. Also it’s not very energy efficient.

Sensorless is not the same as open loop, a lot of people new on the scene get those mixed up. Sensorless uses fancy methods to figure out the rotor postion without any kind of encoder or direct physical sensor. Open loop just has no clue what the position is.

Thank you for clarification. Would i need current sensing for Sensorless FOC ? Also is Position controll possible with Sensorless FOC ?

SimpleFOC doesn’t have any provisions for sensorless operation, you can investigate VESC, which does. There is a board called the xESC which is a much cheaper version of the VESC but I don’t think it’s done yet.