Estoy tratando de controlar este servo desde un RaspberryPi.
enlace
Me di cuenta de que un servo necesita un pulso específico para un grado específico. www.youtube.com/watch?v=ddlDgUymbxc
Estoy usando este enlace para PWM.
Ya confirmé que este PWM funciona como se esperaba al encender un LED, pero no importa qué pulso le dé a mi servo, simplemente se vuelve salvaje.
Va como si siguiera moviéndose de izquierda a derecha o agite en un punto continuamente.
El servo del youtube se mueve +/- 90 grados, pero mi servo hace +/- 60 grados. ¿Entonces tal vez el pulso que necesito dar es diferente de 0.5ms / 1.5ms / 2.5ms?
¿Alguien ha usado este servo con RaspberryPi? ¿Qué son los pulsos para dar?
actualizaciones
Cambié el código fuente para tener una frecuencia de 50Hz.
diff --git a/pi-blaster.c b/pi-blaster.c
index 2e15ee1..d7d8af2 100644
--- a/pi-blaster.c
+++ b/pi-blaster.c
@@ -70,8 +70,8 @@ static uint8_t pin2gpio[8];
// will use too much memory bandwidth. 10us is a good value, though you
// might be ok setting it as low as 2us.
-#define CYCLE_TIME_US 10000
-#define SAMPLE_US 10
+#define CYCLE_TIME_US 20000
+#define SAMPLE_US 20
#define NUM_SAMPLES (CYCLE_TIME_US/SAMPLE_US)
#define NUM_CBS (NUM_SAMPLES*2)
y ahora pi-blaster muestra esto.
$ sudo /usr/sbin/pi-blaster
Using hardware: PWM
Number of channels: 9
PWM frequency: 50 Hz
PWM steps: 1000
Maximum period (100 %): 20000us
Minimum period (0.100%): 20us
pero mi servo todavía se vuelve loco. Desde Minimum period (0.100%): 20us
, para tener 0.5ms
, hice esto.
Período 0.5ms (500us) / min (20us) = 25
0,1% * 25 = 2,5% = 0,025
$ echo "17=0.025" > /dev/pi-blaster
Parece que siempre está volviendo a 0 grados, cualquiera que sea el% que le dé.
Va así.
Para 180 grados, es de 2,5 ms. Cuando doy
$ echo "17=0.125" > /dev/pi-blaster
El servo va al punto de 180 grados, y pronto vuelve al punto de 0 grados. Va así de un lado a otro, de un lado a otro, siempre y cuando le dé el poder. Lo mismo va en cualquier grado.
¿por qué?