Este es el último avión que hago. Es muy difícil caer en todos los detallles pero lo que siempre cae son los aviones.
Volando lento se comportaba bien pero le ocurrió lo que al Lockheed P-38 Lightning. Perdió el control de la profundidad al hacer una barrena, perdiéndose barranco abajo entre la maleza.
sábado, 3 de septiembre de 2016
domingo, 7 de junio de 2015
Convertidor DC-DC 5V a 100V
martes, 28 de enero de 2014
Small Robot Design
Imagine that you can decide about what you want to do a project and improve your knowledge. I mean, you can choose learn about rfid, controlling motors, pid, sensors... all under arduino interface. This is SMALL ROBOT DESIGN IN CVUT.
In my case I chose to implement a gps in a quadcopter and my teacher was agree with the difficulty. User should send coordenades to quadcopter, it should receive, compare with onboard gps and change the speed motors to achieve the desired position. Some classmates decided to do the other stuff with the quadcopter: stability pid controller and data transfer.
martes, 3 de diciembre de 2013
Second task ROBOTS
It's time to begin with the next aim of the subject ROBOTS. In this case we're going to do something more difficult. In the video you'll see what we need to do.
And this are the rules more detailed:
- Before beginning the teacher will tell us witch ball is good (blue or red)
- +6 point per each good ball in the box (-6 if wrong ball)
- +2 point per each good ball in your field(-2 if wrong ball)
- We can use the black line to guide the robot
- We can throw balls to our oponnent
- Maximum measures 40*40cm.
Assessment on 12 of december, less than two weeks!! a lot of work to do!!!
lunes, 18 de noviembre de 2013
Lego Mindstorms Robot
One of the subjects that I'm studying in CTU university is ROBOTS. The goal of this subject is make the control of a robot Lego Mindstorm.
For the first project, we have done a line follower robot. We formed small teams. In ours we decided to do the control with a PID controller. Other teams decided to do it without PID (below you can see the code). After the contest, we test out that PID control is more effective.
Fig.1 |
Fig.2 |
Finally, the competition video:
jueves, 7 de noviembre de 2013
Biosfera
El regalo más extravagante.
Últimamente me he interesado por los sistemas biológicos autosuficientes, si a esto le sumamos que es el cumpleaños de un amigo que estudia biología tenemos un regalo muy muy raro: una biosfera!
Una biosfera es un sistema ecológico cerrado. Existe intercambio de energía pero no de materia.
Se sabe que es muy díficil mantener la vida de seres vivos más complejos que pequeñas gambas. Sin embargo, es fascinante todas las posibilidades que admite una de estas biosferas.
La URSS dedicó muchos esfuerzos para construir una biosfera que pudiese albergar humanos en su proyecto BIOS-3. Más tarde le siguió EEUU con Biosfera 2.
En mi caso he utilizado una pecera tapando la parte superior con un cristal y sellando con silicona.
En este superdibujo puedes ver los estratos de la pecera.
El resultado final de la pecera tras unas horas
Últimamente me he interesado por los sistemas biológicos autosuficientes, si a esto le sumamos que es el cumpleaños de un amigo que estudia biología tenemos un regalo muy muy raro: una biosfera!
Una biosfera es un sistema ecológico cerrado. Existe intercambio de energía pero no de materia.
Se sabe que es muy díficil mantener la vida de seres vivos más complejos que pequeñas gambas. Sin embargo, es fascinante todas las posibilidades que admite una de estas biosferas.
La URSS dedicó muchos esfuerzos para construir una biosfera que pudiese albergar humanos en su proyecto BIOS-3. Más tarde le siguió EEUU con Biosfera 2.
En mi caso he utilizado una pecera tapando la parte superior con un cristal y sellando con silicona.
En este superdibujo puedes ver los estratos de la pecera.
- La arena sirve para separar la turba del agua.
- La grava y las rocas sirven para separar el agua de la arena.
- El nivel del agua debe ser más bajo del que muestra la figura.
El resultado final de la pecera tras unas horas
domingo, 1 de septiembre de 2013
Robot para alimentar peces
En dos semanas marcho de erasmus para pasar un año en Praga. Volveré cada dos 3 meses y esto supone un problema para la integridad de mi pecera ya que necesita un oxigenador, rellenar el agua y dar de comer. Por suerte, existe la electrónica, para poder dar solución a estos problemas.
Para el oxigenador he utilizado una pequeña bomba de aire externa y sobre el mismo tubo que lleva el aire a la pecera he hecho agujeros y la he distribuido en forma de S en el fondo. Por tanto no se ve y el aire se distribuye mejor que con un difusor de esponja.
Para rellenar el agua he colocado un bidón de 25l a mayor altura que la pecera, un tubo y una boya de urinario en el extremo de la goma que da a la pecera. De esta forma consigo mantener la cota ya que cada semana baja un cm. Si la solución no te convence, aquí encontrarás más
Y por último, lo más interesante y por lo que me he decidido a hacer esta entrada: el robot para alimentar a los peces!
Como podéis ver el montaje es extremadamente simple.He colocado un zócalo de 9 pines por si quisiera añadir un tercer servo más adelante.
Para dejar la tensión de entrada a 3.6V he utilizado un cargador a 4.5V y un diodo en serie.
Si tenéis alguna duda preguntad, preguntad!! ACTUALIZACIÓN 20/11/13 Debido a un fallo en el sellado la pecera se ha vaciado por completo por que se da por terminado el testing del robot. Hasta entonces a funcionado sin problema. Comparando con otros modelos comerciales, sin duda, son más eficientes y baratos. Pero ninguno de ellos es tan geek!!
Para el oxigenador he utilizado una pequeña bomba de aire externa y sobre el mismo tubo que lleva el aire a la pecera he hecho agujeros y la he distribuido en forma de S en el fondo. Por tanto no se ve y el aire se distribuye mejor que con un difusor de esponja.
Para rellenar el agua he colocado un bidón de 25l a mayor altura que la pecera, un tubo y una boya de urinario en el extremo de la goma que da a la pecera. De esta forma consigo mantener la cota ya que cada semana baja un cm. Si la solución no te convence, aquí encontrarás más
Y por último, lo más interesante y por lo que me he decidido a hacer esta entrada: el robot para alimentar a los peces!
Como podéis ver el montaje es extremadamente simple.He colocado un zócalo de 9 pines por si quisiera añadir un tercer servo más adelante.
Si tenéis alguna duda preguntad, preguntad!! ACTUALIZACIÓN 20/11/13 Debido a un fallo en el sellado la pecera se ha vaciado por completo por que se da por terminado el testing del robot. Hasta entonces a funcionado sin problema. Comparando con otros modelos comerciales, sin duda, son más eficientes y baratos. Pero ninguno de ellos es tan geek!!
lunes, 29 de abril de 2013
Robot fijo de 3 ejes con MSP
Para construirlo necesitamos un servo por eje . En la foto aparece uno de más debido a que pensaba en añadir una garra móvil al extremo que al final no he montado.
El servo de 40 gramos será la base del montaje y los otros dos, de 9 gramos estarán alojados en el brazo.
Para el brazo he usado una tira de contrachapado de 3mm y de unos 8mm de ancho (restos de madera). Los brazos de servo van atornillados.
Foto del conjunto:
Como se puede ver, el servo base está sujeto por un gato.
CÓDIGO:
El código está redactado en ENERGIA y es sencillo.
Se importa la librería Servo, se definen los pines de señal y se va dando órdenes a cada servo.
El código básico es:
#include <Servo.h>
Servo G; //servo Giro Base
Servo BI; //servo Brazo Inferior
Servo BS; /servo Brazo Superior
void setup()
{
G.attach(8); //establece el pin 8 como salida de señal para el servo G
BI.attach(6); // "" ""
BS.attach(7); // "" ""
}
void loop()
{
//_____________Posición al "azar"
G.write(170);
delay(100); //Los delay son para suavizar y armonizar los movimientos
G.write(90);
BI.write(150);
BS.write(120);
delay(500);
//_____________Posición recogido
delay(1000);
G.write(26);
delay(500);
BI.write(8);
delay(500);
BS.write(0);
delay(500);
}
La forma de ordenar al servo una posición es NombreServo.write(Posición), siendo Posición un número del 0 a 180, el abanico de giro del servo.
Vídeo con el programa que cambia de sitio una caja:
(Acabo de darme cuenta de que he perdido todo el código que sale en el vídeo :S )
Evidentemente el programa es algo más complicado que el de arriba, sin embargo no tiene ninguna instrucción esencial nueva. Son todo combinaciones de write's y delay's. Con unas horas se le va cogiendo el truco.
Y eso es todo por hoy :)
domingo, 16 de diciembre de 2012
Arduino: medidor de velocidad
El objetivo del siguiente montaje es medir la velocidad de un balín disparado por una carabina sin tener contacto con la bala. Este circuito es de muy fácil realización y programación.
Material necesario:
- 2xR 330ohm
- 2xR 1kohm
- 2xLED
- 2xLDR
El montaje es el siguiente:
Los leds y los ldr están enfrentados en parejas.
Los rectángulos blancos son de depron, para hacer que los ldr dependan únicamente de la luz que le llega del led.
El led verde no es necesario.
Principio de funcionamiento:
- Antes de pasar la bala la resistencia del ldr es baja (le llega luz de led)
- Cuando la bala está pasando por ldr1 saca por el puerto el tiempo que lleva el arduino corriendo el programa.
- [En este caso mientras pasa la bala por ldr1 toma 5 medidas]. Primera parte horizontal de la gráfica.
- Cuando termina de pasar por el ldr1 se produce un gran incremento de tiempo (comparado con el incremento de tiempo entre las 5 primeras medidas. Vértical en la gráfica.
- Cuando comienza a pasar por ldr2 se ha producido el gran incremento de tiempo. [En este caso la bala impacta contra ldr2 quedando aislado de la luz y por tanto enviando indefinidamente micros()]. Segunda parte horizontal de la gráfica.
Pasos a seguir:
- Disparamos
- Copiamos los datos de consola y pegamos en Excel.
- Hacemos las columnas A y B
- Calculamos el intervalo de salida de ldr1 y entrada a ldr2 (Δt). [en este caso 1736-680=1056]
- Medimos la distancia entre los 2 ldr (Δe). [en este caso 7cm]
- v=Δe/Δt
Columna B: incremento de tiempo entre cada fila de la columna A
CÓDIGO:
int LDR1=0;
int LDR2=0;
int ledpin=13; //solo se enciende cuando pasa la bala, no es necesario
void setup()
{
pinMode(13,OUTPUT);
Serial.begin(9600);
}
void loop()
//Los valores de 560 y 870 dependen del ldr utilizado y
//de la luz que le llega. Por tanto se debe ajustar antes
//del primer disparo.
{
LDR1=analogRead(A0);
if(LDR1>=560) //ajustar
{
digitalWrite(ledpin,HIGH);
Serial.println(micros());//este es el tiempo 1
}
else
{
digitalWrite(ledpin,LOW);
}
LDR2=analogRead(A1);
if(LDR2>=870) //ajustar
{
digitalWrite(ledpin,HIGH);
Serial.println(micros());//este es el tiempo 2
}
else
{
digitalWrite(ledpin,LOW);
}
}
Se deben ajustar unos 5 puntos más del valor LDR1 Y LDR2 que salga aquí, es decir si aquí sale LDR1=800 pondremos if(LDR1>=805)...
int LDR1;
int LDR2;
void setup()
{
Serial.begin(9600);
}
void loop()
{
LDR1=analogRead(A0);
LDR2=analogRead(A1);
Serial.print(LDR1);
Serial.print(",");
Serial.println(LDR2);
delay(1000);
}
Suscribirse a:
Entradas (Atom)