Calculs de dimensions d'un modèle réduit d'avion RC

Appréciation moyenne:  / 26
Très mauvaisTrès bien 

CXP ou My Sweet Plane, un outil de dimensionnement d'un avion RC

CxP pour Conception xavier Planeur, My Sweet Plane aussi, j'hésite encore, mais le nom n'a pas d'importance en soi ahahah.

Un petit début d'outil pour dimensionner un avion RC, surtout planeur au départ d'ailleurs.
L'objectif de départ était d'avoir à donner un minimum de choses, le programme devait tout faire tout seul.

Les formules ont été glanées à droite à gauche sur les forums, sur des documents etc.

Je remercie au passage Thierry Platon et Franck Aguerre qui ont répondu de façon courtoise et précise à mes interrogations, sans jamais (trop) s'impatienter ;-)

Tous les calculs nécessaires sont faits avec xfoil, dernière version trouvée sur le web, pour windows.

Ce qu'il ne fait pas:

Centrage, volume de stab etc, se contente pour le moment de l'aile, j'espère que j'aurai le temps de faire tout ça, à terme.
Pas mal de bugs sans doute car en cours de dev.
Pour des envergures inférieures à 1 m les résultats sont peu variés
Pour des envergures de plus de 3m ils sont parfois étonnants par rapport à ce qu'il se fait.
Il faut essayer beaucoup de profils différents pour voir, peut-être qu'il n'y a rien à conclure, peut-être que des vraiment connaisseurs auront des conclusions, moi je suis paumé
A propos du format des profils, c'est du .dat de chez xfoil ou xflr5 et rien d'autre.

Dans cette version aucun enregistrement de projet n'est prévue.
Cette fonctionnalité et bien d'autres j'espère existeront sur la version que j'ai commencée qui reprend celle-ci mais en mieux développée (poo etc, faut tout reprendre pour faire du bien propre, là c'était juste une version pour voir si ça vaut le coup de continuer ou pas)

Installation:

Il suffit d'avoir un dossier dans lequel on va mettre le programme cxp01.exe, xfoil.exe, et voilà.
Dans la pratique, je conseille aussi d'y mettre un tas de profils au format .dat de xfoil ou xflr5

Voilà un fichier zip qui contient le nécessaire pour démarrer, à décompresser dans un dossier de son choix donc:

cxp, programme et autres, ici

Présentation de l'interface:

Au lancement du programme, on se trouve avec cette fenêtre:

cxp-interface00.jpg


Il faut cliquer sur le petit navion ou le menu modèles afin de créer un nouveau modèle.
Une petite fenêtre demande un nom, pour tester laisser ce qu'il y a au départ, on pourra modifier ensuite.
Et voilà l'interface proprement dite:

cxp-interface01.jpg


Les zones en jaune pâle sont des zones modifiables par l'utilisateur, mais qui contiennent des valeurs par défaut.
On remarquera en haut à droite la partie des paramètres par défaut:
Accélération (g), densité (rhô), coefficient de reynolds, ncrit (un paramètre utile à xfoil), et panels (pour xfoil aussi)
Passez la souris sur ces zones afin d'avoir une description des valeurs etc.

En haut au centre on peut modifier le nom du modèle.

En 1, nous avons la possibilité de choisir entre un calcul pour une finesse max ou un taux de chute mini.
Dans la pratique, j'ai beaucoup travaillé avec Fmax et très peu avec vzmin, à voir donc mais les résultats me semblent bizarres

En 2, nous avons les boutons pour les calculs:
Lancer le calcul: lance le calcul de recherche de l'allongment opt pour le cza opt. Pendant ce temps de calcul, tous les autres boutons sont bloqués.
Stopper le calcul: on peut interrompre les calculs en cours, le programme note que l'utilisateur veut arrêter et, lorsque xfoil (en arrière plan) rend la main, le programme stoppe. Les résultats affichés ne sont pas significatifs dans cette phase…
Choisir un profil: simple non?
Répartition des portances: Lorsqu'on a fini un calcul et qu'on a une géométrie suggérée, le programme va calculer la répartition des cz le long de l'envergure de l'aile.
Cette partie est en cours de développement.
 
