Simulador 6DOF 360 grados

Running simulator build projects.
Please use the image gallery for your pictures, a short tutorial can be found here.
The first image in the first post will be shown in the project gallery.

Re: Simulador 6DOF 360 grados

Postby CBRRRHRC » Mon 28. Dec 2020, 00:53

Este seria un ejemplo un poco mas detallado de la aplicación de las reglas que mostré anteriormente.
El proceso seria así:
Definición de las variables semánticas (Error Negativo Grande (ENG) Voltaje Positivo Pequeño(VPP) etc.)
Los Valores de las funciones de esas variables semánticas

Definimos como Error Negativo Grande ( ENG) (-300,-300,-150, -75) esto nos daría una función tipo trapezoidal
Definimos como Error Negativo Pequeño ( ENP) (-150,-75,-75, 0) esto nos daría una función tipo triangular.
Definimos como Error Negativo Pequeño ( EC) (-75,0,0,75) esto nos daría una función tipo triangular.
Definimos como Error Positivo Pequeño ( EPP) (0,75,75,150) esto nos daría una función tipo triangular.
Definimos como Error Positivo Pequeño ( EPG) (75,150,300,300) esto nos daría una función tipo trapezoidal


El consecuente de las reglas es la corriente que se debe aplicar para obtener el resultado deseado.

Definimos como Voltaje Negativo Grande ( VNG) (-12,-12,-6,-3) esto nos daría una función tipo trapezoidal.
Definimos como Voltaje Negativo Pequeño ( VNP) (-6,-3,-3,0) esto nos daría una función tipo triangular.
Definimos como Voltaje Cero ( VC) (-3,0,0,3) esto nos daría una función tipo triangular.
Definimos como Voltaje Positivo Pequeño ( VPP) (0,3,3,6) esto nos daría una función tipo triangular.
Definimos como Voltaje Positivo Grande ( VPG) (3,6,12,12) esto nos daría una función tipo trapezoidal.


Definimos las reglas:

Si ENG entonces VNG (Si el error es negativo grande se aplica un voltaje negativo grande)
Si ENP entonces VNP (Si el error es negativo pequeño se aplica un voltaje negativo pequeño)
Si EC entonces VC (Si el error es cero el voltaje es cero)
Si EPP entonces VPP (Si el error es positivo pequeño se aplica un voltaje positivo pequeño)
Si EPG entonces VPG (si el error es positivo grande se aplica un voltaje positivo grande)

La reglas que unen la entrada ERROR con la salida VOLTAJE.



En este ejemplo consideremos que el error entre los valores que suministra X-Plane de la posición de avión y la posición del simulador es xx. Como se ve este valor corta a las funciones de ENG y ENP en un punto. Si llevamos este valor de grado de pertenencia a las funciones de voltaje vemos que corta en dos de ellas, VNG y VNP.. En el ejemplo vemos el área en líneas negras que representa el área común a estas dos funciones. Existen varios métodos de defusificación que lo podemos definir como el pasaje de variables semánticas a valores reales que en este caso es un voltaje a aplicar al motor. El que usare en las primeras pruebas se llama Centroid.
A medida que se va reduciendo el error el area se ira reduciendo y por ende el voltaje aplicado al motor. Para poder optimizar en funcionamiento del sistema se pueden variar las funciones de cada variable semántica, las reglas y/o se pueden incorporar variables como velocidad angular, variación del error etc.
Este mismo criterio se aplica al asiento de gravedad(G-seat), pero teniendo en cuenta la posición del asiento con respecto a la horizontal ya que la dirección e intensidad de la fuerza gravitatoria ira cambiando.
Last edited by CBRRRHRC on Thu 25. Mar 2021, 02:19, edited 2 times in total.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Mon 28. Dec 2020, 18:45

Para comenzar las pruebas del asiento hare una construcción provisoria para probar si sus componente funcionan correctamente, la parte eléctrica y la parte lógica del movimiento.
Según se coloque los tornillos la inclinación del asiento varia
Tengo un problema ya que las placas superior e inferior se tocan cuando la amplitud es muy grande
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Tue 12. Jan 2021, 00:54

