Catégories
Arduino Projets Arduino

Projet Arduino: Générateur des signaux sinus et cosinus avec Arduino 2 en 1

Projet arduino Générateur de signaux sinus et cosinus (2)

Projet arduino Générateur de signaux sinus et cosinus (3)

Objectifs

  1. Savoir générer un signal sinus & cosinus
  2. Savoir convertir un signa en format 8 bits non signés
  3. Savoir déphaser les signaux
  4. Savoir générer plusieurs signaux déphasés sans location mémoire
  5. Etc.

A quoi sert un signal sinusoïdal ?

  1. Test des circuits électroniques
  2. Mesure de la fonction de transfert, diagramme de boode, etc.
  3. Onduleurs monophasés & triphasés (sPWM)
  4. Oscillateurs, signal d’horloges RF
  5. Modulateur/Démodulateur
  6. Etc.

Paramètres du signa

#define N     256         // N=2^8, 8 bits

#define Phi   N/2         // 90*356/360          

#define pi    3.1415926535897932384626433832795

#define f0    1.00 // La fréquence

Génération du signal sinusoïdal en format 8 bits

  for(i=0;i<N;i++)

  {

    sin_x=sin(2.00*pi*f0*(float)i/((float)N-1.00));

    SinCos[i]=0.5*(sin_x+1.00)*(N-1.00); //[-1,1]=> [0,2^8-1]

  }

Initialisation du port série – Affichage des signaux

  Serial.begin(9600);

Initialisation des indices des tableaux

  i_sin=0;  // Déphasage de 0
  i_cos=Phi; // Déphasage de T/4

Affichage du signal sinus

  Serial.print( SinCos[i_sin]);
  Serial.print(","

Affichage du signal cosinus

  Serial.println( SinCos[i_cos]);

Mise à jour des indices

  i_sin++; i_sin=i_sin%(N-1);
  i_cos++; i_cos=i_cos%(N-1);

Programme Arduino

/*

256 --------------> 360

x   --------------> 90

----------------------

x=90*256/360=256/4=N/4

*/




#define N     256         // N=2^8, 8 bits

#define Phi   N/2         // 90*356/360          

#define pi    3.1415926535897932384626433832795

#define f0    1.00







unsigned int i_sin=0,i_cos, i; 

double sin_x, SinCos[N];










void setup()

{

  // Génération du signal sinusoïdal en format 8 bits

  for(i=0;i<N;i++)

  {

    sin_x=sin(2.00*pi*f0*(float)i/((float)N-1.00));

    SinCos[i]=0.5*(sin_x+1.00)*(N-1.00); //[-1,1]=> [0,2^8-1]

  }




  // Initialisation du port série - Affichage des signaux

  Serial.begin(9600);




  // Init indices des tableaux

  i_sin=0;

  i_cos=Phi;

}




void loop()

{

  // Affichage du signal sinus

  Serial.print( SinCos[i_sin]);

  Serial.print(",");




  // Affichage du signal cosinus

  Serial.println( SinCos[i_cos]);




  // Mise à jour des indices

  i_sin++; i_sin=i_sin%(N-1);

  i_cos++; i_cos=i_cos%(N-1);

}

Sujet connexes

  • générateur de signaux
  • générateur sinusoïdal avec arduino
  • générateur signal carré arduino
  • générateur de fréquence arduino
  • générateur de fréquence arduino uno
  • générateur de fonction avec arduino,
  • transformer un signal carré en sinusoïdale
  • générateur hf arduino

5 réponses sur « Projet Arduino: Générateur des signaux sinus et cosinus avec Arduino 2 en 1 »

Bonjour,comment faire pour faire sortir le signal sinusoidal sur une pine output afin de visualisé sur un oscilloscope?
pouvez vous me répondre sur mon mail perso svp
merci d’avance
Jérôme

je viens de modifier votre code pour diriger le signal vers une sortie analogWrite A0 mais le signal sur mon oscilloscope est carré…
est ce que la fonction sin ne marche que sur le seriaport et pas sur une sortie analogique?

Bonjour, Je viens de voir ton message. C’est normal, un signal sinusoïdal est un signal « Analogique », il faut le sortir dans une sortie analogique d’un DAC. Une solution consiste à convertir le sinus en sinus PWM , puis l’envoyer dans une sortie digitale…

Bonjour, Je viens de voir ton message. C’est normal, un signal sinusoïdal est un signal « Analogique », il faut le sortir dans une sortie analogique d’un DAC. Une solution consiste à convertir le sinus en sinus PWM , puis l’envoyer dans une sortie digitale…

Laisser un commentaire