Hacer funcionar servomotor casero

Muy buenas de nuevo compañeros, tengo una consultilla para ver si le podeis dar solucion jeje. Me he fabricado un servomotor casero con un potenciometro lo consigo hechar a andar y eso pero se vuelve loco a la hora de llegar al final de su recorrido, osea que empieza a buscar la posicion donde deberia colocarse a izquierda a derecha pero no consigo que se quede en ese punto fijo. tengo este codigo :

int ledPin =  13;    // LED conectado al pin digital 13

int M1_A = 7; // Motor 1 entrada A
int M1_B = 8; // Motor 1 entrada B
int M1_Enable = 9; // Motor 1 Enable
int val;
int potpin=0;

void setup()
{// Inicializa los pines de salida
  Serial.begin(9600);
  pinMode(ledPin, OUTPUT);     
  pinMode( M1_A, OUTPUT);     
  pinMode( M1_B, OUTPUT);     
  pinMode(M1_Enable, OUTPUT);     
}

void loop(){


    digitalWrite(M1_Enable,HIGH); // Solo si el pin Enable del puente H esta habilitado

  val = analogRead(potpin);           
  Serial.println(val);
  int x;
  x=600;  
  if(val>x){
  digitalWrite( M1_B, LOW);      // Valores BAJO en A y ALTO en B simultaneamente
  digitalWrite( M1_A, HIGH);     // hacen girar el motor 1 hacia ATRAS
  }
  if(val<x){
  digitalWrite( M1_A, LOW);      // Valores BAJO en A y ALTO en B simultaneamente
  digitalWrite( M1_B, HIGH);     // hacen girar el motor 1 hacia ATRAS
  }
  if(val==x){
  digitalWrite(M1_Enable, LOW); // Solo si el pin Enable del puente H esta habilitado
  }
}

deduzco que lo que le pasa es que se pasa el valor del potenciometro al ser tan sensible. Si conocierais algun truquito para que esto no pase seria interesante escucharlo. Saludos a todos!!

Bueno ya tengo la cosa solucionada por si alguien quiere aprovechar el codigo ahi va.

void giroo(){
  if(peticionGiro==0){
   /////////SERVOMOTOR DE LA DIRECCION/////////       
       val=analogRead(potpin);      
       //Serial.println(val);       
       val=map(val , 190 , 800 , 0 , 10);
       //Serial.println(val);       
      
      if(val==giro){
        digitalWrite(M2_Enable, LOW);
        peticionGiro=1;
      }
      else{
      peticionGiro=0;

      if(val>giro){
        analogWrite(M2_Enable, 150);
        digitalWrite( M2_B, LOW);
        digitalWrite( M2_A, HIGH);
        if(giro==val+-1){       
        analogWrite(M2_Enable, 50);
        }

      }
      
      if(val<giro){
        analogWrite(M2_Enable, 150);
        digitalWrite( M2_A, LOW);
        digitalWrite( M2_B, HIGH);
        if(giro==val-1){       
          analogWrite(M2_Enable, 50);
        }
      }
      }
      
      /////////SERVOMOTOR DE LA DIRECCION/////////
  }

hey muestra como lo hiciste que puente H ocupaste y todo eso y que torque tiene?

Itrabo yo tambien estoy detrás de hacer un servomotor casero y es curioso el primer programa es muy parecido al mio, aún estoy muy verde en arduino ya que vengo de los PIC y programar en ensamblador jejejejejejejejeje