...Software trays to maintain maximum speed on currently available power(pwm duty).
It works like ordinary DC motor. More load means, on same power, lower speed and higer current.
Motor speed (current) PWM , direction etc. is adjustable via serial port commands.
For example - press "k" button to add power, "j" button to reduce power and "t" button
to reverse rotor direction etc.
I have used neodymium magnets BLDC, CD drive BLDC and car generator as BLDC motor
without any modification in software, hardware - it just works.
Schematic is done using EAGLE PCB software
Software is witten in spin langue.
...