DC motor braking linearly instead of exponentially

Im doing a school project that involves control of a BLDC motor, and I'm trying to identify a transfer function for it. The only problem is the motor dynamics are terribly non-linear, and I can't figure out why.

Im using a 12V motor driven by an H-bridge which is controlled by an arduino.

I attached a few step response plots where the behaviour is clearly visible, whenever the motor brakes or slows down any amount, the speed changes linearly, but when it passes through 0, it behaves normally again (the speed changes exponentially). Any idea what's going on here? Is this how the motor is supposed to act, or am I doing something wrong?
 

Attachments

ebipoo...
To start:
1) What are the motor's parameters: Rated-Volts; Full-Load Amps; No-Load-Amps; Starting-Amps; Winding-resistance-R; Back-emf: Net-emf?
2) Which method of braking are you using: Plugging; Regenerative; Dynamic?
3) When speed passes thru 0, does direction reverse?
Regards, Phil Corso
 
Why are you trying to work out a transfer function/ We never did such things in the real world.
If you want to pursue this path, you ahve a couple of things to consider.
1) The speed controller. It has a certain behaviour between input and output. Due to current limiting and other factors, it does not have a step response ouput. So then the input to your motor is not a step response, but shaped by the speed controller response
2) The motor response. You can apply a step response to a motor unless your controller has unlimited amps
3) The reponse of the motor output speed is dictated not only by the electrical loop, but by the mechanical loop, which is the weight(inertia) of the rotor and shaft and any attached load.
 
Top