Tester ses obturateurs avec un microcontrôlleur Arduino

Xavier R
Messages : 6
Enregistré le : lun. 30 avr. 2012 19:18
Contact :

Tester ses obturateurs avec un microcontrôlleur Arduino

Message non lu par Xavier R »

Les cartes arduino http://www.arduino.cc/ sont des circuits imprimés open-source qui peuvent être programmés pour produire ou recevoir des signaux électriques. De ce fait, ils peuvent être utilisés comme 'cerveaux' pour des applications de domotiques, de robotiques, de photographie.

Je vous propose, avec ce post, de réaliser un testeur d'obturateur à l'aide d'une carte Arduino. Les tests que j'ai réalisé montre une précision inférieure à la millisecondes (1/1000) entre 1 ms et 1s. L'avantage de ce genre de montage par rapport à ce qui peut être trouvé sur internet (et sur ce site) est que le montage renvoie directement une mesure et ne nécessite pas de passer par un logiciel particulier.

Le principe est le suivant : On place de part et d'autre d'un obturateur, une led émettrice infrarouge et une photodiode infrarouge, toutes deux connecté à l'Arduino. Lorsque l'obturateur s'ouvre, la photodiode reçoit la lumière infrarouge émise par la led et l'arduino mesure le temps pendant lequel la photodiode reçoit la lumière. Lorsque l'obturateur se referme, le temps d'ouverture (ou la vitesse d’obturation) peut être affiché sur un ordinateur connecté à l'Arduino.
P1110207-small.jpg
Pour construire cet appareil, il faut :
- Une carte Arduino (la plus courante actuellement est l'arduino Uno http://arduino.cc/en/Main/ArduinoBoardUno )

- Une LED émettrice infrarouge. J'ai choisi une LED dont le pic d'émission se situe autour de 940nm afin de ne pas être sensible à la lumière ambiante.
- Une résistance de 68 ohm associée à la LED

- Une photodiode réceptrice à la même longueur d'onde que la led,
- Une résistance de 10kohm associée au récepteur.

L'assemblage de ces composants est réalisé comme dans le montage suivant :
schema_bb.jpg
schema_bb.jpg (30.34 Kio) Vu 2162 fois
En ce qui concerne le côté réception, la branche courte de la photodiode (cathode) est connectée à une masse de l'arduino (GND). La branche longue (anode) est connectée à la fois à au 5V de la carte (avec la résistance de 10 kohm) et à l'entrée D2.
Pour le côté émission, la branche courte (cathode) de la LED est connectée à une masse (GND) et la branche longue est connectée à l'entrée D12 (avec la résistance de 68 ohm).
Pour ceux qui ont peur des fers à souder (et ceux qui sont pressés), je vous suggère d'utiliser des platines sans soudure (les petits rectangles blancs à points noir) dans lesquels il suffit d'insérer les composants pour faire les connections.
breadboard.jpg
breadboard.jpg (35.28 Kio) Vu 2162 fois
L'ensemble est contrôlé par un Arduino connecté à un PC (pour afficher le résultat) à l'aide du programme suivant :

Code : Tout sélectionner

#include <Wire.h>

//Variables associées au système émetteur receveur
const int receiverPin = 2; // input from the ir receiver.
const int ledPin = 12;
long int elapsed = 0; 
int state=HIGH;
int oldState = HIGH;
boolean show = false;
long int startOn;
volatile long int thistime;

// Variables associées aux mesures
void setup() {
  pinMode(receiverPin, INPUT);
  state = digitalRead(receiverPin);
  attachInterrupt(0, measure_shutter, CHANGE);
  pinMode(ledPin,OUTPUT);
  digitalWrite(ledPin,HIGH); //On allume la led IR
  Serial.begin(115200);
}

void measure_shutter() { //A chaque fois que la photodiode change d'état (voit ou non la lumière), 
  thistime = micros();      //on note le nombre de microsecondes depuis lequel l'arduino est allumé.
}

void loop() {  
  oldState = state; //On note l'état de la diode (allumée ou éteinte que l'on avait auparavant).
  state = digitalRead(receiverPin); //On enregistre l'état actuel de la diode.
  if (state == HIGH && oldState == LOW) { //Si l'état à changé est passé de lumière à pas lumière, 
     elapsed = thistime - startOn;               // on calcule le temps entre les deux changements
     show = true;                                       //et on dit à l'arduino qu'il peut afficher la valeur
  }
  if (state == LOW && oldState == HIGH) { //Si l'état passe de pas lumière à lumière,
    startOn = thistime;                              // on stocke le temps à partir duquel l'obturateur a été ouvert.
  }
  if (show) { //Si on peut afficher la valeur, on le fait.
    Serial.print(elapsed);
    show = false;
  }
}
Pour une installation relativement simple telle que présentée dans la première image, il faut compter une trentaine d'euros. La liste des distributeurs arduino, qui proposent généralement le reste du matériel se trouve à http://arduino.cc/en/Main/Buy.

L'intérêt de la plateforme Arduino est que l'on peut la rendre indépendante de l'ordinateur en y adaptant une batterie et un écran LCD pour obtenir un produit final comme celui ci:
20130707_223732-small.jpg
20130707_223732-small.jpg (56.76 Kio) Vu 2162 fois
Bon montage.

Avatar du membre
Jean-Baptiste M
Messages : 24
Enregistré le : dim. 9 juin 2013 17:55
Contact :

Re: Tester ses obturateurs avec un microcontrôlleur Arduino

Message non lu par Jean-Baptiste M »

Merci, très intéressant.

Répondre

Retourner vers « Obturateurs »