Linear BLDC using SimpleFoc

Hi in tha forum

First off, this is exiting times! Thanks to all the front runners and curious people in here.

In a attempt do improve my openPnp machine, I one day got the idea to start development on a small linear motor, based on 3 phase commutation.

I just released a preliminary pcb board in Kicad. Feel free to review. I’m looking forward to investigate how this will turn out. The board has current sensing and is made up of 3 dual mosfets. I am aware that simpleFoc does not support this at the moment, but hopefully one fine day it will.

I had a quick look at your github. I don’t have kicad and there is no pdf so haven’t been able to look at it in detail. What brushless driver have you gone for or are you trying to go for a no-driver/mosfet only approach?

Hej Owen

Yes, it has 3 dual mosfets. Here you see the bottom.

In a week or two I will order prototypes.

1 Like

What I meant was, no driver, logic level mosfets.

The SAMD51 or SAME51 (w. CAN FD) can do deadtime insertion.

Regarding deadtime insertion. Take a reed in this one. The fourth method mentioned in the end could be used to implement a universal clock cycle insertion for lots of MCUs. Perhaps the hardware method is faster. Who knows?

Having thought about it some, It would actually make sense to use a driver and reach better performance Rds(on) wise. Am I right to assume, that using this devise:

I can drive two switches with one pin, and thereby use the lib. as is?

The mosfets I plan using is saturated at 2.8v but the Rds(on) changes some with voltage. In the data sheet it’s 4.5v logic rated, so applying 5v or more would be favorable. Plus the dual output is driven by one input pin…

Here is the block diagram of the motor driver you know. Compare it to the driver I mentioned in the last post. 3 of the drivers plus 3 dual mosfets would be identical. The L6234 has a Rds(on) of 0.3ohm.

The mosfets I plan to use :

Has a Rds(on) about 0.003 ohm



I think i found a good solution.

This driver uses a single pwm input to control a half bridge (high side and low side). It comes in a tiny 2.5x2.5mm package. Its not to expensive.

Managed to find room for the drivers :smiley: It actually cleared up some of the placements, by adding 2mm to the board.

I’m not great at reading electronic datasets. It seems the mic4065 comes in two variants. Type2 being the one with a single pwm input. I guess if you had 3 of these and wired the enable pin of each to a common output pin on your mcu then that might work same as l6234.

Any reason why you’ve not considered DRV8353 like used in dagor controller? It supports 1x 3x and 6x pwm. I’ve not used it personally - i suspect it needs to be configured over spi which might seem overly complex.

1 Like

@Owen_Williams There is a version of the DRV8323 or DRV8353 that can be configured to 3 pwm mode just by changing hardware (some resistors) if using SPI is not desired/ needed. I believe dead time insertion is also configured like this.

Theres a few advantages of using such a driver. I really like all the protection features they have so I don’t have to worry a lot about killing my MOSFETs and I can get a very good performance out of the hardware.

1 Like

I see, that is a neat ic.

Thanks for the advise! This will simplify stuff significantly and i like the SPI interface for diagnostics.


No problem :slight_smile: I’ve got my schematic using the DRV8305 over here: ESP32 Brushless controller - Dagor (work in progress)

Hej Owen

Here is the schematic included, if you wanted a look…

added switching regulator 10v out for gate drivers. What voltage are you rating the ESP32 at?

Finally done with the design.

Its going to be tricky to assemble, but none the less possible.

Have worked on how to integrate it to a custom build 400watt LED lamp:

Hope to be able to demonstrate a working prototype soon.