S12magniv with external driver with different motors

Showing results for 
Show  only  | Search instead for 
Did you mean: 

S12magniv with external driver with different motors

Contributor I

Dear Support team I'm working with S12ZVMC12EVBCAN Controller and S12ZVM Development Board  on sensoreless BLDC application :

Iam using DRV8332 as external GDU and my firmware is based on (MTRCKTSBNZVM128_CW11) with some few modifications and changes.

I have issue that my system working with some motor and not working properly with other motors. It seems the motor parameters are effecting the system and the firmware,

is the reason (open loop stage OR PI controller parameters OR the fake zero crossings BEMF )

I need your  advice regarding the best practice for tuning the necessary parameters that suits different motors, if any, or some guidelines to deal with this inconsistency.

(2) the second question: do I  need to change some parameters in the firmware every time I have a new motor or it can be generic to all the BLDC motors?

The system i m using has NXP S12ZVMC12EVBCAN Controller, with level shifter to Match 3.3 to 5v of nxp to drive DRV8312 external Three-Phase PWM Motor Driver to work with High volt and the back EMF are divided by voltage dividers to the level of the gdu as mantioned in the application note of 48 volt system

Motors currently being tested are the one used with the drv kit ( DT4260-24-055-04) and a similar one (but not identical) used with NXP kit (Linix 45ZWN24-90).

Thank you

Amin Zaky
Design engineer

0 Kudos
1 Reply

NXP Employee
NXP Employee


Assuming the HW is working properly (MOSFETs switching as expected, Back-EMF measured as expected, current measured as expected), there is a need for tuning of:

- PI controllers (affects the dynamic behavior in the closed loop)

- motor speed scaling - please see this article: https://community.nxp.com/t5/S12-MagniV-Microcontrollers/BLDC-six-step-control-speed-scaling-using-S...

- start-up routine (to successfully go through the align-openLoop-closedLoop sequence). This is kind of tricky, because the sequence might be affected by the dynamics of your system. Motor at no-load situation behaves differently than with the load attached (friction and inertia). You would need to adjust at least ALIGNMENT_TIME, START_CMT_CNT, START_CMT_ACCELERATION, ALIGN_CURRENT_SCALED. It is very hard to say how to adjust it - please understand the SW and equations used in the start-up sequence first. It is very application- and motor-specific.

Also please consider the code as an example only. There are other ways how to run a BLDC motor in sensorless mode.

Best regards,