Las fallas en el cableado de la batería o del motor pueden representar un riesgo de incendio, además de posibilidad de funcionamiento incontrolado. Debe asegurarse de que las baterías tengan disyuntores y fusibles adecuados para desconectarlos en caso de circunstancias imprevistas donde la energía debe ser desconectada.
Durante el funcionamiento, dependiendo de la corriente del motor, la placa base de aluminio puede calentarse. Para un mejor rendimiento sostenido, las opciones incluyen el montaje en un disipador de calor externo como el chasis, y/o colocar un flujo de aire adecuado.
Las conexiones de alimentación son para las pestañas de tipo Fast-on en el extremo de la placa. Las conexiones de la batería tienen una pestaña grande de 9,5 mm y una pestaña pequeña de 6,3 mm. La pestaña pequeña se usa normalmente para conectar un cargador de batería o para alimentar equipos auxiliares. Cada conexión de motor tiene dos pestañas de 9,5 mm (para alimentar dos motores). Se deben utilizar receptáculos completamente aislados para evitar cortocircuitos entre los contactos. Se debe utilizar un cable de al menos 6 mm2 para las conexiones de alimentación. Los engarces deben ser de buena calidad y estar debidamente ajustados. Un cable de tamaño insuficiente y un prensado deficiente pueden provocar un sobrecalentamiento y un riesgo de incendio. Recomiendo que utilice diferentes colores para la batería y el motor para minimizar el riesgo de conectar un cable de la batería a una terminal del motor.
Es muy importante mantener los cables B + y B- lo más cortos posible y enrutarlos uno al lado del otro. Los cables de batería largos pueden hacer que los condensadores principales se sobrecalienten y darán lugar a mayores niveles de interferencia emitidos. Los cables del motor también deben mantenerse lo más cortos posible y deben trenzarse juntos cuando sea posible para minimizar el ruido eléctrico irradiado. Asegúrese de que cada uno de sus motores tenga instalado un condensador de supresión.
Un pequeño condensador cerámico de 10nF / 100v suele instalarse internamente en las escobillas del motor. Si su motor aún no tiene uno, coloque uno externamente a través de las conexiones del motor lo más cerca posible del motor.
Otro de los elementos son los anillos de ferrite como muestra la figura

El controlador puede usarse con motores de CC de imanes permanentes, pero también se puede usar con motores de bobinado en derivación. Recuerde que los motores generalmente se clasifican en términos de manejo de corriente continua: para un motor típico, la corriente a corto plazo (clasificación de 1 minuto) puede ser 3 o 4 veces mayor que la clasificación continua. Utilice solo motores de buena calidad con escobillas y conmutador en buenas condiciones: las escobillas y los conmutadores gastados pueden causar arcos eléctricos (ruido eléctrico) que pueden provocar fallas en el controlador. Las baterías deben recargables de 24 V a 48 V nominales. La tensión de alimentación real puede estar entre 16 V y 55 V. Esto deja espacio para caídas o picos en el voltaje de la batería.
El controlador tiene 10 'perfiles' separados integrados, cada uno se puede adaptar a un
aplicación diferente, como un simulador de vuelo como en este caso o por ejemplo un simulador de montaña rusa. Cada perfil tiene un
número de parámetros que se pueden ajustar, como la velocidad máxima y la aceleración.
La programación se realiza mediante el programador de 3 botones que se suministra con la pantalla.
Los parámetros y sus valore correspondiente serán los siguientes:
Configuración de parámetros
Parámetro 01 y 02: Tiempos de rampa hacia adelante:
Estos son los tiempos de aceleración y desaceleración en avance. La pantalla está en segundos y los valores están entre 0,1 S y 9,9 S.
No elija una aceleración o desaceleración demasiado rápida para su máquina, ya que esto puede generar picos de tensión que pueden acortar la vida útil del sistema relés de a bordo.
Parámetro 03: Velocidad máxima
Esto controla el porcentaje máximo de voltaje de la batería que se puede alimentar al motor.
Parámetros 04, 05 y 06: (inverso)
Estos son los parámetros 01, 02 y 03, pero para retroceso en lugar de avance.
Parámetro 07: Banda muerta
Esto es más útil en el modo de joystick, donde el centro de movimiento del joystick puede tener tendencia a deambular. El valor predeterminado es el 5% del acelerador disponible.
Parámetro 08 y 09: Freno de estacionamiento.
Éstos controlan el freno de estacionamiento: ignore si su motor no tiene uno instalado.
Cuando el controlador comienza a aplicar energía al motor, aplica energía al freno de estacionamiento para liberarlo. El parámetro 09 define cuánta potencia se aplica al motor antes de soltar el freno.
Un valor demasiado alto y el motor arrancará con una sacudida.
Cuando el motor se detiene, hay una breve demora antes de que se desconecte la energía del freno. Permita que el freno funcione. El parámetro 08 define este retraso. Los valores típicos serán 1/2 a 1 segundo.
Parámetro 10: Bloqueo de potenciómetro alto HPLO
Si la ignición está encendida con el potenciómetro no en cero, el controlador podría comenzar a conducir
inmediatamente, la función HPLO evita que esto suceda.
El parámetro 10 establece el nivel ue se considera alto. Cero significa que el nivel es lo mismo que la banda muerta. 99 es la desviación del potenciómetro completo y efectivamente apaga HPLO.
Si el potenciómetro está por encima del nivel HPLO al encender, el controlador no funcionará hasta que que se baje.
Parámetro 11: Zumbador inverso (No se utiliza).
Parámetro 12, 13 y 14: Pot / Input Learn
Estos parámetros le permiten definir cómo afectan el potenciómetro de velocidad y el interruptor de dirección
la operación. Estos valores no se ingresan a través del programador, sino que cambian a medida que el potenciómetro u otra entrada se muevan al valor deseado, y son capturados por el botón SEL.
Parámetro 12: Velocidad máxima de avance.
Después de seleccionar este parámetro, ajuste el potenciómetro a la posición que necesite en velocidad de avance [y el interruptor de dirección si está usando uno], la pantalla cambiara para mostrar dónde está el potenciómetro. Presione SEL para capturar los valores.
Parámetro 13: Velocidad cero.
Después de seleccionar este parámetro, ajuste el potenciómetro a la posición de velocidad cero requerida [para el funcionamiento del joystick, puede estar en el centro de su recorrido]. Deja la dirección cambiar hacia adelante. Presione SEL para capturar los valores.
Parámetro 14: Max reverse (o velocidad cero).
Si necesita una operación de un solo extremo, después de seleccionar este parámetro, ajuste el
potenciómetro de velocidad al máximo y ajuste el interruptor de dirección en reversa. Presione SEL para
capturar los valores.
Si necesita la operación del joystick, después de seleccionar este parámetro, ajuste el potenciómetro a la posición que necesita para ser la máxima velocidad de retroceso y presione SEL para capturar el valor.
No se necesita un interruptor de dirección al utilizar la palanca de mando.

