fbpx

Foros

Avisos
Vaciar todo

estudio servo 9g


xiculan
Respuestas: 8
Registrado
Topic starter
(@xiculan)
Ardero Activo
Registrado: hace 12 años

saludos a todos, hacia tiempo que no pasaba por aqui

estoy haciendo un estudio acerca del funcionamiento de los servos tower pro 9g.

Con un arduino y un potenciometro hago mover el servo, pero cuando le pongo carga (una pieza hecha con impresora 3d) le se mueve un poco a tropezones

el programa que utilizo es:
/*
servo con potenciometro
*/

#include <Servo.h>

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

int val_max = 138;
int val_min = 72;

int pot_pin = 0; // analog pin used to connect the potentiometer
int servo_pin = 9;

int potval = 0; // variable to read the value from the analog pin
int esc_pot_val;
int servo_val;

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

void loop()
{
potval = analogRead(pot_pin); //leemos valor del poten (entre 0 i 1023)

servo_val = map(potval, 0, 1023, val_min, val_max); //escalamos el valor para el servo

myservo.write(servo_val); // sets the servo position according to the scaled value

Serial.print("in pot val:");
Serial.print(potval);

Serial.print(" out servo val:");
Serial.println(servo_val);
//delay(500); // waits for the servo to get there
}

entonces la pregunta que me surge es: si muevo el potenciometro rapido, el servo no se mueve suavemente, esto esta causado por la mecanica/calidad del servo?

se podria corregir mediante codigo?

gracias

Responder
1 respuesta
ranganok
Respuestas: 3875
Socio
(@ranganok)
Ardero Famoso
Registrado: hace 17 años

En principio los datos de los servos hay que refrescarlos cada 20ms es posible que no lo estés haciendo por culpa de la transmisión serie (no he hecho los cálculos).

Deberías separar el envío de datos al servo de la transmisión, por ejemplo usando interrupciones del micro o un PWM (aunque tan bajo no se si llegará).

S2

Ranganok Schahzaman

Responder
Compartir: