Go Down

Topic: Circuito control de luces de navegación, ¡Ayuda porfavor! (Read 2371 times) previous topic - next topic

rbnosma

Mar 29, 2012, 09:56 pm Last Edit: Apr 04, 2012, 07:20 am by rbnosma Reason: 1
Hola, me presento, soy Rubén, soy aeromodelista y me quiero iniciar en el mundo de la electrónica avanzada y del arduino, un miembro de otro foro me recomendó el arduino por lo flexible que es, pero necesito urgentemente un circuito que me controle unos led luxeon de 1W para que simule las luces de navegación, de posición y de aterrizaje de un avión y que pueda controlar desde la emisora. Si hay alguien tan amable y dispuesto a ayudarme y explicarme cómo hacer el circuito y programar el arduino, se lo agradecería en el alma, espero vuestras opiniones y respuestas.
Gracias de antemano. Un saludo.

curro92

Hola,
creo que nadie se va a poner a hacer tu circuito y tu programa. Este foro es para ayudar, pero el trabajo lo tiene que hacer cada uno. Cómprate un Arduino, empieza a practicar: encender un LED, mover un motorcito cuando aprietes un pulsador... Cuando pasen 6 meses, y lo hayas conseguido, podrás empezar con un módulo RF. Y cuando pase un año, a lo mejor, consigues hacer algo que se aproxime a lo te planteas.
Según yo lo veo, es el único camino que hay.



chiva

Si lo necesitas muy urgentemente, siempre puedes acordar con alguien un precio para realizar el proyecto
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

chocala

Yo te podría ayudar, supongo que usarias un canal auxiliar (de los de on-off) conectado al arduino, no?
Saludos.

PascuaL

Yo te ayudo en el código si quieres, no te voy a cobrar nada esto es una plataforma libre.
Necesito saber como se comunican.

chiva

@a9965: libre y gratis son dos cosas totalmente distintas, y una de ellas no implica ni lleva implícitamente la otra.
Por esa misma regla de 3, todos los programadores de Python, PHP, etc deberían trabajar gratis.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

PascuaL

No está pidiendo gran cosa.Un código para encender un juego de leds no es nada.
Vamos, yo no le cobraría a nadie por eso, otra cosa es que te pida un código difícil y costoso.

chiva

Parece que también necesita el driver de los leds también, pero bueno, que sólo era una opción, yo no tengo ni idea de emisoras así que tampoco es que fuera a cogerlo.
Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

rbnosma

Hola de nevo a todos, lamento no haber podido contestar antes pero tuve estos días un poco liados, en un principio lo asignaría a un canal controlado por un interruptor de 3 posiciones, la primera todo apagado, la segunda las luces de posición y navegación encendidas y en la tercera posición también se encienden las de aterrizaje.
Pido ayuda porque ami nadie me enseñó cómo se diseña un circuito, lo único que me han enseñado es la ley de ohm, cómo soldar, y lo que son las resistencias, condensadores, diodos... en definitiva, estoy aprendiendo a las bravas. Desde que empecé en el aeromodelismo estoy tratando de construir yo las placas que puedo y tratando de averiguar el porqué de una cosa o de otra. Además estoy acabando un avión con un amigo y necesito este circuito para poder controlar los led que tengo para instalar.
Si alguien tiene alguna sugerencia estoy abierto a cualquier comentario.

PascuaL

Pero eso no consiste en decir:"asignar un canal a la emisora que tenga un conmutador". Bajo mi punto de vista eso es un poco complicado, además yo no tocaría algo hecho ya. ¿Que haría yo? Un par de arduinos con un módulo de RF bidireccional. Con esto consigues hacer un módulo para tu avión, con muchas más posibilidades que control de luces (temperatura,presión,batería...), es decir, harías lo que quisieras.

Ya me dices algo. un saludo


Sergegsx

cambia el titulo del post a algo mas indicativo de lo que contiene. la mayoría de los post son pidiendo ayuda y si todos pusiésemos "necesito ayuda" el foro seria un caos.

rbnosma

