Notifications
Clear all

Cold Motor ......

12 Posts
3 Users
1 Likes
729 Views
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

I have built a Greeter Robot for my Train Layout, that goes through a few fun routines. It is operated by homemade electronics, using an Arduino Microcontroller for function sequencing, Relay S-Bridge and MOSFET Motor drivers,  and some Speech Circuitry.

Due to limited space, Jaw Motion was achieved with a unidirectional DC Motor and Gear/Lever/Spring setup. In the Code, a series of short Motor Enable commands, drive the Jaw Motor downward (open) and the Spring returns it upward (closed), synchronized to the Greeting content.

On the Bench and in warm weather outside, it works fine …...  but in the cold (as with the Christmas show), the Jaw gets “sluggish” and finally stops moving. 

The Electronics SHOULDN’T have a problem with the cold, so I'm assuming the Mechanics are not robust enough, and bind up. I considered changing to a Servo Motor/Lever approach. On the Bench, I used a Servo Motor from an old RC Car, driven by an Arduino, with a range of motion ~70 degrees. It is quite strong and control is quite simple, but this particular model is relatively slow (takes about 1 sec (est.) to move) compared to a MOSFET-driven DC Motor, so that sound synchronization would be difficult.

Does anyone know if a Servo Motor will fare any better than a small DC Motor in the cold ? Are there small Servo Motor that are fast ?  Anybody out there with Suggestions ?  


   
Quote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6970
 

@plumloco Cold normally 'helps' electronics, but will make lubricants sluggish and if any shafts are really well fitting at room temperature they could bind up at cold temperatures. If you do have to switch, I would just google the terms. I would bet a medium coffee there is a servo picker page out there somewhere.

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

Thanks for the input 😀 


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

@zander 

Oops - replied in the wrong spot ....... but thanks, I appreciate the input 😊 


   
ReplyQuote
(@davee)
Member
Joined: 3 years ago
Posts: 1683
 

Hi @plumloco,

RE: Does anyone know if a Servo Motor will fare any better than a small DC Motor in the cold ?

From the preceding discussion, it appears that your motor produces sufficient torque to move its load in warm conditions, but does not have sufficient extra torque margin to overcome the higher friction conditions, when the temperature is low.

When considering your question, it might be helpful to clarify one point ... A "Servo Motor" that rotates over an angle range of say 0 to 180 degrees,  essentially consists of three constituent parts:

  1. A Motor. Theoretically this could be any type of motor, but small servos often use a DC brushed motor with a gearbox
  2. A position sensor that can determine the angle of the output shaft
  3. An electronic circuit which compares the measured position of the shaft with the requested angle, and sends power appropriately to the motor, in an attempt to move the shaft to the requested angle

Many small servos, including the SG90 motor commonly included in the Arduino kits, combine all three parts into a single unit.

It follows that the Servo motor is commonly a DC motor, and like any motor it is only able to produce so much torque depending upon its design and the applied electrical power.

When designing a servo motor based system, it is essential to ensure the motor can produce sufficient torque to move to the requested angle. If the torque is insufficient, the control circuit may continuously apply full power to the motor in hope of achieving the requested position, resulting in it overheating and maybe failing. This position is essentially the same as a DC motor which is stalled.

--------

So the short answer to your question is that with respect to the amount of torque the motor can produce, and hence its margin in cold conditions, there is no 'real' difference between a Servo motor and DC motor.

Instead, you should start by determing the torque requirement of your load, and then choose a motor (+ gearbox) to meet that requirement with a good margin for factors that can make it 'stiffer', such as cold weather, rust/corrosion, etc.

Using a servo motor can be a good choice for situations such as steering, where it is used to move over a modest angle range, as the control electronics will compensate for small changes in friction, etc., but it does not increase the maximum amount of torque a motor can produce.

------

Sorry this is just a discussion, not a precise answer, but hopefully will help you to find an appropriate solution.

Best wishes, Dave


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

@davee


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

