2018 ensoleillée

a marqué ce sujet comme résolu.
Auteur du sujet

Bonne année à tous, merci de votre accueil. Nouveau sur ce forum je débute la programmation sur Arduino uno et cherche quelques conseils. j’ai étudié la chose grâce au super doc du célèbre Eskimon. Très engagé dans le développement des énergies renouvelables, je démarre un projet de suiveur solaire pour du photovoltaïque de 50w sur pompe, mais papy de 67ans j’avoue être un peu limite. J’ai bidouillé un code que je vous soumettrai si vous avez l’obligeance de m’aider … Pour l’heure je rassemble le matériel (LDR , L298N, moteurs CC en 12v, batterie) et "bricole" le montage mécanique. A très vite donc et bonnes fêtes. MB

+8 -0

J’ai déplacé dans la bonne section du forum.

écolo-utopiste altermondialiste radicalisé sur Internet | La tero estas nur unu lando | Géographe de service | Cliquez 👍 pour dire merci

+0 -0

Bonjour papy ! (du 84 il semble ;) bravo pour te lancer dans ce projet et je te souhaite bien du courage ! N’hésite pas à proposer des liens vers tes codes, je suis sûr que ça en intéressera plus d’un ! bienvenue sur zeste de savoir finalement :D

Étudiant en licence informatique à Grenoble

+2 -0
Auteur du sujet

Sympa, Merci. Pardon qwerty, je ne maîtrise pas encore :( Oui en 84, Ah la Provence ! Mon projet consiste en une station de pompage solaire autonome. Avec un panneau photovoltaïque alimentant une petite pompe en 12v fonctionnant sur batterie; J’ai pratiquement réalisé les parties électrique et mécaniques, structure, régulation et câblage. Reste l’aspect "suiveur" pour améliorer sensiblement le rendement. Je pensai Arduino, 3LDRs en triangle, un module L298N et 2 moteurs CC 12v (sur la même batterie)avec un convertisseur DC 12/6v pour la carte ou une protection ? J’ai trouvé quelques exemples de code, j’arrive à ça :à modifier, simplifier, corriger. Et ne riez pas SVP :honte: -

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
// Trackeur solaire - papy 2018

int Est = A0;  // 3 LdR capteurs de lumière
int Ouest = A1;
int Hauteur = A2;
// moteurs horizontal Est/Ouest et vertical Haut/Bas
//Mot H
const int ENA = 10;
const int IN1 = 9;
const int IN2 = 8;
//Mot V
const int ENB = 5;
const int IN3 = 6;
const int IN4 = 7;
const byte lumi = 5;   // intensité limineuse minimum

void setup()  
{
  Serial.begin(9600); // lecture écran
  pinMode(Est,INPUT); // entrées sorties Ldr et moteurs
  pinMode(Ouest,INPUT);
  pinMode(Hauteur,INPUT);
  pinMode(ENA, OUTPUT);  
  pinMode(ENB, OUTPUT);
  pinMode(IN1, OUTPUT);
  pinMode(IN2, OUTPUT);
  pinMode(IN3, OUTPUT);
  pinMode(IN4, OUTPUT);

}
  void loop()  
  {
  int Est = analogRead(0);                      //lire et calculer les valeurs
    Est = map(Est, 0, 1023, 0, 20);
  int Ouest = analogRead(1); Ouest = Ouest + 2; // correction H
    Ouest = map(Ouest, 0, 1023, 0, 20);    
  int Hauteur = analogRead(2); Hauteur = Hauteur + 1; // correction V
    Hauteur = map(Hauteur, 0, 1023, 0, 20);    
  int Bas = (Est + Ouest) / 2;

  Serial.print("   H "); Serial.println(Hauteur);
  Serial.print("   E "); Serial.println(Est);
  Serial.print("   O "); Serial.println(Ouest);
  Serial.print("   B "); Serial.println(Bas);

  int test = Est + Ouest + Hauteur; // établit la lumnosité ambiante
  test = test / 3;                    
  Serial.print("  test "); 
  Serial.print (test);
  Serial.print("  ");

 if (test < lumi)
 { 
    digitalWrite(ENA, LOW); // les 2 Moteurs sont arrétés !
    digitalWrite(ENB, LOW);
 }         
 if (test >= lumi && Est < Ouest)
 {
    digitalWrite(IN1, LOW);  // Moteur H tourne dans un sens
    digitalWrite(IN2, HIGH);
   analogWrite(ENA, 150);
    Serial.println(" Est < Ouest");
 }
else if (test >= lumi && Est > Ouest)
 { 
    digitalWrite(IN1, HIGH);  // Moteur H tourne dans l'autre sens
    digitalWrite(IN2, LOW);
   analogWrite(ENA, 150);
    Serial.println(" Est > Ouest ");
 } 
 if (test >= lumi && Est == Ouest)
 {
    digitalWrite(IN1, LOW); // les 2 Moteurs H et V sont arrétés
    digitalWrite(IN2, LOW);
    digitalWrite(IN3, LOW);  
    digitalWrite(IN4, LOW);
    Serial.println(" Est = Ouest "); 
 }

  // SENS vertical  
  if(test >= lumi && Hauteur < Bas)
 {
    digitalWrite(IN3, LOW);  // Moteur V tourne dans un sens
    digitalWrite(IN4, HIGH);
    analogWrite(ENB, 150);
    Serial.println(" Hauteur < Bas");  
 }
else if (test >= lumi && Hauteur > Bas)
 {
    digitalWrite(IN3, HIGH);  // Moteur V tourne dans l'autre sens
    digitalWrite(IN4, LOW);
    analogWrite(ENB, 150);
    Serial.println(" Hauteur > Bas ");
 }
 if(test >= lumi && Hauteur == Bas)
 {
    digitalWrite(IN1, LOW);  // les 2 Moteurs sont arrétés !
    digitalWrite(IN2, LOW);
    digitalWrite(IN1, LOW); 
    digitalWrite(IN2, LOW);
    Serial.println(" Hauteur = Bas ");

 }
  delay (1000);
 }  

A suivre. MB

Édité par papy84

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte