int getCmd(unsigned long *cmdOut, int n_0, int numphase)
La fonction getCmd() permet de synthétiser la commande de l’onduleur en fonction de nombres de phases. Elle prend en entrée le nombre de phases (numphase), un tableau vide et sa taille. Puis, elle renvoie le même tableau rempli et le nombre de séquences dans le tableau. On fait appel à la fonction une seule fois, dans la fonction setup().
int getCmd(unsigned long *cmdOut, int n_0, int numphase) { int n_out=0; int i,j; unsigned long SyqT1=0x00000000, SyqT2=0x00000000, Syq0=0x00000000; //32-bits
if ((numphase<=1) || (numphase>15)) return; for (i=0;i<n_0; i++) cmdOut[i]=0;
// C. Génération des séquences finales Serial.println("****************************"); Serial.println("T1|T2|T3|T4|T5|T6|T7|T8|T9|... "); Serial.println("****************************"); unsigned long cmd_i=0; for(i=0;i<n_out; i++) { cmd_i=0; for(j=0;j<n_out; j++)cmd_i|=(((T12i[j]>>i)&0x1)<<(j)); cmdOut[i]=cmd_i; for (int k=0;k<32;k++)Serial.print(((cmd_i>>k)&0x1)); Serial.println(""); } Serial.println("****************************");
return n_out; }
La fonction setCmd()
void setCmd(unsigned long *cmdOut, int n_0)
la fonction setCmd() sert à transmettre la commande aux ports de sorties. Elle prend en entrée le tableau de commande généré par la fonction getCmd(), puis elle envoie une séquence par itérations de la boucle. La fonction doit être intégrée dans la boucle principale loop() ou dans une routine d’interruption. Elle peut transmettre la commande via 4 ports de 8-bits (PORTA, PORTB, PORC et PORD) au maximal (commande avec 15 phases ==> 32-bits). Ci-dessous la déclaration et la définition de la fonction.
void setCmd(unsigned long *cmdOut, int n_0) { static int K=0;
// Affichage du contenu des ports sur 8-bits (A commenté) /* for (int k=0;k<8;k++) Serial.print(((PORTA>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTB>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTC>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTD>>k)&0x1));Serial.print(","); Serial.println(""); */
K++; if (K==n_0) K=0; }
Le programme complet
/* * Algorithme de la commande Symétrique Générique * La commande peut etre codée sur 32 bits (15 Phases Maximales) * via 4 ports sur 8-bits (µC 8-bits) * (ou bien un bus sur 32-bits (µC 32-bits)) * * PORTA: de (0) à (1*8-1) --LSB * PORTB: de (8) à (2*8-1) * PORTC: de (16) à (3*8-1) * PORTD: de (24) à (4*8-1) --MSB * */
#define T0_us 333 // Période de l'onduleur (Symétrique) : T~n*T0 (µs) #define Nphs 15 // Nb de phases [2,15]
int n; // Nombre de séquences/ Période const int nCmd=35; // !!! Ne pas toucher! unsigned long CmdTab[nCmd]; // !!! Ne pas toucher!
// Synthèse de la commande getCmd() n= getCmd(CmdTab, nCmd, Nphs); Serial.print("Nseq=");Serial.println(n); }
void loop() { // Génération de la commande setCmd() setCmd(CmdTab, n); //delayMicroseconds(T0_us); }
int getCmd(unsigned long *cmdOut, int n_0, int numphase) { int n_out=0; int i,j; unsigned long SyqT1=0x00000000, SyqT2=0x00000000, Syq0=0x00000000; //32-bits
if ((numphase<=1) || (numphase>15)) return; for (i=0;i<n_0; i++) cmdOut[i]=0;
// Affichage du contenu des ports sur 8-bits (A commenté) /* for (int k=0;k<8;k++) Serial.print(((PORTA>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTB>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTC>>k)&0x1));Serial.print(","); for (int k=0;k<8;k++) Serial.print(((PORTD>>k)&0x1));Serial.print(","); Serial.println(""); */
Découvrez notre Chaîne YouTube "Ingénierie et Projets" Découvrez notre Chaîne Secondaire "Information Neuronale et l'Ingénierie du Cerveau" Obtenir le fichier PDF Broché: 230 pages Date de publication : 2 juillet 2023 Collection : Arduino Langue : Français ISBN-10: 8397581509 ISBN-13: 9798397581509 Dimensions du Lire la suite…
Découvrez notre Chaîne YouTube "Ingénierie et Projets" Découvrez notre Chaîne Secondaire "Information Neuronale et l'Ingénierie du Cerveau" Obtenir le fichier PDF Objectifs du projet Comprendre l’architecture matérielle du système Savoir le schéma de puissance de Lire la suite…
Découvrez notre Chaîne YouTube "Ingénierie et Projets" Découvrez notre Chaîne Secondaire "Information Neuronale et l'Ingénierie du Cerveau" Obtenir le fichier PDF Objectifs du projet Savoir les composantes dans d’un ascenseur Savoir le principe de Lire la suite…
Gérer le consentement aux cookies
Nous utilisons des technologies telles que les cookies pour stocker et/ou accéder aux informations relatives aux appareils. Nous le faisons pour améliorer l’expérience de navigation et pour afficher des publicités (non-)personnalisées. Consentir à ces technologies nous autorisera à traiter des données telles que le comportement de navigation ou les ID uniques sur ce site. Le fait de ne pas consentir ou de retirer son consentement peut avoir un effet négatif sur certaines fonctonnalités et caractéristiques.
Fonctionnel
Toujours activé
Le stockage ou l’accès technique est strictement nécessaire dans la finalité d’intérêt légitime de permettre l’utilisation d’un service spécifique explicitement demandé par l’abonné ou l’utilisateur, ou dans le seul but d’effectuer la transmission d’une communication sur un réseau de communications électroniques.
Préférences
Le stockage ou l’accès technique est nécessaire dans la finalité d’intérêt légitime de stocker des préférences qui ne sont pas demandées par l’abonné ou la personne utilisant le service.
Statistiques
Le stockage ou l’accès technique qui est utilisé exclusivement à des fins statistiques.Le stockage ou l’accès technique qui est utilisé exclusivement dans des finalités statistiques anonymes. En l’absence d’une assignation à comparaître, d’une conformité volontaire de la part de votre fournisseur d’accès à internet ou d’enregistrements supplémentaires provenant d’une tierce partie, les informations stockées ou extraites à cette seule fin ne peuvent généralement pas être utilisées pour vous identifier.
Marketing
Le stockage ou l’accès technique est nécessaire pour créer des profils d’utilisateurs afin d’envoyer des publicités, ou pour suivre l’utilisateur sur un site web ou sur plusieurs sites web ayant des finalités marketing similaires.
0 commentaire