La zone 3:
Donne le résultat (en général couleur verte)


La zone 4: (en général couleur jaune foncé)
Pour le cz aile optimal trouvé, cette zone (avec un tableau en second onglet, voir flèche) permet de voir des résultats pour les allongements calculés pour ce czaile.

Dans la partie gauche de l'interface, les résultats sont pour une aile théorique elliptique
Dans la partie droite de l'interface, on a des données résultat pour une aile trapézoïdale (un seul trapèze). On peut choisir un effilement pour cette aile.
Comme d'habitude, on a la suggestion du programme en vert, et la possibilité de choisir dans le tableau un allongement difféent (en jaune foncé)

La zone 5, en gris, donne des résultats intermédiaires, ça me servait surtout pour vérifier si le programme fonctionnait bien…

Les zones graphiques reprennent le même code couleur, vert ou jaune.

Principe:

Je suis parti sur ces données à fournir:
Envergure: parce que c'est la plus courante, celle qui détermine la catégorie, l'utilisation etc, il m'a semblé que c'était la dimension de base, déterminente.
Charge alaire: il me fallait une seonde valeur pour pouvoir déterminer le reste par calcul. La charge alaire était la valeur qui me permettait d'automatiser le plus le reste du programme.
J'ai fais des essais avec "on donne une vitesse de vol moyenne" mais les résultats ne sont pas cohérents.
Et puis, estimer une charge alaire est sans doute assez simple finalement en comparant avec des modèles existants.

En général, on choisit un domaine de vol pour un planeur, genre gratte, vitesse, voltige etc.
J'ai cru comprendre que ce domaine de vol était associé à ce qu'on appelle un Cz d'aile ou un coefficient de portance de référence de l'aile.
C'est ce coef de portance (cza) que l'on souhaite avoir lors des phases de vol standard de notre planeur (par exemple, un planeur de gratte aura une phase de vol standard de gratte, et on va chercher à optimiser notre planeur pour un cz de vol dans cette enveloppe, en général 0.7)

A l'origine, il fallait donner aussi le cz aile souhaité.
Le programme calculait ensuite l'allongement optimal avec ces données.
Partant de'un allongement de 5 jusqu'à 35, il calculait pour chacun, à l'aide de formules et de xfoil, entre autre une corde moyenne elliptique, puis une finesse.
L'allongement donnant la meilleure finesse était choisi comme A optimal.
J'ai gardé dans un coin cette version du programme qui me permet quelques petites comparaisons… avec d'autres outils plus perfectionnés

J'ai ensuite décidé d'automatiser le choix du cz aile, pour voir ce que ça pourrait donner.
Donc, pour chaque cz aile le programme calcule l'allongement opt suivant le principe expliqué ci-dessus.
On obtient donc une liste de finesse opt pour chaque cza, on choisit la meilleure et ça nous donne l'allongement optimal pour le cz aile optimal.

Les calculs:

D'une manière générale, les formules sont données ici telles qu'elles apparaissent dans visual basic.
Certains ajustements sont nécessaires pour rester dans les bonnes utilités (x10,x100,/10, etc)
On verra régulièrement CSng qui demande à VB de convertir un nombre en Single, c'est un truc de développement uniquement.

Lorsque l'utilisateur a donné l'envergure, la charge alaire et le profil, et qu'il a choisi pour quel type il souhaite faire le calcul (Fmax ou Vzmin), il clique sur le bouton "Lancer le calcul".

On part d'un czaile de 0.4 (pour un calcul à finesse max, sinon c'est à 0.7 qu'on démarre pour vzmin).
Boucle sur allongements:
Pour ce cza, on boucle d'un allongement de 5 à un allongement de 35.
Dans cette boucle, donc pour chaque Allongement, on calcule:

