Pages: [1]   Go Down
Author Topic: Servos jumping to max position  (Read 1283 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hello guys, I am working on a quadruped project with 8 servos and whenever I try to run more than 3-4 servos every servo in the system jumps to the maximum position and stops there. Even I readjust one manually it jumps to max pos again. Only way to fix it is remove all servos from the breadboard and relink them and it happens again if i run more than 3-4. Could this be a battery problem? I use 4 AA batteries (6v total), this issue started after i used the servolibrary with slowmove. Can batteries be depleted so quickly? (I didnt run more than 5-6 and total running time is like 30-40 minutes, could that deplete the 4 batteries?)

Code:
// Sweep
// by BARRAGAN <http://barraganstudio.com>
// This example code is in the public domain.


#include <VarSpeedServo.h>
 
VarSpeedServo myservo1;
VarSpeedServo myservo2;
VarSpeedServo myservo3;
VarSpeedServo myservo4;
VarSpeedServo myservo5;
VarSpeedServo myservo6;
VarSpeedServo myservo7;
VarSpeedServo myservo8;
unsigned long leg1timer;
unsigned long leg2timer;
unsigned long leg3timer;
unsigned long leg4timer;
void setup()
{
  myservo1.attach(2);
  myservo2.attach(3);
  myservo3.attach(4);
  myservo4.attach(5);
  myservo5.attach(6);
  myservo6.attach(7);
  myservo7.attach(8);
  myservo8.attach(9);  // attaches the servo on pin 9 to the servo object
  leg1timer=millis();
  leg2timer=millis();
  leg3timer=millis();
  leg4timer=millis();

}
 
 
void leg1forward()
 {
leg1timer = millis ();
myservo2.write(80);
myservo1.slowmove(120,60);

delay(600);
myservo2.write(60);
myservo1.slowmove(40,20);

 
}
 

void leg2forward()
 {
leg2timer = millis ();
myservo4.write(80);
myservo3.slowmove(40,60);
delay(600);
myservo4.write(60);
myservo3.slowmove(120,20);
 




void leg3forward()
 {
leg3timer = millis ();
myservo6.write(80);
myservo5.slowmove(20,60);
delay(600);
myservo6.write(60);
myservo5.slowmove(100,20);
 



void leg4forward()
 {
leg4timer = millis ();
myservo8.write(80);
myservo7.slowmove(100,60);
delay(600);
myservo8.write(80);
myservo7.slowmove(20,20);
 
}
 


void loop()
{
if ( (millis () - leg1timer) >= 2000)
     leg1forward();
     
if ( (millis () - leg3timer) >= 2000)
     leg3forward();


if ( (millis () - leg2timer) >= 2000)
     leg2forward();
     

if ( (millis () - leg4timer) >= 2000)
     leg4forward();


}

This is the code I use
Logged

Johannesburg UTC+2
Offline Offline
Faraday Member
**
Karma: 60
Posts: 3242
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

It might be that the batteries can't provide enough current to drive more than 3 motors at once.

Try with a second battery pack and run 2 groups of 3 motors to see if that works, then try 2 groups of 4. Maybe you'll need three groups, 3, 3 and 2.
Logged

Have you looked for answers in the Learning, Reference, Products and Playground tabs on http://arduino.cc/en/ ?
Look here http://electronicsclub.info/ for basic electronics

Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Yeah, probably the batteries cannot provide enough current as they're basic cheap aa batteries. So what can I do to improve the current and lifespan without changing the voltage? (lithium batteries???)
Logged

Belgium
Offline Offline
Sr. Member
****
Karma: 1
Posts: 278
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

For powering lots of servos I use Lipo batteries (2S - 3S) with UBECs to drop the voltage.
Logged


the land of sun+snow
Offline Offline
Faraday Member
**
Karma: 149
Posts: 2790
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

From what I've seen, some servos do jump over to the mechanical stops when the battery voltage drops too low. However, I use NiMH AA-cells, 2200-2500 mAh, on my walkers, and they will handle 8 servos easily, in general. At least the smaller servos. If the servos are over 100 oz-in of torque, they draw a lot current, and will drag the battery down faster.

Also, I wouldn't expect much more than 30-40 min running time for the typical walker. Time for you to do some serious measurements on your energy requirements. Instantaneous current draw, integrated over time, etc.
« Last Edit: September 18, 2013, 10:56:45 am by oric_dan » Logged

Pages: [1]   Go Up
Jump to: