Si además quieres enviarnos un Artículo para el Blog y redes sociales, pulsa el siguiente botón:
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
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