Con la placa arduino ya funcional, y esperando los esc y motores, solo me queda seguir con el cerebro de la bestia, asi que me he puesto a instalar la libreria ServoTimer2.h en arduino. Para sorpresa mia no es compatible con el nuevo entorno arduino 1.0 y he tenido que buscar una version modificada que si lo sea.
La libreria: ServoTimer2
Agradecimientos a codigo
jueves, 15 de agosto de 2013
miércoles, 14 de agosto de 2013
Arduino Stand-Alone II (usbtinyisp)
Podria sacar de la pcb Quadcopter_V0 el chip Atmega328 cada vez que quisiera modificar la programacion, pero seria mucho estres mecanico innecesario. Mi placa ni tiene ni tendra usb, asi que le he habilitado a la placa patillaje para ISP.
MISO 1------- 2 VCC miso pin18,vcc pin7
SCK 3------- 4 MOSI sck pin19, mosi pin17
RESET 5------- 6 GND reset pin1, gnd pin8
MISO 1------- 2 VCC miso pin18,vcc pin7
SCK 3------- 4 MOSI sck pin19, mosi pin17
RESET 5------- 6 GND reset pin1, gnd pin8
martes, 13 de agosto de 2013
Arduino Stand-Alone
Como en cada proyecto, la idea de construir algo es, que en el camino pueda aprender todo lo posible. Por eso estoy diseñando una placa arduino especifica para Quadcoper_V0, seria mucho mas rapido y facil comprar algunos de los sistemas, pero prefiero orientar también este proyecto hacia el aprendizaje .
El circuito en protoboard (el led rgb indicador de corriente es lo mas xD )
De momento es solo una placa arduino con convertidor de voltaje a 5v, led indicador de alimentacion y led en pin13. Dejo la pcb y diagramas en Eagle, tambien un pdf para imprimir.
El circuito en protoboard (el led rgb indicador de corriente es lo mas xD )
De momento es solo una placa arduino con convertidor de voltaje a 5v, led indicador de alimentacion y led en pin13. Dejo la pcb y diagramas en Eagle, tambien un pdf para imprimir.

