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);
}