La PWM : Qu’est-ce que c’est ? (1)
Application aux diodes électroluminescentes
. Par : Dominique, Guillaume, Jean-Luc
Vous répondez à :
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
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....
-
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-
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/...
-
-
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éponseAkis
-
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.
-
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.
-
-
-
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 OCR5APour 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,
-
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.
-
-
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
-
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.-
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...
-
-
-
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
-
Bonjour,
Traduite en français, votre demande pourrait ne pas concerner le modélisme ferroviaire. Merci de préciser.
Dominique -
La PWM : qu’est-ce ? (1) 2 février 2017 18:14, par Dominique
Avec un peu de chance ce que vous cherchez se trouve à la fin de cet article :
où on décrit le fading du feux rouge du passage à niveau.
Vous pouvez vous en inspirer ;)
-
-
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-
Bonjour,
L’intensité dépend en première approximation du rapport cyclique et pas de la fréquence, surtout pour des fréquences aussi proches (facteur 2).
-
-
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-
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.
-
-
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.
-
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.
-
-
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.
-
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éponse NON : désolé vous n’êtes pas sur le bon site (voir A propos de LOCODUINO)
-
-
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.-
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.
-
-
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
-
La PWM : Qu’est-ce que c’est ? (1) 3 juin 2020 19:26, par nico
Bonjour merci pour votre réponse.
-
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 -
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.
-
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-
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.
-
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
-
-
-
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-
Bonjour Jean-Luc
je viens trouver la source de mon erreur avec un autre programme.
si on ne déclare pas :
Serial.begin(9600) ; dans le set up, les Serial.print et Serial.println sont inactif dans le moniteur de tinkercad, donc aucun affichage de tes variables, valeurs.désolé.
A+
Cordialement
Phil-
Il manque également des accolades dans votre switch. Voir Instructions conditionnelles : le switch ... case
-
Bonjour Jean-Luc
Merci du retour et de l’explication et de l’aide.
Cordialement
Phil
-
-
-
-
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.