Designing a DC Motor Torsional Spring Circuit with Arduino Uno

Click For Summary

Discussion Overview

The discussion revolves around designing a circuit that allows a DC motor to function as a torsional spring using an Arduino Uno. Participants explore the feasibility of controlling the motor's response to applied torque and its return to an initial state, considering various components and control strategies.

Discussion Character

  • Exploratory
  • Technical explanation
  • Debate/contested
  • Mathematical reasoning

Main Points Raised

  • One participant suggests using proportional control to command the motor to a zero load position, where the external torque would determine the motor shaft's rotation based on the proportional gain, which acts as the "spring constant."
  • Another participant proposes coupling a rotary potentiometer to the motor shaft to regulate the motor current based on the pot position, indicating that the motor's torque is proportional to the current.
  • There is a discussion about using PWM to control the average voltage to the motor, with questions about whether PWM pulse width could serve as a gain to influence the motor's response time.
  • One participant emphasizes the need for a system where the current supplied to the motor is a function of the position error, suggesting that a rotary potentiometer is essential for measuring this error.
  • Another participant raises the possibility of using an actual spring with a servo motor to achieve the desired response, suggesting that this might simplify the control system.
  • Clarifications are made regarding the desired behavior of the motor, specifically whether it should respond to both positive and negative torques or just return to zero after a positive torque is applied.
  • It is noted that PWM can be bidirectional with an H-bridge, but for unidirectional torque, simpler configurations may suffice.
  • Participants discuss the need to identify various parameters such as torque magnitude, motor type, angular position sensor type, and stopping mechanisms.

Areas of Agreement / Disagreement

Participants express varying opinions on the best approach to achieve the desired motor behavior, with some advocating for PWM control and others suggesting alternative methods. There is no consensus on a single solution, and multiple competing views remain regarding the implementation details.

Contextual Notes

Participants mention the importance of understanding the specific motor characteristics, torque requirements, and sensor types, indicating that these factors are crucial for designing the circuit but are not fully resolved in the discussion.

Who May Find This Useful

Individuals interested in electronics, motor control, and robotics may find this discussion relevant, particularly those exploring the integration of motors with microcontrollers for specific applications.

HadenWilly
Messages
5
Reaction score
3
TL;DR
Need help designing motor control circuit to have a DC motor act as a torsional spring. The motor will "deform" under torque and return to original state once torque is removed.
I'm a relatively new entry into the world of electronics so my understanding of what is possible may not be an accurate one. In a nutshell, I would like to have a DC motor act as a torsional spring with some variable virtual spring constant (k). The motor, or "spring", would act against an applied torque and "deform" by rotating counter clockwise. Once the load is removed, the motor should return to its "undeformed" state by rotating clockwise. I'm using an Arduino Uno as a test bed, so I'm fine with using imprecise, low voltage components at this stage. Any help on designing a circuit is much appreciated!
 
Engineering news on Phys.org
Yes, it is both possible and practical. Use proportional control. No integral, no derivative. Command the motor to the zero load position. Then an external torque will rotate the motor shaft an amount determined by the torque and the proportional gain. The proportional gain sets the "spring constant" of the motor.
 
  • Informative
Likes   Reactions: berkeman
HadenWilly said:
I would like to have a DC motor act as a torsional spring with some variable virtual spring constant (k).
The torque of a DC motor is proportional to the motor current.

If you couple a rotary potentiometer to the motor shaft, and supply a current to the motor that is determined by pot position, then you will have a torsional spring. You could use a single-turn pot to get up to 300° rotation, or a ten turn pot for more than one turn.

We would need to know the motor details before we could specify a circuit to regulate the motor current. No control processor would be needed unless you wanted to change the spring parameters.
 