El controlador tiene dos conecciones para la batería, en la figura 1 y 2, el cable rojo(+) y el negro (-). Otras dos conecciones para el motor, en la figura 1 y 2, el cable amarillo (+) y el azul (-). Una tercer coneccion de dos cables para el programador del controlador, figura 1 y 3, cables negros, y una cuarta coneccion de 6 cables, figura 1 y 3.
Figura 1

Figura 2

Figura 3
Los colores verde, azul y rojo se conectan al potenciómetro, siendo el cable azul que lleva el valor de la resistencia y el verde y el rojo los topes del potenciómetro. Los cables blanco y amarillo son para encender el controlador y el cable negro es para colocar al motor en reversa uniendolo al cable blanco. Las conecciones se ven en la figura 3.

Lo mostrado en el párrafo anterior se utiliza para la prueba del funcionamiento batería, controlador y motor en forma manual, modificando el potenciómetro y abriendo y cerrando los switch. Este circuito se modificara para que el arduino proporciones el PWM a través del cable azul, reemplazando al potenciómetro. Los switch deben ser también manejados por el arduino abriendo y cerrando puertos digitales. Como el controlador detecta la falta de un potenciómetro, se debe colocar una resistencia de 10K entre los cables verde y rojo. Este seria el esquema:


Para reemplazar los switch coloque 2 Mosfet activados por los pin 5 y 6, el pin 5 enciende el controlador y el pin 6 invierte el giro del motor. El Pin 3 provee el PWM. La resistencia de 10k entre el cable rojo y el verde (topes del potenciómetro) para que el controlador no detecte la falta del potenciómetro.
Todos los cables verdes van conectados al GND del Arduino.
Last edited by CBRRRHRC on Mon 8. Feb 2021, 05:19, edited 7 times in total.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Sat 16. Jan 2021, 04:49

Para poder determinar que utilizar si la lectura de un encoder rotativo incremental o un dispositivo sensible a los movimientos, comenzare primero a determinar las variables en juego y como calcular sus variaciones para mover el simulador, sus pro y sus contras y armare un cuadro para visualizarlo mejor.
Primero el encoder. Considero para esta parte un solo encoder aislado. Este va ubicado en el eje de la salida de la caja reductora para tener la posición exacta que tiene el aro conectado.
Encoder en azul, eje de la caja en rojo. En gris los soportes del encoder. En verde la caja reductora

Contando las vueltas que da el encoder podemos determinar el ángulo actual del eje. Un ejemplo del código arduino seria:
Control_posicion_motor_DC.txt
(8.03 KiB) Downloaded 729 times
y la coneccion del rotary encoder:
Last edited by CBRRRHRC on Tue 9. Feb 2021, 00:55, edited 5 times in total.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Sat 23. Jan 2021, 01:26

En el diseño actual la coneccion de los elementos internos con el exterior esta preparado para realizarlo por cables a través de piezas preparadas en la estructura. Este planteo resulta bastante engorroso tanto en el diseño como en la construcción. Luego de hacer algunas pruebas que iré mostrando opte por realizar todo sin cableado. Los métodos que probare inicialmente son internet y bluetooth recordemos que no puede haber conexiones con el exterior del simulador o entre los aros. De acuerdo a esto la secuencia quedaría: La Pc que es el único elemento externo, tiene ejecutando el x-plane y transmitirá los datos a través de internet vía comunicación UDP. Para ello utilice un un video realizado por Francisco José Cuadra López, dejo aca el enlace http://www.youtube.com/watch?v=HlzIWfuC1p8&t=1016s. El código del programa lo coloco a continuación
PC a Internet.txt
(13.92 KiB) Downloaded 656 times

Al código original le agregue algunas cosas para hacer el seguimiento de las pruebas. El primero es un LCD 20x4 donde voy mostrando los valores de Pich, Roll, Heading , y la diferencia con la medida enviada anteriormente. Estas dos medidas es el error entre la posición actual y la que deberá tener el motor.
Circuito para ver por LCD los datos enviados por Internet

El siguiente código modifica al anterior reemplazando la salida serial por un display LCD y además la diferencia entre la lectura actual y la deseada. Esta diferencia la voy a utilizar para analizar los valores de error para optimizar las reglas de la lógica difusa.
PC a Internet con LCD.txt
(3.25 KiB) Downloaded 670 times

