générer un signal PWM sans utiliser un module PWM
Affichage des résultats 1 à 4 sur 4

générer un signal PWM sans utiliser un module PWM



Mode arborescent

  1. #1
    invite7ef0a535

    Unhappy générer un signal PWM sans utiliser un module PWM

    je vous générer un signal PWM en utilisant2 timers
    timer 1 mesure les periodes last_T. puisque c'est un signal du secteur donc last_T qui représente une demi periode elle
    est entre 0 et 2500
    timer3 fait plusieurs overFloW considéré comme des pas jusqu'à atteindre % last_T chaque pas est d'une valeur : 0xFF=255

    **********Code de la fonction d'interruption Zéro CroSS:

    //lire la valeur last-T
    last_T = (T1CNTL &0x00FF)|(T1CNTH <<8);
    Seuil_coupure =4600;
    // Seuil_coupure =( last_T * pourcentage ) ;
    Timer1Stop();
    T1CNTL=0; //reset Timer1
    Timer1InitStart ();
    Timer3Stop();
    Timer3InitStart ();
    HAL_TURN_OFF_LED1(); //allumer LED


    ******au niveau interuption overFlow je fait ca:

    pas++; // incrémenter pas
    if (last_T == 0)
    {

    return;
    }
    if (pas<<8 >= Seuil_coupure) // si pas * 255 >= seuil
    {
    Timer3Stop();
    pas = 0;
    HAL_TURN_ON_LED1();


    Sachant que la condition du test "if (last_T =0)" pour traiter le cas de la premiére période qui va étre une periode d'essai on ne veut pas envoyer un ordre à la led aucours de cette periode mais on veut mesure last_T .

    ===> le probléme:
    1étape j'ai volu tester l'algorithme avec une valeur constante de seuil puis dans la suite je vais injecter la pourcentage ,bref

    lorsque je test avec seuil= une valeur entre 0 et 2500 par exemple pour 2000 la LEd fonctionne l'éclairage est non désirable
    par Contre lorsque je test avec seuil= une valeur entre 2500 et 5000 par exemple pour 4000 la LEd fonctionne parfaitement et son éclairage est l'éclairage environ 20% désirable.

    et c'est à cause que just aprés la periode d'essai la valeur de pas est 10 puisk au niveau code j'incrément pas avant tester last_T.
    pas++; // incrémenté pas
    if (last_T == 0)
    {

    return;
    }
    j'ai essayé de corriger cette bêtise en affectant
    pas=0; au niveau du code interruption Zéro cross mais le code n'as pas marché avec seuil 2000 non plus pour 4000 ( lojique aprés mon intervention au niveau code )

    mon code doit fonctionner avec un valeur seuil de 0 à 2500 qui est lojique :'( :'( :'( ca fait 3 jours j'ai fait 3000 milles modif j'ai pas trouver une soluion :'(
    voici l'image ci-joint pour mieux explique la procédure
    Images attachées Images attachées  

Discussions similaires

  1. Réponses: 1
    Dernier message: 23/06/2012, 17h17
  2. génerer des signaux pwm via le module output compare du dspic30f
    Par invite0fc7251b dans le forum Électronique
    Réponses: 0
    Dernier message: 13/05/2012, 17h07
  3. Generer signal PWM precis avec un PIC
    Par invite5d1bc976 dans le forum Électronique
    Réponses: 9
    Dernier message: 06/04/2012, 19h05
  4. Génèrer un signal PWM avec une toolbox Matlab pour un dsPIC 30F4013
    Par invite55caac64 dans le forum Électronique
    Réponses: 2
    Dernier message: 02/02/2011, 21h19
  5. Generer signaux pwm
    Par invited42dacad dans le forum Électronique
    Réponses: 3
    Dernier message: 21/01/2010, 16h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...