LOCODUINO

La PWM : Qu’est-ce que c’est ? (1)

Application aux diodes électroluminescentes

. Par : Dominique, Guillaume, Jean-Luc

Qu’est ce que la PWM ? On reste en numérique, les signaux ont toujours une valeur LOW ou HIGH et le principe est de construire un signal qui est alternativement LOW et HIGH et de répéter très vite cette alternance. La DEL est donc alternativement allumée et éteinte mais le cycle est tellement rapide que la persistance rétinienne nous donne (…)

Retourner à l'article

Vous répondez à :

La PWM : qu’est-ce ? (1) 27 octobre 2016 19:01, par nicozea

On peut faire plus simple (ok je sais, que c’est aussi pédagogique d’utiliser les fonctions...) :

int lum,ajout ;

void setup()
lum=0 ;
ajout=1 ;

void loop()
analogWrite(2, lum) ;
lum=lum+ajout ;
if (lum==255) delay(200) ;ajout=-1 ;
if (lum==0) delay(200) ;ajout=1 ;
delay(1) ;

Cordialement

Qui êtes-vous ?
Votre message

Pour créer des paragraphes, laissez simplement des lignes vides.

Lien hypertexte

(Si votre message se réfère à un article publié sur le Web, ou à une page fournissant plus d’informations, vous pouvez indiquer ci-après le titre de la page et son adresse.)

