How to use the Back EMF outputs of the DRV8302 Aliexpress board?


I know this topic is not implemented in SimpleFOC right now, but I want to read the BEMF from this DRV8302 aliexpress module that some people are using … this module is even in an example here with SimpleFOC. I want to use my motor in a sensorless way.

I know this board outputs three buffered BEMF signals (A,B and C), through a 68k/5.1k voltage divider.

Schematics here:

But to be able to read it and perform the commutation sequence, I need to find the zero crossing of each phase. So I need to compare each BEMF to a virtual neutral point between all the phases.

In this particular board, this “virtual neutral” doesn’t exist as an output pin, right out of the box, correct?

If not, I could add three resistors wired in each phase. Each with one pin in one phase and the other pin common to all of them, right? And add a comparator to each phase with this virtual neutral. Something like this:


As the BEMF outputs signals in this board are buffered and through a voltage divider, could I create this virtual neutral after the outputs of the opamp that buffers the voltage? It’s the MCP6004, in the schematics. It would make the wiring easier…

And not related to that (or is it?), what’s the purpose of the VPDD-OUT pin on this board?

It’s the VIN full voltage (PVDD in the schematics) through the same voltage divider (68k/5.1k) and through the same voltage follower that the BEMF signals are sent.

Thanks a lot, and sorry if this is off-topic. I just couldn’t find some more information on this particular board elsewhere than here…


Not many boards have this… in the end, for a WYE wound motor the neutral point is inside the motor, and if the motor didn’t provide a contact for it, the you need a scheme like what you describe in the driver.

But if I’m not wrong a typical BEMF type driver doesn’t need the neutral point? It switches the phases using trapezoidal commutation and has one phase in high impedance (off) mode. It can sense the BEMF on the switched off phase.

Or you can also filter the phase voltages to see the BEMF:

HI Runger!

In this document, it proposes to compare each (filtered) phase with Bus Voltage, instead of virtual neutral. What it bus voltage in this driver? Is it the full Voltage applied to the motor? VIN?

Would it look to something like this?

Would bus-voltage be that VPVDD-out pin in the board right beside the BACKEMF A,B and C output pins?

I believe that in this board, looking at the schematics, that each BEMF is already filtered before being buffered. And the VPDD-out voltage too.

Thanks, Rodrigo

Yeah, I think the part up to the buffers is on the board, and the MUX I guess can be done in software on the MCU…

Yes, the phase voltages are divided and filtered, and then buffered with an op-amp. The PVDD (motor VIN) is passed through the same divider filter and op-amp to produce the VPDD-out signal. So here you have exactly the signals needed to implement the BEMF sensing as described in the Renesas paper. I think it’s the usual way to do the BEMF, I think at least for BLDCs the center tap is rare.


According to the reneseas paper the only thing missing (apart from the extra three comparators, or using an Arduino Uno which has a comparator that can be muxed) is the voltage divider in the VPDD-OUT pin, to compare each BEMF with half the voltage of the VPDD-OUT pin… is that right?

I’ll buy one of these boards and give
It a try then!


Yes, if you want to do it with comparators you would have to divide the VPDD to compare with half its level… but assuming all of these signals are within the input range of your ADC, you can do it all in software at this point, I think. Just divide VPDD in software before using it.

But if you want to do it in hardware, so that the software can just react to the comparator outputs, for example by interrupts, then you would of course need additional circuitry like the comparators.