|
|
|
@@ -0,0 +1,32 @@ |
|
|
|
# Stepper motor |
|
|
|
|
|
|
|
## Motor model |
|
|
|
Two detail steps ago we already looked in to stepper motors. |
|
|
|
I implemented a model that I found on a [Github repository](https://github.com/SuYouge/Stepper-motor-modeling). |
|
|
|
Sy Youge build a model of a stepper motor with a good explaination. |
|
|
|
|
|
|
|
I could easily implement this. |
|
|
|
I expended his bondgraph model with a phase controller. |
|
|
|
I only have to put in the desired angle. However, this phase controller does not have any limiting. |
|
|
|
Therefore, some control in required to make sure the physical part of the motor can keep up with the electrical rotation. |
|
|
|
|
|
|
|
## Motor Control |
|
|
|
This control is a seperate block. |
|
|
|
There are two limitations to the controller. |
|
|
|
First it has a limited speed, second it has a limited torque. |
|
|
|
If you exceed this speed or torque the motor will stop operating. |
|
|
|
|
|
|
|
The torque requires a good feed-forward model of the dynamic system. |
|
|
|
However, I can just assume the max moment of inertia and then convert the torque in to a maximum acceleration. |
|
|
|
This was the easiest option. |
|
|
|
|
|
|
|
The result is that I have a setpoint for the angle. This is the setpoint for the first PD controller. |
|
|
|
This is not a PID as the design of the stepper already solves the steady state error that would have been caused by gravity. |
|
|
|
The first PD will then output the desired velocity. We limit this velocity and feed it in to the second PD controller. |
|
|
|
This will output the desired acceleration. This is also limited. The acceleration is then integrated twice resulting in a position that is velocity and acceleration limited. |
|
|
|
Which is fed in to the stepper motor model. |
|
|
|
|
|
|
|
A nice feature of this setup is that has no feedback outside of the controller. |
|
|
|
Therefore, we do not need any sensors in the system. |
|
|
|
Maybe some initial setpoint. |
|
|
|
|