I also forgot the details of how to control the servo. I only remember that in late 2008 when Lehman Brothers collapsed, I got nothing to do and wandered to the toy street in Monkok and bought some cheap servos to play with. I still remember that the shops sells very expensive servo over 400 dollars. I only bought the cheapest servos I could find because I read that even experts burn their servos. I programmed a servo for the first time in my hobbist's life and posted a blog about it in TaoBao My Space. But My Space is closed down. So I googled "tlfong01 servo" and found my old servo program.
I have the feeling that I am doing sort of pair programming, the "new me" (re) learning things from the "old me".
Pues ocurren varias cosas, no le estas metiendo la señal al servo por la patilla adecuda, por norma el cable blanco y por supuesto tener la alimentación 5V al rojo y la masa al negro, además de tener conectadas entre sí las masas del pic y del servo sino vamos mal.
El servo esté roto, con lo que la única manera de asegurarte es con un osciloscopio para mirar si la señal es la adecuada, por otro lado mira el datasheet del servo a ver si va a tener un rango de tiempos distintos.
Vamos que no debería de darte tantos quebraderos de cabeza algo tan sencillo.
Ya me comentarás haciendo todo lo que te comento.
About 11,200 results (0.34 seconds)
- Pues ocurren varias cosas, no le estas metiendo la señal al servo por la patilla adecuda... "Tower Pro SG90 Micro Servo" ... Author - TL Fong (tlfong01, TaoBao) ...You've visited this page 2 times. Last visit: 3/28/12
c4_esp_VR:
Pues ocurren varias cosas, no le estas metiendo la señal al servo por la patilla adecuda, por norma el cable blanco y por supuesto tener la alimentación 5V al rojo y la masa al negro, además de tener conectadas entre sí las masas del pic y del servo sino vamos mal.
El servo esté roto, con lo que la única manera de asegurarte es con un osciloscopio para mirar si la señal es la adecuada, por otro lado mira el datasheet del servo a ver si va a tener un rango de tiempos distintos.
Vamos que no debería de darte tantos quebraderos de cabeza algo tan sencillo.
Ya me comentarás haciendo todo lo que te comento.
chacruna:
Los cables estan bien conectados (Naranja = Datos, Rojo = Vcc, Marron = Gnd)
Quizas los servos esten rotos, hoy voy a probar con un servo nuevo.
Citar
"Tower Pro SG90 Micro Servo"
It fit for most brands of radio equipment including Hitec, Futaba, GWS, JR, Sanwa ….
Specification :
* Weight : 9 g
* Size : 22 x 11.5 x 27 mm
* Operating Speed (4.8V no load): 0.12sec/60 degrees
* Stall Torque (4.8V): 17.5oz/in (1.2 kg/cm)
* Temperature Range: -30 to +60 Degree C
* Dead Band Width: 7usec
Operating Voltage:3.0-7.2 Volts
Encontre estos "TowerPro SG90 Test Programs" y por lo que veo las señales son las correctas.
Código:
*** Seeeduino & Towerpro SG90 Test Program - TL Fong 2009jan08
/******************************************************************************
* Hello Servo - Turn TowerPro SG90 servo to middle position
* Created - 2009jan07, Last update - 2008jan07
* Function - Turn servo to middle position
* MPU/Programming language - Seeeduino v1.1/Arduino v12.0
* Author - TL Fong (tlfong01, TaoBao)
* Copyright - Creative Commons Attribution - ShareAlike 3.0 Licence
*
* Test procedure
* (1) FIRST run the program,
* (2) Manually turn servo clockwise or counterclock to limit,
* (3) Connect 5V power and MPU signal to servo,
* (4) WARNING - Disconnect 5V power before stopping program,
*
* TowerPro SG90 Spec
* CCW end 900uS, CW end 2100uS, middle 1500uS, 3.0 to 6.0V,
* 9g, 22 * 11.5 * 27mm, 0.12sec/60 degrees (4.8V no load),
* stall torque 17.5ozin/1.2 kgcm) (4.8V), dead band 7usec,
* coreless motor, all nylon gear, RMB30 (TaoBao).
*
* Notes
* 1. To turn counter clockwise limit, change pulse width from 1500 to 900.
* 2. To turn clockwise limit, change pulse width from to 2100.
******************************************************************************/
int signalPin = 8; //servo signal pin
void setup()
{
pinMode(signalPin, OUTPUT);
}
void loop()
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
/* End of program */
Código:
/******************************************************************************
* Hello Servo - v2.0
* Created - 2009jan07, Last update - 2008jan07
* Function - Repeatedly position servo to one end, middle, and the other end
* Servo - Towerpro SG90
* MPU/Programming language - Seeeduino v1.1/Arduino v12.0
* Author - TL Fong (tlfong01, TaoBao)
* Copyright - Creative Commons Attribution - ShareAlike 3.0 Licence
*
* Test procedure
* (1) FIRST run the program,
* (2) Manually turn servo clockwise or counterclock to limit,
* (3) Connect 5V power and MPU signal to servo,
* (4) WARNING - Disconnect 5V power before stopping program.
*
* TowerPro SG90 Spec
* CCW end 900uS, CW end 2100uS, middle 1500uS, 3.0 to 6.0V,
* 9g, 22 * 11.5 * 27mm, 0.12sec/60 degrees (4.8V no load),
* stall torque 17.5ozin/1.2 kgcm) (4.8V), dead band 7usec,
* coreless motor, all nylon gear, RMB30 (TaoBao).
*
* Notes
* Hold time = 100 * 20mS = 2 seconds
*
* Disclaimer
* Use the program at your own risk. This program is written by a servo newie.
* There is no guarantee that the program will not damage your servo.
******************************************************************************/
int signalPin = 8; //servo signal pin
void setup()
{
pinMode(signalPin, OUTPUT);
}
void loop()
{
for (int i=0; i <= 100; i++) // turn to CCW end, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(900); // for 900 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to middle, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to CW end, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(2100); // for 1500 uS [typo here, should read 2100 - tlfong01 2013mar13]
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to middle, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
}
/* End of program */
[ENDS]
Los cables estan bien conectados (Naranja = Datos, Rojo = Vcc, Marron = Gnd)
Quizas los servos esten rotos, hoy voy a probar con un servo nuevo.
Citar
"Tower Pro SG90 Micro Servo"
It fit for most brands of radio equipment including Hitec, Futaba, GWS, JR, Sanwa ….
Specification :
* Weight : 9 g
* Size : 22 x 11.5 x 27 mm
* Operating Speed (4.8V no load): 0.12sec/60 degrees
* Stall Torque (4.8V): 17.5oz/in (1.2 kg/cm)
* Temperature Range: -30 to +60 Degree C
* Dead Band Width: 7usec
Operating Voltage:3.0-7.2 Volts
Encontre estos "TowerPro SG90 Test Programs" y por lo que veo las señales son las correctas.
Código:
*** Seeeduino & Towerpro SG90 Test Program - TL Fong 2009jan08
/******************************************************************************
* Hello Servo - Turn TowerPro SG90 servo to middle position
* Created - 2009jan07, Last update - 2008jan07
* Function - Turn servo to middle position
* MPU/Programming language - Seeeduino v1.1/Arduino v12.0
* Author - TL Fong (tlfong01, TaoBao)
* Copyright - Creative Commons Attribution - ShareAlike 3.0 Licence
*
* Test procedure
* (1) FIRST run the program,
* (2) Manually turn servo clockwise or counterclock to limit,
* (3) Connect 5V power and MPU signal to servo,
* (4) WARNING - Disconnect 5V power before stopping program,
*
* TowerPro SG90 Spec
* CCW end 900uS, CW end 2100uS, middle 1500uS, 3.0 to 6.0V,
* 9g, 22 * 11.5 * 27mm, 0.12sec/60 degrees (4.8V no load),
* stall torque 17.5ozin/1.2 kgcm) (4.8V), dead band 7usec,
* coreless motor, all nylon gear, RMB30 (TaoBao).
*
* Notes
* 1. To turn counter clockwise limit, change pulse width from 1500 to 900.
* 2. To turn clockwise limit, change pulse width from to 2100.
******************************************************************************/
int signalPin = 8; //servo signal pin
void setup()
{
pinMode(signalPin, OUTPUT);
}
void loop()
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
/* End of program */
Código:
/******************************************************************************
* Hello Servo - v2.0
* Created - 2009jan07, Last update - 2008jan07
* Function - Repeatedly position servo to one end, middle, and the other end
* Servo - Towerpro SG90
* MPU/Programming language - Seeeduino v1.1/Arduino v12.0
* Author - TL Fong (tlfong01, TaoBao)
* Copyright - Creative Commons Attribution - ShareAlike 3.0 Licence
*
* Test procedure
* (1) FIRST run the program,
* (2) Manually turn servo clockwise or counterclock to limit,
* (3) Connect 5V power and MPU signal to servo,
* (4) WARNING - Disconnect 5V power before stopping program.
*
* TowerPro SG90 Spec
* CCW end 900uS, CW end 2100uS, middle 1500uS, 3.0 to 6.0V,
* 9g, 22 * 11.5 * 27mm, 0.12sec/60 degrees (4.8V no load),
* stall torque 17.5ozin/1.2 kgcm) (4.8V), dead band 7usec,
* coreless motor, all nylon gear, RMB30 (TaoBao).
*
* Notes
* Hold time = 100 * 20mS = 2 seconds
*
* Disclaimer
* Use the program at your own risk. This program is written by a servo newie.
* There is no guarantee that the program will not damage your servo.
******************************************************************************/
int signalPin = 8; //servo signal pin
void setup()
{
pinMode(signalPin, OUTPUT);
}
void loop()
{
for (int i=0; i <= 100; i++) // turn to CCW end, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(900); // for 900 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to middle, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to CW end, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(2100); // for 1500 uS [typo here, should read 2100 - tlfong01 2013mar13]
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
for (int i=0; i <= 100; i++) // turn to middle, hold 2 seconds
{
digitalWrite(signalPin, HIGH); // control signal high
delayMicroseconds(1500); // for 1500 uS
digitalWrite(signalPin, LOW); // control signal low
delay(20); // wait 20mS
}
}
/* End of program */
[ENDS]
c4_esp_VR:
Emmm porqué tiene tanto cable en la foto....
En vez de ponerle un periodo de 20ms ponselo de 30ms y sino de 40 y sino de 50 y nada más porque de ahí nunca he visto que funcione bien ningún servo. Aunque arriba usa 20 ms.
Tambien prueba a poner delay_ms(20) en vez de delay_us(20000), por si acaso en us es mucho delay aunque he visto en el compilador que debería de funcionar pero nunca se sabe.
Un saludete.
Emmm porqué tiene tanto cable en la foto....
En vez de ponerle un periodo de 20ms ponselo de 30ms y sino de 40 y sino de 50 y nada más porque de ahí nunca he visto que funcione bien ningún servo. Aunque arriba usa 20 ms.
Tambien prueba a poner delay_ms(20) en vez de delay_us(20000), por si acaso en us es mucho delay aunque he visto en el compilador que debería de funcionar pero nunca se sabe.
Un saludete.
chacruna:
Pfff tenes razon, no se porque tantos cables :S
Una foto mas acertada.
Pfff tenes razon, no se porque tantos cables :S
Una foto mas acertada.
chacruna:
Acabo de probar con un servo nuevo, varios codigos diferentes, pero nada.
Cuando lo prendo el servo se va a una posicion determinada, si lo muevo (desenchufado) cuando lo vuelvo a conectar vuelve a la posicion anterior.
Pero todavia no responde a ninguna de las 3 señales.
Alguien alguna idea???
Acabo de probar con un servo nuevo, varios codigos diferentes, pero nada.
Cuando lo prendo el servo se va a una posicion determinada, si lo muevo (desenchufado) cuando lo vuelvo a conectar vuelve a la posicion anterior.
Pero todavia no responde a ninguna de las 3 señales.
Alguien alguna idea???
Navegación
[#] Página Siguiente
[*] Página Anterior
.END
No comments:
Post a Comment