Agradecimientos a http://txapuzas.blogspot.mx/
miércoles, 7 de agosto de 2013
MMA7260 y Arduino
Tengo un acelerometro de 3 ejes MMA7260 y estoy experimentando con el, pero creo que no es lo apropiado para estabilizar a Quadcopter V0. Estoy buscando un Wii motion plus a buen precio para quitarle los giroscopios y usar estos en el proyecto.
El codigo inicial del acelerometro mma7260 fue sacado de aqui:
Y aqui la primera modificacion
El codigo inicial del acelerometro mma7260 fue sacado de aqui:
Y aqui la primera modificacion
#define DEBUGMODE
#define _360div2xPI 57.29577951
#define _5000div1023 4.887585533
#define MMA7260_RESOLUTION 800 //0.8 v/g -> resolucion de 1.5g -> 800mV/g
#define MMA7260_VOLTAGE 3300.0; //mv voltage al que está conectado el acelerómetro
const float ZOUT1G = 2450; // mv Voltage en Zout a 1G
const float ZOUT0G = 1650; // mv Voltage en Zout a 1G
#define MMA7260_ZOUT_1G 850 // mv Voltage en Zout a 1G
const float XOUT1G = 2450; // mv Voltage en Zout a 1G
const float XOUT0G = 1650; // mv Voltage en Zout a 1G
const float YOUT1G = 2450; // mv Voltage en Zout a 1G
const float YOUT0G = 1650; // mv Voltage en Zout a 1G
#define NADJ 50 // Número de lecturas para calcular el error
// Entradas analógicas donde van los sensores
#define XAXIS_PORT 0
#define YAXIS_PORT 1
#define ZAXIS_PORT 2
// Salida digital del led de la placa
#define LEDPIN_PORT 13
float XError,YError,ZError;
float z,x,y;
float AccelAdjust(int axis)
{
float acc = 0;
for (int j=0;j < NADJ;j++)
{
float lectura=analogRead(axis);
acc = acc + (lectura*_5000div1023);
delay(11); //número primo para evitar ciclos de lectura proporcionales
}
return acc/NADJ;
}
void setup()
{
Serial.begin(9600); // 9600 bps
pinMode(XAXIS_PORT,INPUT);
pinMode(YAXIS_PORT,INPUT);
pinMode(ZAXIS_PORT,INPUT);
pinMode(LEDPIN_PORT, OUTPUT);
digitalWrite(LEDPIN_PORT, HIGH);
XError = AccelAdjust(XAXIS_PORT);
YError = AccelAdjust(YAXIS_PORT);
ZError = AccelAdjust(ZAXIS_PORT);
ZError = ZError - MMA7260_ZOUT_1G;
digitalWrite(LEDPIN_PORT, LOW);
#ifdef DEBUGMODE
Serial.println("Ajustado acelerometro eje X");
Serial.print("Error de X= ");
Serial.println(XError);
Serial.println("Ajustado acelerometro eje Y");
Serial.print("Error de Y= ");
Serial.println(YError);
Serial.println("Ajustado acelerometro eje Z");
Serial.print("Error de Z= ");
Serial.println(ZError);
#endif
}
void loop()
{
x=analogRead(XAXIS_PORT);
y=analogRead(YAXIS_PORT);
z=analogRead(ZAXIS_PORT);
unsigned long tt = micros();
float aax = ((x*_5000div1023)-XError)/MMA7260_RESOLUTION;
float aay = ((y*_5000div1023)-YError)/MMA7260_RESOLUTION;
float aaz = ((z*_5000div1023)-ZError)/MMA7260_RESOLUTION;
float rho = atan(aax/sqrt((aay*aay)+(aaz*aaz)))*_360div2xPI;
float phi = atan(aay/sqrt((aax*aax)+(aaz*aaz)))*_360div2xPI;
float theta = atan(sqrt((aay*aay)+(aax*aax))/aaz)*_360div2xPI;
tt = micros()-tt;
#ifdef DEBUGMODE
/* Serial.print(" x");
Serial.print(aax);
Serial.print(" y ");
Serial.print(aay);
Serial.print(" z");
Serial.print(aaz);
Serial.println();
Serial.println(); */
Serial.print("X ");
Serial.print(rho);
Serial.print(" Y ");
Serial.print(phi);
Serial.print(" Z ");
Serial.print(theta);
Serial.println();
// Serial.print("mS");
// Serial.print(tt);
#endif
delay(1000);
}
martes, 6 de agosto de 2013
Quadcopter con arduino
Estas ultimas semanas he estado recopilando información que me ayude en el diseño de un quadcoter, aqui ire compartiendo lo que considere interesante.
Links:
Links:
- Como empezar http://blog.tkjelectronics.dk/2012/03/quadcopters-how-to-get-started/
- Helice " / motor / rpm http://www.rcgroups.com/forums/showthread.php?t=1387525
- Video con tip estabilizacion
- ESC http://diebotreise.blogspot.mx/2011/12/como-controlar-un-motor-brushless-con.html
- quadWiduino http://www.rcgroups.com/forums/showthread.php?t=1332876
- kalman filter sensores Wii http://forum.arduino.cc/index.php/topic,8544.0.html
- arduino wii http://randomhacksofboredom.blogspot.mx/2009/06/wii-motion-plus-arduino-love.html
- Calculadora RC http://www.ecalc.ch/
- Calculos acelerometro 3 ejes http://www.hobbytronics.co.uk/accelerometer-info
- presion https://www.sparkfun.com/datasheets/Components/General/BST-BMP085-DS000-05.pdf
- codigo sensor de presion http://bildr.org/2011/06/bmp085-arduino/
- Arduino standalone (imagen sacada de aqui)

