PWM et Arduino
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

PWM et Arduino



  1. #1
    Dr_H2O2

    PWM et Arduino


    ------

    Bonsoir/bonjour

    Sur l'IDE Arduino, la fonction analogWrite() permet de créer un signal MLI à 490Hz.
    Seulement, les Arduino ( et les Atmel en général il me semble) ne peuvent effectuer cette fonction que sur certaines sorties.
    Une question, pourquoi cette limitation ? Parce que analogWrite() n'est qu'une fonction précodée ? Et le reste des sorties devrait pouvoir sortir un signal, surtout aussi lent que du 490Hz.

    Merci d'avance, Adri

    -----

  2. #2
    vincent66

    Re : PWM et Arduino

    Le(s) générateur(s) PWM intégrés ne sont disponibles que sur des pins dédiés,du PWM par soft est possible en principe sur n'importe quel pin mais ceci n'est pas implémenté dans les arduino, il faut se farcir un peu de code pour y parvenir...
    Leonardo était ingénieur "sans papier", et moi diplômé juste...technicien...

  3. #3
    Dr_H2O2

    Re : PWM et Arduino

    Oui, mais la fonction analogWrite() c'est du soft ? Si oui alors ce n'est qu'une liste d'instructions pré-codées (feignace d'utilisateur ! ). Alors pourquoi cette limite ?

  4. #4
    PA5CAL

    Re : PWM et Arduino

    Bonsoir

    Par défaut, chaque signal PWM (ou MLI en français) produit par l'une des sorties spéciques de l'Arduino est généré matériellement, grâce à un timer et à un comparateur numérique.

    La fonction analogWrite() de la bibliothèque Arduino se contente juste de configurer ce matériel afin qu'il démarre avec les paramètres requis. Et une fois configuré, le logiciel ne s'en occupe plus (contrairement à ce qui se passerait si le signal PWM était généré logiciellement).

    Comme les timers et les comparateurs sont présents en quantité limitée dans les µC AVR, il n'est matériellement pas possible de générer autant de signaux PWM que de sorties disponibles. D'autre part, l'affectation des unités internes aux sorties étant fixée par construction (contrairement à ce que proposent d'autres µC plus puissants, notamment grâce à des bus multiples configurables), seules certaines sorties peuvent être pilotées par PWM.

    Ainsi, l'ATmega328P de l'Arduino Uno propose jusqu'à six sorties PWM directes, correspondant à deux timers 8 bits et un timer 16 bits, avec chacun deux comparateurs. De la même manière, l'ATmega2560 de l'Arduino Mega 2560 propose jusqu'à quinze sorties PWM directes indépendantes, correspondant à deux timers 8 bits avec chacun deux comparateurs, et quatre timers 16 bits avec chacun trois comparateurs (deux générateurs PWM aboutissent à la même sortie).

    Mais comme en règle générale les applications ne réclament pas de générer un nombre très élevé de signaux, la gamme des µC AVR parvient tout de même, malgré cette limitation, à répondre directement à une grande majorité des besoins en la matière.

    Par ailleurs, lorsque cela ne suffit pas, il reste la possibilité de générer logiciellement des signaux PWM sur d'autres sorties.

  5. A voir en vidéo sur Futura
  6. #5
    PA5CAL

    Re : PWM et Arduino

    Pour info, il est possible de modifier simplement la fréquence des signaux PWM matériels en re-programmant les prescalers des timers.

    Par exemple, sur l'Arduino Uno, on peut monter cette fréquence à 31250 Hz (soit 16 MHz / 512) sur les sorties PWM #3 et #11 (correspondant au timer 2) en ajoutant au code la ligne :
    Code:
    TCCR2B = (TCCR2B & 0xF8) | 1;
    Dernière modification par PA5CAL ; 28/04/2014 à 04h50.

  7. #6
    PA5CAL

    Re : PWM et Arduino

    Oups... une petite erreur. Du fait du mode de fonctionnement paramétré par défaut, le cycle du timer 2 est constitué de 510 périodes d'horloge, et non de 512. La fréquence obtenue sur les sorties #3 et #11 est par conséquent 31372 Hz, et non 31250 Hz comme indiqué ci-dessus.

  8. #7
    Dr_H2O2

    Re : PWM et Arduino

    Merci beaucoup PA5CAL ! C'est tout de suite plus clair !

Discussions similaires

  1. Arduino anti rebond avec arduino
    Par sari12 dans le forum Électronique
    Réponses: 13
    Dernier message: 23/10/2014, 18h04
  2. Communication arduino-arduino avec module Xbee
    Par TPESI22012 dans le forum Électronique
    Réponses: 2
    Dernier message: 23/12/2013, 18h24
  3. Arduino CNC
    Par margoullat dans le forum Électronique
    Réponses: 6
    Dernier message: 22/12/2013, 09h55
  4. arduino
    Par invitead1af344 dans le forum Électronique
    Réponses: 6
    Dernier message: 03/01/2011, 21h22
  5. Arduino
    Par qwintine dans le forum Électronique
    Réponses: 18
    Dernier message: 18/11/2010, 20h07
Découvrez nos comparatifs produits sur l'informatique et les technologies.