jrmichler said:
Yes, it is both possible and practical. Use proportional control. No integral, no derivative. Command the motor to the zero load position. Then an external torque will rotate the motor shaft an amount determined by the torque and the proportional gain. The proportional gain sets the "spring constant" of the motor.
I see, so if I used PWM is a means of controlling average voltage to the motor, could I use the width of a PWM pulse as my gain? In effect, wouldn't this control how quickly the motor "springs" back into place? Again, I might be a bit off track. Thank you for your respose!
 
HadenWilly said:
I see, so if I used PWM is a means of controlling average voltage to the motor, could I use the width of a PWM pulse as my gain?
For a DC motor, the voltage sets the maximum speed of the motor when it is unloaded = zero torque.
It is the current that sets the motor torque.

To emulate a torsion spring you must sense the angular position of the motor and provide a torque proportional to angle.

By comparing the motor position to the motor current, you can PWM the motor voltage, and so increase or reduce the motor current to control the torque.
 
  • Informative
Likes   Reactions: berkeman
It sounds like you need the motor to reverse direction to "bounce back like a spring". Is that correct?

Changing the voltage won't make a motor change directions.

It may help if you describe better what you are trying to accomplish. It may be that a motor is not the best way to do it.
 
Everything that you need to know is present in this thread - just not all (explicitly) in the same post.

Jrmilcher (post #2) and Baluncore (post #3) are telling you the same thing:

you need an arrangement where the current supplied to the motor is a function of the position error. Baluncore's 'rotary potentiometer' is a necessary 'process value,' whether the control is implemented in a circuit or a PID loop - it tells you the magnitude of the error.

PWM control is a simple way to modulate the motor current - it could be an acceptable way to implement the PID/circuit output, if you only need to 'spring' in 1 direction - depends on the forces required to maintain 'home' position (you can't change direction with simple PWM, as Anorlunda states).
 
  • Like
Likes   Reactions: Merlin3189 and jrmichler
Could you use an actual spring, and tweak its parameter with a servo motor ? The control system is trivial, and it will hold its setting due to the high-ratio internal gearing...
 
Thanks for the input, its greatly appreciated! So to be a bit more clear, I want the motor to respond with a torque as soon as torque is applied (as a spring would) and also spring back to some initial state. I could use a pot to measure the error and write the PWM signal proportional to this error--to emulate some "spring" constant k. Am I understanding correctly how this works?
 
  • Like
Likes   Reactions: Dullard and Tom.G
  • #10
HadenWilly said:
I want the motor to respond with a torque as soon as torque is applied (as a spring would) and also spring back to some initial state.
Do you want it to respond to a negative torque also, with the same constant, or just return to zero?
 
  • #11
Baluncore said:
Do you want it to respond to a negative torque also, with the same constant, or just return to zero?
No, I just want it to respond to a torque if its loaded counter clockwise (positive) and return to zero once the load is released. I understand I wouldn't be able to use PWM to respond to both positive (ccw) and negative (cw) torques.
 
  • #12
HadenWilly said:
I understand I wouldn't be able to use PWM to respond to both positive (ccw) and negative (cw) torques.
PWM can be bidirectional if you use an H-bridge (with 4 transistors and 4 diodes). You only need one transistor and one diode, (a quarter bridge) for unidirectional torque.

The reason I asked is that the sensing of motor angular position would be different.
Also, for unidirectional torque a physical stop could be used at zero to prevent oscillation, or loss of power if the motor reached a negative position.

Now you need to;
1. Identify the magnitude and range of the torque required.
2. The type and size of DC motor to use. The power requirements.
3. The number of turns, or maximum deflection angle required.
4. The type of angular position sensor. Pot or a shaft encoder? Absolute or incremental?
5. The type of stop at zero, or the limit sensor(s).
 
  • Informative
Likes   Reactions: HadenWilly
  • #13
Thanks so much for the advice!
 

Similar threads

Replies
3
Views
6K
  • · Replies 4 ·
Replies
4
Views
4K
  • · Replies 4 ·
Replies
4
Views
6K