Los valores que envía x-plane son formato float y los valores pedidos son Pitch, Roll y Heading. Estos valores son recibidos por el ESP8266 (modulo internet) en formato float y le agrega un código para identificar que dato es. En total tenemos tres pares de valores, el orden y el dato.

El siguiente paso será calcular los valores que se deben entregar a los motores. para ello al código anterior le agregare la coneccion a un arduino mega y el código correspondiente. Tambien incluire el código en el arduino Mega para recibir los datos por el puerto serie.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Tue 2. Feb 2021, 02:01

El método que utilizare para enviarle los parametros al motor a través del controlador, será mediante modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation). Arduino tiene pin's que permiten usar PWM veamos este ejemplo:

int pwm = 3; // asigna el pin 3 que tiene la característica PWM
int i = 0;
void setup() {
pinMode(pwm,OUTPUT); // El pin 3 se lo declara de OUTPUT
}
void loop() {
// Un bucle para acelerar el motor de 0 a su velocidad maxima
for(i=0; i <= 255; i++) { // 255 es el valor máximo que se puede enviar
analogWrite(pwm, i); // se envía el valor de i por el pin 3
}
}
Como el direccionamiento es de 8 bits, los valores posibles serán entre 0 y 255.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Thu 11. Feb 2021, 18:40

Este seria el diagrama general esquemático. Comienza en el modulo de internet que recibe los datos de la PC via UDP., este le pasa esa información al arduino MEGA para que realice los cálculos en base a los ángulos pedidos. El Arduino MEGA vía bluetooth, manda los parámetros a cada Arduino ONE de los aros. Estos calculan los PWW para enviarle al controlador de cada motor. El motor-Caja mueve el rotary encoder a su posición actual y la devuelve vía bluetooth al Arduino MEGA y allí comienza nuevamente el ciclo. El flujo de variable y procesos de cada etapa seria el siguiente:
Los valores recibidos por el módulo de Internet son pasados vía puerto serie al Arduino MEGA. Las variables son los ángulos deseados en cada uno de los motores o aros.(tres valores por cada aro, pitch, rol y yaw). Recibe por Bluetooth la posición de cada motor, calcula el voltaje a enviar, con Lógica Difusa.Envia por Bluetooth a casa Arduino ONE. El Arduino ONE recibe el voltaje calculado por BT. Calcula el PWM y lo envía al controlador. Recibe los nuevos valores del encoder, calcula la nueva posición del motor y lo pasa via BT al Arduino MEGA. También controla las temperaturas del controlador y el motor para activar los ventiladores.


Diagrama General
Cada uno de los centros del diagrama los iré mostrando en detalle las conecciones del protoboard, del circuito eléctrico y de la pcb. Mi idea es hacer una PCB de todos los circuitos incluso armando el Arduino ONE con su chip.
Protoboard del Paso 1
Circuito eléctrico del Paso 1
PCB del Paso 1. Puede ser que el diseño definitivo sea distinto en su diseño al mostrado

Como se ve en el diagrama tenemos el Arduino MEGA, el Modulo NODMCU de Internet y los tres módulos de Bluetooth. En el procesador del NODMCU se debe cargar el código que reciba los datos vía Internet del X-Plane y se los pase por el puerto seria al Arduino MEGA. Este tendra el codigo para recibir los datos del NODMCU via puerto serial, hacer los cálculos para los motores y enviarlos vía bluetooth a los Arduinos de cada Aro. También deberá recibir los datos que le envían de los rotary encoders.
Control_Difuso_Encoder 1.txt
Código Arduino
(4.87 KiB) Downloaded 647 times

Antes se deben setear los módulos bluetooth en pares maestro y esclavo para que se conecten directamente y sea la unica coneccion posible. Para poder dar los comandos AT deberemos cargar el siguiente programa en Arduino

#include <SoftwareSerial.h>

SoftwareSerial mySerial(10, 11); // RX, TX

void setup() {
// Habrir serial communications
Serial.begin(9600);
mySerial.begin(38400);
Serial.println("Configuracion!");
}

void loop() {
if (mySerial.available()) {
Serial.write(mySerial.read());
}
if (Serial.available()) {
mySerial.write(Serial.read());
}
}
y con el siguiente cirduito



Los parámetros que se asignaran con los comandos "AT" seran los siguientes. Para el esclavo que será donde se encuentra el Arduino

AT+NAME=EXTERNO
AT+PSWD=1234
AT+UART=9600
AT+ROLE=0
AT+CMODE=0
AT+BIND=98D3,31,4042FE

Este será uno de los módulos maestro que como vimos son tres, uno por cada Arduino

AT+NAME=MAESTRO1
AT+PSWD=1234
AT+UART=9600
AT+ROLE=1
AT+CMODE=0
AT+BIND=98D3,31,4042FE

Como cada uno de los motores necesitan un Arduino para procesar los voltajes, voy a armar un circuito para reemplazar las placas Arduino utilizando el microprocesador Atmega328.
Diseño de la Protoboard
Diseño Esquematico
Diseño de la PCB


