Arduino Forum

Using Arduino => General Electronics => Topic started by: E_ri_k on Jul 18, 2011, 12:54 pm

Title: Potentiometer on a Servo
Post by: E_ri_k on Jul 18, 2011, 12:54 pm
Hi, everyone i'm new here. I have been working with Arduino for a few months now. I have some basic electronics knowlege.
I am trying to control a servo motor with a potentiometer, which I have managed to do, however sometimes the servo will go out of control, back and forth. I managed to isolate the problem down to the potemtiometer and the wires connecting to it. If I twist the wires to a certain position there is no erratic behaviour, also if I squeeze the pot or the 3 wires leading to it really hard it works fine. I have placed a cable tie tightly around the wires on the pot contacts, and it is working quite well. It is like there is some interferance coming from somewhere. All the connections are soldered well, and I have tried different pots with the same result, so it cant be a loose contact.

I dont understand what is going on???
Title: Re: Potentiometer on a Servo
Post by: robtillaart on Jul 18, 2011, 01:15 pm
Welcome,

Please post your code and a schematic if possible,
Title: Re: Potentiometer on a Servo
Post by: E_ri_k on Jul 18, 2011, 01:37 pm
Here is the code:
Code: [Select]
#include <Servo.h>

Servo myservo; 

int potpin = 0;
int val;   

void setup()
{
  myservo.attach(9);
Serial.begin(9600);
}

void loop()
{
  val = analogRead(potpin);           
  val = map(val, 0, 1023, 0, 179);     
  myservo.write(val);                 
  delay(15);                           
  Serial.println(val);
} [code]
Everything is soldered and heat shrinked.
[/code]
Title: Re: Potentiometer on a Servo
Post by: AWOL on Jul 18, 2011, 01:43 pm
Is the wire solid or stranded?
How long is the wire?
Title: Re: Potentiometer on a Servo
Post by: robtillaart on Jul 18, 2011, 01:51 pm
Code looks good. You might do multiple readings from the pot and average them to remove some noise of the ADC

Code: [Select]

void loop()
{
  val = 0;
  for (int i=0; i< 4; i++) val += analogRead(potpin);
  val = val/4;         
  val = map(val, 0, 1023, 0, 179);
 
  myservo.write(val);
         
  delay(15);                           
  Serial.println(val);
}


Some questions:
How about the wires to the servo?
TYpe of Servo? 
datasheet?
how much milli amps does it draw?
What powersupply are you using?
Title: Re: Potentiometer on a Servo
Post by: E_ri_k on Jul 18, 2011, 01:59 pm
It is stranded copper wire. CAT5 Ethernet cable. It is about 500mm long. It plugs into a socket soldered onto a arduino prototype board, which then leads to digital pin 9 and analog pin 0. The setup works fine, with the cable ties as in the picture, but it becomes erratic if they are removed.

The servo is a HITEC HS-300. Im not sure how much current it draws. It is out of an old model aeroplane I had. Im using a 9 volt 800mA power supply. Either with the 9V or the USB cable I get the same problem.
Title: Re: Potentiometer on a Servo
Post by: cyclegadget on Jul 20, 2011, 05:19 pm

   Possible causes: bad solder joints, insulation cut to cause shorts between wires, broken wires.


Mark