Go Down

Topic: Porte automatique pour poulailler (Read 67357 times) previous topic - next topic

dfgh

hello
c'est ce que demande ton prg

dans la loop,
tu lis la ldr, tu demandes deux tours au moteur, tu fais une tempo de 1 seconde.
puis comme c'est une loop, tu recommences
tu lis la ldr, tu demandes deux tours au moteur, tu fais une tempo de 1 seconde.
puis comme c'est une loop, tu recommences
tu lis la ldr, tu demandes deux tours au moteur, tu fais une tempo de 1 seconde.
puis comme c'est une loop, tu recommences
tu lis la ldr, tu demandes deux tours au moteur, tu fais une tempo de 1 seconde.

etc....

donc,
en debut de ton prg, declare un boolean haut=true; (on suppose que ta porte est ouverte)

et dans ta condition if, rajoute un test sur le flag

: if ((ValeurMesure<ValeurSeuil)&&haut ==false){xxxxxxx;xxxxxx; haut = true}

en fin de la fonction " montée" de la porte, tu rajoutes une ligne: haut = true;
et dans la partie else, passe le flag à false   

pralfi

bonjour ,
je viens de commander le matériel,
carte uno arduino
Arduino Motor Shield 2 x 2 A
Module à photorésistance GT1107
j y reçois dans la semaine.
bon reste plus qu a apprendre la programmation  :(

donc je récapitule :
position initiale :porte ouverte , ldr =1 ,capteur haut actionné, moteur a l 'arrêt, frein moteur

mise en route: ldr=0 ( je verrai en fonction de la luminosité)
moteur marche : sens 1 ( descente de la porte)
capteur bas actionné
arrêt moteur
frein moteur

 si ldr=1 actionner plus de 5 minute
moteur marche: sens 2 (montée de la porte)
capteur haut actionné
arrêt moteur
frein moteur

je veut rajouter une mise en sommeil  de la carte pour eco d'énergie mais je sais pas ou la mettre?

branchement:
carte uno alimenté en 9v
moteur sur shield  avec alimentation 12 v indépendante

ldr  branchée sur A0

capteur haut sur A1
capteur bas sur A2

 voila j' en suis là . si vous voyez des erreurs ou des oublis
merci d 'avance

pralfi

bonsoir , je viens de recevoir le matériel, c est tout petit  :)
allez maintenant au boulot.
c 'est parti :
1 ère question
pour la librairie du shield arduino r3 moteur, je doit bien inclure:#include<stepper.h>
merci pour vos réponses.


pralfi

bonsoir , j ai besoin d'un petit coup de main .
j ai réussi a faire fonctionner le moteur
j ai réussi a contrôler la ldr pour avoir les seuil jour et nuit
ensuite j ai essayé de faire fonctionner le moteur avec la ldr :
seuil jour : rotation moteur pendant 2 seconde
seuil nuit : rotation inverse moteur pendant de 2 seconde
mon souci , j' utilise le frein moteur( voir programme) , mais je voudrais l' arrêter ( c' est a dire moteur a l 'arrêt sans frein), mais je ne vois pas comment, j ai inséré break mais le frein moteur est toujours actif.
je met le programme afin de voir ou est l' erreur
merci d avance
Code: [Select]

const int rotationA = 12;
const int vitesseA = 3;
const int freinA= 9;


const int delayLength = 60;
int ldrPin = 3; // ldr sur pin 3
int ldrReading; // lecture ldr
int VALIDE_MOTEUR = 0; //variable pour determiner si le moteur doit tourner ou non


void setup() {
// donnée de depart
   Serial.begin(9600);
   pinMode(rotationA, OUTPUT);
   pinMode(freinA, OUTPUT);
   pinMode(vitesseA, OUTPUT);
  
  
}