37 Messages

  • La PWM : qu’est-ce ? (1) 14 mars 2015 12:28, par Jean-Claude (papybricolo)

    Ouffff c’est ardu, mais je me coucherai moins bête....

    Répondre

  • La PWM en alimentation traction avec Arduino 1er janvier 2016 18:29, par Sergio11

    Bonsoir et bonne année à tous

    Dans le cadre des alimentations PWM je serais intéressé par une alimentation traction "moderne" à asservissement de vitesse par exemple gérée par un Arduino.
    Je n’ai rien trouvé sur la toile, mais j’ai peut-être mal cherché.
    Ce pourrait être l’objet d’un nouveau sujet qui intéresserait d’autres modélistes
    Merci pour vos réponses

    Répondre

    • La PWM en alimentation traction avec Arduino 1er janvier 2016 19:56, par Jean-Luc

      Bonsoir et meilleurs vœux pour 2016.

      À vrai dire un tel projet est dans les cartons. Un 2e article traitant de la PWM appliquée aux moteurs est en cours de rédaction. Concernant l’asservissement de vitesse, une carte à été conçue et je suis en train de développer le logiciel. En fait cette carte va au delà d’une alimentation à asservissement de vitesse, elle est destinée à piloter un canton et à collaborer avec ses semblables via un réseau CAN mais rien n’empêche de l’utiliser seule. Deux sujets sur le forum existent : http://forum.locoduino.org/index.ph... et http://forum.locoduino.org/index.ph... . Le prototype de programme de cette alimentation avec asservissement de vitesse est ici : https://git.framasoft.org/Koryphon/...

      Répondre

  • Utilisation des pins A0-A15 25 mars 2016 09:57, par Akis

    Bonjour

    J’ai besoin de commander 30 servos.
    Normalement ils doivent être branchés sur des pins PWM, sur l’Arduino Mega ils y en 15, mais n’est-il pas possible d’utiliser les pins A0 à A15 en sortie PWM ? ce qui au total me permettrait d’utiliser mes 30 servos avec un seul Arduino.
    D’avance merci pour la réponse

    Akis

    Répondre

    • Utilisation des pins A0-A15 25 mars 2016 16:09, par Jean-Luc

      Bonjour,

      Non, il n’est pas nécessaire de connecter les servos aux broches PWM. La bibliothèque utilise les broches numériques normales et le Mega peut piloter 48 servos. La limite vient du multiplexage de la génération des impulsions par les interruptions des timers.

      Mais, j’imagine que vous voulez commander 30 servos pour des aiguillages. Votre réseau est donc plutôt grand. Par conséquent, utiliser un unique Mega nécessitera des fils assez longs entre le Mega et les servos, certains atteignant 2m et peut être plus. Je vous garantie que vos servos vont frétiller car, sur le signal de commande, très peu de courant circule et la tension ne sera pas stable. Les parasites seront interprétés comme des consignes de position et entraîneront dès mouvements erratiques. Un camarade a expérimenté le problème : le fait de mettre une nourrice sous tension engendrait des mouvements des aiguilles.

      Il faut donc employer plusieurs Arduino afin de garder des câbles courts, moins de 1m entre un Arduino et les servos qu’il commande. Les Arduino sont reliés par un bus conçu pour être robuste aux parasites.

      Répondre

      • Utilisation des pins A0-A15 7 décembre 2021 20:51, par MITCH24

        Bonjour,
        Je voudrais juste rebondir sur le fait qu’en éloignant les servo des commandes,des parasites font marcher les servos de façon ératique.
        Simplement les courants parasites sont de trés faible puissance. Il faut juste que la ligne soit en basse impédance pour que les parasites se perdent , juste mettre des résistances de faible valeur en parallèle sur le fil de commande, et verifier de ne pas trop descendre pour que le courant fourni par la commande ne mette pas le controleur à genoux.La solution idéale étant de bufferiser la ligne.

        Répondre

  • La PWM : qu’est-ce ? (1) 25 mars 2016 13:27, par Dominique

    Le Mega dispose de 15 pattes, et pas plus, capables de produire du PWM parce qu’elles sont associées à un registre :

    Arduino Pin Register
    2 OCR3B
    3 OCR3C
    4 OCR4C
    5 OCR3A
    6 OCR4A
    7 OCR4B
    8 OCR4C
    9 OCR2B
    10 OCR2A
    11 OCR1A
    12 OCR1B
    13 OCR0A
    44 OCR5C
    45 OCR5B
    46 OCR5A

    Pour augmenter le nombre de sorties PWM commandées par un même Mega, il faut recourir à une ou plusieurs cartes d’extension dont on va vous trouver des exemples,

    Répondre

    • La PWM : qu’est-ce ? (1) 25 mars 2016 16:46, par Akis

      Merci à Jean-Luc et Dominique pour ces réponses rapides et précises.
      Je vais donc plutôt m’orienter vers plusieurs UNO à la place d’un MEGA car effectivement par endroit j’avoisine les 2m de distance en plaçant le MEGA au centre.
      Je vais chercher les infos sur le bus de liaison entre plusieurs UNO.

      Répondre

  • La PWM : qu’est-ce ? (1) 27 octobre 2016 19:01, par nicozea

    On peut faire plus simple (ok je sais, que c’est aussi pédagogique d’utiliser les fonctions...) :

    int lum,ajout ;

    void setup()
    lum=0 ;
    ajout=1 ;

    void loop()
    analogWrite(2, lum) ;
    lum=lum+ajout ;
    if (lum==255) delay(200) ;ajout=-1 ;
    if (lum==0) delay(200) ;ajout=1 ;
    delay(1) ;

    Cordialement

    Répondre

    • La PWM : qu’est-ce ? (1) 28 octobre 2016 09:43, par Dominique

      C’est justement l’exemple simple du début de l’article, mais ce programme ne fait QUE ça !
      Pour commander plusieurs objets (feux, servos, etc..) en même temps et en toute indépendance, il faut abandonner "delay()" au profit de "millis()", ce que font les bibliothèques pour nous simplifier la vie.

      Répondre

      • La PWM : qu’est-ce ? (1) 28 octobre 2016 21:18, par nicozea

        Désolé, je n’avais pas compris la différence... Maintenant, j’ai compris... Mais comme je débute sur Arduino, je m’étais étonné de la complexité de votre programme... pas si compliqué en fait !!
        Merci en tout cas, pour toutes les richesses de ce site !
        Je pense utiliser Arduino pour gérer mes cantons et ma gare cachée, donc j’ai du pain sur la planche...

        Répondre

  • La PWM : qu’est-ce ? (1) 31 janvier 2017 16:31, par mery

    bonjour j’ai besoin vos aides si vous voulez je cherche d’ecrire un programme arduino uno on utilise le PWM ce programme est comme suit alumer une lampe pas a pas contre l alumage on et off sa vous dire qu’il faut jouer sur le rapport alpha et merci

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 21 juin 2019 00:20, par hakimbekhtaoui

    bonsoir svp j’ai une question jai un arduino uno et j’utilise les 6 ports analogwrite pour allumé 6 leds blanche j’ai mis comme rapporot cyclique la valeur 80
    est ce que l’intensité n’est pas la même sur les 6 leds vu que les fréquences ne sont pas les même sur les broches 3, 9, 10 et 11 et sur les broches 5 et 6 ? personalement a mes yeux je remarque aucune différence
    merci de votre réponse

    Répondre

  • unité de la luminosité 9 juillet 2019 00:41, par BEKHTAOUI ABDELHAKIM

    bonjour svp quel est l’unité de l’intensité de la luminosité de la DEL genre pour un rapport cyclique de 75% l’intensité égal à 0,75 x 255 = 191
    mais 191 quoi ??
    merci d’avance

    Répondre

    • unité de la luminosité 9 juillet 2019 09:05, par Jean-Luc

      Bonjour.

      La « valeur » de la PWM est sur un octet. Le maximum est donc de 255, ce qui correspond à 100% de rapport cyclique. Pour fixer le rapport cyclique à n%, il suffit de faire une règle de 3 : n/100 = p/255. Donc p = 255 x n / 100. En ce qui concerne l’unité physique, 255 est un temps et correspond à la durée de la période de la PWM. 191 est également un temps.

      Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 20 janvier 2020 23:18, par khokha

    bonsoir, svp je peux l’utiliser la PWM pour commender un moteur type brushless !

    genre j’ai deux moteus dans mon projet un principale ey l’autre moteur de queue genre si l’un est en haut

    l’autre en bas et un cas de l’équilibration entre les deux

    merci.

    Répondre

    • La PWM : Qu’est-ce que c’est ? (1) 22 janvier 2020 08:59, par Jean-Luc

      Bonjour.

      un moteur brushless se commande avec un contrôleur brushless. Si vous disposez de contrôleurs brushless pour vos moteur et si la question est de savoir comment commander ces contrôleurs avec une PWM alors la réponse est que ça se commande comme un servomoteur et donc vous pouvez utiliser la bibliothèque Servo.

      Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 12 avril 2020 15:19, par DE OLIVEIRA

    Bonjour a tous,

    Ce fameux article sur la PWM m’a permis d’y voir plus clair, merci, cependant une question m’obsède.

    Car, ayant un projet dans la robotique je souhaiterai synchroniser mon microcontroleur Arduino a mon logiciel de musique. Grace a la carte ARM une fonction "MIDI READ" est disponible dans la bibliothèque ARDUINO. Du coup, par le biais de cette fonction j’envisage de relier la PWM au metronome de mon logiciel.

    Ma question est la suivante, est il possible de transmettre les données de BPM (battements par minute) du metronome a la PWM du microcontroleur ? je pense que oui, mais je souhaiterai avoir une vision plus clair de la chose, merci.

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 12 avril 2020 15:21, par DE OLIVEIRA

    De plus,

    le moteur a contrôler sera un moteur CC, alimenter en 24V via transistor, et le microcontroleur sera alimenter a chaque utilisation via USB.

    Merci a vous.

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 2 juin 2020 23:12, par nico

    Bonjour je viens de faire un copier coller de votre code mais je n’arrive pas
    à le faire fonctionner.
    Auriez vous un lien ou il serait coder en une seule fois .
    MERCI.

    Répondre

    • La PWM : Qu’est-ce que c’est ? (1) 3 juin 2020 12:25, par Jean-Luc

      Bonjour,

      Le code présenté dans l’article est incomplet, il n’est là que pour être expliqué et certaines déclarations manquent. Le code complet sous forme d’archive zip, comme souligné ci-dessous par msport, est à la fin de l’article.

      Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 3 juin 2020 09:34, par msport

    Bonjour,
    vous n’êtes pas parvenu à dézipper le fichier ?

    Voir en ligne : Sketch du feu clignotant de PN

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 3 juin 2020 19:26, par nico

    Bonjour merci pour votre réponse.

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 16 juillet 2020 10:48, par Bonnaure

    Bonjour,

    je suis en pleine création d’un pédalier d’effets pour guitare. Je vais utiliser plusieurs Arduinos en I2C à fin de piloter 48 relais, 10 écrans OLED, 10 switchs au pied, une 10ène de type micro boutons, une 20ène de LED et de 34 potards analogiques linéaires et logarithmiques.

    J’aimerais comprendre un truc sur les sorties PWM. Imaginons que je rentre mon potard 1 linéaire dans mon entrée A0, alimenté en 5V, que je récupère l’info reçue (0 à 1023), que je la transforme à 0-255, puis-je utiliser ces infos pour piloter le gain sur ma pédale via une sortie PWM ? En gros, au lieu d’utiliser mon potard directement, j’aimerais passer par l’Arduino, et du coup, pouvoir sauvegarder et rappeler les valeurs via ma carte SD ?

    Merci,
    Fred

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 16 juillet 2020 16:04, par Dominique

    Nous n’avons rien contre la musique, mais nous sommes pour le modélisme ferroviaire, seulement.

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 12 août 2022 17:23, par Phil

    Bonjour

    j’ai surement loupé des tutos mais j’ai 2 Pb de compréhension
    1) avec (struct FeuClignotant& feu) plus particulièrement avec & feu. pourquoi l’ajouter ? et pourquoi &
    2) avec switch (feu.etat) plus particulièrement avec feu.etat c’est une variable ? où la trouve-t-on ? et explications sur ce point . dans arduino
    désolé peut-être déjà expliqué mais où ? je suis débutant jusqu’à présent pas de Pb mais là avec les structures, nœud au cerveau. mais c’est super, très bon tuto.
    Cordialement
    Phil

    Répondre

    • La PWM : Qu’est-ce que c’est ? (1) 24 août 2022 17:31, par Jean-Luc

      Bonjour Phil,

      1) En C++, le & dans la déclaration d’un argument de fonction signifie que l’argument est passé par référence et non par valeur. Si l’argument était passé par valeur, il faudrait copier 6 octets (les deux byte et l’unsigned long). Avec le &, c’est l’adresse de l’argument qui est passé et donc, sur Arduino AVR 8 bits, 2 octets seulement. Ça permet d’économiser de la mémoire.

      2) feu est l’argument, comme c’est une struct qui possède 3 champs : pin, etat et dateDernierChangement, on accède aux champs via le . et leur nom. feu.etat permet donc d’accéder au champ etat de la struct. Voir Les structures.

      Répondre

      • La PWM : Qu’est-ce que c’est ? (1) 28 août 2022 11:02, par Phil

        Bonjour Jean-Luc
        désolé pour ce retard de réponse mais déjà MERCI du retour.
        je pense déjà descendre d’un échelon (voir plus) car je pensais être à l’aise avec mon simulateur Tinkercad (pas tjrs juste calage avec servomoteur), les boucles, les bouton les feux, millis() etc... mais là avec les structures et les pointeurs je pense avoir sauté plusieurs classes et ne pas être de niveau (pour l’instant).
        bien que ton explication soit parfaitement explicite c’est mon cerveau qui a du mal. je vais donc relire et relire ta réponse pour bien la comprendre. tu sais je débute après un passage sur une matière qui me tenait à cœur : l’électronique. je me souviens les boites que m’avait acheté mes parents pour faire des montages. A la retraite, j’ai voulu mis mettre sérieusement, j’ai donc édité les 3 volumes de "Apprendre l’électrique en partant de zéro niveau 1, 2 et 3" (300 pages à chaque fois.
        je n’ai tjrs pas fini le premier volume car ce n’est pas évident et en plus quand j’en ai parlé autour de moi, on m’a dit c’est du passé, il faut évoluer. il faut passer à Arduino avec sa programmation. toi qui aime l’informatique, pas de pb. au début je n’étais pas pour mais avec Tinkercad et quel bouquins, super mais tout à une limite donc les "structures" avec modération pour bien les digérer.
        j’ai même trouvé des erreur dans l’édition de 2018 de "l’Arduino à l’école". et j’ai cherché car pour moi un livre, un prof ne peuvent se trompé. et bien si. dans leur schéma de montage le bouton est faux, il utilise la mauvaise pas.
        Bref, je parle, je parle des fois pour ne rien dire mais sincèrement encore MERCI er heureusement qu’il y a des gens comme toi, Christian et doit échanger avec Thierry (pas encore fait).
        si une dernière petite chose, après échange avec Christian je me suis lancé dans le langage C qui étudier les structures (un peu digéré mais pas les pointeurs), tu me parle du C++ donc je dois étudier le c++ ou rester avec mon C ???
        Merci du retour
        bon courage pour la suite
        Cordialement
        Phil
        Ps : désolé pour la longueur

        Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 16 août 2022 12:54, par Phil

    Bonjour Jean-Luc
    encore moi,
    super le programme mais j’ai encore un Pb.
    je voudrai imprimer sur le moniteur série (Tinkercad) l’état de "feu.etat".
    j’ai donc testé 3 possibilités et rien ou message d’erreur ? comment puis-je faire ?
    j’ai écrit :

     switch (feu.etat)
     //Serial.print("feu.etat : ");  {{à ce niveau message d'erreur}}
     //Serial.println(feu.etat);
      {"{{symbole d'ouverture de switch qui ne s'imprime pas}} {"
     Serial.print("feu.etat : ");    {{à ce niveau pas de visualisation}}
     {Serial.println(feu.etat);    
        case ETEINT:
      Serial.print("feu.etat : ");     {{à ce niveau pas de visualisation}}
     Serial.println(feu.etat); 

    le "Serial.print" après le switch me provoque un message d’erreur et les autres "Serial.print" ne me bloque pas la simulation mais ne m’affiche rien dans le moniteur série de Tinkercad.
    je cherche donc une explication car j’itilise assez souvent "Serial.print" pour vérifier l’état de variable ou le bon fonctionnement de mes boucles.
    Merci du retour
    Cordialement
    Phil

    Répondre

  • La PWM : Qu’est-ce que c’est ? (1) 8 avril 2023 23:48, par salhi mohamed

    Comme je voudrais réaliser des projets personnels, j’ai acheté une carte pro micro clone, j’aimerais me familiariser avec cette carte, merci pour votre site qui est remarquable.

    Répondre

Rubrique Projets

Les derniers articles

Les articles les plus lus