MT4 TD MCC correction PID
- Détails
- Clics : 10
Commande de vitesse d’un moteur à courant continu avec encodeur et PID
Ce programme Arduino permet de commander la vitesse d’un moteur à courant continu à l’aide d’un pont en H de type L298N, d’un encodeur incrémental et d’une correction PID.
Principe
L’encodeur mesure la vitesse réelle du moteur. Le programme compare cette vitesse à une consigne. L’erreur est ensuite corrigée par un régulateur PID qui ajuste automatiquement le rapport cyclique PWM.
Matériel utilisé
- Arduino Uno
- Pont en H L298N
- Moteur à courant continu
- Encodeur incrémental
- Alimentation adaptée au moteur
Branchements proposés
| Arduino | Module / Signal |
|---|---|
| D9 | ENA du L298N, signal PWM |
| D7 | IN1 du L298N |
| D8 | IN2 du L298N |
| D2 | Sortie A de l’encodeur |
| D3 | Sortie B de l’encodeur |
| GND | Masse commune Arduino / L298N / alimentation moteur |
Programme Arduino
// Commande de vitesse d'un moteur CC avec encodeur et PID
// Arduino Uno + pont en H L298N
// Mesure de vitesse par encodeur incrémental
const int pinPWM = 9; // ENA du L298N
const int pinIN1 = 7; // IN1 du L298N
const int pinIN2 = 8; // IN2 du L298N
const int pinEncodeurA = 2; // Sortie A encodeur, interruption 0
const int pinEncodeurB = 3; // Sortie B encodeur
volatile long compteurImpulsions = 0;
// À adapter selon l'encodeur utilisé
const int impulsionsParTour = 20;
// Consigne de vitesse
float consigneRPM = 120.0;
// Mesure de vitesse
float vitesseRPM = 0.0;
// Coefficients PID à régler expérimentalement
float Kp = 1.2;
float Ki = 0.4;
float Kd = 0.05;
// Variables PID
float erreur = 0.0;
float erreurPrecedente = 0.0;
float integrale = 0.0;
float derivee = 0.0;
// Commande moteur
float commandePID = 0.0;
int commandePWM = 0;
// Échantillonnage
unsigned long tempsPrecedent = 0;
const unsigned long periodeEchantillonnage = 100; // en ms
void setup() {
Serial.begin(9600);
pinMode(pinPWM, OUTPUT);
pinMode(pinIN1, OUTPUT);
pinMode(pinIN2, OUTPUT);
pinMode(pinEncodeurA, INPUT_PULLUP);
pinMode(pinEncodeurB, INPUT_PULLUP);
attachInterrupt(digitalPinToInterrupt(pinEncodeurA), compterImpulsion, RISING);
// Sens de rotation du moteur
digitalWrite(pinIN1, HIGH);
digitalWrite(pinIN2, LOW);
analogWrite(pinPWM, 0);
tempsPrecedent = millis();
}
void loop() {
unsigned long tempsActuel = millis();
if (tempsActuel - tempsPrecedent >= periodeEchantillonnage) {
float dt = (tempsActuel - tempsPrecedent) / 1000.0;
tempsPrecedent = tempsActuel;
// Lecture sécurisée du compteur d'impulsions
noInterrupts();
long impulsions = compteurImpulsions;
compteurImpulsions = 0;
interrupts();
// Calcul de la vitesse en tr/min
vitesseRPM = (impulsions / (float)impulsionsParTour) * (60.0 / dt);
// Calcul de l'erreur
erreur = consigneRPM - vitesseRPM;
// Terme intégral
integrale += erreur * dt;
// Anti-emballement de l'intégrale
if (integrale > 255) integrale = 255;
if (integrale < -255) integrale = -255;
// Terme dérivé
derivee = (erreur - erreurPrecedente) / dt;
// Calcul de la commande PID
commandePID = Kp * erreur + Ki * integrale + Kd * derivee;
erreurPrecedente = erreur;
// Conversion en PWM
commandePWM = (int)commandePID;
// Saturation de la commande PWM
if (commandePWM > 255) commandePWM = 255;
if (commandePWM < 0) commandePWM = 0;
analogWrite(pinPWM, commandePWM);
// Affichage sur le moniteur série
Serial.print("Consigne : ");
Serial.print(consigneRPM);
Serial.print(" tr/min | Vitesse : ");
Serial.print(vitesseRPM);
Serial.print(" tr/min | Erreur : ");
Serial.print(erreur);
Serial.print(" | PWM : ");
Serial.println(commandePWM);
}
}
void compterImpulsion() {
compteurImpulsions++;
}
Remarques importantes
- La valeur
impulsionsParTourdoit être adaptée à l’encodeur utilisé. - Les coefficients
Kp,KietKddoivent être réglés expérimentalement. - Il faut impérativement relier les masses de l’Arduino, du L298N et de l’alimentation moteur.
- Si la vitesse mesurée est instable, il faut augmenter légèrement la période d’échantillonnage.
MT4 TD MCC
- Détails
- Clics : 30
TD – Machine à Courant Continu
MT4 – Électrotechnique / Automatique
Durée conseillée : 2 h à 3 h
Ce TD permet de travailler les équations fondamentales de la machine à courant continu, le fonctionnement moteur/génératrice, le réglage de vitesse, le bilan de puissance, le modèle dynamique et l’exploitation expérimentale.
Exercice 1 – Structure et fonctionnement de la MCC
- Donner les deux parties principales d’une machine à courant continu.
- Quel est le rôle de l’inducteur ?
- Quel est le rôle de l’induit ?
- Quel est le rôle des balais ?
- Quel est le rôle du collecteur ?
- Pourquoi la MCC est-elle dite réversible ?
- Donner quatre exemples d’utilisation d’une MCC.
- Citer deux avantages et deux inconvénients de la MCC.
Exercice 2 – Fonctionnement en moteur
Une MCC à excitation indépendante possède les caractéristiques suivantes :
- Tension d’induit : \( U = 120\,V \)
- Résistance d’induit : \( R = 1{,}2\,\Omega \)
- Courant d’induit : \( I = 8\,A \)
- Constante électromécanique : \( K\Phi = 1{,}05 \)
Questions
- Calculer la force électromotrice \(E\).
- Calculer la vitesse angulaire \( \Omega \).
- Convertir cette vitesse en tr/min.
- Calculer le couple électromagnétique \( C_e \).
Formules utiles :
Exercice 3 – Réglage de vitesse
On considère que le flux peut être réglé par le courant d’excitation.
- Comment faire varier la vitesse sans modifier le flux ?
- Comment faire varier la vitesse en modifiant le flux ?
- Que se passe-t-il si le flux diminue fortement ?
- Que se passe-t-il si le flux devient nul ?
- Représenter l’allure de \( \Omega = f(U) \).
- Représenter l’allure de \( \Omega = f(\Phi) \).
Exercice 4 – Fonctionnement en génératrice
Une MCC fonctionne maintenant en génératrice.
- \( K\Phi = 1{,}1 \)
- \( \Omega = 140\,rad/s \)
- \( R = 0{,}8\,\Omega \)
- Courant débité : \( I = 10\,A \)
Questions
- Calculer la force électromotrice \(E\).
- Calculer la tension de sortie \(U\).
- Indiquer le sens de conversion de puissance.
Formules utiles :
Exercice 5 – Bilan de puissance et rendement
Une MCC absorbe :
- \( U = 230\,V \)
- \( I = 12\,A \)
- \( R = 1{,}5\,\Omega \)
- \( P_{fer} + P_{méca} = 180\,W \)
Questions
- Calculer la puissance absorbée.
- Calculer les pertes Joule.
- Calculer la puissance utile.
- Calculer le rendement.
Formules utiles :
Exercice 6 – Modèle dynamique
Une MCC possède les paramètres suivants :
- \( J = 0{,}015\,kg.m^2 \)
- \( f = 0{,}08\,N.m.rad^{-1}.s \)
- \( C_r = 2\,N.m \)
- \( C_{em} = 6\,N.m \)
- \( \Omega = 80\,rad/s \)
Questions
- Calculer l’accélération angulaire \( \dfrac{d\Omega}{dt} \).
- Le moteur accélère-t-il, ralentit-il ou tourne-t-il à vitesse constante ?
Exercice 7 – Réponse indicielle d’un circuit RL
Un circuit d’induit possède :
- \( R = 4\,\Omega \)
- \( L = 120\,mH \)
Questions
- Calculer la constante de temps \( \tau \).
- Déterminer le temps correspondant à 95 % du régime permanent.
- Que doit-on observer à l’oscilloscope lors d’un échelon de tension ?
Exercice 8 – Essai à vide
Lors d’un essai à vide :
- \( U_0 = 180\,V \)
- \( I_0 = 1{,}2\,A \)
- \( R = 1\,\Omega \)
- \( n_0 = 1500\,tr/min \)
Questions
- Calculer \( \Omega_0 \).
- Calculer \( E_0 \).
- Déduire la constante \( K\Phi \).
Exercice 9 – Ouverture industrielle
- Pourquoi les moteurs brushless remplacent-ils progressivement les MCC classiques ?
- Quel est l’intérêt du PWM pour commander une MCC ?
- Pourquoi utilise-t-on un pont en H ?
- Pourquoi un robot mobile utilise-t-il souvent un encodeur ?
- Quel est l’intérêt d’une boucle PID sur la vitesse moteur ?
Travail attendu : les réponses doivent être justifiées par les équations du cours. Les calculs doivent être détaillés et les unités clairement indiquées.
TP Traitement du signal
- Détails
- Clics : 611
Objectifs du TP :
-
Observer des signaux réels (GBF / Arduino)
-
Mesurer fréquence, amplitude, rapport cyclique
-
Visualiser les harmoniques (FFT oscilloscope)
-
Relier forme temporelle ↔ contenu fréquentiel
Matériel par binôme
-
Générateur de fonctions (GBF)
-
Arduino (UNO)
-
Fils + résistance + LED (optionnel)
Vous veillerez à enregistrer vos signaux sur une clef USB pour les utiliser dans le compte-rendu.
Partie 1 : Le signal sinusoïdal
Régler le GBF :
-
Signal sinusoïdal
-
f=1kHz
-
Vpp=2V (peak to peak voltage = tension crête à crête)
🔹 Questions
-
Mesurer la fréquence
-
Mesurer l’amplitude
-
Observer la FFT :
-
combien de pics ?
-
à quelle fréquence ?
-
Réalisez un pont de Graëtz
-
Mesurer la fréquence
-
Mesurer l’amplitude
-
Observer la FFT :
-
combien de pics ?
-
à quelle fréquence ?
-
Ajoutez un condensateur sur le pont de Graëtz
-
Mesurer la fréquence
-
Mesurer l’amplitude
-
Observer la FFT :
-
combien de pics ?
-
à quelle fréquence ?
-
Partie 2 : Le signal carré
Régler le GBF :
-
f=1kHz
-
duty cycle = 50%
Mesurer :
-
période
-
rapport cyclique
-
Observer la FFT :
-
relever les fréquences des pics
-
comparer avec f0,3f0,5f0
-
Comparer avec la théorie :
-
pourquoi pas d’harmoniques paires ?
Partie 3 : Transmission sur ligne et phénomènes de résonance
GBF (signal carré)
-
Oscilloscope 2 voies
-
Câble coaxial (BNC, typiquement 50 Ω)
-
Résistances :
-
50 Ω (adaptation)
-
1 kΩ (désadaptation)
-
court-circuit (fil)
-
circuit ouvert
Montage
-
GBF → câble coaxial → oscilloscope (CH1 à l’entrée, CH2 à la sortie)
🔹 Réglages
-
Signal carré : f=100kHz à 1MHz
-
Fronts rapides (important !)
Questions :
Observer le signal à l’entrée et à la sortie
Y a-t-il un retard ?
-
Mesurer ce retard
En déduire la vitesse de propagation
Cas 1 : circuit ouvert
Observation attendue :
-
réflexion en phase
-
surtension
Cas 2 : court-circuit
Observation attendue :
-
réflexion inversée
Cas 3 : résistance 50 Ω (adaptation)
Cas idéal
Observation attendue :
-
pas de réflexion
-
signal propre
🔹 Questions clés
-
Comparer les 3 cas
-
Pourquoi observe-t-on des oscillations (ringing) ?
-
Pourquoi le signal se déforme à hautes fréquences
-
quel est le lien avec la longueur du câble, la longueur d’onde ?
Dans cette dernière partie, vous devez évoquer les phénomènes d’oscillations, de dépassements et de déformations (expliquez pour quelles raisons physiquement et avec un modèle équivalent.
Préparation du bilan du TP :
Pourquoi un signal numérique rapide nécessite :
-
une adaptation d’impédance ?
-
des pistes contrôlées (PCB) ?
Lille - GREE - Test1
- Détails
- Clics : 98
Partie 1:
Soit le schéma unifilaire d'une installation basse tension suivant:

Répondre aux questions du questionnaire, à aide de la documentation constructeur
Partie 2:
Exercice n°1: défaut franc.
Réseau 230v/400v, Rn = 10Ω, Ru = 20Ω. Un défaut franc apparaît sur le four.