Servo Jumpy con arduino

3

Estoy usando el kit de inventor de sparkfun. Estoy usando el código que aparece al final de esta publicación, para controlar un servo con un potientiómetro usando el arduino.

Desafortunadamente, el servo se comporta muy nervioso. Incluso si el valor escrito en el servo no cambia, sigue saltando hacia adelante y retrocede muy rápido en ~ 5-10 °.

También intenté lo mismo pero utilizando un potenciómetro suave en lugar de la medida de curvatura y la resistencia de 10kO. El servo estaba saltando de la misma manera.

¿Alguna idea de cómo arreglar eso?

Superposición del circuito:

#include <Servo.h> 

Servo myservo;  // create servo object to control a servo 

int potpin = 0;  // analog pin used to connect the potentiometer
int val;    // variable to read the value from the analog pin 

void setup() 
{ 
  myservo.attach(9);  // attaches the servo on pin 9 to the servo object 
} 

void loop() 
{ 
  val = analogRead(potpin);            // reads the value of the potentiometer (value between 0 and 1023) 
  val = map(val, 0, 1023, 0, 179);     // scale it to use it with the servo (value between 0 and 180) 
  myservo.write(val);                  // sets the servo position according to the scaled value 
  delay(15);                           // waits for the servo to get there 
} 
    
pregunta BetaRide

1 respuesta

5

Puedo reproducir el servo nervioso con la olla suave y el sensor de flexión. En el caso de la olla blanda, solo puedo estabilizarla cuando sostengo el dedo firmemente sobre la olla blanda. Si no lo hago, el servo comienza a menearse.

Al agregar un pequeño capacitor (agregué 100nF o 220nF) entre la salida a tierra y el potenciómetro (pin central), se detiene la ondulación. Simplemente estás recogiendo estática.

Mantenga los cables cerca de la olla blanda, no haga grandes bucles entre ellos. Podrías trenzarlos juntos por ejemplo. Esto y la pequeña tapa reducirán la estática recogida y con eso detendrán el movimiento.

El bote blando tiene una impedancia extremadamente alta en su pin central cuando no se toca. Supongo que solo hace contacto con la resistencia cuando realmente se toca. Esto explica por qué el servo se pone nervioso cuando no se usa la olla blanda. La conexión central es básicamente una antena de cable suelto → y la entrada analógica del microcontrolador es muy sensible / de alta impedancia.

    
respondido por el jippie

Lea otras preguntas en las etiquetas