Se coucher tard nuit
  1. Vous êtes ici :  
  2. Accueil
  3. MT
  4. MT4
  5. Uncategorised

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 impulsionsParTour doit être adaptée à l’encodeur utilisé.
  • Les coefficients Kp, Ki et Kd doivent ê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

  1. Donner les deux parties principales d’une machine à courant continu.
  2. Quel est le rôle de l’inducteur ?
  3. Quel est le rôle de l’induit ?
  4. Quel est le rôle des balais ?
  5. Quel est le rôle du collecteur ?
  6. Pourquoi la MCC est-elle dite réversible ?
  7. Donner quatre exemples d’utilisation d’une MCC.
  8. 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

  1. Calculer la force électromotrice \(E\).
  2. Calculer la vitesse angulaire \( \Omega \).
  3. Convertir cette vitesse en tr/min.
  4. Calculer le couple électromagnétique \( C_e \).

Formules utiles :

\( U = E + RI \)
\( E = K\Phi\Omega \)
\( \Omega = \dfrac{2\pi n}{60} \)
\( C_e = K\Phi I \)

Exercice 3 – Réglage de vitesse

On considère que le flux peut être réglé par le courant d’excitation.

  1. Comment faire varier la vitesse sans modifier le flux ?
  2. Comment faire varier la vitesse en modifiant le flux ?
  3. Que se passe-t-il si le flux diminue fortement ?
  4. Que se passe-t-il si le flux devient nul ?
  5. Représenter l’allure de \( \Omega = f(U) \).
  6. Représenter l’allure de \( \Omega = f(\Phi) \).
\( \Omega = \dfrac{U - RI}{K\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

  1. Calculer la force électromotrice \(E\).
  2. Calculer la tension de sortie \(U\).
  3. Indiquer le sens de conversion de puissance.

Formules utiles :

\( E = K\Phi\Omega \)
\( U = E - RI \)

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

  1. Calculer la puissance absorbée.
  2. Calculer les pertes Joule.
  3. Calculer la puissance utile.
  4. Calculer le rendement.

Formules utiles :

\( P_{abs} = UI \)
\( P_J = RI^2 \)
\( P_u = UI - RI^2 - (P_{fer}+P_{méca}) \)
\( \eta = \dfrac{P_u}{P_{abs}} \)

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

  1. Calculer l’accélération angulaire \( \dfrac{d\Omega}{dt} \).
  2. Le moteur accélère-t-il, ralentit-il ou tourne-t-il à vitesse constante ?
\( C_{em} = J\dfrac{d\Omega}{dt} + f\Omega + C_r \)

Exercice 7 – Réponse indicielle d’un circuit RL

Un circuit d’induit possède :

  • \( R = 4\,\Omega \)
  • \( L = 120\,mH \)

Questions

  1. Calculer la constante de temps \( \tau \).
  2. Déterminer le temps correspondant à 95 % du régime permanent.
  3. Que doit-on observer à l’oscilloscope lors d’un échelon de tension ?
\( \tau = \dfrac{L}{R} \)
\( i(t)=\dfrac{U}{R}\left(1-e^{-t/\tau}\right) \)

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

  1. Calculer \( \Omega_0 \).
  2. Calculer \( E_0 \).
  3. Déduire la constante \( K\Phi \).
\( E_0 = U_0 - RI_0 \)
\( K\Phi = \dfrac{E_0}{\Omega_0} \)

Exercice 9 – Ouverture industrielle

  1. Pourquoi les moteurs brushless remplacent-ils progressivement les MCC classiques ?
  2. Quel est l’intérêt du PWM pour commander une MCC ?
  3. Pourquoi utilise-t-on un pont en H ?
  4. Pourquoi un robot mobile utilise-t-il souvent un encodeur ?
  5. 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

  • Oscilloscope numérique (avec FFT)

  • 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

  1. Mesurer la fréquence

  2. Mesurer l’amplitude

  3. Observer la FFT :

    • combien de pics ?

    • à quelle fréquence ?

Réalisez un pont de Graëtz

  1. Mesurer la fréquence

  2. Mesurer l’amplitude

  3. Observer la FFT :

    • combien de pics ?

    • à quelle fréquence ?

Ajoutez un condensateur sur le pont de Graëtz

  1. Mesurer la fréquence

  2. Mesurer l’amplitude

  3. Observer la FFT :

    • combien de pics ?

    • à quelle fréquence ?



Partie 2 : Le signal carré

Régler le GBF :

  • f=1kHz

  • duty cycle = 50%

Mesurer :

  1. période

  2. rapport cyclique

  3. Observer la FFT :

  4. relever les fréquences des pics

  5. comparer avec f0​,3f0​,5f0​

  6. Comparer avec la théorie :

  7. 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

  1. Comparer les 3 cas

  2. Pourquoi observe-t-on des oscillations (ringing) ?

  3. Pourquoi le signal se déforme à hautes fréquences

  4. 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) ?



Extension d'un hôtel

Détails
Clics : 109

Dossier de présentation

Dossier du sujet

Dossier technique

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.

  1. Projets MT4
  2. Les types de convertisseurs DC-DC
  3. SNPI3 - TP2
  4. Calibrage ESC

Page 1 sur 4

  • 1
  • 2
  • 3
  • 4

Menu

  • Introduction
  • ADESFA
  • Linux
  • RoboCamp
  • ROS2
  • SEE
    • SEE3
    • SEE4
  • MT
    • MT3 - Cours & TD
    • MT3 TP
    • Projets MT3
    • MT4
    • Projets MT4
    • MT5
  • SNPI
    • SNPI3
    • SNPI4
    • SNPI5
  • ROS1
    • Projets (ROS1)
    • Projet Sabertooth 2x12
    • AX12
    • Calibrage ESC
  • AR3
  • Les dictionnaires en Python

Login Form

  • Mot de passe perdu ?
  • Identifiant perdu ?