Go Down

Topic: MG995 - Multi turn servo (Read 443 times) previous topic - next topic

rtek1000

Dec 14, 2018, 06:01 am Last Edit: Dec 14, 2018, 06:06 am by rtek1000
Has anyone tried adapting a 10-turn potentiometer on a 180-degree MG995 servo motor?

In the servo motor MG995 the control circuit has the IC AA51880, the 9926A and 4953 (double MOSFET)

The datasheet AA51880 shows that there is an internal regulator of approximately 2.45V, this voltage is applied in the potentiometer for position feedback.

I need a servo with multiple turns to activate a pressure valve, I believe it would be 4 or 5 turns.

I found the HS-785HB servo that besides being very expensive, seems to be only 3.5 turns.

So I did some circuits to test, has anyone done anything like that?



Please avoid private messages, your question may be someone's answer in the future!

slipstick

I haven't tried that but I do know that there are quite a few sail winch servos that will do over 4 turns under full positional control. That includes the HS785HB which will in fact do around 8 turns with extended pulse lengths (500 - 2500 microseconds) which are easy to arrange with an Arduino.

But it's an interesting project. Let us know how it goes.

Steve


rtek1000

#2
Dec 14, 2018, 03:51 pm Last Edit: Dec 14, 2018, 03:53 pm by rtek1000
News:

I got about 24 rotations using a 25-turn mini potentiometer (5k - 502)

Please avoid private messages, your question may be someone's answer in the future!

rtek1000

#3
Dec 14, 2018, 04:13 pm Last Edit: Dec 14, 2018, 04:16 pm by rtek1000
Servo motor under test:

YouTube: [Arduino] TowerPro MG995 180° - Multi turn servo (modified: 24 turns)


Code: [Select]
#include <Servo.h>

Servo myservo;  // create servo object to control a servo
// twelve servo objects can be created on most boards

int cnt = 0;

void setup() {
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object
  pinMode(13, OUTPUT);
  Serial.begin(9600);
}

void loop() {
  myservo.write(0);              // tell servo to go to position '0' degree
  cnt = 60; // slow blink

  while (cnt--) {
    Serial.println(cnt, DEC);
    digitalWrite(13, !digitalRead(13));
    delay(1000);
  }
  myservo.write(180);              // tell servo to go to position '180' degree

  cnt = 120; // fast blink

  while (cnt--) {
    Serial.println(cnt, DEC);
    digitalWrite(13, !digitalRead(13));
    delay(500);
  }
}
Please avoid private messages, your question may be someone's answer in the future!

Go Up