04/02/2025
3 x 2 h
LED / Servo
modulation à largeur d'impulsion
Pré requis
Arduino UNO
Pc Linux Debian/Ubuntu
IDE ARDUINO 1.8.19
Sonde Numèrique SALEAE
But
Relever des chronogrammes
Calculer une PWM (Rapport Cyclique)
Flux lumineux
Piloter un Servo Moteur
Donner la définition de la PWM vu en physique. (PULSE WIDTH MODULATION)
avec l'arduino UNO on va utiliser la LED connectées sur la broche 13
cas 1: Ecrire un code qui va allumer la LED (13) 4 ms et l'éteindre pendant 1 ms (que constatez vous ?)
cas 2: Ecrire un code qui va allumer la LED (13) 1 ms et l'éteindre pendant 4 ms (que constatez vous ?)
donnez la définition du rapport cyclique .
donnez le Rapport Cyclique du cas 1
donnez le Rapport Cyclique du cas 2
cas 3: Ecrire un code ou le Rapport cyclique est de 0
cas 4: Ecrire un code ou le Rapport cyclique est de 1
Utiliser Monia pour faire les Organigrammes ,et générer le pseudo langage (PL)
Ecrire un code qui va faire varier la PWM (Rc) de 0 à 1
sur plusieurs secondes
De sorte de voir la LED (BUILT IN) eteinte qui va s'allumer pour finr à fond (Rc=1) et progressivement s'eteindre .. à l'echelle d'un humain.
A vous de jouer !
Un Servo Moteur est un moteur asservi à une consigne , ici la consigne est envoyé par un signal PWM
Utilisation d'un SERVO MOTEUR sur la broche 13 (signal)
fonctionnement d'un servo moteur .
Respecter les temps pour commander ce servo moteur
position centrale
+90 degrés
-90 degrés
Pour un servomoteur, la largeur d'impulsion est le temps pendant lequel le signal reste HIGH. Elle détermine la position du servomoteur.
Pour un servomoteur standard :
signal ou T = 20 ms (50Hz)
1 ms de largeur d'impulsion correspond à 0°.
1,5 ms de largeur d'impulsion correspond à 90°.
2 ms de largeur d'impulsion correspond à 180°.
/* pwm exemple simple de commande d'un servo moteur */
/* Bogt 2023 */
#define A 0.996
#define B 1.5
#define C 2
#define H A /* H est sélectionné ici */
void setup() {
// put your setup code here, to run once:
pinMode(13,OUTPUT); /* sortie connectée sue une led de l'arduino UNO */
digitalWrite(13, HIGH);
}
void loop() {
// put your main code here, to run repeatedly:
digitalWrite(13, HIGH);
delay(20-H);
digitalWrite(13, LOW);
delay(H);
}
Réaliser un CODE arduino ou (sketch Arduino) pour piloter le SERVO MOTEUR sur la broche 13 de l'arduino.
Le but final est d'avoir un Servo moteur qui va bouger 0 à 180 à la fréquence de 0.2Hz
Et de façon linaire entre ces 2 positions.
3-1 - justifiez vos calculs
donnez des explications.
3-2- Donnez un Sketch Arduino qui va réaliser le cahier des charges de notre travail.
faire valider par votre professeur.
3-3- Relever les chronogrammes avec la sonde Salea.