Continuous Rotation Servo AR-3606HB

Hello all!

I am hoping to get some help with an issue I a having with this continuous rotation servo. I am simply looking for the points where the motor turns clockwise, counterclockwise, and stops. The only reliable turn I am getting is clockwise at a pusle period of 1 microsec. It the proceeds to gradually slow down until it reaches 12000 microsecs, where the motor starts to jitter more than it does rotate. And that is the behaviour I keep seeing from the range of 1.2 to 2.2 mircosecs. The datasheet says that it has a neutral period of 1.5 microsecs, but the motor never stops, and it surely doesn’t rotate in the other direction.

I also have two of those motors handy, and both have the same performance issue. Additionally, I tried to dial-in the stop position using the middle-point positioner, but to no avail. It never stopped. The jitternes lessened some , but it didn’t stop. I also called tech support and they told me to come here. :slight_smile:

Let me know how else I can communicate my problem. Any help would be greatly appreciated.

#include <Servo.h>

Servo myServo;

int milli2secConv = 1000;

int test = 0;

void setup() {
  Serial.begin(9600);
  myServo.attach(9);
  myServo.writeMicroseconds(1000);
  
}

void loop() {
  // put your main code here, to run repeatedly:

  // simple code where I manually changed the values to see if I can dial into the right period
  myServo.writeMicroseconds(1200);
  delay(2*milli2secConv);
  myServo.writeMicroseconds(1500);
  delay(3*milli2secConv);
//  myServo.writeMicroseconds(1000);
//  delay(2*milli2secConv);
  myServo.writeMicroseconds(1800);
  delay(3*milli2secConv);
  
  myServo.write(0);
  delay(2*milli2secConv);

  // test to iterate through the different speeds to see where the motor changed behavior  
  for(test = 0; test < 180; test++){
    myServo.write(test);
    Serial.println(test);
    delay(1*milli2secConv);
  }
}

Hello.

Looks like you have several typos, one in your third sentence where you say your servo starts rotating “at a pusle period of 1 microsec”, which you probably meant to type millisecond, and in your fourth sentence, 12000 microsecs instead of 1200 us.

I looked at your code and did not notice anything obviously wrong. Can you post pictures showing how you have everything connected in your setup? Also, how are you powering your servo?

- Amanda

Hey Amanda,

Thanks for replying. Here’s my setup ( I took a video so you can clearly see what I have going on. It’s extremely simple.

Sorry! Looks like it didn’t upload. Please find the link attached to watch it. https://photos.app.goo.gl/cvm2C1wkZrfAp7oo6

Thanks for posting a video of your setup. It looks like you do not have a common ground between your Arduino board and your power supply. Can you add that connection and see if that fixes the issue?

- Amanda

1 Like

Hey Amanda,

Common ground was the issue. SMH! You would think I would stop making that mistake at this point. Thanks so much!

Francisco

1 Like