I seem to be VERY unenlightened regarding Servo Motors. I've been playing with an old RC Car unit connected to an Arduino. 

The routine moves it essentially as expected, but whenever I first power the Arduino ON, the Servo slews to a position of ~ -45 deg, then to a different one, which IT appears to consider 0 degrees. 

All my moves are relative to that "effective zero".

Nothing I have tried to do will avoid that ........ so, what am I missing ?

 

When the 


   
ReplyQuote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6970
 

@plumloco Just a stab in the dark, but I would expect that the API has a zero point set call. Can you not read the servo API and see if anything makes sense. OR am I mistaking your concern?

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

@zander I really appreciate the feedback. Sorry to be so newbie/naive 🙄 ...... I was hoping to find out where the servo THOUGHT it was on startup, but I don't know how to do that, and I'm afraid I don't know the term API.


   
ReplyQuote
Ron
 Ron
(@zander)
Father of a miniature Wookie
Joined: 3 years ago
Posts: 6970
 

@plumloco That is the code you write for the servo, I bet there is one called myServo.begin(....); I don't have the Servo library handy, but look in it to see if any clues, or maybe look at Bill's sketch on servos for a clue. Sorry servo's isn't something I have dug into yet. I wil be AFK, but when I get back I will hook up one of mine and see what I see. What servo are you using?

First computer 1959. Retired from my own computer company 2004.
Hardware - Expert in 1401, and 360, fairly knowledge in PC plus numerous MPU's and MCU's
Major Languages - Machine language, 360 Macro Assembler, Intel Assembler, PL/I and PL1, Pascal, Basic, C plus numerous job control and scripting languages.
Sure you can learn to be a programmer, it will take the same amount of time for me to learn to be a Doctor.


   
ReplyQuote
(@davee)
Member
Joined: 3 years ago
Posts: 1683
 

Hi @plumloco,

RE: I first power the Arduino ON, the Servo slews to a position of ~ -45 deg, then to a different one, which IT appears to consider 0 degrees. 

All my moves are relative to that "effective zero".

Nothing I have tried to do will avoid that ........ so, what am I missing ?

You might not be missing anything.

Based on your description, I assume you do not have an electrical specification for the motor control circuit, but we can assume that the control circuit will define how it behaves. This behaviour may simply be the control circuit's initialisation procedure at power up, during which time it might ignore the control signal from the Arduino.

Also, Arduino's typically take a small time (say about 1 second) when power is applied, before they start running the user program code. During this small time, the control signal sent to the servo is 'undefined' by your program code, and might simply be 0V or 5V, which may cause the servo to behave in a 'strange' way.

When designing a commercial product, designers may spend a considerable amount of effort specifying exactly what happens during this power up initialisation time in great detail, but of course they would have full specification of every component. In principle, you could try to follow a similar path, but in practice it is far beyond the resources of individuals.

I would recommend you decide whether to continue with your present servo motor or to choose a replacement.  If you choose a replacement, you may wish to ensure the behaviour of your replacement is clearly specified.

Either way, you may have to work around any 'quirks' of the servo motor controller.

Sorry this is not a direct solution to your query, but I hope it helps you understand the probable situation.

Best wishes, Dave


   
ReplyQuote
(@plumloco)
Member
Joined: 1 year ago
Posts: 8
Topic starter  

@davee Thanks, and good feedback of course. Much of what you're saying is applicable to a good design approach, and I'm aware of the inherent delays from an Arduino and settling following Power application....

This being just a "tinkering" project, I grabbed what was available to see if a Servo might help.

In the last few days, I have experimented and researched - I've actually become much better informed about the nature of the beast: it appears that ALL Servos "twitch" to some extent on power-up (regardless of what the Arduino is doing) but this particular one was extreme, to the point of potential damage in the application.

Various bypass methods have been used, but I have simply added a bit of circuitry (R/C filter damping) that successfully limits this phenomenon to an acceptable level. 


   
Ron reacted
ReplyQuote