void loop() {
  ldrReading = analogRead(ldrPin);
  Serial.print("Analog reading = ");
  Serial.print(ldrReading);
 
  if (ldrReading < 100 && VALIDE_MOTEUR == 0)
 
  {
    Serial.println(" - Nuit");
    for (int i=0;i<20;i++){
  digitalWrite(freinA, LOW);// arret du frein
  digitalWrite(rotationA, HIGH);//rotation moteur descente
  analogWrite(vitesseA, 255);//vitesse a fond
 
  delay(2000);
 
  digitalWrite(freinA,HIGH);//frein
  break;//arret
    
    }
  VALIDE_MOTEUR=1;
  }
  
 
    if (ldrReading > 600 && VALIDE_MOTEUR == 1)
  {
    Serial.println(" - jour");
   for (int i=0;i<20;i++){
  digitalWrite(freinA, LOW);  // arret frein
  digitalWrite(rotationA, LOW);   // rotation moteur montée
  analogWrite(vitesseA, 255);   // vitesse a fond
 
  delay(2000);
  
  digitalWrite (freinA,HIGH);//frein
  break;//arret
  
 

}
VALIDE_MOTEUR=0;
   }
   }
 


dfgh

hello
int ldrPin = 3; // D3 entrée digitale

ldrReading = analogRead(ldrPin);
 
 
  if (ldrReading < 100 && VALIDE_MOTEUR == 0)

tu lis quoi sur ton moniteur avec les deux lignes suivantes ?


Serial.print("Analog reading = ");
  Serial.print(ldrReading);

pralfi

bonsoir ,  j utilise un shield moteur arduino r3 , j ai mis ma ldr sur le pin 3 car le 0 et le 1 sont pris par le shield
ensuite j utilise la lecture du pin 3 pour avoir la valeur ,et si il est inférieur a 100 cela valide la fonction moteur 0.
pour avoir la valeur qu il me fallait j ai branché la ldr seul et regardé les valeurs que cela me donnais sur le moniteur.je ne peut pas lire en fonction car je suis branché avec 12 volt externe

pralfi

help,
bonjour ,
j 'ai besoin d 'un petit coup de main ,
j e m explique , j ' essaye de realiser une porte de poulailler( encore),je dispose d' un uno et un moteur shield r3 arduino.
j 'ai essayé de faire un programme ( étant débutant) pour faire tourner un moteur 12v avec ldr )
2 seconde montée lorsqu il fait jour
2 seconde descente lorsqu il fait nuit
mon souci :
je n arrive pas a arrêté le moteur a part avec le frein moteur, je voudrais qu il s arrête après avoir  utiliser le frein moteur .
voici le programme:
Code: [Select]

const int rotationA = 12;
const int vitesseA = 3;
const int freinA= 9;


const int delayLength = 60;
int ldrPin = 3; // ldr sur pin 3
int ldrReading; // lecture ldr
int VALIDE_MOTEUR = 0; //variable pour determiner si le moteur doit tourner ou non


void setup() {
// donnée de depart
   Serial.begin(9600);
   pinMode(rotationA, OUTPUT);
   pinMode(freinA, OUTPUT);
   pinMode(vitesseA, OUTPUT);
 
   
}

void loop() {
  ldrReading = analogRead(ldrPin);
  Serial.print("Analog reading = ");
  Serial.print(ldrReading);
 
  if (ldrReading < 100 && VALIDE_MOTEUR == 0)
 
  {
    Serial.println(" - Nuit");
    for (int i=0;i<20;i++){
  digitalWrite(freinA, LOW);// arret du frein
  digitalWrite(rotationA, HIGH);//rotation moteur descente
  analogWrite(vitesseA, 255);//vitesse a fond
 
  delay(2000);
 
  digitalWrite(freinA,HIGH);//frein
 
  break;//arret
   
    }
  VALIDE_MOTEUR=1;
  }
 
 
    if (ldrReading > 600 && VALIDE_MOTEUR == 1)
  {
    Serial.println(" - jour");
   for (int i=0;i<20;i++){
  digitalWrite(freinA, LOW);  // arret frein
  digitalWrite(rotationA, LOW);   // rotation moteur montée
  analogWrite(vitesseA, 255);   // vitesse a fond
 
  delay(2000);
 
  digitalWrite (freinA,HIGH);//frein
  break;//arret
   
 

}
VALIDE_MOTEUR=0;
   }
   }
 




j ai utilisé la fonction break mais ça ne fonctionne pas
merci d 'avance pour votre aide

etibou

Bonjour à tous,

Voici la dernière version de mon code pour tenir compte des dernières nouvelles du compilateur version 1.8.5. et la nouvelle bibliothèque DS1307 pour la RTC. Le croquis se compile également avec Arduino Web Editor .
Bon Année à tous.
Etibou

kate77

