s
Overblog
Editer l'article Suivre ce blog Administration + Créer mon blog
Trucs en vrac

Calcul des zones d'interférence

26 Septembre 2014 , Rédigé par Jean-Pierre Tosoni Publié dans #maths, #Wi-Fi, #trigonométrie, #programmation

Dans l'article "802.11ac: le beamforming" j'ai inséré de jolis dessins qui représentent la puissance du signal en tenant compte des interférences entre deux antennes.

Ces dessins sont issus d'un programme en langage C pour calculer les données, qui sont ensuite exploitées par le programme "gnuplot" sous Linux (c'est un package Debian).

 A la demande unanime de ma fille qui planche toujours sa trigo, voici les formules de calcul du programme C.

La théorie

La combinaison (l'addition) de deux ondes de même fréquence résulte en une onde de même fréquence mais d'une amplitude et d'une phase qui varient en fonction des amplitudes et phases des ondes d'origine.

Pour simplifier je suis parti du principe que les deux antennes émettent à la même puissance. Ainsi, seule la différence de phase influe sur la somme des deux ondes en un point quelconque de l'espace.

L'idée est de calculer la distance que parcourent les ondes depuis chaque antenne jusqu'à chaque point du plan, et d'en déduire la différence de phase.

Le repère géométrique

Je travaille dans un plan perpendiculaire aux antennes bâtons que je suppose omnidirectionnelles (voir dessin). Pour calculer les distances je me place dans un repère orthonormé dont l'axe Oy passe par les deux antennes, et l'axe Ox passe à égale distance des antennes.

Soit enfin "e" la distance entre l'origine O et une antenne. Les coordonnées de l'antenne A1 sont (0,e) et celles de l'antenne A2 (0,-e). Dans l'article j'utilisais e = 0,03 m (soit une demi longueur d'onde)

Les formules

Les calculs sont effectués pour une fréquence F de 5 GHz soit 5×109 (légèrement en dessous de la bande Wi-Fi) correspondant à une longueur d'onde dans l'air de

λ = cair / F = 0,06 m (6 centimètres)

Pour un point M(x,y) on calcule d'abord les distances aux deux antennes :

d1 = √(x2+(y-e)2)

d2 = √(x2+(y+e)2)

Ensuite on calcule le retard correspondant à la différence des distances, en tenant compte de la vitesse de la lumière (j'ai tenu compte de la vitesse dans l'air) :

Δt =  (d1 - d2) / cair avec Cair = 299703000 m/s

L'amplitude des deux signaux superposés est alors proportionnelle à cos(2πFΔt)

C'est la valeur du cosinus que je convertis en intensité de bleu. Notez que comme la fonction cos est paire, le résultat est le même, que je calcule d1-d2 ou d2-d1.

L'optimisation

Pour calculer un grand nombre de points (suivant la surface couverte j'allais de 250.000 à plusieurs millions), il vaut mieux précalculer ce qui peut l'être. En langage C cela donne :

    coord_t point;
    double puls; // pulsation omega = 2piF
    double constante;

    puls = 2*M_PI*freq;
    constante = puls / C_AIR; // phy = (puls * t) et t = (distance/vitesse)

    if (start.x > end.x) { double d = start.x; start.x = end.x; end.x = d; }
    if (start.y > end.y) { double d = start.y; start.y = end.y; end.y = d; }
    for (point.x = start.x; point.x < end.x; point.x += step)
    {
        for (point.y = start.y; point.y < end.y; point.y += step)
        {
            // calcul distance ant <=> point
            double d1 = distance(ant1, point);
            double d2 = distance(ant2, point);
            // calcul dephasage : 
            double phi = constante*(d1-d2) + dPhy;
            double cosphy = cos(phi);
            printf("%lf %lf %3.1lf\n", point.x, point.y, cosphy);
        }
    }

Enfin, si on veut observer l'effet d'un déphasage au départ d'une antenne, il suffit d'ajouter l'angle de déphasage à phy : c'est le paramètre dPhy dans le code.

Conclusion

Malgré quelques approximations limitées les graphiques obtenus visualisent parfaitement l'effet d'interférence entre les antennes. En faisant varier la distance entre les antennes on obtient quelques effets supplémentaires intéressants : à 9 cm on a un rotation à 90° du diagramme (les ondes s'annulent sur l'axe Oy), à partir de 12 cm on multiplie les secteurs de réception et de non-réception.

Commenter cet article