Show Posts
Pages: [1] 2
1  International / Español / Control motor segun ángulo con PID on: April 03, 2013, 11:06:51 am
Hola a todos,

Estoy en el primer paso de realizar un balancín para avanzar hacia el quadricoptero.
Tengo el código para el IMU (en realidad FREEIMU). El problema lo tengo cuando implemento la libreria PID: la salida me da valores... ilógicos (según mi parecer)

Para hacer las pruebas tengo puesto en Input del PID la variable pitch del giroscópio: Input = pitch;
El Setpoint en 0.00: Setpoint = 0.00;
Y según he leído la librería PID ya viene configurada para darte la Output entre 0 y 255. De momento simplemente imprimo la Output por el puerto serie para no arriesgarme con el motor, quería por lo menos ver que los resultados eran coherentes.

El problema está en que cuando inclino el sensor ya desde el principio la variable Output simplemente va subiendo más o menos a 1 unidad/seg. (jugando con kp, ki y kd consigo que suba a 2 unidades/seg. mas o menos).

Independientemente de lo inclinado que esté el sensor, la variable no para de augmentar (hasta 255).

A parte, cuando vuelvo a poner el sensor estable en horizontal yo tengo entendido que la Output deberia ser 0.0 ya que es el mismo valor que tengo en Setpoint, pero prácticamente lo que hace es mantenerse en el último valor al que ascendió. Para conseguir el 0 tengo que inclinar el sensor en sentivo inverso para que vaya bajando al mismo ritmo al que subió...

Supongo que no estaré utilizando bién el PID; o las variables no las tengo como Input las querría.... (las tengo en radianes)(en grados me daba el mismo resultado).

Álguien tiene experiéncia con la libreria PID??? Necesito ayuda, llevo varias semanas sin encontrarle solución...

Para referencias: Sketch FREEIMU
la librería PID es la de ARDUINO

Muchas gracias por su tiempo
2  International / Español / Re: Ayuda con cuadricoptero on: February 07, 2013, 05:31:41 am
Estuvo muy bien ponerlo en la firma, estoy juuusto en el mismo punto que tú con mi quadcopter....
yo ahora tengo que hacer el balancín y no tengo muy claro como funciona la libreria PID, pero bueno también me cuesta encontrar tiempo...


Cispy, yo también estoy haciendo el quad cómo proyecto de Grado.... la verdad es que es un proyecto complicadillo para que te lo mando el profesor sin más....
Te recomiendo que empieces buscandote 4 brushless y 4 variadores,mientras los esperas puedes irte mirando la forma de controlar el quadricoptero... (XBee, Bluetooth...) Yo personalmente utilizo bluetooth y el mando de la PS3, así me ahorro la Emisora RC.

Buscando referencias recientemente he encontrado ésto, la verdad es que tiene muy buena pinta ya que también es comunidad Open Source:
http://www.bitcraze.se/2013/02/pre-order-has-started/

Recomiendo el video.

Saludos!!
3  International / Software / Re: Programa Visual: Control de Arduino + Mando PS3/Xbox (Fimata) on: January 08, 2013, 10:47:43 am
Como lo conectas con bluetooth??? no necesitas que sea host?
Muy interesante tu programa, me interesaria estudiarlo y darle una buena hojeada, yo que me he metido en el mundo de controlar el mando de la PS3 con el Arduino sé que lo que has hecho es una bueeeena currada, enhorabuena

De todas formas usando la usb host shield se puede acoplar un bluetooth dongle y hay funciones para todos los botones con lo qual se puede controlar perfectamente la placa.... supongo que es más para monitorizar las salidas.....?

Saludos!!!
4  International / Documentación / Re: Arduino Mega 2560 + RFID on: December 14, 2012, 03:15:10 am
Ve probando a ver k obtienes por el puerto serie. (115200 baudios)
(recuerda alimentar el aruino)

Saludos!!
5  International / Documentación / Re: Arduino Mega 2560 + RFID on: December 13, 2012, 01:13:55 pm
Justo veo tus mensajes de refilon, solo puedo responderte para la Host Shield.
Es muy importante alimentar externamente el arduino para que funcione la Shield, se me olvidó comentarlo.

Saludos!!
6  International / Documentación / Re: Arduino Mega 2560 + RFID on: December 13, 2012, 10:30:27 am
Usando un Mega si.... Si tuvieras un Duemilanove,UNO o semejante te iría, yo lo uso con un Duemilanove pero por error al comprar. El problema és que la librería ocupa muchísimo espacio y con el Duemilanove voy más que justo.

Para conectar este shield al Mega tienes que bajarte tanto los esquematicos del Shield cómo los del Mega y ir conectando con cables las patillas de la 8 a la 13 del Shield con las que tienen el mismo nombre del Mega.
Espero que me entiendas así, sino ya te lo marcaría con imagenes, pero ando bastante liadillo.

Saludos!!!
7  International / Español / Re: USB Host Shield on: December 13, 2012, 02:12:03 am
Justo acabo de contestar un post que también preguntaban sobre la USB Host Shield.

Yo ya lo solucioné. La tengo funcionando PERFECTAMENTE ( lo digo así perqué dónde la compré me dijeron prácticamente que la podia tirar)

