The need for a stepper motor

21 views
Skip to first unread message

vaness...@gmail.com

unread,
Jul 18, 2015, 6:11:57 AM7/18/15
to pv-characterizat...@googlegroups.com
Hi guys, not sure if this is worth a dedicated topic, but since we are using the IMU to provide an absolute measurement of the tilt angle and orientation, why do we actually need a stepper motor?

I mean, a (cheaper) simple DC motor would perfectly do the job since we rely on a closed loop system to reach a (<tilt>, <orientation>) setpoint. Hence the bottleneck in terms of accuracy does not really depend on the motor but rather on the IMU sensor and the control system (typically, a well tuned PID). Plus the fact that we use a stepper motor actually reduces our absolute accuracy since we can only rotate the motor step by step. Using a regular "analog" motor would allow the best achievable precision thanks to the feedback loop and the IMU. In my opinion, the use of a stepper motor is best recommended when you have no closed loop system because you can assume frictionless coupling with the rotor, which might very possibly not be the case in this application (hemisphere mounted on wheels).

To sum up, my understanding is that we need to choose between

- a stepper motor, in which case we don't take full advantage of the feedback system
- a feedback system, in which case the stepper motor (and the ability to move by steps) becomes useless since the loop can mathematically achieve perfect accuracy (assuming an ideal IMU sensor)

Am I missing something obvious? I know we are at milestone 3 and design had to be done earlier, so I don't expect that we will re-discuss the choice of the motor, but I would like to know if my reasoning make any sense or not. Please do provide feedback :-)

Ahmed AKL

unread,
Jul 18, 2015, 8:06:27 PM7/18/15
to Thomas Vanesse, pv-characterizat...@googlegroups.com
Actually, using a DC motor + a closed loop feedback will cause the system to vibrate until it reaches stability because DC motors do not have a breaking system. Moreover, you must have a good speed control to bring it to rest in an appropriate position

On the other hand, using stepper motor + a closed loop feedback will give better results under condition that the stepper motor has a high precision. For example, if the stepper motor has a precision of 0.5 degree/step., then the job of the feedback system is to tell if we reached the required position or not. It is worthy to say that the feedback system should be able to measure this precision; otherwise the motor will make several steps before the feedback system can feel the change

So, i vote for having a high precision stepper motor (with or without a gearing system) + a sensitive feedback system. the level of required precision depends on the application

the point here is the precission of the satepper motor step

--
Go to SENSORICA's project page
http://www.sensorica.co/home/what-we-do/projects/pv-characterization
---
You received this message because you are subscribed to the Google Groups "PV characterization project forum" group.
To unsubscribe from this group and stop receiving emails from it, send an email to pv-characterization-pr...@googlegroups.com.
To post to this group, send email to pv-characterizat...@googlegroups.com.
Visit this group at http://groups.google.com/group/pv-characterization-project-forum.
To view this discussion on the web visit https://groups.google.com/d/msgid/pv-characterization-project-forum/137bca90-8141-47bb-a1ea-f6ce24b14faf%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

vaness...@gmail.com

unread,
Jul 19, 2015, 4:38:36 AM7/19/15
to pv-characterizat...@googlegroups.com, vaness...@gmail.com, Tiberius Brastaviceanu, daniel brastaviceanu, Jim Anastassiou
My comments below


Le dimanche 19 juillet 2015 02:06:27 UTC+2, Ahmed AKL a écrit :
Actually, using a DC motor + a closed loop feedback will cause the system to vibrate until it reaches stability because DC motors do not have a breaking system.

That's right, but
1) You can tune the controller gains to avoid any overshoot and reduce the amplitude of the oscillations so dramatically that their amplitude can be neglected (way less than 0.5°). Example with the red plot below.


2) You won't actually even notice that there are oscillations. In fact, that is how a servo motor is built: it is a brush-less DC motor with a PID feedback system built-in. The settling time is so quick and the steady-state error is so close to zero that we don't even mention them.
 
Moreover, you must have a good speed control to bring it to rest in an appropriate position
 
Actually the speed is not what we control. We control the position of the hemisphere based on the measurement made by the IMU. So in a way the controller manages to bring the DC motor to a rest position, but that's not the explicit objective.


On the other hand, using stepper motor + a closed loop feedback will give better results under condition that the stepper motor has a high precision. For example, if the stepper motor has a precision of 0.5 degree/step., then the job of the feedback system is to tell if we reached the required position or not.

Then we are not talking about the same kind of feedback system. Typically, a stepper motor will work in open-loop with no position feedback and it will need a reference (home) position to start doing something. In a sense, the feedback system resides in the limit switches.
A PID controller assumes an analog output, it is not meant to produce discrete values such as "move by 2 steps" and should not be used together with a stepper motor.

If we really want to stick with the stepper motor and have the IMU at hand but can't use the PID because we use a stepper motor, then the "feedback system" is trivial:

Loop:
    sign = IMU - setpoint
    stepper.move(sign*speed)     # speed being an amount of steps possibly depending on the magnitude of IMU - setpoint
    if (IMU - setpoint < required_precision)
        break

But that kind of system can be very slow to converge compared to a well tuned PID, especially if you have to move step by step. Still, that can perfectly do the job despite the lack of elegance.
 
It is worthy to say that the feedback system should be able to measure this precision; otherwise the motor will make several steps before the feedback system can feel the change

Another implementation would be to use multi-threading with one thread moving the steppers at some speed and another one computing IMU - setpoint and triggering an interrupt when the target has been reached. But this is an Arduino :-) Multi-threading is possible but it's a pain to setup and leads to a lot of side problems.
 

So, i vote for having a high precision stepper motor (with or without a gearing system) + a sensitive feedback system. the level of required precision depends on the application

the point here is the precission of the satepper motor step

I am OK to use a stepper motor with the dummy feedback system mentioned above, or to use a standard DC motor with a PID. Both will do the job with some advantages and drawbacks.

                                                              +++                                               ----
DC motor + PID                                    Fast                    Cheap, more complex (tuning gains)

Stepper + dummy feedback                Simple                  More expensive, slow to converge

If you want to stick with the stepper motor that's fine, to me it does not really matter as long as the required accuracy can be achieved (which is true in both cases).
I would like to have the input of the others however. @Jim, @Tibi, @Daniel, do you have any preference?

zwge...@gmail.com

unread,
Sep 23, 2015, 2:58:38 AM9/23/15
to PV characterization project forum
Reply all
Reply to author
Forward
0 new messages