1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    avril 2017
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 24
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : avril 2017
    Messages : 1
    Points : 1
    Points
    1

    Par défaut code C qui permet de calculer le déphasage entre une tension et un courant sinusoidaux

    Bonjour,
    je dois faire un programme en c qui permet de calculer le déphasage entre la tension et le courant en régime sinusoïdale, j'ai essayé d’implémenter le code suivant mais il me donne comme résultat 0, je ne sais pas où est le problème!
    merci
    NB x1 c'est la tension,x2 courant,et y1 est le déphasage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    float t1=0.,t2=0.;
    	double n,Tperiod,pi=3.14;
     
    	Tperiod=1./50.;
     
    if (n==Tperiod)
    {
    	n++;
    	if (x1 ==0.)
    	{
    		t1==t;
    	}
    	if (x2 ==0.)
    	{
    		t2==t;
    	}
    }
    	y1 =2.*pi*(1./Tperiod)*(t1-t2) ;

  2. #2
    Membre expert
    Avatar de fred1599
    Homme Profil pro
    Enseignant
    Inscrit en
    juillet 2006
    Messages
    2 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juillet 2006
    Messages : 2 073
    Points : 3 311
    Points
    3 311

    Par défaut

    Mais que vaut t, n ? Calcul de déphasage entre tension et courant, mais à partir de quoi ? Il manque beaucoup d'informations !
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  3. #3
    Membre actif
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    juin 2012
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : juin 2012
    Messages : 210
    Points : 270
    Points
    270

    Par défaut

    Bonjour,

    J'imagine que x1 et x2 sont des variables échantillonnées et que les tests (lignes 9 et 13) sont dans une boucle ?
    Mais ces tests ont peu de chances d'être vrai, il faudrait faire un test sur un minimum de valeur absolue du signal.

  4. #4
    Expert confirmé
    Avatar de Vincent PETIT
    Homme Profil pro
    Ancien développeur matériel électronique (Hard/Soft)
    Inscrit en
    avril 2002
    Messages
    1 535
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ancien développeur matériel électronique (Hard/Soft)
    Secteur : Service public

    Informations forums :
    Inscription : avril 2002
    Messages : 1 535
    Points : 4 592
    Points
    4 592

    Par défaut

    Salut,
    C'est vrai qu'on doit quand même imaginer beaucoup de choses....

    Comme nanosoft, je pense que x1 et x2 sont des valeurs échantillonnées.

    Les tests sont des détections de passage par 0.

    Donc t1 correspond au moment où le signal x1 est passé par 0 et t2 au moment où le signal x2 est passé par 0.

    Exemple de cas particuliers.
    Si t1 - t2 = 0, les signaux sont en phases.
    Si t1 - t2 = π, les signaux sont en oppositions de phases (180°),
    Si t1 - t2 = π/2, les signaux sont en quadratures (90°)

    @khouu,
    t1==t; je t'invite a regarder de près cette erreur !

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    février 2006
    Messages
    5 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : février 2006
    Messages : 5 674
    Points : 15 449
    Points
    15 449
    Billets dans le blog
    1

    Par défaut

    Bonjour

    Il est souvent peu recommandé de comparer deux flottants en égalité stricte. Parce que les erreurs d'arrondi font que justement le flottant, même s'il doit valoir la valeur ciblée, peut ne la valoir pas tout à fait. Exemple if (1.0/3*3 == 1.0). Mathématiquement c'est vrai mais en C ça risque de ne pas l'être.
    Il vaut donc mieux passer par un test si la différence entre la valeur à examiner et la valeur ciblée est inférieure à un epsilon. Exemple if ((1.0/3*3-1.0) < 1e-10).

    Et sinon ça fait très pro d'écrire float t1=0.,t2=0.; sans mettre de décimale après le point mais bon, c'est pas la mort que d'écrire float t1=0.0,t2=0.0; et ça devient de suite plus lisible.
    Et en fait non, ça ne fait absolument pas pro car il existe un truc nommé "cast implicite" et donc écrire float t1=0,t2=0; fonctionne aussi et là on fait vraiment figure de pro qui ne met pas de point décimal sans avoir de décimale à écrire...
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site

Discussions similaires

  1. Réponses: 1
    Dernier message: 20/08/2014, 22h36
  2. Réponses: 0
    Dernier message: 15/11/2009, 22h00
  3. Réponses: 2
    Dernier message: 16/07/2007, 08h39
  4. Réponses: 1
    Dernier message: 03/07/2007, 09h43
  5. la commande qui permet d'afficher la description d'une table
    Par dor_boucle dans le forum MS SQL-Server
    Réponses: 4
    Dernier message: 14/12/2005, 12h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo