PDA

Ver la versión completa : Proyecto Mezclador para veleros con flaps


JoaquinCF
01/01/2013, 20:53
Tengo un velero modelo "Ideal" de Topmodel (similar al Fascination y Grafas), y no veia forma de resolver cómo hacer subir los servos de alerones cuando activaba los flaps para frenar el avión, y al mismo tiempo usar un solo canal de alerones dado que el EagleTree que estoy usando sólo dispone de un canal y es imprescindible tener los alerones a través del Eagletree para que funcione la vuelta a casa.

Como solución chapucera dejé uno de los servos de alerones sin pasar por el EagleTree, por lo cual se queda un solo alerón controlado por EagleTree. Dado que este velero es relativamente lento en los giros, al quitarle un alerón el giro para volver lo hacía de forma limitada, y con viento fuerte había veces que no conseguía girar.

Intenté solucionarlo con un mezclador del tipo elevón, pero las salidas de los mezcladores salen al 50% de la entrada, por lo que se reducía drásticamente el mando de los flaps y de los alerones.

Como solución "definitiva" he programado la función de mezcla en una placa Arduino-mini, con las siguientes funcionalidades:
- Memoriza los valores máximos y mínimos de alerones y flaps, y el porcentaje de mezcla
- La mezcla se inicia en el valor mínimo programado de flaps, por lo que puede dejarse un cierto nivel de flaps sin activar frenos. Esta función permite activar ligeramente los flaps para volar a térmica sin que los alerones suban para frenar
- Al desplazar los alerones hacia arriba, cambia la pendiente de la mezcla de forma que al girar al máximo a un lado, los dos alerones se mueven a sus posiciones extremas con independencia del estado de los flaps´, de forma continua y sin escalones. Por ejemplo, si los alerones están subidos un 50%, el que tiene que subir sólo le falta un 50% de recorrido pero al otro le falta el 150%; con este mezclador se consigue seguir alcanzando el límite máximo en los dos alerones al mover la palanca de alerones a los extremos.
- El consumo es de 14 mA (17 cuando se enciende el led)

Para funcionar hace falta:
- Plana mini-arduino o similar
- programador STK-500 (yo uso el de Olimex), o hacerlo con las herramientas de arduino (yo no las he usado)
- Un conversor rs232 a USB con niveles TTL.. los hay baratos en ebay
- Para programar los valores, conectar el puerto serie del arduino a un terminal serie, y hacer un puente entre los terminales PC0 y PC1 al arrancar, y seguir las indicaciones dadas en pantalla.

Dejo el programa fuente, y el esquema que he usado (cambiar la extensión del arcivo a zip), por si le es útil a algún otro forofo de veleros. Los expertos en Arduino seguro que sabrán como evitarse usar el programador STK500 y usar directamente la puerta serie a traves del bootloader.

Saludos y buenos vuelos

juan ruiz
02/01/2013, 10:00
Un buen aporte,seguro que algun compañero le vendra bien.


Saludos

jggkin
02/01/2013, 19:10
El aporte es bueno pero, yo lo he solucionado con un mezclador de cola en V de GWS. Es pequeño, eficiente y muy económico.

Un saludo.

JoaquinCF
03/01/2013, 09:30
El aporte es bueno pero, yo lo he solucionado con un mezclador de cola en V de GWS. Es pequeño, eficiente y muy económico.

Un saludo.

El mezclador que tenía me limitaba al 50% del recorrido. Si el GWS suma (y resta) el 100%, es una solución eficiente especialmente para solucionar el problema del RTH. Las ventajas de este mezclador que propongo, al estar diseñado específicamente para este fin son las que he mencionado antes:
- Límite de los servos de alerones ajustable. Con el mezclador corres el riesgo de forzar servos, si no aguantan ir al máximo físico de recorrido
- Cuando activas los flaps, los alerones siguen teniendo el 100% del recorrido

En mi opinión, éstas ventajas son interesantes si el avión es perezoso en giros y necesitas apurar los recorridos con los flaps activos.

Joaquín

elossam
16/01/2013, 18:57
Joaquin. ¿con esa placa y programa los servos de alerones pueden ademas disponer de diferencial?

JoaquinCF
19/01/2013, 20:53
En mi caso el diferencial lo hice mecánico (girando el plato del servo hacia atrás), por lo que no precisé programarlo.
Me parece una buena idea y lo programaré en cuanto vuelva del viaje de trabajo en que estoy, en un par de semanas.
Aprovecho para comentar que la placa miniarduino a 5V funciona muy bien con mi emisora Futaba, pero cuando lo usé con el Dragon-Link tenía muchos problemas de ruido de servo que los solucioné con una placa arduino a 3.3V.

elossam
22/01/2013, 13:11
Yo tambien uso diferencial mecánico pero solo llego a un 50% y necesito entre 75 y 80%. ¿La placa que usas es algo como esto? http://www.diydrones.com/forum/topics/mini-arduino-kickstarter-launch

