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
Click to rate this post!
[Total: 4 Average: 4.5]

5 réflexions sur “Projet Arduino: Générateur des signaux sinus et cosinus avec Arduino 2 en 1”

  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

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

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

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

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Retour en haut

You have successfully subscribed to the newsletter

There was an error while trying to send your request. Please try again.

FPGA | Arduino | Matlab | Cours will use the information you provide on this form to be in touch with you and to provide updates and marketing.