La vitesse:
Vitesse = CSng(Math.Sqrt((2 * Pesanteur) / Densite)) * CSng(Math.Sqrt(((ChargeAlaire / 10) / Czaile)))
Pesanteur  et Densité sont données (voir image de l'interface)
La charge alaire est divisée par 10 pour être bon dans les unités.

La surface:
Surface = CSng(((Envergure ^ 2 / Allongement) / 100))

La masse:
Masse = Surface * ChargeAlaire

Angle induit:
AlphaInduit = CSng((57.3 * (Czaile / (Math.PI * Allongement))))

Cx induit:
CxInduit = CSng(((CoefOswald * (Czaile ^ 2)) / (Math.PI * Allongement)))
(le coef d'oswald est ici positionné à 1 parce que je prépare l'avenir, sans plus, lorsque je saurai calculer ce coef, il viendra ici influencer cette formule je crois)

La corde moyenne elliptique, formule de thierry platon dans fichier allongement.xls:
CMoyElliptique = CSng((((Math.Sqrt(Surface / Allongement) * 3200) / (3 * Math.PI ^ 2)) / 10))

Foyer de l'aile:
FoyerAile = (CMoyElliptique / 4)

Corde emplanture:
CEmplantureElliptique = CSng(((4 * Surface) / (Math.PI * Envergure)) * 100)

Calcul du Cz du profil:
CzProfilReEnCours = CSng(Czaile * ((2 / Allongement) + 1))

Calcul du Nombre de Reynolds en cours:
ReEnCours = Math.Round(((CoefRe / 1000) * Vitesse * (CMoyElliptique * 10)), 0)
Avec un arrondi sans virgule.

A partir d'ici, on lance xfoil avec le profil en cours, le Re encours et le cz profil trouvé, et il nous retourne diverses valeurs:
Un cx bien sûr (coefficient de trainée du profil)
Un angle alpha du profil
Un coefficient de moment cm

Avec tout ça on calcule:
CxTotal = CxXfoil + CxInduit
Finesse = Czaile / CxTotal
VitesseHorizontale = CSng(Vitesse * Math.Sqrt((Czaile ^ 2) / ((Czaile ^ 2) + (CxTotal ^ 2))))
TauxChute = VitesseHorizontale / Finesse

Angle d'incidence:
Là j'en suis là, à hésiter entre plusieurs options:
Angle total d'incidence future de l'aile = alpha retourné par xfoil + angle induit
Angle total d'incidence future de l'aile = alpha retourné par xfoil
Angle total d'incidence future de l'aile = alpha retourné par xfoil – angle induit

Pour le moment je ne sais plus où j'en étais dans cette version, sans doute l'option 2, même valeur que celle retrounée par xfoil.

Tout conseil ou toute réflexion pour me faire avancer là-dessus sont les bienvenus!!!

Lorsque la finesse max n'évolue plus et que l'allongement dépasse de 10 l'allongement opt de la finesse max, on passe aux calculs suivants afin d'accélerer le fonctionnement du programme.
D'autres optimisations en fonction de là où l'on en est existent, pour diminuer les temps de calcul.

Aucune optimisation n'est faite sur les formules ou les résultats, afin de ne pas fausser ceux-ci en fonction de ce que j'aimerais obtenir...

Boucle sur cz aile:
On fait ces mêmes calculs pour chaque czaile, en utilisant un petit algorythme d'optimisation pour éviter un temps de travail démesuré:
Départ cza=0.4
Ensuite, on fait +0.5 tant que la finesse max est meilleure.
Lorsque fmax n'évolue plus, on teste sur 0.35, si fmax augmente encore on fait du -0.5.
Ainsi on encadre le cza.
Ensuite, une fois une valeur fmax trouvée, on passe à du +0.2 puis -0.2 pour le cza afin d'affiner encore, et pour finir, on calcule pour -0.1, cza, +0.1 et on compare.
Mais regardez le programme tourner, ça vaut toutes les explications.

Les graphiques:
Deux graphiques montrent la forme des ailes, verte pour le choix du programme, et jaune pour le choix restreint de l'utilisateur.
On peut voir les polaires calculées par xfoil sur deux autres graphiques, fournissant le profil, le re encours (vert, bleu rouge c'est clair sur l'interface), et variation de alpha dans xfoil, polaire classique de type 1.

Enfin, des graphiques relatifs au calcul des répartitions de cz, de portance, tout ça en cours de réflexion et de dev.
Pour le moment, le graphique de gauche (zone 3) donne la répartition des cz le long de l'envergure de l'aile, comme ceci:
On prend l'incidence profil (valeur retournée par xfoil)
On prend la vitesse sur trajectoire
La corde d'emplanture elliptique
La demi-envergure
On calcule la corde à une position donnée, en partant de l'emplanture jusqu'au saumon (0% de la demi-envergure, puis 10% , 20, etc, puis 90, 95, 96,97,98,99,100%)
Pour chaque position on calcule le re en cours (coefre*vitesse*cordeencours)
Ensuite on envoie à xfoil ce re, l'incidence du profil qui elle ne varie pas, et il nous retourne un cz.
Au final ça donne une courbe verte, et la courbe rouge est la représentation de la répartition des cordes d'une aile elliptique équivalente.
Côté aile en trapèze, même principe pour la zone 3, avec une répartition de cordes d'une aile elliptique virtuelle calculée avec l'emplanture de l'aile trapèze.

Côté zone 4, j'ai repris exactement le système de calcul d'un fil sur un forum de modélisme:
http://www.f3news.fr/un-peu-de-technique-f3x-f11/distribution-de-portance-et-distribution-de-corde-t1845.htm

Bien sûr, j'aurais aimé calculer ici une répartition de portance tout au long de l'envergure, puis un coefficient d'oswald, mais pour le moment je ne sais pas faire, ces calculs sont complexes, intégrales etc.

Conclusion temporaire:

J'ai joué avec ce programme un nombre incalculable de fois, testé tous les planeurs que j'ai pu trouver, notamment ceux présentés sur le forum de modélisme.
Sur certains modèles le programme tombe juste, c'est-à-dire qu'il conseille, selon l'envergure donnée et la charge alaire, le bon allongement et donc la surface le poids etc.
J'imagine pour la suite que mon programme me donnera le bon volume de stab, la taille du stab, bras de levier, CG etc etc, un modèle complet quoi ;-)


Parfois il tombe assez loin, c'est bizarre, faut le voir...

Enfin..., les plus curieux sont déjà en train de tester leur planeur favori!!!


Et pour en discuter on pourrait utiliser un fil dans le forum de modélisme,

http://www.modelisme.com/forum/aero-planeurs/140051-repartition-de-portance.html

à voir, toutes les critiques, les erreurs que j'ai pu commettre, de réflexion ou d'approche, etc, les surprises des calculs etc.

Et voici un exemple d'un cas qui tombe juste, ou presque, un allongement optimal de 9.9 trouvé pour un allongement de 10 donné...
Le Minus

Minus, dimensionnement automatique

 

PS: Convertisseur

les plus curieux auront remarqué un bouton permettant d'accéder à un petit convertisseur. Celui-ci permet de convertir des mesures anglo-saxonnes comme le pouce ou l'once vers le système métrique et vice-versa.

J'ai extrait cet outil de ce programme pour en faire un programme tout seul, plus précis et plus intuitif, qui permet en plus un petit calcul d'allongement et de charge alaire en fonction de l'envergure, la surface et la masse, vous pouvez le retrouver ici:
Un convertisseur de mesures anglo-saxonnes vers metrique et calcul de charge alaire et allongement