====== SPECTRO-ARDUINO ====== Porteurs du projet: Christian Simon (), Tristan Briant, Alexandre Lasmartres (). \\ \\ 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 : [[:wiki:divers:preparation_atelier_prof-en-fac|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 ===== * Arduino * Breadboard * une LED blanche * un Phototransistor SFH 300 * une résistance de 10kΩ * Jumper M-M (x2) * Jumper M-F (x10) * Vis et écrous M3 (x8) * Vis et écrous M4 (x8 vis et x6 écrous) * Plaque de MDF 60x30x6mm (pour le {{ :wiki:divers:breadboard-spectro.svg.zip |boitier}}) * Pièces de support 3D: * 2 supports moteur ({{ :wiki:projets:support-moteur.zip |support-moteur}}) * 2 supports LED/phototransistor ({{ :wiki:projets:support-led.zip |support-LED}}) * 1 support cuve ({{ :wiki:projets:support-cuve.zip |support-cuve}}) * 1 support CD/"prisme" ({{ :wiki:projets:support-cd.zip |support-CD}}) * Moteur pas-à-pas 5V 28BYJ-48 * Driver ULN2003 * Cuve pour spectrophotomètre * Un vieux CD (qu'il faudra couper) ===== 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). {{:wiki:projets:prisme.jpg?300|}} === 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). {{ :wiki:divers:breadboard-spectro-final.png?direct&500 |}} 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é. {{:wiki:projets:support.jpg?300|}} Et les cinq pièces qui serviront de cache, attention à mettre la sortie pour l'Arduino du bon coté. {{:wiki:projets:boitier.jpg?300|}} ==== 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. {{:wiki:projets:elem_1.jpg?300|}}{{:wiki:projets:elem_4.jpg?300|}} {{:wiki:projets:elem_2.jpg?300|}}{{:wiki:projets:elem_3.jpg?300|}} ==== 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). {{:wiki:projets:spectro.jpg?300|}} ==== 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;i0){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