Analyses des performances d’un signal sPWM avec Arduino
Savoir mesurer la fréquence réelle d’un onduleur en utilisant le signal sPWM
Savoir les limitations du code Arduino
Savoir paramétrer un signal sPWM avec Arduino
Analyse des d’un signal sPWM avec le port série
Comprendre la le principe du signal sPWM : PWM de type sinusoïdal
Connaitre les paramètres d’un signal SPWM
Voir la vidéo pour plus de détails
Le Programme Arduino
#define R_PWM 5 // Commande 1 pont H
#define L_PWM 6 // Commande 2 pont H
#define TestFreq 7 // Mesure de la fréquence
#define TimerBit 7 // Amplitude du signal sinusoïdal 2^8
#define N 256 // Nombre d’échantillons du tableau) 512=2^9
#define TimerStep 16 // Pas d'incrémentation du Timer
#define T0_us 100 // Période d'incrémentation du Timer
// Période globale T=2*N*T0_us => F=1/F: Fréquence Onduleur
unsigned long MedSine[N];
unsigned long TimerSPWM=0;
unsigned long i_sin=0;
bool sPWM_l=false;
bool sPWM_r=true;
bool sinePolar=false;
double sine_val=0;
void setup()
{
// Init sortie
pinMode(R_PWM, OUTPUT);
pinMode(L_PWM, OUTPUT);
pinMode(TestFreq, OUTPUT);
// Génération du signal sinusoïdal: 1/2 Période (2*N échantillons/période)
for (unsigned int i=0; i<N; i++)
{
sine_val=(double)((2<<TimerBit)-1)*sin(PI*(double)i/(double)N);
MedSine[i]=(unsigned int)round((sine_val));
}
// Port série affichage des signaux (sPWM + Sine )
Serial.begin(9600);
}
void loop()
{
// Prévisualisation des signaux de l'onduleur + sin(t)
/*
Serial.print(MedSine[i_sin]); Serial.print(",");
Serial.print(((2<<TimerBit)-1)*sPWM_l); Serial.print(",");
Serial.println(((2<<TimerBit)-1)*sPWM_r);
*/
// Incrémentation du Timer: Compteur rapide (signal triangulaire)
TimerSPWM+=TimerStep;
TimerSPWM%=N-1;
// Incrémentation du Timer du signal: Compteur long (signal sinusoïdal)
i_sin+=1;
i_sin%=N-1;
// Changement d'état
if(!i_sin) sinePolar=!sinePolar;
// Géneration des signaux PWM
if(sinePolar)
{
sPWM_l =MedSine[i_sin] > TimerSPWM;
sPWM_r =false;
}
else
{
sPWM_l = false;
sPWM_r =MedSine[i_sin] > TimerSPWM;
}
// Affectation des sorties PWM
digitalWrite(R_PWM,sPWM_r);
digitalWrite(L_PWM,sPWM_l);
// Mise à jour signal du test
digitalWrite(TestFreq,sinePolar);
}
Découvrez notre Chaîne YouTube "Devenir Ingénieur" Obtenir le fichier PDF Fonctionnement Code Arduino Click to rate this post![Total: 1 Average: 5] Nous Soutenir 💌
Découvrez notre Chaîne YouTube "Devenir Ingénieur" Obtenir le fichier PDF Objectifs Savoir l’importance de l’automatisation de l’analyse technique Saloir les limitations de l’analyse technique Comprendre les notions de prévisions et prédictions Etc. Lire la suite Lire la suite…
Découvrez notre Chaîne YouTube "Devenir Ingénieur" Obtenir le fichier PDF Sommaire0.1 Objectifs du COURS0.2 Introduction0.3 Le BUS I2C0.3.1 Remarque0.4 Protocole0.4.1 Remarque0.5 En-tête0.6 Exemple avec l’esclave DS13070.6.1 Exemple de lecture du DS13070.6.2 Chronogramme complet de l’échange Lire la suite…
You have successfully subscribed to the newsletter
There was an error while trying to send your request. Please try again.
0 commentaire