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

Embarqué Discussion :

Fusion de 2 signaux pwm


Sujet :

Embarqué

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Fusion de 2 signaux pwm
    Bonjour j'ai 2 signaux pwm de 8 bits qui sortent chacun sur un pin différents. Existe-t-il un moyen pour addition leur largeur d'impulsion positive pour augmenter la résolution ?

    Merci.

  2. #2
    Expert éminent sénior
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 647
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 647
    Points : 11 136
    Points
    11 136
    Par défaut
    bonjour,

    ont-ils la même fréquence ? Quels sont leurs rapports cycliques ? Et leur déphasage ?
    Que veux-tu faire ?

    A mon avis il serait plus simple de prendre 1 des deux signaux puis de placer ensuite une bascule de type flip-flop.

  3. #3
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir

    Comme Auteur, je ne comprends pas ce que tu veux faire.
    Si les deux PWM sortent de la même puce, il y a de forte chance qu'ils soient à la même fréquence et synchrone.

    Dans ce cas la précision des deux PWM est la même (temporellement 1/256 de la période du PWM). Et la précision de la somme des deux impulsions restera à cette même durée. Sans compter que de déplacer le 2ème signal temporairement c'est extrêmement compliqué.

    Mais comme tu parles d'augmenter la précision, c'est que souhaiterais-tu avoir au final une précision de 16bits? Il faudrait alors passer par un circuit numérique qui mesure les deux PWM, fait le calcul X*256+Y, puis génère un PWM sur 16bits. Et cela c'est bien plus compliqué que de bien choisir la puce initiale pour qu'elle prenne en charge directement le PWM en 16 bits ou délégué cela à un deuxième micro qui communique au moyen d'un bus SPI, I2C ou autre. AVR, PIC, MCP430 pour les plus courant ont tous un module PWM 16bits intégré.

    Delias

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Tout d'abord merci de m'avoir répondu. Comme vous l'avez devinez les signaux son synchronisé évidemment et en phase puisque c'est le même timer qui les génère. Effectivement je pourrais prendre un autre mcu mais je dois faire avec ça . Avez vous une solution precise?

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Bonsoir

    On ne sait toujours pas ce que tu veux! MCU utilisé, fréquence, précision, utilisation (c'est pour du hachage de puissance ou un signal lissé analogique), etc...
    Ensuite si tu n'avais toujours pas compris les solutions c'est dans l'ordre:
    1: Revoir la conception
    2: Changez de MCU (ceux qui ne font que du 8bits sur du PWM c'est des antiquités!)
    3: Prendre un MCU de moins d'1€ (comme l'ATTiny2313 que j’utilise régulièrement et qui est bientôt déprécié) lui communiquer la valeur de consigne par SPI et généré directement un PWM sur 16 bits.
    4: Bricoler quelque chose avec un MCU dans le genre du précédent pour lire les deux PWM et faire comme à la solution précédente généré un PWM sur 16 bits! Et pour suivre la règle: "bricoler" signifie en général des performances foireuses.
    5: Passer par un circuit analogique, deux filtres passe-bas pour avoir une valeur analogique de chaque PWM, additionner les deux dont un avec une division par 256, puis re-moduler le résultat avec un signal triangulaire et un comparateur. Au mieux avec des composants hyper cher on arrivera à 1% de précision soit 2.5 fois plus que le PWM sur 8 bits, sans compter les non linéarités et le retard induit par les filtres. Tu veux toujours essayer?

    Et si tu n'as toujours pas compris, la solution 3 est inélégante et les solutions 4 et 5 sont ironiques, il y a des fois où il faut reconnaître les erreurs et savoir reprendre les choses depuis le début.

    Delias

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Peux importe le type de mcu ou l'application j'ai 2 pwm sinchronisé et je veux addition la largeur point. Exemple : 500hz pour les 2 pwm mais un à 10% le second à 20% au final je veux 250hz et 15%. Il me faut juste un circuit externe logique ou analogique qui fait l'opération si vous en connaissez un. La raison pour laquelle je suis obligé d'utilisele 8 bit c'est que le mcu qui le fourni est bien connu et donc facile à debuguer. Je pourrais très bien prendre un ARM 32 bits à moins de 2€ mais la n'est pas la question.

  7. #7
    Modérateur

    Homme Profil pro
    Ingénieur électricien
    Inscrit en
    Septembre 2008
    Messages
    1 267
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur électricien

    Informations forums :
    Inscription : Septembre 2008
    Messages : 1 267
    Points : 4 829
    Points
    4 829
    Par défaut
    Et bien maintenant on sait que de deux PWM de 8 bits tu veux en faire un de 9 bits et non de 16 comme j'ai supposé. [Mode boule de cristal cassée]
    Et je ne parle pas d'un ARM 32bits mais bien déjà des petits µC 8bits qui pour la grande majorité d'entre eux ont un ou plusieurs timers 16bits avec un module PWM associé.

    Enregistrer une durée pour la restituer en électronique traditionnelle c'est compliqué, il faut soit charger et décharger un condensateur à courant constant (électronique analogique), soit utiliser un compteur et toutes les portes de commande nécessaires (électronique numérique sans µC ou circuit programmable), sans compter qu'il faut virer une impulsion sur deux. Donc décaler le 2ème PWM pour que son début soit aligné avec la fin du 1er ce n'est pas raisonnablement réalisable sauf à passer par un µC... Par exemple un ATTiny actuel, un kit de programmation ISP (de nombreux schémas pour les faire soit-même se trouvent sur internet) et un code C de 15-20 lignes (probablement) pour compter la durées des deux impulsions et sortir une impulsions d'une durée sommée. Et vu que l'on ne cherche pas les 16 bits de précisions mais uniquement les 9 bits cela doit être même réalisable sans utiliser le générateur PWM interne.

    L'idée d'Auteur, un Flip / Flop qui alterne et autorise une fois le pulse du PWM 1, la seconde le pulse du PWM 2, etc... Dans ton exemple on aurait toujours du 500Hz, mais un pulse de 20% puis un de 10%, puis à nouveau celui de 20%, etc... Et pour diminuer la variation d'un pulse à l'autre il faudrait, dans le code de ton MCU, toujours utiliser des valeurs proches pour les 2 PWM, par exemple la même (valeur sur 9 bits paire) ou juste 1 d'écart (valeur sur 9 bits impaire).

    Sinon par le code dans ton MCU. Tu sommes les deux consignes (donc au maxi 510 ou 511) et par interruption sur le roll-over du compteur du PWM tu agis de la sorte:
    - Si la somme est inférieur à 256, le premier cycle avec la somme, le deuxième cycle à 0%.
    - Si la somme est supérieur à 256, le premier cycle à 100%, le deuxième à (somme - 256).
    A chaque interruption tu inverses le cycle donné en consigne du PWM 8 bits.

    Et tu auras ce que tu veux!

    Delias

Discussions similaires

  1. Commander à distance 4 signaux PWM (serial wifi ?)
    Par moijerem dans le forum Arduino
    Réponses: 0
    Dernier message: 15/06/2016, 16h58
  2. convertir des signaux en pwm pour un 2DOF ou 3DOF
    Par ALBERT-ARDUINO dans le forum Arduino
    Réponses: 2
    Dernier message: 01/05/2016, 20h30
  3. [Amstrad] Signaux à gérer port E/S pour lire ROM
    Par Masterglob dans le forum Autres architectures
    Réponses: 7
    Dernier message: 12/01/2005, 12h03
  4. Fusion directe dans word
    Par wozzy dans le forum Access
    Réponses: 10
    Dernier message: 03/06/2003, 21h02
  5. Tri par fusion d'un tableau
    Par Mailgifson dans le forum C
    Réponses: 5
    Dernier message: 12/12/2002, 14h53

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