Salu2
jueves, 25 de agosto de 2011
Basubot VI
Buscando la forma de darle alguna forma de sensado de distancia a Basubot, me he encontrado con la forma de usar el A2610 de un ratón óptico que tenia en desuso, me he encontrado con esto . La libreria que se ofrece en el link anterior, permite obtener coordenadas x e y, asi como la velocidad. Enredando un poco he conseguido modificar la libreria para sacar algun valor de imagen, esto promete.
Como dije el motor es muy potente, asi que para controlar la traccion por software he añadido al montaje un sensor hall procedente de un ventilador de pc, de paso me sirve para medir velocidad, aceleracion y distancia recorrida.
Y así va de momento, programando por no llorar ... que llegue ya el cargador !! xD
Lo que si llego fue el programador TinyUSB, monte un arduino casero como ya dije, y puse el arduino duelaminove sin micro como programador de sketch, alimentación y cable I/O con el pc.
Lo que si llego fue el programador TinyUSB, monte un arduino casero como ya dije, y puse el arduino duelaminove sin micro como programador de sketch, alimentación y cable I/O con el pc.
lunes, 22 de agosto de 2011
Basubot V
Ya llego el motor 55A brushless pedido a china, y un par de baterías 3s 3000mah 35C, no me he podido resistir y se lo he montado a Basubot. Solo tengo por aquí un ESC 80A de avión, y ese le he montado mientras termino el hecho por mi.
Me he quedado muy pero que muy corto con el ratio de reducción de la transmisión, hay que tocar el mando de la emisora con mucho cuidado, solo los primeros mm dan una velocidad controlable, lo cual mas que un problema es una alegría, al ir todo esto controlado por arduino y un acelerometro, espero poder programarlo para que controle a velocidades que yo no puedo. Con el tiempo añadiré mas sensores, de momento mejor por partes.
Otro "pequeño percance" mas a la lista, como no tengo cargador lipo, la prueba la hice con una bateria li.ion 12v 1000 mah, fueron 5 minutos alucinantes, pero a sido demasiada demanda de corriente y como bien preví, se ha debido comunicar. En el patio en una cacerola la tengo calentita calentita ...
La idea final es hacer un modulo lo mas compacto posible, así que el arduino es casero. Atmega328p-pu y acelerometro mma7260. De momento en bread board.
Es un vampiro de energía, pero también un potentisimo motor. ( si, has visto bien, esta sujeto con epoxy xD )
Y asi va el pequeñin.
Me he quedado muy pero que muy corto con el ratio de reducción de la transmisión, hay que tocar el mando de la emisora con mucho cuidado, solo los primeros mm dan una velocidad controlable, lo cual mas que un problema es una alegría, al ir todo esto controlado por arduino y un acelerometro, espero poder programarlo para que controle a velocidades que yo no puedo. Con el tiempo añadiré mas sensores, de momento mejor por partes.
Otro "pequeño percance" mas a la lista, como no tengo cargador lipo, la prueba la hice con una bateria li.ion 12v 1000 mah, fueron 5 minutos alucinantes, pero a sido demasiada demanda de corriente y como bien preví, se ha debido comunicar. En el patio en una cacerola la tengo calentita calentita ...
La idea final es hacer un modulo lo mas compacto posible, así que el arduino es casero. Atmega328p-pu y acelerometro mma7260. De momento en bread board.
Es un vampiro de energía, pero también un potentisimo motor. ( si, has visto bien, esta sujeto con epoxy xD )
Y asi va el pequeñin.
Siento no poder poner vídeo, cuando llegue el cargador lipo nuevo subiré.
domingo, 7 de agosto de 2011
Sustitución de celda en lipo 3s
Dos baterías lipo compradas en ebay a un vendedor cuyo mail ya no existe, las dos rotas a la primera carga. No se si el cargador Imax B3 comprado al mismo vendedor rompio las baterias, o las baterias rompieron el cargador, pero el recuento de perdidas es considerable, dos lipo 3s a la basura y un cargador roto.
También esta el riesgo de incendio si no hubiera estado en casa vigilando como cargan, ya que me parecio asombroso lo rapido que se gastaron, llegando a 3.2v por celda en un par de minutos con una carga de maximo 4A, y las vigile. Y justo, la primera comienza a incharse, la saco al patio en un cubo metalico por si sale ardiendo ( ahi sigue ) y pongo a cargar la otra, el cargador hace chispas ... mido con voltimetro la segunda batería comprada al mismo vendedor y tambien tiene una celda rota.
Después de intentar mandarle un mail al vendedor pidiendo el reembolso me he puesto a hacer una bateria 3s de las 4 celdas que quedan sanas y a salido esto:
Primero quitar la envoltura de plástico con cuidado de no perforar las celdas.
Con cuidado de no hacer demasiada fuerza mecánica, separamos la celda dañada ( la hinchada en este caso, la celda rota de la otra batería aunque da un voltaje de 1.7v no muestra síntoma visible de deterioro).
La celda mas dañada, separada del conjunto con el soldador y un poco de flux para fundir antes el estaño, de cara a no calentar de mas, y por que no decirlo, con cierto acongoje durante la operación. Si haces esto cuando la desmontes llévala a un centro de recogida de pilas lo antes posible y no la dejes sin supervision en tu casa, y si la dejas sola mejor en una caja ignífuga de metal, si la celda esta hinchada es una tanto % elevado de que salga ardiendo, y esta reacción en particular de las baterías de polímero de litio es muy bestia, si no he leído mal arden a 800ºc.
Una celda en buen estado procedente de la otra batería para sustituir la estropeada.
Comprobamos que la celda no este por debajo de 3v así como su polaridad.
Es muy importante no cambiar los polos, aburrete de mirar con el voltimetro, si te cuelas al unir las celdas chispazo enorme y riesgo de explosión de estas, rotura asegurada de la batería bla bla. Ten cuidado de no hacer corto con los pinchos del voltimetro también.
Soldamos la "nueva" celda al pack 3s procurando calentarlo lo menos posible, mejor con flux.
Medicion correcta del conjunto 3s (después de agotar la batería li-ion de 10 celdas 1200mA la batería reparada da 12.23v, todo esto moviendo a basubot)
Un pelin de cinta kapton en la zona de soldado.
Y ahora tenemos una batería de la que no me fió por la basura de calidad que tiene de fabrica, por vieja o por lo que sea. Ahora la estoy usando como alimentación del arduino, receptor y servo de basubot. Si alguien tiene una buena batería con una celda rota por un exceso este texto le puede servir, no tiene mucha complicación, pero vemos antes de abrir como es una batería de 3 celdas de polímero de litio sin el embalaje y como están unidas sus celdas.
No recomiendo usar lipo de baja calidad como esta para nada, y si se hace no cargar sin supervision, estar muy atento a que no se infle ninguna celda, no provocar cortos, no descargar por debajo de 3.2v y usar cargadores de calidad de bajo C de carga con balanceador de voltaje en celdas, también mejor no descargar a demasiada velocidad. Yo he terminado usándola como alimentación del arduino, receptor y servo, dada la poca descarga demandada para esto no creo me de mas problemas después de la reparación, siempre se rompe el miembro mas débil de un conjunto, y en mi caso ya se rompieron esas celdas, lo mismo mi lógica hasta funciona xD.
viernes, 5 de agosto de 2011
Basubot IV - parte II xD
Ya se acerca el día de estrellar el robot contra un bordillo por cualquier motivo lógico, pero solo una vez sucedido eso si ...
Haciendo honor a su nombre, la transmisión de Basubot es parte del coche de nitro metano (eje y corona dentada) pero sin el sistema de frenado ni los rodamientos ni demás del motor de combustión. Y de rodamientos he usado un par de alta velocidad montados sobre la parte con imán de un motor de disco duro, de momento solo con algo de epoxy, en la imagen se ve mejor.
Haciendo honor a su nombre, la transmisión de Basubot es parte del coche de nitro metano (eje y corona dentada) pero sin el sistema de frenado ni los rodamientos ni demás del motor de combustión. Y de rodamientos he usado un par de alta velocidad montados sobre la parte con imán de un motor de disco duro, de momento solo con algo de epoxy, en la imagen se ve mejor.
jueves, 4 de agosto de 2011
Basubot IV
Ya va tomando forma. Lleno de mugre mires donde mires, pero ya no desmotiva al mirarlo ... dirección funcionando y control de velocidad funcionando. He tenido algún problema con la resistencia de sensado y de momento tengo los pines SENSE del L298 conectados a GND. Como se ve he terminado pegando la protoboad al disipador de basubot.
Uno de los motores 12v reciclados. Como se ve en el video este no esta conectado a transmisión, y aunque pequeña, me tocara ponerle una reductora. De momento para pruebas un trozo de cinta aislante y a mirar solo de reojo por si sale volando xD
Como prefiero reducir la cantidad de PCBs a usar de momento todo va en protoboard, este proyecto realmente es mi forma de aprender sobre motores CC, formas de control, etc. y así aunque algo lió seguir las pistas, es mucho mas rápido que una placa nueva cada metida de pata, y mas económico...
Suscribirse a:
Entradas (Atom)



























