Présentation PowerPoint
Transcription
Présentation PowerPoint
Terminale S2 Panneau photovoltaïque rotatif Compte rendu Année 2014-2015 DE KERMEL Louis LE GOFF Arnaud NOUET Margot Pourquoi ce projet ? • Bases en robotique • Evolution du projet concrète • Possession du matériel • Donner « vie » à un simple code • Visé économique et écologique Cahier des charges • Permettre la rotation du panneau solaire de manière à ce qu’il suive le parcours du soleil. • Connaitre la position du soleil et en fonction de celle-ci positionner le panneau solaire afin qu’il soit éclairé de façon optimale. • Automatiser ce fonctionnement à l’aide d’un programme pour que le robot sache les instructions à suivre. • Réaliser le montage fonctionnel. Matériel Carte Arduino Uno Servomoteur Plaque de prototypage Panneau photovoltaïque Photorésistances Logiciel Arduino Comment suivre le parcours du soleil ? Si une photorésistance reçoit plus d’intensité lumineuse que l’autre cela signifie que le soleil éclaire d’avantage la première. En revanche si toutes les photorésistances reçoivent la même intensité lumineuse alors, comme elles sont fixées au panneau solaire, cela signifie que le panneau est face au soleil. C’est donc en faisant la différence entre les valeurs des photorésistances que nous pouvons déterminer la position du soleil. Le but étant, pour le programme que la différence de luminosité détectée soit très faible voire nulle. Optimisation : séparer les deux photorésistances par un ombrage Schéma du montage #include intPinGauche = A0; // Photorésistances sur le pin A0 de Arduino intPinDroite = A5; // Photorésistances sur le pin A5 de Arduino intPinServo = 11; // Servo sur le pin 11 de Arduino int Gauche; //déclaration des variables de directions int Droite; intPonderation = 40;// Variable qui rend le système plus ou moins sensible à la lumière plus la valeur de pondération est faible, plus le système va être "exigeant" et gigotera tout le temps, plus la valeur est élevé, moins il sera exigeant il s'arrêtera sur une position fixe plus facilement. intPosServo // variable qui définit la position du cerveau soit de 0 à 180degré (car le panneau solaire n'aura pas besoin d'aller au dela de 180° par rapport a sa position initial) voidsetup() //déclaration des paramètres, la "tête" du code { Serial.begin(4800); // configuration de la vitesse de communication Série MonServo.attach(PinServo); // Servomoteur branché sur le PinServo, c'est-à-dire le pin 11 delay(250); // délai entre chaques acquisitions, c'est a dire la vitesse à laquelle le système va tourner PosServo = 90; // position à 90degrés soit la position initiale, réglé en tant que tracker solaire il n'a pas a effectuer une rotation de plus de 180°, on aurait pu mettre à 0 } voidloop() // déclaration du code, le "corps" du code { Gauche = analogRead(PinGauche);// acquisition d'une valeur de la photorésistance de gauche Droite = analogRead(PinDroite);// acquisition d'une valeur de la photorésistance de droite if ((Droite + Gauche) < 600) // si les deux valeurs sont inferieur à 600 alors on le remet sur sa position de départ car il fait surement nuit ou autres ... { if (PosServo> 180) { PosServo--; //On aurait également pu écrire : PosServo-2 mais cela faisait bugué le robot } else { MonServo.write(PosServo); PosServo++; } } else { if ( Droite> (Gauche + Ponderation)) { if (PosServo> 180) { PosServo--; } else { MonServo.write(PosServo); PosServo++; } } if (Gauche > (Droite + Ponderation)) { if (PosServo< 0) { PosServo++; } else { MonServo.write(PosServo); PosServo--; } } } Serial.print( "Gauche > "); Serial.print(Droite); Serial.print( " | "); Serial.print(PosServo); Serial.print( " | "); Serial.print(Gauche); Serial.println( " < Droite"); delay(250); }