Para conectar ésta Shield al Mega tienes que hacer puentes desde los pines (8 al 13 del Shield) hasta el BUS SPI del Mega que si no recuerdo mal está en los pines 50's y en el centro de la placa. De momento espero que te sepas aclarar con eso, sino en unos dias intento hacer una mejor esplicación con paints y enlaces.

Saludos!!

P.D: Si simplemente compras la Shield 2.0 no tendras ningun problema ya que incorpora el conector para BUS SPI
8  International / Documentación / Re: Arduino Mega 2560 + RFID on: December 13, 2012, 02:00:02 am
Muy buenas,

La verdad es que tienes "un pequeño marroncillo", la USB Host Shield de Sparkfun no funciona correctamente en el Arduino Mega. La USB Host se comunica con el BUS SPI y el Arduino Mega lo tiene en medio de la placa. Para que te funcione mírate los esquemáticos y puentea los pins a donde les tocan. Quando tengas ésto hecho tienes que hacer un puente entre el pin 7 y el reset del shield.

Para ahorrarte todo ésto mejor cómprate la USB Host Shield 2.0 (en ebay baratilla)((((Con lo k eso conlleva)))).
Incluso también podrias mirarte código con el Due (que incorpora la funcion de USB Host).
Si tienes dudas con el shield coméntalo, yo quería hacer un pequeño tutorial ya que lo estoy utilizando en un proyecto pero de momento ando liadito.

Saludos!!!!
9  International / Proyectos / Re: led cube 8x8x8 on: December 10, 2012, 03:01:16 am
Yo no tengo muy claro como seria el montaje, la verdad ésto no me tira deasiado.
De todos modos hace un par de días vi un articulo de un cubo de 4x4x4:
http://blog.tkjelectronics.dk/2012/12/4x4-arduino-controlled-led-cube/

Espero k te sirva
10  International / Documentación / Re: Control motor brushless on: December 03, 2012, 06:53:40 am
Ya he mejorado un poco el codigo y la grabación para apreciar lo de los consumos.
Ahora ya sí que se controla mediante el joystick:



Perdón por mis compañeros gritones jajaja También están metidos con sus proyectos....

Aquí subo dos imágenes para apreciar mejor las conexiones:

11  International / Español / Re: problemas con ESC y arduino on: November 26, 2012, 05:28:51 am
http://arduino.cc/forum/index.php/topic,134258.0.html
Espero que te sirva.
Cualquier duda postealo.

Gracias!
12  International / Documentación / Re: Control motor brushless on: November 26, 2012, 05:23:27 am


Éste es un video del motor funcionando, pero con una version anterior de código. Aquí el armado se hace simplemente incrementando el valor de velocidad.

Si lo apreciáis bien se ve que la primera vez que se pulsa triangulo no pasa nada (velocidad=10) y rapidito le doy otra vez y hace la conexión. (velocidad = 20) después vuelvo a pulsar y arranca (velocidad=30) pero es inestable y seguidamente le doy otra vez rapido (velocidad=40 ) y el motor ya esta estable.

muchas gracias.

P.D: Triangulo ->  velocidad += 10
        Cruz ->         velocidad -= 10
        Cuadrado - > velocidad = 0
13  International / Documentación / Control motor brushless on: November 26, 2012, 04:41:03 am
Saludos a todos:
Me dispongo a hacer una buena explicación sobre el control de los motores brushles...
Tengo que decir que aunque hay información por ahí, para mí no fue nada concluyente a la hora de proseguir con mi proyecto.

Primero de todo empezaremos con la conexion de todo:

- Los tres cables del motor, directamente al ESC: 0 dudas, si resulta que gira al revés, canvia dos de los cables.
- De los 3 cables de la tipica conexión Servo RC: Marron o Negro directamente a masa (GND del Arduino). Amarillo, Naranja o Blanco a un pin PWM. El Rojo (+5V) no hace falta conectarlo.
- La alimentación del ESC es lo importante: Si utilizas una LiPo de buenas a primeras es probable que no llegues a entender el porqué del funcinamiento, y todos sabemos que éste es un punto muy importante.

Si como yo te dispones a montar tu quadricoptero utiliza una fuente de alimentacion ni que sea para hacer las primeras pruebas.
La conexion no es complicada: Positivo de la fuente al Rojo del ESC y negativo de la fuente al Negro del ESC.

Ahora biene un poco de teoria: A la hora de entender el funcionamiento del motor podemos pensar que simplemente cómo està alimentado y hay una patilla de control simplemente cuanto mas alto el valor del PWM mas rapido irá. Así sin más.
Realmente aunque el resultado sea así es importante entender el papel del ESC.

Cuando tú le mandas al ESC los valores a través del myservo.write(valor) lo que estas haciendo és que el ESC deje fluir mas o menos corriente de la bateria (o en este caso la fuente).

A ver si me esplico: Si tu le mandas el valor 50 al motor, éste no gira porque el valor sea 50. El motor gira porque el valor 50 está asociado a mas o menos 0,5A.
Si despues aumentas el valor a 60, verás (si eres inteligente y usas una fuente externa) que la corriente augmenta a unos 0,75A.