A este circuito le ire agregando los otros componentes necesarios para las funciones que se deben realizar en esta etapa.
Modulo Bluetooth para recibir y enviar datos
Rotary Encoder Incremental para saber la posición del motor
Dos Sensores de Temperatura para el controlador y el motor
Encendido del controlador
Dos Ventiladores cuando los sensores lo indiquen

Primero agrego el modulo Bluetooth


Encoder

Sensores de Temperatura

Ventiladores para la refrigeracion del motor y controlador y salida para el controlador (PWM y Sentido de Giro)
Attachments
Arduino_PWM.txt
Código Arduino
(6.1 KiB) Downloaded 577 times
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Mon 1. Mar 2021, 17:18

Para el asiento G-seat debemos ver las fuerzas que afecta al piloto
ACELERACIONES (+Gz)
Longitudinales positivas. En ellas la fuerza de inercia resultante de la aceleración actúa a lo largo del eje longitudinal comprimiendo tejidos y desplazando fluidos en la dirección de la cabeza hacia el asiento. Se originan en el curso de giros cerrados, en las maniobras de recuperación de picados y en el curso de eyección de aeronaves en línea de vuelo. Son de gran importancia por exponer al piloto a situaciones fisiológicas extremas que pueden producir su incapacitación.

ACELERACIONES (-Gz)
. Longitudinales negativas. En ellas la fuerza de inercia actúa de forma ascendente del asiento a la cabeza del piloto. Se originan en los picados y en las maniobras de looping externos. Aunque los efectos son peor tolerados que las +Gz la capacidad de los aviones de generar -Gz es muy inferior en intensidad y en tiempo, por lo que en la práctica no suelen producir problemas fisiológicos serios.

ACELERACIONES (+Gx)
. Transversales positivas. En ellas la fuerza de inercia actúa en sentido antero-posterior, perpendicular al eje longitudinal del cuerpo. Se producen al acelerar manteniendo la línea de vuelo, y en el curso de los despegues sobre todo cuando se realizan con ayuda de catapulta en portaaviones, astronautas en sus lanzamientos (decúbito supino) exponiéndose por tanto a aceleraciones transversales positivas de larga duración.

ACELERACIONES (-Gx)
. Transversales negativas. La fuerza de inercia actúa en sentido postero¬anterior perpendicular al eje longitudinal del organismo. Se producen en deceleraciones lineales tales como en aterrizajes asistidos en cubiertas de portaaviones y en la reentrada de las naves espaciales, si bien en algunas de ellas, como en la lanzadera espacial, lo que se generan son aceleraciones longitudinales positivas al regresar a la atmósfera terrestre. Sus efectos dependen en gran medida del grado de sujeción del sujeto.

ACELERACIONES (+/-Gy)
. Laterales. Tienen escasa importancia en aviación. En aviones experimentales con capacidad de desplazarse lateralmente pueden exponer al piloto a Gs laterales. Cuando la reacción inercial actúa de derecha a izquierda se denominan Gs laterales positivas (+Gy ) y, cuando es de izquierda a derecha, se habla de Gs laterales negativas, ( -Gy ).


Las fuerzas gravitatorias en el curso del vuelo nunca son puras; suelen modificarse según las variaciones de velocidad y dirección del avión en línea de vuelo y, especialmente, en el transcurso de maniobras. Además, la reacción inercial frente a la aceleración se suma a la gravedad constante modificando instantáneamente la fuerza resultante que es la que actúa sobre el piloto.

En el caso de que un avión describa en su trayectoria una circunferencia en el plano vertical (looping) con una aceleración radial constante de 1 G, cuando se encuentre en la parte baja de la circunferencia, la fuerza de la gravedad se añade a la centrífuga del mismo sentido, causada por la aceleración, produciéndose 2 G, porque la resultante será la suma. Cuando el avión esté en la parte alta de la circunferencia, la fuerza centrífuga y la de la gravedad son opuestas, por lo que la resultante será nula.
3axis.gif
3axis.gif (5.81 KiB) Viewed 16569 times

Como se ve en la figura el avión puede realizar 6 movimientos, 3 de rotación y tres de traslación. Solo se deben simular loas aceleraciones de los movimientos rectilíneos ya que los circulares están dados por los movimientos de los aros directamente. La simulación que realiza el G-set es sobre los movimientos longitudinales. Las siguientes tienen sombreadas las distintas placas del G-seat que se activan para la simulación. Las placas se moverán cuando se activa alguna aceleración en las direcciones de traslación y permanecerán constantes luego durante la velocidad contante hasta una nueva aceleración.
Configuración del G-seat cuando el avión esta nivelado sin ninguna aceleración.
Configuración del G-seat cuando se produce una aceleración en el eje x (longitudinal). Puede ser positiva por ejemplo en el decolaje o negativa durante un aterrizaje.
Configuración del G-seat cuando se produce una aceleración en el eje y (verticales). Por ejemplo durantes turbulencias. Cuando estas turbulencias son pequeños saltos es preferible utilizar bodyshakers para preservar los motores del asiento
Bodyshayker.jpg
Bodyshayker.jpg (6.58 KiB) Viewed 16561 times
Bodyshaykers.jpg
Bodyshaykers.jpg (11.53 KiB) Viewed 16561 times
Configuración del G-seat cuando se produce una aceleración en el eje z (horizontales). Por ejemplo durante turbulencias. Cuando estas turbulencias son pequeños movientos laterales es preferible utilizar bodyshakers para preservar los motores del asiento


