My previous DRV8313 design used the larger 64 pin F105/F405 MCU and a more complicated sensor design. What I could do is to use the smaller F303 that is 48 pin and fokus on hall sensor driven motors to get size down. The issue is that current sensing is very difficult/unreliable for small motors on low speeds, so ignoring these sensors will simplify the design – reduce size. The challenge here is that I am not very good at compromizing – I don’t want this BLDC for a project, I want it because I want to experiment with the design and coding – so I want “everything” on it like a spoiled child …
This last draft is the same as before, but I replace F405/F105 with F303 so I can take advantage of it’s programmable Op-Amps to scale current sensing to the motor. I am considering a version where I cut DC Rail, current Sensors and BEMF Sensors as well, but for now I can just design them in and avoid assembling them.
The issue with current sensors is that it’s a huge difference between 2.5A and 50mA. If you dimension the sensor for 2.5A and 500mV you will typically read 10mV on 50mA. The signal get so weak that it risk drowing in noise. So to compensate for this I need to add filters and amplifiers. This also makes it more challenging to control motors on low speeds, while current sensing is excellent on high speeds where you get strong current signals. STM32F303 can compensate for this by using 3 programmable, built in op-amps that amplify the signal. To be honest it is actually far more complicated to make a small BLDC Controller than making a large one.
While I like the STM32F030F4 due to their size they make no sence in this case. I need a 48pin package so I get all 3-phase motor pins and I need the programmable op-amp build into STM32F303.