JoaquinCF
25/01/2013, 22:10
Yo tambien uso diferencial mecánico pero solo llego a un 50% y necesito entre 75 y 80%. ¿La placa que usas es algo como esto? http://www.diydrones.com/forum/topics/mini-arduino-kickstarter-launch
En concreto la que usé es es una miniarduino con reloj de 16 MHz:
http://dx.com/p/arduino-pro-mini-w-atmega328p-electronic-building-blocks-interactive-media-improved-version-104332
En el DL, como no funcionaba correctamente la probé con una arduino normal a 3.3 V: http://shop.ciseco.co.uk/xino-basic-for-atmel-atmega-avr-arduino-compatible-kit/

Visto que funcionaba bien, como la placa anterior es muy grande, he encargado otr mini-arduino a 3.3V, aunque es a 8 MHz: http://dx.com/p/pro-mini-atmega328-3-3v-8m-microcontroller-board-for-arduino-blue-156957

El tema de ser a 8 MHz implica cambiar un poco la programación, tanto para el puerto serie como para los temporizadores. En cuanto la reciba me pondré a ello (y añadiré la posibilidad de diferencial).

JoaquinCF
03/02/2013, 01:37
Ya he recibido la placa de 8 MHz a 3.3V, y he modificado el programa para:
- Incorporar posibilidad de diferencial
- Invertir cada servo individualmente: en mi avión ya giré uno de los servos de forma que no hiciera falta, con la desventaja de que la tapa de servos original no me valía; con esta solución no me hubiera hecho falta
- Cambiar fácilmente la frecuencia de reloj entre 8 y 16 MHz

El modo de 8 MHz tiene la mitad de resolución (1.000 pasos en vez de 2.000), siendo inherente al procesador al bajar la frecuencia. Las pruebas me indican que el incremento de paso apenas es perceptible a 8 MHz, y a 16 MHz yo no lo percibo. La prueba se puede ver aquí

https://vimeo.com/58799072

Tengo que hacer pruebas más en detalle, especialmente con el Dragon-Link. Entretanto, por si alguien se anima a probar, adjunto la nueva versión (cambiar la extensión a zip).

JoaquinCF
03/02/2013, 01:40
Yo tambien uso diferencial mecánico pero solo llego a un 50% y necesito entre 75 y 80%. ¿La placa que usas es algo como esto? http://www.diydrones.com/forum/topics/mini-arduino-kickstarter-launch
Si no me equivoco, un diferencial al 80% indica que el alerón que baja sólo lo hace un 20% del rango de movimiento del servo. ¿no es demasiado elevado?

elossam
03/02/2013, 11:30
Cada modelo es una combinacion de factores: perfil, velocidad, envergadura, alargamiento .... en mi caso eso es lo que me pide.

elossam
03/02/2013, 11:32
La inversión de servo es una buena idea. Yo uso servos hitec y con el programador invierto el giro por software.

aguillamot
22/09/2016, 19:25
Joaquín,
No se si estarás todavía en linea, el hilo es un poco antiguo pero te pregunto para qué incluyes los dos ficheros de 8 y 16Mhz.elf?
Y cómo se cambia de 8 a 16?
Mil gracias por el software y la idea.

JuanTrillo
07/10/2016, 12:56
Me habia perdido este hilo y es magnifica la solucion adoptada. Espero tenga su autor del reconocimiento que se merece. Buen trabajo. Mas vale tarde que nunca.

Saludos
JuanTrillo

JoaquinCF
30/10/2016, 21:49
No logro que me funcione el buscador del foro, por lo que inserto este programa para que funcione el mezclador en una placa Naze32Rev5 (12 MHz).
Para programar la placa hay que poner el jumper de programación cerrado y usar el programa "STMFlashLoader Demo" de ST.
Una vez programada conectar un emulador de terminal y conectarlo al puerto serie que aparece cuando se conecta la placa (verlo en Administrador de Dispositivos en Windows, o en /dev/ttyUSBX en Linux) conectado a 115200 baudios. A partir de ahí va dando instrucciones

aguillamot
31/10/2016, 12:11
Mil gracias Joaquín,
El foro es http://www.rcgroups.com/forums/showthread.php?t=2564226

Mientras llegaba tu solución, he hecho algo parecido en Arduino con una técnica más rudimentaria que la tuya.

Se carga en una Arduino Pro Mini y funciona. Dos canales, uno para 2 alerones y otro para 2 flaps, con diferencial y butterfly.

Lo adjunto por si le interesa a alguien. Hay que cambiar la extensión dwg a ino

aguillamot
10/11/2016, 21:39
Siguiendo al maestro Joaquín, he depurado el sketch anterior.
Este está simplificado y vale para Pro Mini 8 y 16 Mhz, pero también para Teensy 32 Mhz.
El contenido del sketch se explica por sí mismo y funciona de maravilla en diferencial, flaps de velocidad y térmica, y butterfly sobre todo en Teensy.

Cambiar extensión dwg por ino y abrir con Arduino IDE

aguillamot
10/11/2016, 23:13
Debo advertir que con Pro Mini los servos muestran jittering que habría que corregir con interruptores o delay.
Con la placa Teensy el comportamiento de los servos es limpio.