Pour une utilisation RC Indoor, le choix d’un profil dépend fortement du type de vol recherché (vol lent d’intérieur style Slow Flyer, voltige 3D/F3P ou maquette ultra-légère).
Pour cette discipline, la recherche d’une épaisseur relative importante (supérieure à 11 %) vise principalement à augmenter le traînée pour maintenir une vitesse de vol basse et constante, tout en élargissant la plage d’incidence et en adoucissant le décrochage à très bas nombre de Reynolds ().
Si votre objectif est le vol tranche, le vol dos et les manœuvres acrobatiques en salle :
Si votre objectif est de voler le plus lentement possible avec un modèle à moteur électrique réduit ou à bord d’une petite salle :
| Type de construction | Profil recommandé | Épaisseur relative | Intérêt principal |
|---|---|---|---|
| Profil creux / Monosurface (Depron 3mm) | Profil type Curved Plate (cambrure 4-6%) | ~1–3 % (hors cambrure) | Ultra-léger, mais hors profil épais classique. |
| Vol pleine masse / Volume (EPP/Depron 3D / Impression 3D LW-PLA) | NACA 0015 (Voltige) ou NACA 4415 (Trainer/Slow) | 15 % | Épaisseur structurelle pour passer les longerons + freinage aérodynamique efficace. |
| Structure balsa classique indoor | Eppler 472 ou Clark Y épaissi | 12 % à 14 % | Rigide, bonne tenue aux faibles Reynolds (). |
Pour réaliser votre gabarit de formage sous FreeCAD (ou OpenSCAD), l’approche la plus propre consiste à générer le profil aérodynamique (par exemple un NACA épais type 4415 ou 0015), à créer un décalage (offset) vers le haut correspondant à l’épaisseur de votre vector board (2 mm), puis à ajouter l’épaisseur de la coque imprimée (1,2 mm pour 3 périmètres de 0,4 mm) ainsi qu’une base plate inférieure pour fermer le tout.
Vous pouvez copier-coller ce script directement dans la console Python de FreeCAD ou l’enregistrer dans le gestionnaire de macros (Macro -> Macros -> Créer). Ce script génère automatiquement le profil, applique les décalages pour la plaque de 2 mm et la coque de 1,2 mm, puis extrude le tout en 3D sur une largeur de 100 mm.
import FreeCAD as App
import FreeCADGui as Gui
import Part
import math
def create_airfoil_jig():
doc = App.newDocument("Gabarit_Formage_Indoor")
# --- PARAMÈTRES ---
chord = 150.0 # Longueur de la corde en mm
width = 100.0 # Largeur du gabarit d'impression en mm
board_thick = 2.0 # Épaisseur du vector board en mm
wall_thick = 1.2 # Épaisseur de la coque (3 périmètres x 0.4mm)
num_points = 60 # Résolution du profil
# --- 1. GÉNÉRATION DES POINTS DE L'EXTRADOS (Ex: NACA 4415 / Profil épais) ---
extrados_pts = []
for i in range(num_points + 1):
x = (i / num_points) * chord
xt = x / chord
# Équation d'un profil épais cambré (adapté vol lent / indoor)
yt = chord * 0.15 * (2.969 * math.sqrt(xt) - 1.260 * xt - 3.516 * (xt**2) + 2.843 * (xt**3) - 1.015 * (xt**4))
extrados_pts.append(App.Vector(x, max(yt, 0), 0))
wire_extrados = Part.makePolygon(extrados_pts)
# --- 2. CRÉATION DU LOGEMENT DE LA PLANCHE (Offset + 2mm) ---
# Décalage normalisé vers le haut pour l'intrados virtuel de la planche
offset_board_pts = []
for pt in extrados_pts:
# Approximation normale vers le haut (axe Y) pour un profil fin/moyen
offset_board_pts.append(App.Vector(pt.x, pt.y + board_thick, 0))
wire_board = Part.makePolygon(offset_board_pts)
# --- 3. COQUE EXTÉRIEURE DU GABARIT (Offset + wall_thick) ---
offset_outer_pts = []
for pt in offset_board_pts:
offset_outer_pts.append(App.Vector(pt.x, pt.y + wall_thick, 0))
wire_outer = Part.makePolygon(offset_outer_pts)
# --- 4. FERMETURE DU CONTOUR POUR EXTRUSION ---
# Récupération des bords d'attaque et de fuite
p_lead_inner = offset_board_pts[0]
p_lead_outer = offset_outer_pts[0]
p_trail_inner = offset_board_pts[-1]
p_trail_outer = offset_outer_pts[-1]
# Création de la face fermée (section 2D du gabarit)
# On relie l'externe et l'interne au bord d'attaque, au bord de fuite, et une base plate en bas
base_y = min(p_lead_inner.y, p_trail_inner.y) - 5.0 # Base plate sous le profil
edge_lead = Part.makeLine(p_lead_outer, p_lead_inner)
edge_trail = Part.makeLine(p_trail_inner, p_trail_outer)
edge_base = Part.makeLine(App.Vector(0, base_y, 0), App.Vector(chord, base_y, 0))
edge_front_wall = Part.makeLine(App.Vector(0, base_y, 0), p_lead_outer)
edge_back_wall = Part.makeLine(App.Vector(chord, base_y, 0), p_trail_outer)
# Assemblage du filaire complet de la section du gabarit
section_wire = Part.Wire([wire_outer, edge_lead, Part.Wire([edge_base, edge_front_wall]), Part.Wire([edge_back_wall, edge_trail])])
# --- 5. EXTRUSION 3D ---
face = Part.Face(section_wire)
solid = face.extrude(App.Vector(0, 0, width))
# Affichage dans FreeCAD
doc.addObject("Part::Feature", "GabaritFormage").Shape = solid
doc.recompute()
App.Console.PrintMessage("Gabarit de formage généré avec succès !\n")
create_airfoil_jig()
Si vous préférez OpenSCAD, la gestion des polygones extrudés et des décalages avec la bibliothèque offset() est extrêmement directe :
// Paramètres
chord = 150;
width = 100;
board_thick = 2.0;
wall_thick = 1.2;
module airfoil_profile() {
// Vos points de profil ou import de fichier .dat
polygon(points=[
[0,0], [10, 8], [30, 15], [50, 18], [100, 10], [150, 0]
]);
}
// Génération du gabarit creux avec logement
linear_extrude(height=width)
difference() {
// Forme extérieure élargie
offset(r=wall_thick)
offset(delta=board_thick)
airfoil_profile();
// Évidement pour insérer la plaque et contraindre le formage
offset(delta=board_thick)
airfoil_profile();
}