bonjour, cela fait plusieurs jours que te travaille à plein temps et avec plaisir pour trouver des informations pour automatiser une porte de poulailler en utilisant : une nano arduino, un moteur 12v unipolaire, une ldr, deux capteurs de fin de course, une alimentation par panneau solaire... Mes plans de construction sont terminés (poteaux sur pilotis, cuve plastique 1000 l à l'intérieur pour aménagement du poulailler pour faciliter le nettoyage et lutter contre les poux rouges,  habillage en bois à l'extérieur, et toit végétalisé. La porte est une porte à guillotine en plastique placée entre deux glissières alu en U. je n'ai jamais rien réalisé en électronique, pour les plans et la réalisation de la construction du poulailler, je peux, mais pour l'électronique non. j'ai essayé de comprendre le fonctionnement, et beaucoup lu ces derniers jours, j'ai réalisé deux croquis (je ne dis pas schémas car je ne sais pas faire, mais j'ai fait des images des composants que je pense devoir utiliser et un assemblage en fonction de ce que j'ai cru comprendre) un pour l'alimentation par panneau solaire, et un autre pour les câblages de l'ensemble des composants. Je demande vraiment votre indulgence car c'est pour moi une première. Je m'adresse à vous pour un crash test de mes solutions, sont elles viables sans risque ? faut il les mettre à la poubelle et les refaire ??? bref, pouvez vous m'apporter vos corrections et vos conseils. Je vous en remercie d'avance. Bien cordialement et à bientôt j'espère. (trois documents en pièces jointes : porte, alimentation et montage des composants.


kate77

problème avec les fichiers, nouveau post pour compléter.

etibou

Bonjour,

Juste une petite question : Pourquoi gérer plusieurs tensions car tout est réalisable en 12 V Batterie, Moteur, Panneau solaire ?
Il faut faire un petit calcul sur la consommation de l'ensemble et sur la capacité d'alimentation sinon il faudra prévoir une alimentation complémentaire: Les poules vont rester dehors ou dedans l'hiver si la batterie se vide totalement..
Bon courage.
Etibou

kate77

bonjour, j'avais prévu une tension 5v pour la carte nano arduino et 12 v pour le moteur, mais à te lire : donc pour plus de simplicité et plus de réserve : une batterie 12 v chargée par le panneau solaire, qui ensuite alimente et le moteur et la carte arduino. je revois ma copie. Merci pour tes conseils. et bonne journée.

pralfi

bonjour, mon système fonctionne depuis 15 jours grâce au coup de main de ETIBOU.
mon système fonctionne avec un panneau 10w 12v
par contre j alimente avec 2 tensions
12v pour le shield moteur
9 v pour le uno grâce a un réducteur de tension (12-9v) car j avais peur que 12 v soit risqué pour la carte.

kate77

#73
Mar 06, 2018, 12:36 pm Last Edit: Mar 06, 2018, 12:42 pm by kate77
bonjour à tous,

merci encore à Etibou pour m'avoir communiqué un code pour gérer la porte du poulailler.

Mais.... j'ai encore besoin de vos services :

J'ai maintenant reçu l'ensemble des composants dont j'avais besoin et j'ai construit une maquette grandeur nature de la future porte du poulailler (j'avance par ailleurs dans sa construction), porte réelle pour tester si le moteur peut soulever cette porte sans problème.

J'ai réalisé les câblages provisoires  (d2-int1 d3-int2 d4-int3 d5-int4) (voir fichier fritzing) en me basant sur le site Eskimon http://eskimon.fr/290-arduino-603-petits-pas-le-moteur-pas-pas, mais rien à faire, je n'arrive pas à faire fonctionner le moteur.

Celui ci est alimenté directement sur le module ALM2003 par une batterie 12-6v chargée par panneaux solaires, relié au gnd de la carte arduino nano.

il s'agit du moteur 28BYJ-48 12V (spec en annexe).

capteurs de fin de course haut et bas (d11 et d12)

photoresistance (a0)

les tests d'alimentation sont corrects sur tous les points d'entrée, mais je n'ai pas le matériel pour vérifier leur puissance.

j'ai modifié sur le code les nombres de pas, vitesse .... mais rien n'y fait.

bref, je ne sais que faire.

si vous pouviez voir les fichiers que j'ai mis en pièces jointes pour voir ce que j'ai mal fait, car je pense être passé à coté de quelques choses (au pluriel...).

merci d'avance et bonne journée



kate77

complément photo maquette

Go Up