Application:
Single MCU that controls multiple (from 6 to 30) motors via SPI only (no PWM control signals, no feedback signals to MCU, strictly communication level control).
Motors used: small BLDC motors with virtually no load (very light-weight & well balanced disc on shaft).
For test purposes I am using AMAXinno 2306-2500KV 12-pole hobby motor (this is the most heavy-duty motor I might use in final product).
Requirements: very responsive motor speed control (rapid starts, stops and speed changes as close to real-time as possible) in speed range of 50..10'000rpm; single direction only.
Hardware & software:
I am using my own designed HW with FDS8984 FETs and 3x AH173 hall sensors (positioned 120deg from each other under the motor bell).
Software is my own demo driver written in C. And MCU has enough horsepower to run Linux.
HW & SW are tested and works good enough for testing purposes: SPI works perfectly (register values are written/read as expected), FETs ensure enough power, hall sensors output very sharp and stable signal, motor is somewhat spinning (I'll come back to this one later).
Problem:
I don't understand how to make the motor spin at set speed. Right now I got this motor to spin at about 50..100rpm, but it seams very ... wrong. It consumes abnormal amounts of current and heats up FETs and motor itself, there is little to no torque from motor. In configuration I tried to follow DRV8308 User's Guide (Rev. F) instructions, but I have a feeling I am missing something.
The problems seams to be registry configuration. I cannot get/set decent starting values as I do not fully understand how some of them work.
Is there any generic registry settings I could start from?
What information You would like to see to be able to help me better here?
Thank You in advance!