Hola, pido perdón por el título del post, voy a ver cómo puedo cambiarlo. encuanto al circuito, no me quería complicar tanto teniendo que hacer un emisor y un receptor, estoy deacuerdo en que sería mucho más útil, pero sólo necesito que me controle las luces. Hace algo de tiempo, el que me había recomendado el arduino para este proyecto hizo un proyecto para controlar un motor eléctrico desde la emisora con un interruptor de 3 posiciones, creo que el programa tendría que ser igual o casi y sólo habría que cambiar las líneas de programación que controlan las salidas, pero eso es lo que yo entiendo, no sé si será así, os dejo la programación que hizo para el otro proyecto y así podéis hecharle un vistazo.


#define led 3
#define emisora 6
#define motor 10
#define servo 5
#define intensidad 0
#define tension 5

int pulso = 1500;
boolean corriente_max = false;
int corriente=0;
int voltage =0;
boolean paso = false;
boolean paso1 = false;
unsigned long tiempo2=0;

int ancho = 1500;
unsigned long tiempo=0;
unsigned long tiempo1=0;
boolean senal=false;

void setup()
{
  pinMode(servo,OUTPUT);
  pinMode(emisora,INPUT);
  pinMode(led, OUTPUT);
  pinMode(motor,OUTPUT); 
}

void loop()
{
  // Zona programación control servo
  if((millis() >= (tiempo + 20)) && (senal == false))
  {
    digitalWrite(servo,HIGH);
    tiempo1 = micros();
    tiempo = millis();
    senal = true;
  }
 
  if((micros() >= (tiempo1 + ancho)) && (senal==true))
  {
    digitalWrite(servo,LOW);
    senal = false;
  }
  // Fin zona programacion servo.
 
  digitalWrite(led,HIGH);
 
  if ((millis() >= tiempo2 + 300) && senal == false)
  {
    tiempo2 = millis();
    pulso = pulseIn(emisora,HIGH);  //leo la señal de la emisora cada medio segundo
  }
 
  corriente = analogRead(intensidad);  //leo la corriente
  if (corriente > 800){corriente_max = true;}  //Si la intensidad sobrepasa los 2A activo el flag corriente_max 500
  voltage = analogRead(tension); //leo la tensión de la bateria
 
  if (pulso < 1350 && pulso > 800) //Si el stick esta al minimo 1000us
  {
    motor_off();  //apago el motor
    ancho = 900;  //mando al servo al extremo
  }
  if (pulso > 1350 && pulso < 1785) //Si el stick esta a mitad 1500us
  {
    motor_off();  //apago el motor
    ancho = 1000;  //mando al servo al centro
  }
  if (pulso > 1785 && pulso < 2200) // Si el stick esta al maximo 2000us
  {
    motor_on();  //enciendo el motor
    ancho = 1000;    //mando al servo al centro
  }
  microsreset();
}

void motor_on() //rutina de encendido
{
  if (corriente_max == true) //si la corriente ha llegado al limite
  {
    motor_bloq();      //bloqueo el motor
  }
  else if (corriente_max == false && paso == false)  //si la corriente es normal, y aun no he arrancado el motor
  {
    for (int x=0;x<255;x++)    //arranco el motor de forma suave
    {
      analogWrite(motor,x);
      delay(5);
      paso = true;
    }
  }
}

void motor_off()    //rutina de apagado de motor
{
  analogWrite(motor,0);
  corriente_max = false;
  paso=false;
  paso1=false;
}

void motor_bloq()    //rutina de bloqueo de motor
{
  if(paso1 == false)  //si no he apagado el motor previamente
  {
    for (int x=255;x>10;x--)  //lo apago de forma suave
    {
      analogWrite(motor,x);
      delay(5);
      paso1 = true;
    }
  }
  analogWrite (motor,5);    //y lo dejo un poco forzado para que no gire en sentido opuesto
}


boolean pasamitad = false;

void microsreset()
{
  if(micros()>=2294967295 && pasamitad==false)
  {
    pasamitad=true;
  }
  if(micros()<=100 && pasamitad==true)
  {
    pasamitad=false;
    tiempo1 = 0;
  }
}


rbnosma

Ese circuito está  conectado al receptor de la emisora con un cable igual al de los servos.

PascuaL

El código está claro, pero no se como hace para entenderse con la emisora.Veo que tiene algo que es de tipo INPUT, pero no se como se comunica. Podrías preguntarle y luego decirnos.

Go Up