IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Simulink Discussion :

pwm avec duty cycle variable (pendant un temps donné)


Sujet :

Simulink

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Mai 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Mai 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut pwm avec duty cycle variable (pendant un temps donné)
    Bonjour,

    Je suis entrain d'essayer de piloter un moteur DC avec une PWM variable un peu spécifique, dans le but de préserver des batteries. Je n'ai pas besoin de boucle de retour pour le contrôle automatique. Je cherche juste à élaborer une PWM un peu spécifique et je dois me rendre à l'évidence que je n'y arrive pas...
    je souhaite générer, quand le signal de commande est = '1', une PWM qui a un duty cycle à 50 % pendant 200 ms et après un duty cycle à 10 % jusqu’à ce que le signal de commande =0. La PWM a une fréquence fixe.
    schéma général
    http://img4.hostingpics.net/pics/883426image001.png

    schéma PWM
    http://img4.hostingpics.net/pics/631225image002.png

    dans la FCN, J'ai essayé plusieurs codes mais aucuns n'a marché (je ne sais pas si c'est le meilleur moyen de réaliser mon besoin)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function y = fcn(u)
    %#eml
    if (u >= 1)
       y = 0.5; %duty cycle a 50%
    %Je voudrais attendre 200ms ici avant de changer le duty cycle a 10%
       y = 0.1; 
    else
      y=0;
    end

    j'ai essayé de mettre un 'wait()' mais il ne semble pas apprécier. J'ai essayé aussi de compter les front montant jusqu'à une certain valeur (représentant 200ms) mais je n'ai pas réussi générer un compteur (j'ai essayé de la même manière qu'en C mais MATLAB ne semble pas apprécier)
    Est ce que quelqu'un aurait une idée, des explications ou aurait déjà fait ce genre de PWM?

    merci d'avance pour votre aide
    p.s : j'utilise MATLAB R2009a

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2010
    Messages
    30
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 30
    Points : 21
    Points
    21
    Par défaut
    bonjour,

    Je propose peut-être une réponse un peu tardive mais bon

    Voici comment je procéderai à ta place:

    1) Je déclarerai une matrice dans le workspace de MATLAB avec:
    --- 1er colonne: le temps de simulation (ex: start = 0 / Stop= 1000 / Pas = 100)
    --- 2éme colonne: mon entrée pour les 200 premières ms (que des 1 puis que 0)
    --- 3éme colonne: mon entrée pour les ms restantes (des 0 jusqu'à 200ms puis que des 1)
    2) J'importerai la matrice dans les paramètres de configuration de la simulation (onglet Data Import/Export) en renseignant le nom de la matrice

    3) Je créerai un modèle Simulink où:
    --- Un pulse générateur PG1 pour les 200 premières ms
    --- Un input I1 pour faire référence à la première colonne de ma matrice
    --- Un pulse générateur PG2 pour les ms restantes
    --- Un input I2 pour faire référence à la deuxième colonne de ma matrice

    --- Je couplerai PG1 et I1 puis PG2 et I2 avec une boite qui est un multiplicateur puis j’additionnerai le résultat des 2 couples
    ex:
                      PG1-----
                                   * --------- mon PWM pour 200ms -----------------------
                      I1---------
                                                                                                       + ----- mon PWM
                      PG2----
                                   * ---------- mon PWM pour les ms restantes -------
                      I2--------
    Ainsi pendant les 200 premières ms je conserve mon signal PG1 puis je l'annule au profit du signal PG2.

    Je l'ai pas testé mais dans la logique ça pourrait marcher

    kuro00

Discussions similaires

  1. [MySQL] affichage aleatoire d'une variable avec changement au bout d'un temps donné
    Par spokito dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/07/2011, 20h02
  2. garder un signal constant pendant un temps donné
    Par gusta dans le forum Simulink
    Réponses: 1
    Dernier message: 20/05/2010, 07h23
  3. Réponses: 5
    Dernier message: 17/04/2010, 16h59
  4. [Mail] stoper une boucle pendant un temps donné
    Par gpsevasion dans le forum Langage
    Réponses: 4
    Dernier message: 26/06/2007, 01h14
  5. [VB5] apparition d'une fenetre pendant un temps donné
    Par NacNac dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/03/2007, 14h22

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