Los movimientos de las placas no deben ser espasmódicos, sino que dependen de la intensidad de la aceleración y en forma progresiva.
Durante un vuelo normal el avión sufre aceleraciones que no concuerdan exactamente con los ejes antes mencionados. Por ejemplo en un viraje muy cerrado en un avión de combate la fuerza centrífuga que se genera aplasta al piloto sobre sus glúteos que en este caso están en el eje z como si fuera un movimiento lateral.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Re: Simulador 6DOF 360 grados

Postby CBRRRHRC » Wed 24. Mar 2021, 18:20

Ahora vere como se comporta el sistema desde la recepción de datos del x-plane hasta la entrega de voltaje a los motores.
Grafico de los valores recibidos de x-plane. La primer columna es Pitch, la segunda el yaw/100 y la tercera el roll.
Grafico de las curvas, de los valores recibidos de x-plane. El azul representa el Pitch, el roll con el verde y el yaw/100 con el rojo

Los valores suministrados son en grados. Si tomamos dos líneas sucesivas de la tabla de valores nos dará la posición anterior y actual de los aros. Por ejemplo la primer línea nos da la posición anterior con los siguientes valores :
Pitch = 3,17 grados
Yaw = 182 grados. En la tabla figura 1,82 para que en el gráfico tenga valores similares en rango a los otros.
Roll = -3.14 grados.
La línea a continuación nos da la posición actual con los siguientes valores:
Pitch = 2,70 grados
Yaw = 181 grados. En la tabla figura 1,81 para que en el gráfico tenga valores similares en rango a los otros.
Roll = -2,80 grados.

La diferencia entre cada uno de los valores nos da la diferencia en la posición y a este valor se lo considera el error. El objetivo es llevar este valor a cero.
La siguiente fase se realiza el el Arduino Mega que recibe los datos por el puerto serie del módulo de Internet. El cálculo
de corriente a aplicar se determina como vimos anteriormente por Lógica Difusa (LD).
Veamos como seria el resultado con los valores de nuestro ejemplo.

e (Pitch) = 3,17 - 2,70 = 0.47 grados.
e (Yaw) = 182 - 181 = 1 grado
e (Roll) = -3,14 - 2,80 = 0,34 grados

Ajustando las funciones de membresía nos quedaría:

Definimos como Error Negativo Grande ( ENG) (-450,-450,-300, -300) esto nos daría una función tipo trapezoidal
Definimos como Error Negativo Pequeño ( ENP) (-300,-150,-150, 0) esto nos daría una función tipo triangular.
Definimos como Error Negativo Pequeño ( EC) (-150,0,0,150) esto nos daría una función tipo triangular.
Definimos como Error Positivo Pequeño ( EPP) (0,150,150,300) esto nos daría una función tipo triangular.
Definimos como Error Positivo Pequeño ( EPG) (150,300,450,450) esto nos daría una función tipo trapezoidal

El consecuente de las reglas es la corriente que se debe aplicar para obtener el resultado deseado.

Definimos como Voltaje Negativo Grande ( VNG) (-12,-12,-6,-3) esto nos daría una función tipo trapezoidal.
Definimos como Voltaje Negativo Pequeño ( VNP) (-6,-3,-3,0) esto nos daría una función tipo triangular.
Definimos como Voltaje Cero ( VC) (-3,0,0,3) esto nos daría una función tipo triangular.
Definimos como Voltaje Positivo Pequeño ( VPP) (0,3,3,6) esto nos daría una función tipo triangular.
Definimos como Voltaje Positivo Grande ( VPG) (3,6,12,12) esto nos daría una función tipo trapezoidal.


Para graficar las curvas de Grados actuales y el voltaje requerido divido los grados por 100, para clarificar el grafico.
Last edited by CBRRRHRC on Fri 2. Jul 2021, 15:27, edited 7 times in total.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

Simulador 6DOF 360 grados

Postby CBRRRHRC » Thu 20. May 2021, 17:09

Para pasar la información entre las distintas fases se deberán sincronizar según las necesidades del NODEMCU con el Arduino MEGA y el Arduino Mega con los otros 3 Arduino ONE.
Cuando se inicia el simulador, no hay información hasta que X-Plane comienza a enviarla. Se formatean estos datos con dos decimales y se completa la parte entera hasta seis posiciones con ceros. En caso de ser un valor negativo se coloca anterior al primer cero el '-' y se elimina un cero.

X-Plane --------> 345.25 ---------> 0000345.25 Siempre el total de la cifra debe ser de 10 posiciones.

