dimanche 9 février 2014

Oscillographe C1-94

J'ai acquis dernièrement un oscilloscope collector, le C1-94. Un oscilloscope provenant de la "production de l'URSS". Cette article a pour but d'aider les nouveaux acquéreurs afin de les guider pour leurs premiers pas. Je ne prétends pas être as de la configuration de cette oscillo, mais croyez moi, j'aurais bien aimé tomber sur cette article en cherchant sur Google ! C'est d'ailleurs là, le but premier de ce carnet/blog de réalisation : aider les recherches, donner des pistes, tracer un petit chemin pour rejoindre la grande route de l'électronique !

Oscillographe C1-94
Pour utiliser l'oscilloscope :
1) Brancher la sonde exotique sur l'oscilloscope.
2) Brancher la banane rouge à la masse du circuit sur lequel l'on va procéder à des mesures.
3) Brancher la pointe de touche à l'endroit où l'on veut afficher la tension.
Sonde exotique
Rien de compliquer me direz-vous, mais pas évident non plus !

Un petit exemple de tracé sur l’oscilloscope avec Arduino : la MLI

Introduction

Une technique largement répandue en électricité est la modulation de largeur d'impulsions (MLI ; en anglais : Pulse Width Modulation, soit PWM). Ce procédé permet de faire varier la tension sans changer la "valeur initiale", en alimentant de manière "tout-ou-rien" où rien est appelé état "discret". Ainsi "en appliquant une succession d'états discrets pendant des durées bien choisies, on peut obtenir en moyenne sur une certaine durée n'importe quelle valeur intermédiaire" (cf Wikipédia MLI).
Prenons un exemple. Nous alimentons une machine à courant continu à une tension initiale de 24V. Nous souhaitons que le moteur tourne moins vite, il suffit de diminuer la tension d'alimentation. Mais en sortie, nous ne pouvons avoir que 24V. Il faut donc appliquer une succession d'état discret afin de moduler la tension moyenne !

En haut, sans MLI. En bas, avec MLI.

La tension se calcul ainsi  :
Tension moyenne = (Tension max. * durée tension max) / temps période

Pour notre exemple (fréquence = 3Hz = 3 éventements pas seconde) :
Tension moyenne = 12 * (1/3) = 4V

MLI et Arduino

Afin de donner un exemple d'utilisation de cet oscilloscope, je vous invite à lire l'exemple de mon-club-elec.fr. C'est celui-ci que j'utilise dans la vidéo ci-dessous.

Tracer une tension MLI

Fréquence faible, lumière intense.
Fréquence élevée, lumière faiblarde.

Afin de "figer" l'image, de la stabiliser, vous devez activer le mode "Déclencher" :

  1. Enfoncer le bouton "Decl".
  2. Enfoncer les deux boutons du carré vert foncé "Decl"
  3. Régler le niveau de déclenchement avec le potard du milieu.
Le reste des réglages (balayage et amplification) est identique à un oscilloscope plus récent. Pour plus d'information, n'hésitez pas à commenter l'article !

jeudi 6 février 2014

Détecteur sonore avec amplification simple


Aujourd'hui, après une longue absence, je vais vous présenter un petit système que je cherche à réaliser depuis bien longtemps : un détecteur sonore.

J'ai enfin trouvé un schéma électronique pour amplifier simplement une tension issue d'un microphone de type électret, ci-dessous. Avec ce composant, le but est de mesurer l'intensité sonore ambiante, de l'amplifier et à terme de détecter un bruit.
Micro électret

L'amplificateur

Le signal issus de l'électret étant trop faible pour être interprété tel quel par un microcontrôleur, il faut l'amplifier. Cela consiste a augmenter les variations de tension issues du capteur. 
Le schéma de l'amplificateur que j'utilise provient du blog lowvoltage.wordpress.com. N'hésitez pas à consulter le site pour plus d'informations sur le fonctionnement du circuit.

