start:projet:arduino:modulation_arduino

Modulateur de fréquence Arduino

Bon, aujourd'hui on va voir comment utiliser un arduino comme modulateur de fréquence.

Mais c'est quoi la modulation de fréquence ?

La modulation en fréquence, c'est transmettre une information en modifiant la fréquence d'un signal.

Nous, nous allons travailler avec des signaux rectangulaires. La raison est simple : l'arduino sais très bien les générer grâce aux instructions HIGH et LOW.

Vous avez certainement remarqué (en jouant par exemple avec votre casio 35+ :) ) que les opérations de bases bouclées un certain nombre de fois en informatique, permettent de créer une temporisation, en gros l’équivalent de la fonction delay. (pas super propre mais on fait avec).

Ouais, mais du coup pourquoi on utilise pas juste la fonction delay ?

Pour deux raisons :

  • Parce qu'il existe une fonction delayMicroseconds plus intéressante pour faire de la modulation.
  • Le but de cet article est premièrement de comprendre les soucis qu'on peut avoir en arduino pour faire de la modulation.

On écrit donc le programme suivant :

int i = 0; int a = 10; int b = 10;

void setup() {

pinMode(6,OUTPUT);  

}

void loop() {

digitalWrite(6,HIGH);
while(i<a) {
  i=i+1;
}
i=0;
digitalWrite(6,LOW);
while(i<b) {
  i=i+1;
}
i=0;

}

On modifie a de zéro à 400 et on aboutit à la fréquence en fonction de a:

On a une belle fonction affine avec des trucs étranges proche de zéro. L'offset autour de zéro vient probablement du fait que les vérifications du while prennent un temps non-compressible. Pour le rapport cyclique, c'est à dire le rapport du temps où notre signal est haut et de la période, on a :

Le rapport cyclique mesuré est très différent du rapport cyclique théorique ( a/a+b ) On ne peut donc pas faire une boucle pour moduler en fréquence. D'autre part, quand on se rapproche d'un signal ayant une fréquence de celle de l'arduino (75kHz) la boucle n'est tout simplement pas efficace.

Si on veut faire de la modulation en fréquence avec une arduino il faut donc utiliser la fonction delay ou delayMicroseconds avec prudence : plus on se rapproche de fréquences proche de 75kHz, plus il y des risques d'avoir des problèmes d'incertitudes.

Vous l'aurez compris, utiliser une arduino seul pour faire de la modulation, ce n'est pas optimal et d'autres techniques sont bien plus efficaces.

  • start/projet/arduino/modulation_arduino.txt
  • Dernière modification : 2016/04/16 11:23
  • de qlenet