X-Plane --------> -345.25 ---------> -000345.25 Cuando tiene signo negativo se elimina un cero del relleno. Siempre el total de la cifra debe ser de 10
posiciones.
Como se reciben 6 datos, el total por cada tanda será de 60 caracteres que el Arduino Mega separara en 6 parámetros. Estos parámetros serán y en ese orden, Pitch, Roll, Yaw, y de gravedad, normal, lateral y axial.
Antes de mandar este stream al Arduino Mega deberá verificar que este le haya solicitado información. Esto se debe a que antes de mandar nuevos datos, el Arduino MEGA debe enviar a los 3 Arduinos UNO de cada motor.
Cuando el Arduino MEGA esta listo le solicita información al NODEMCU. Simultáneamente el Arduino Mega debe solicitar a casa Arduino ONE la información provista por cada Encoder, esta información es la posición actual del motor luego de posicionarse con los datos recibidos en la tanda anterior. Con esta información y la nueva tanda de datos calcula el voltaje que se debe aplicar a cada motor. Luego de calcular el voltaje con los nuevos datos, se deberá chequear si cada Arduino ONE estan listo para recibir datos.
El Arduino ONE cuando esta listo le solicita información al Arduino MEGA . Tambien recibira los datos que recibe de los encoders. Luego de enviarlos le informa al Arduino MEGA que puede recibir nuevos datos.

La otra distribución de datos que llegan al Arduino MEGA es a los 16 servos del asiento. Como mostré en el post 16 esta coneccion es por RS232 con el controlador y utiliza el mismo mecanismo de señales. Como los servos no necesita de los Encoders para saber su posición, todo es manejado por el controlador para conocer la posición de los servos. Esto se logra por los potentes comandos que este tiene.
Veamos como se realiza en calculo de posición de los servos y las acciones a tomar para lograr la posición final.
Como habíamos dicho Arduino MEGA recibe del NODEMCU tres datos para el asiento, normal, lateral y axial, que son las fuerzas de gravedad para movimientos sobre cada eje (los otros tres movimientos son alrededor de los ejes)

Ahora vamos a definir las fuerzas que actúan sobre un avión durante virajes y deben ser simuladas por el g-seat. comenzamos en definir las fuerzas centrípetas y centrífugas. Vamos a definir al radio y al régimen de viraje. El radio de viraje esta definido como la distancia desde el avion que esta en viraje hasta el centro de la circunferencia imaginaria. El régimen de viraje esta definido como la velocidad con la que el avión gira sobre un eje imaginario vertical. Si nuestro avión gira a razón de 3 grados por segundo, vamos a completar los 360 grados en 2 minutos y este es el régimen de viraje. El régimen standard para aviones pequeños es de 3 minutos.
Si tenemos una esfera en reposo y le aplicamos una fuerza, esta va a continuar con una trayectoria recta a menos que le apliquemos otra fuerza que cambie la dirección.Si a la esfera la sujetamos con una cuerda, esta va a generar una fuerza para evitar que continua en dirección recta y va a hacer que siga una trayectoria circular. Esta fuerza que de alguna manera atrae a la esfera al centro de la circunferencia se llama fuerza centrípeta. Según la tercer ley de Newton donde dice que toda acción tiene una reacción de la misma magnitud pero en sentido contrario, vamos a ver que la esfera va a experimentar otra fuerza que hace ques quiera alejarse del centro de la circunferencia. A esta fuerza es la fuerza centrífuga.

En base a lo anterior podemos definir las fuerzas que actúan sobre un avión durante el viraje. Cuando el avión mantiene una trayectoria nivelada vamos a tener la sustentación y el peso, pero cuando iniciamos el viraje las cosas cambian. Ahora la sustentación se va a dividir en dos componentes, uno vertical que nos mantiene volando y otro horizontal que va a actuar como cuerda que va a hacer que el avión vaya al centro de nuestro viraje que seria la fuerza centrípeta. Por otro lado vamos a tener el peso que siempre se dirige al centro de la tierra. Pero también vamos a tener otra fuerza generada como reacción al vector horizontal de la sustentación que seria la fuerza centrifuga. La suma de la fuerza centrifuga y el peso genera un componente total mayor al que teníamos originalmente generado por el peso cuando estábamos volando recto y nivelados.
Definimos como factor de carga las fuerzas generadas por el peso y la fuerza centrifuga.

Esta fuerza será mayor a la gravedad y aumentara cuanto mayor sea el viraje. Si por ejemplo tomamos un viraje de 60 grados vamos a experimentar una fuerza equivalente a 2g.

Esta fuerza se manifiesta sobre los glúteos y es la fuerza que simulara el g-seat.

Cuando un móvil, como el avión, se desplaza en el espacio de tres dimensiones, se ve sometido a unas fuerzas debidas a las aceleraciones y fuerzas centrífugas.
Para medirlas, se utiliza el factor de carga o número n, que se define como la relación que existe entre la fuerza total que actúa sobre el avión y el peso del mismo.
Por ejemplo, un factor de carga n = 3, en un avión de 1.000 Kgs., significa que la estructura del avión está soportando una fuerza de 3.000 Kgs·.
n = 3.000/1.000 = 3
Otra forma de nombrar el factor de carga es por la letra g (aceleración de la gravedad).
En el caso anterior, se diría que el avión soporta 3g.
Estas fuerzas pueden ser positivas o negativas. Son positivas cuando su dirección es hacia abajo.
Se indica con el signo ( + ). Ejemplo: + 3g.
Son negativas cuando la fuerza es hacia arriba. Esta fuerza, puede incluso anular el propio peso del avión. Se les pone el signo ( – ), para indicar el sentido de la fuerza aplicada. Ejemplo: – 3g.
El Piloto las nota inmediatamente, desde el primer vuelo.
En las g ( + ), parece como si el peso humano aumentara. El Piloto, como un elemento más del avión, queda “pegado” al asiento.
En las g ( – ), el Piloto queda “flotando” en el asiento.
Factor_de_Carga_1.jpg
Factor_de_Carga_1.jpg (11.08 KiB) Viewed 16105 times



