Solar Tracker ARDUINO (by TechnoFabrique)
by TechnoFabrique in Circuits > Arduino
17386 Views, 17 Favorites, 0 Comments
Solar Tracker ARDUINO (by TechnoFabrique)
[FR]
LE PROJET L'objectif est de réaliser un tracker solaire permettant de suivre une source lumineuse tel que le soleil.
Réaliser le votre: http://bit.ly/2fOW3Qk
Material You Need
1 Arduino (Uno / Mega)
3 photorésistances 100 kOhms
3 résistances 10 k Ohms
supply 9V
2 servo-motors 9g
Setup
(FRENCH)
ETAPE 1 : Capter la lumière
Pour capter une source lumineuse, nous avons utilisé des photorésistances de 100 kOhms. Les photorésistances sont des résistances qui varient en fonction de l’intensité lumineuse reçue. Plus la photorésistance capte de la lumière et plus sa résistance deviendra faible. Nous avons utilisé des photorésistances de 100kOhms. Nous allons connecter la photorésistance en série avec une résistance de 10 kOhms pour pouvoir avoir une variation de la tension au point milieu. Nous connecterons ce point à une entrée analogique de l’Arduino.
ETAPE 2 : Se déplacer pour suivre la source lumineuse Deux servo-moteurs permettent de se déplacer circulairement sur deux axes. En programmant la rotation par rapport aux valeurs des photorésistances, nous pouvons suivre la source lumineuse.
ETAPE 3: Réaliser le tracker
Le module composé des trois photorésistances permet de connaitre sa position par rapport à la lumière. Lorsque l'on est parfaitement positionné, les trois photorésistances sont à leur maximum, et sont plus ou moins égaux.
The Code
// 29/07/2017 - Programme C - Tracker solaire - Carte Arduino ( UNO ) // Ce programme a pour objectif de : // - Traiter les informations apportés par les photorésistances // - Gérer la rotation et l'inclinaison du module pour suivre une source lumineuse // Programme réalisé par Techno_Fabrik //********************BIBLIOTHEQUES**************************** // bibliothèque permettant d'utiliser les commandes pour servomoteurs facilement #include #include #define STEPS 100 //Créer une instance de la classe stepper //********************DECLARATIONS**************************** //Le moteur (fils 1 2 3 4) est branché sur les sorties 8 9 10 11 de l'Arduino (et sur GND, +V) Stepper small_stepper(STEPS, 8, 10, 9, 11); // Sens horaire int Steps2Take = 0; //Nombre de pas de rotation demandé au moteur long temps =0; //Durée de rotation pour un tour int A4988_pas = 3; // nema 17 definir la vitesse int A4988_direction = 4; // nema 17 definir la direction float photo_r_0,photo_r_1,photo_r_2; // valeur des photorésisances int servo1=6; // commande du premier servo int servo2=7; int angle_rot=90,angle_inc=90; // angle des servos Servo moteur_rotation; Servo moteur_inclinaison; //*************************INITIALISATION ********************** void setup() { pinMode(A4988_pas,OUTPUT); pinMode(A4988_direction,OUTPUT); moteur_rotation.attach(servo1); // on relie l'obtet au pin de commande moteur_inclinaison.attach(servo2);// on relie l'objet au pin de commande Serial.begin(9600); delay(2000); } //*************************************** BOUCLE *************************** void loop() { photo_r_0=analogRead(A0);Serial.print("R_0 : ");Serial.println(photo_r_0); // entrée analogique 8 bits = 1024 valeurs = 0 à 5V photo_r_1=analogRead(A1);Serial.print("R_1 : ");Serial.println(photo_r_1); photo_r_2=analogRead(A2);Serial.print("R_2 : ");Serial.println(photo_r_2); if ( photo_r_0 photo_r_1+3) { // angle_rot=angle_rot+1; //moteur_rotation.write(angle_rot); digitalWrite(A4988_direction,LOW); // Permet au moteur de tourner dans une direction for(int x = 0; x < 1; x++) // 1 tour complet = 200 pas {// Permet de faire un PAS à une certaine allure. Pour tourner plus vite, changer le delay jusqu'à 1 , pour ralentir, le changer jusqu'à 30 digitalWrite(A4988_pas,HIGH); delay(5); digitalWrite(A4988_pas,LOW); delay(5); } } //vert violet oorange marron, if (photo_r_2>photo_r_1+3) { // angle_inc=angle_inc-1; // moteur_inclinaison.write(angle_inc); small_stepper.setSpeed(40); small_stepper.step(10); } else if (photo_r_2 }