Al fin y al cabo creo que es sencillo de entender. Pero es sumamente importante para poderte orientar sobre los consumos que vas a obtener.

P.D: Los valores de 0,5A y 0,75A son orientativos, no me los se de memoria.

Ahora lo importante para el tipo que lleve varias pruebas y no se le mueva nadie.

Para controlar el motor:
Es necesario que se empieze con myservo.write(0). Seguidamente un delay (yo le pongo 100 per creo que con el minimo 15 ya funciona, te recomiendo 100 que esta probado smiley-wink ).

Ahora viene lo curioso (eso sí que no se el porqué). El famoso pitido que hay que oír al ESC para comprobar la conexion se obtiene con myservo.write(20). Podria ser 10 pero no. Es a 20. (Seguidamente el mismo delay).

Para que el motor de vueltas éste empieza a moverse con el valor 40.

Mi codigo de ejemplo (para controlar mi cuadricoptero utilizo el mando de la PS3 y para hacer éstas pruebas me va fenomenal ya que no hay cables enmedio. Así que lo importante es ver la estructura de funcionamiento del motor y sus valores):


Code:
#include <PS3BT.h>     // No importante para el motor
#include <Servo.h>

USB Usb;               // No importante para el motor
BTD Btd(&Usb);         // No importante para el motor

PS3BT PS3(&Btd);       // No importante para el motor

Servo myservo;         //Declaramos un objeto de tipo servo
int velocidad = 0;     //Declaramos y inicializamos la variable que controlará la velocidad

void setup()
{
  Serial.begin(115200);                                              //Utilizo el monitor serie para comprovar los valores que está recibiendo el motor (ésta velocidad es por el tema del mando).
  
  myservo.attach(2);                                                 //Configuramos el pin 2 para el servo
  
  if (Usb.Init() == -1) {                                            // No importante para el motor
    Serial.print(F("\r\nOSC did not start"));                        // No importante para el motor
    while(1);                                                        // No importante para el motor        
  }
  Serial.print(F("\r\nPS3 Bluetooth Library Started"));              // No importante para el motor
  arm();                                                             // Importantísima funcion: Es la funcion con la que conseguimos el armado (Y pitido) del ESC (Está al final del programa).
}
void loop()
{
  Usb.Task(); // No importante para el motor
  if(PS3.PS3Connected || PS3.PS3NavigationConnected)                  // No importante para el motor
  {
    if(PS3.getAnalogHat(LeftHatX) > 137 || PS3.getAnalogHat(LeftHatX) < 117 || PS3.getAnalogHat(LeftHatY) > 137 || PS3.getAnalogHat(LeftHatY) < 117 )
    {
      Serial.print(F("\r\nLeftHatY: "));
      Serial.print(PS3.getAnalogHat(LeftHatY));                              //Con estas dos líneas lo que hace el programa és mostrarnos por el monitor serie la palabra LeftHatY: y su valor(de 0 a 255)

      velocidad = map (PS3.getAnalogHat(LeftHatY), 118 , 0, 40, 90);         //Con ésto yo controlo el motor: hago un mapeado que consta de 118-(valor con el que empiezo) 0-(Valor de gas al maximo) 40- (VALOR MINIMO QUE NECESITA EL MOTOR PARA MOVERSE) 90-(Valor maximo que le dejo girar al motor.)
      myservo.write(velocidad);                                              //En el mapeado anterior meto cada valor a la variable velocidad constantemente y ahora se la paso al ESC.
      delay(15);                                                             // delay necesario
    }
    if(PS3.getButtonClick(TRIANGLE))                                         //PARA NUESTRA SEGURIDAD
    {      
      velocidad = 0;                                                         // Si el control se nos va de las manos pulso éste boton y el motor para ya que velocidad = 0
      myservo.write(velocidad);
      delay(15);
    }
  }
}
void arm(){                                                                   // Funcion del armado del ESC
  myservo.write(0);
  delay(100);
  myservo.write(20);
  delay(100);
}


Primero de todo perdon por el formato del codigo, nunca habia posteado y nose como hacerlo mejor.
Y en segundo lugar decir que voy a poner imagenes y algun video, pero tengo que hacer aún las fotos y videos....

Muchas gracias por su interes. Cualquier duda pusteen y comenten

Saludos!!!

14  International / Español / Re: problemas con ESC y arduino on: November 26, 2012, 03:51:56 am
Saludos:

Actualmente estoy trabajando con motores brushles... como me encontre que era complicado seguir lo que hay por la red me dediqué a probar....
Como veo que es tema dedicadillo justo ahora como tengo tiempo escribo un post en tutoriales intentando currarmelo.

Saludos!!!
15  International / Español / Re: USB Host Shield on: September 21, 2012, 05:48:50 am
Sin intención de publicitar otros sitios web, para quién le interese, aquí he abierto un hilo sobre la conversión de la libreria para utilizarla en chipKIT.
Si alguien pudiera aportar información al respecto casi mejor que lo publique aquí ya que tengo la intención de compartirlo con todos ustedes si les interesa el tema.
Pages: [1] 2