EL FACTOR DE CARGA EN LAS PÉRDIDAS.
Esta maniobra debe ser analizada en cuatro fases:
1) Entrada.
La fase de entrada en pérdida no provoca cargas superiores a l g, o sea, lo mismo que si el avión estuviera en vuelo recto

2) Pérdida.
Cuando la pérdida se produce, el factor de carga se reduce, pudiendo incluso desaparecer.

El Piloto siente como si “flotara en el asiento”, reduciéndose el peso.

3) Recuperación.
Puesto que la recuperación de la pérdida se realiza “cediendo palanca”, el factor de carga puede hacerse negativo. (- g).

Esta aceleración negativa, tiende a separar al Piloto de su asiento. El valor puede ser pequeño y sus consecuencias no son muy importantes estructuralmente a menos que se use una técnica pobre de recuperación, en cuyo caso los g negativos pueden llegar a producir serios daños.

4) Nivelación.
Conseguida la velocidad necesaria para el vuelo seguro, se debe iniciar la nivelación.ya que, al aumentar la carga, aumenta igualmente la velocidad de pérdida.

La recuperación debe hacerse de una forma continua y suave.

En esta fase, pueden aparecer importantes factores de carga positivos, si la recuperación se hace de una forma violenta, “tirando” muy fuerte de la palanca.

Normalmente, el factor de carga suele ser de 2 a 2,5 g.

Si el factor de carga aumenta por encima de estos valores, pueden aparecer “pérdidas secundarias”.

EL FACTOR DE CARGA EN LAS BARRENAS.

Una barrena, básicamente, es idéntica a una pérdida, con la excepción de que en esta maniobra aparece un movimiento rotatorio.
Deben aplicarse los mismos conceptos en la barrena que en la pérdida, con relación al factor de carga siendo, por tanto, el momento más comprometido la nivelación.

En una barrena bien realizada, el factor de carga no debe pasar de 2,5 g, no presentando aerodinámicamente ningún problema su realización en aquellos aviones autorizados a su ejecución.

EL FACTOR DE CARGA Y LA TURBULENCIA.

Todos los aviones deben demostrar su capacidad de resistir ráfagas de aire de gran intensidad.

El factor de carga aumenta, con la velocidad y, normalmente, el límite estructural está calculado a la máxima velocidad de crucero.

En condiciones de turbulencia muy fuerte, como en tormentas o en situaciones frontales, es aconsejable reducir la velocidad a la de turbulencia.

De este modo, será prácticamente imposible que las ráfagas de aire produzcan daños estructurales.

Cada avión tiene una velocidad de turbulencia específica, que el Piloto debe conocer. Está suficientemente distante de la velocidad de pérdida y de la velocidad máxima estructural, y hace el vuelo muy seguro en condiciones de turbulencia fuerte.

EL FACTOR DE CARGA Y LA VELOCIDAD DE PÉRDIDA.

Cualquier avión, dentro de sus límites estructurales, PUEDE ENTRAR EN PERDIDA ACUALQUIER

VELOCIDAD, SI EL PESO AUMENTA LO SUFICIENTE.

Prácticamente se ha demostrado que la velocidad de pérdida aumenta en relación directa a la raíz cuadrada del factor de carga.

Esto significa que si un avión tiene, en condiciones normales de g 1, una velocidad de pérdida de 50 millas y se ve sometido a un factor de carga de 4g, su velocidad de pérdida aumenta a

100 millas. ( 4 = 2 ; Vg 2 x 50 = 100).

He aquí una explicación de los accidentes en los virajes al final, en que el Piloto se pasa de la alineación de la pista (se “overchuta”). Si el Piloto intenta forzar la maniobra ciñendo e inclinando, está aumentando la fuerza centrífuga a consecuencia del “tirón” y la inclinación.

Ambas acciones aumentan el factor de carga, según hemos visto y, en consecuencia, la velocidad de pérdida.

En caso de un “OVERCHUT” sin tiempo y distancia a la pista para hacer la maniobra con suavidad, es conveniente hacer un “motor y al aire” antes que forzar la maniobra. Sus consecuencias pueden ser fatales.
Factor_de_Carga_8.jpg
Factor_de_Carga_8.jpg (11.34 KiB) Viewed 16105 times

Ambas acciones aumentan el factor de carga, según hemos visto y, en consecuencia, la velocidad de pérdida.
CBRRRHRC
 
Posts: 184
Images: 11
Joined: Thu 7. May 2020, 03:51
Has thanked: 0 time
Been thanked: 0 time

PreviousNext

Return to Motion simulator Projects in progress

Who is online

Users browsing this forum: No registered users and 5 guests