Table des matières

SPECTRO-ARDUINO

Porteurs du projet: Christian Simon (christian.simon@upmc.fr), Tristan Briant, Alexandre Lasmartres (lasmartres.alexandre@hotmail.fr).

Ce projet a été développé dans le cadre de la journée Prof en fac organisée à l'UPMC en avril 2017.

Il s'agissait de développer en spectrophotomètre visible peu onéreux et pédagogique contrôlé par Arduino.

Pour plus d'information sur le développement du projet : Préparation atelier "Prof en fac"

Machines nécessaires

- imprimante 3D pour les pièces de support.

- découpeuse laser pour le boitier.

Matériels nécessaires

Construction

1. Préparation des pièces et montage du boitier

Les pièces imprimées en 3D:

Rien de bien compliqué, il suffit simplement d'imprimer les pièces avec une imprimante 3D, inutile de mettre de support, les pièces sont relativement “simples”.

Le "prisme"

Il faut couper le CD de manière à avoir “un rectangle” (cf. photo), attention à avoir les deux “bord de coupe” parallèles et propres (un massicot peut aider).

Montage du boitier:

A l'aide d'une découpeuse laser, découper la plaque de MDF afin d'obtenir les pièces du boitier (environ 6 min découpe+gravure).

Le montage se fait délicatement au maillet.

Assembler les deux pièces de support afin d'obtenir cette pièce, attention à mettre la fente du bon côté.

Et les cinq pièces qui serviront de cache, attention à mettre la sortie pour l'Arduino du bon coté.

2. Le montage des éléments

En premier, placer/visser sur le support: la breadbord, l'Arduino et le driver (vis M3) et les pièces imprimées en 3D (vis M4).

Puis le moteur, la cuve, le “prisme” et son support, la LED et le phototransistor.

3. Le câblage

Commençons par le driver: brancher le moteur dessus, relier 1N1 au port Digital 2 de l'Arduino, 1N2 au D3, 1N3 au D4 et 1N4 au D4. Brancher la borne + au 5V de l’Arduino et la borne - à la masse (GND) de l’Arduino.

Pour la LED brancher la longue patte au port port D13 de l'Arduino et la courte à la masse.

Pour le phototransistor brancher la courte patte à la masse. Brancher la longue patte à l'une des lignes de la breadboard, sur la même ligne relier A0 et l'une des pattes de la résistance. Relier l'autre patte à la masse.

Et voila la photo finale (où c'est bien bordélique).

4. La programmation

Il ne vous reste plus qu'à téléverser ce code dans votre Arduino.

const int M1=2;
const int M2=3;
const int M3=4;
const int M4=5;
const int LED=13;
int resolution = 2;
int NPAS=80;
int timeDelay=10;
 
float angle;
 
int pos=0;
 
void setup() {
 
  Serial.begin(115200);
 
  pinMode(M1,OUTPUT);
  pinMode(M2,OUTPUT);
  pinMode(M3,OUTPUT);
  pinMode(M4,OUTPUT);
  pinMode(LED,OUTPUT);
 
  angle=0;
 
  tourne(1000);
 
  tourne(-650);
}
 
void loop() {
 
  for(int i=0;i<NPAS;i++){
    tourne(resolution);
    angle+=resolution * 2*PI / 64;
 
 
    digitalWrite(LED,HIGH);
    delay(100);
    int value = analogRead(A0);
    delay(30);
 
    //value=512-value;
 
    Serial.print(angle);
    Serial.print("  ");
    Serial.println(value);
 
  }
 
  tourne(-NPAS*resolution);
 
  angle=0;
  delay(1000);
  Serial.println("Restart");
 
}
 
void tourne(int n){ // tourne de n séquences
 
 
 
  for(int i=0; i<abs(n);i++){
     if (n>0){pos++; if (pos>7) pos=0;}
     if (n<0) {pos--; if (pos<0) pos=7;}
 
 
    if(pos==0) {digitalWrite(M1,HIGH);digitalWrite(M2,LOW);digitalWrite(M3,LOW);digitalWrite(M4,LOW);}
    if(pos==1) {digitalWrite(M1,HIGH);digitalWrite(M2,HIGH);digitalWrite(M3,LOW);digitalWrite(M4,LOW);}
    if(pos==2) {digitalWrite(M1,LOW);digitalWrite(M2,HIGH);digitalWrite(M3,LOW);digitalWrite(M4,LOW);}
    if(pos==3) {digitalWrite(M1,LOW);digitalWrite(M2,HIGH);digitalWrite(M3,HIGH);digitalWrite(M4,LOW);}
    if(pos==4) {digitalWrite(M1,LOW);digitalWrite(M2,LOW);digitalWrite(M3,HIGH);digitalWrite(M4,LOW);}
    if(pos==5) {digitalWrite(M1,LOW);digitalWrite(M2,LOW);digitalWrite(M3,HIGH);digitalWrite(M4,HIGH);}
    if(pos==6) {digitalWrite(M1,LOW);digitalWrite(M2,LOW);digitalWrite(M3,LOW);digitalWrite(M4,HIGH);}
    if(pos==7) {digitalWrite(M1,HIGH);digitalWrite(M2,LOW);digitalWrite(M3,LOW);digitalWrite(M4,HIGH);}
    delay(timeDelay);
 
  }
    //digitalWrite(M1,LOW);digitalWrite(M2,LOW);digitalWrite(M3,LOW);digitalWrite(M4,LOW);
 
 
  }

Utilisation

FIXME A venir

Pour aller plus loin

FIXME A venir