Amplificateur pour électret
Le composant clé de se montage est le LM358. Cette puce 8 broches contient deux amplificateurs opérationnels , qui, comme leurs noms l'indiquent, amplifient une différence de potentiel à ses entrées. Le LM358 est conçu pour un usage général comme les amplificateurs , les filtres passe-haut et bas, les filtres passe-bande et les additionneurs analogiques.
Avant d'utiliser un nouveau composant, il est toujours utile de consulter sa fiche composant (datasheet), voici quelques éléments que j'ai sélectionné :

  1. Large DC Voltage Gain: 100 dB.
  2. Wide Power Supply Range: Single Supply: 3V to 32V.
  3. Very Low Supply Current Drain (500 μA)—Essentially Independent of Supply Voltage
  4. Le circuit interne qui nous permet de savoir comment le brancher par rapport à notre schéma ci-dessus. On utilise donc soit l'entrée A soit la B (mais pas les deux en même temps hein !) :

Circuit interne du LM358

Les deux condensateurs C1 et C2 sont dits "chimiques"; ils sont donc polarisés (borne + et -). Attention aux branchements !
Je préfère vous prévenir car javais fait l'erreur, attention à bien lire le schéma : il y a des fils qui se croisent mais où il n'y a pas de jonction !

! Afin d'améliorer l'amplification, il est possible d'ajouter un condensateur de 100nF entre VCC et GND, comme proposer par l'auteur.

Voilà, l'amplificateur est prêt, il ne reste plus qu'à brancher A0 sur une entrée analogique de l'Arduino par exemple !
L'amplificateur sur une plaque d'essai

Deux scripts pour utiliser ce microphone avec l'Arduino

L'article de lowvoltage.wordpress.com étant bien fait, il propose un petit exemple très intéressant. En effet, on remarque que le bruit peut être gênant en utilisant l'exemple du programme de l'Arduino "AnalogReadSerial", on manque de précision, la tension oscille bizarrement. Pour pallier ce problème, l'article propose de tester plusieurs fois (sur un intervalle de temps très court inférieur à la seconde) la valeur analogique lue par A0, de noter la valeur minimale et maximale, et de faire la différence. Et ça marche !

L'exemple lowvoltage.wordpress.com traduit et commenté :
/**
 * Mesure la tension sur une broche analogique sur une période de temps de ~1s
 * et retourner les valeurs Min, Max et Diff sur le port Serial.
 *
 * Auteur: Dimitar Kovachev, http://lowvoltage.wordpress.com/
 * Traduction: Théophile D.
 *

* Released under the Creative Commons Attribution Share-Alike 3.0 license
 * http://creativecommons.org/licenses/by-sa/3.0/
 */
const int analogPin = 0;

void setup() {
  Serial.begin(9600); 
}

void loop() {
  int mn = 1024;     // mn diminution seulement
  int mx = 0;        // mx diminution seulement


  // Exécuter 10000 lectures. Mettre à jour mn et mx à chaque fois.
  for (int i = 0; i < 10000; ++i) {
    int val = analogRead(analogPin);
    mn = min(mn, val);
    mx = max(mx, val);
  }

  // Envoyer le min, le max et delta sur le port Serial
  Serial.print("m=");
  Serial.print(mn);  
  Serial.print(" M=");
  Serial.print(mx);  
  Serial.print(" D=");
  Serial.print(mx-mn);  
  Serial.println();  
}

Mon exemple version détecteur sonore :
const int analogPin = 0;

const int led = 12;

const int seuil = 80;

void setup() {
  pinMode(led, OUTPUT);
}

void loop() {
  int mn = 1024;
  int mx = 0;

  for (int i = 0; i < 10000; ++i) {
    int val = analogRead(analogPin);
    mn = min(mn, val);
    mx = max(mx, val);
  }
  //Si la différence "seuil" est dépassée, on allume la led
  if(mx-mn>seuil)
  {
    digitalWrite(led, HIGH);
    delay(1000);
    digitalWrite(led, LOW); // il faut éteindre la led ensuite pour éviter les interférence...
    delay(100); 
  }
}


Et voilà, n'hésitez pas à commenter !