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;
// 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;
Pouvez vous me donner le circuit complet pour monter un onduleur monophasé sPWM commandé par Arduino
La partie puissance est souvent basée sur un pont H complet. La technique de la commande qui change souvent …
Bonjour,
Je veux commandé un moteur pap par une télécommande rc FLYSKY qui envoie ses signaux en pwm, le problème que le driver de mon moteur est commandé en fréquence, est ce que avec l’arduino je peux convertir la valeur de l’état Haut (0..255) en signal de fréquence variable, j’ai déja essayé avec pulseIn() mais ça marche pas, Merci.
Bonjour, je viens de voir votre message! L’idée consiste à récupérer le signal PWM (0-255), ensuite générer un signal carré ayant la fréquence désirée. Tu peux utilisé la fonction DeLay ou DeLay micros pour activer (ou désactiver) un pin digital..
4 réponses sur « Commande sPWM : Partie 3 »
Pouvez vous me donner le circuit complet pour monter un onduleur monophasé sPWM commandé par Arduino
La partie puissance est souvent basée sur un pont H complet. La technique de la commande qui change souvent …
Bonjour,
Je veux commandé un moteur pap par une télécommande rc FLYSKY qui envoie ses signaux en pwm, le problème que le driver de mon moteur est commandé en fréquence, est ce que avec l’arduino je peux convertir la valeur de l’état Haut (0..255) en signal de fréquence variable, j’ai déja essayé avec pulseIn() mais ça marche pas, Merci.
Bonjour, je viens de voir votre message! L’idée consiste à récupérer le signal PWM (0-255), ensuite générer un signal carré ayant la fréquence désirée. Tu peux utilisé la fonction DeLay ou DeLay micros pour activer (ou désactiver) un pin digital..