Go Down

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

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

#77
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

etibou

Bonjour;

Je ne vois pas le soucis. Il faut décomposer les fonctions pour déterminer ce qui ne marche pas.
Le fichier ino joint teste le moteur. Rotation dans un sens puis dans l'autre.
A suivre.

kate77

bonsoir,

bon, je démonte tout, et refait les branchements en pas à pas en réalisant les tests par étapes.

Merci pour le code de test moteur.

Je vous tiens informés

à bientôt

kate77

bonjour à tous,

avancée des tests avec alimentation faite par usb arduino


tests : carte nano : ok
module uln2003 : ok
moteur ok mais très lent avec modification du code stepper de cette façon, je pense qu'il sera plus rapide sur du 12v.

#include <Stepper.h>

const int stepsPerRevolution = 64;  // change this to fit the number of steps per revolution
// for your motor

// initialize the stepper library on pins 8 through 11:
Stepper myStepper(stepsPerRevolution,  2, 4, 3, 5);

void setup() {
  // set the speed at 60 rpm:
  myStepper.setSpeed(100);
  // initialize the serial port:
  Serial.begin(9600);
}

void loop() {
  // step one revolution  in one direction:
  Serial.println("clockwise");
  myStepper.step(stepsPerRevolution);
  delay(400);

  // step one revolution in the other direction:
  Serial.println("counterclockwise");
  myStepper.step(-stepsPerRevolution);
  delay(400);
}

Je continue les tests avec l'ajout des fin de courses puis de la photoresistance.

A bientôt

etibou

Hello,

Une bonne nouvelle sauf qu'il me semble que la vitesse de rotation d'un moteur pas à pas ne dépend pas de sa tension d'alimentation si celle-ci est dans sa plage de fonctionnement sauf si l'intensité de la source de courant est trop faible..

A suivre.

thom13

Bonjour à tous,

merci pour toutes ces informations, après avoir épluché l'internet et les 6 pages de ce forum, je suis rendu avec un Arduino uno, un capteur de luminosité BH1750, un shield moteur Adafruit V2 et un moteur pas à pas Nema 17.

J'essaye de faire quelque chose de simple car je suis loin d'être un programmeur, et c'est la que je bloque, le moteur réagi très bien au capteur de luminosité pour l'ouverture et la fermeture de la porte, sauf qu'il ne s'arrête jamais de tourner...

Voici mon code:
Code: [Select]
/*
  BH1750.h pour lecture de la luminosité (modele GY-30)
  Adafruit MotorShield V2 pour la gestion du moteur Stepper Nema17
  Sur Arduino Uno
*/

#include <Wire.h>
#include <BH1750.h>
#include <Adafruit_MotorShield.h>

// Create the motor shield object with the default I2C address
Adafruit_MotorShield AFMS = Adafruit_MotorShield();
// Or, create it with a different I2C address (say for stacking)
// Adafruit_MotorShield AFMS = Adafruit_MotorShield(0x61);

// Connect a stepper motor with 200 steps per revolution (1.8 degree)
// to motor port #2 (M3 and M4)
Adafruit_StepperMotor *myMotor = AFMS.getStepper(200, 2);

BH1750 lightMeter;

void setup(){

  Serial.begin(9600);

  // Initialize the I2C bus (BH1750 library doesn't do this automatically)
  Wire.begin();
  // On esp8266 you can select SCL and SDA pins using Wire.begin(D4, D3);

  lightMeter.begin(BH1750::ONE_TIME_HIGH_RES_MODE);
  //lightMeter.setMTreg(69);  // not needed, only mentioning it

  Serial.println(F("BH1750 Test begin"));

  Serial.begin(9600);           // set up Serial library at 9600 bps
  Serial.println("Stepper test!");

  AFMS.begin();  // create with the default frequency 1.6KHz
  //AFMS.begin(1000);  // OR with a different frequency, say 1KHz
 
  myMotor->setSpeed(10);  // 10 rpm   
}



void loop() {
  float lux = lightMeter.readLightLevel(true); //lecture de la luminosité
  Serial.print(F("Light: "));
  Serial.print(lux);
  Serial.println(F(" lx"));

if (lux > 10) {
   
    myMotor->step(200, FORWARD, SINGLE);
    Serial.println(F("Ouverture porte"));
}
    else if (lux < 10) {
      myMotor->step(200, BACKWARD, SINGLE);
      Serial.println(F("Fermeture porte"));
    }
}


Si une âme charitable voudrait m'indiquer ce qu'il manque dans mon code.

J'avais aussi l'idée de le mettre sur mon réseau MySensors qui fonctionne avec Domoticz, je vais me pencher la dessus, cela permettrait la gestion des heures du levé et couché du soleil a travers Domoticz. Mais bon une étape a la fois...

etibou

#84
Nov 06, 2018, 08:24 am Last Edit: Nov 06, 2018, 08:26 am by etibou
Bonjour,

Il y a un petit problème dans la logique du code car une fois que le niveau de lumière détecté et que tu as donné l'ordre de fermer ou d'ouvrir, il faut mémoriser le statut par un boolean afin qu'à la boucle suivante tu ne renvoi pas l'ordre si le seuil de lumière est toujours atteint.
Exemple

Si Lux > 10 et porteFermée alors j'ouvre et portefermée = faux.
Si Luv < 10 et non portefermée alors je ferme et portefermée = vrai.

Reste à gérer le statut initial (démarrage du programme porte ouverte ou fermée).
Généralement avec des détecteur de lumière, on détermine un seuil bas et un seuil haut afin d'éviter le phénomène de porte qui se ferme et qui s'ouvre alternativement à la bascule du seuil.

Bon courage.



nolo

Bonjour, Je cherche une personne pour me faire un petit programme ,et comme tu as proposé à certain ,je me permet de te demander se service car je galère quant ont approche les 70 ans cela peut se comprendre .

Mon projet  Une balance piloté par le fameux moto réducteur 28byj 48 est controlé par un endstop   0  _ 5 volts  .

Le fonctionnement est assez simple  un levier avec un contre poids  équilibre une balance sous une ruche qui prend du poids ou en pert .  Le moto réducteur sert à déplacer le contre poids comme ont peut le faire sur les balance manuel .

QUANT le endstop me donne une tention >à 4 volts  >5  le moteur se déplace de 10 pas en avant  (  moins ou plus à voir )
Quant le   endstop me donne une tention  de 2 à volts4 volts  le moto ne fait rien
Quant le   endstop me donne une tention < à 2 volts      le moteur se déplace de 10 pas en arriere  .

La prise de poids est trés lente  1 à 2 kg par 24 heures ,le temps de la boucle reste à déterminée ;
La mécanique fonctionne comme décrite plus haut avec le endstop .

Le nombre de pas du motoréduc   en  plus ou moins  devras etre stoké dans un compteur et multiplier par un coef quime donne le poids de la ruche .

Merci pour pour ton aide si possible  Nolo



etibou

#86
Nov 11, 2018, 07:23 am Last Edit: Nov 11, 2018, 07:24 am by etibou
Bonjour,

C'est pas très compliqué, je t'écris un petit bout code mais es-tu certain du fonctionnement du endstop car généralement les fin de course sont tout ou rien, c'est à dire 0 ou 5V.
Avec l'age, il faut prendre un peu plus de temps, je connais bien le problème même si je n'ai pas 70, je n'ai plus 20 ans..
A+

Artouste

#87
Nov 11, 2018, 12:45 pm Last Edit: Nov 11, 2018, 12:46 pm by Artouste
Bonjour, Je cherche une personne pour me faire un petit programme ,et comme tu as proposé à certain ,je me permet de te demander se service car je galère quant ont approche les 70 ans cela peut se comprendre .

Mon projet  Une balance piloté par le fameux moto réducteur 28byj 48 est controlé par un endstop   0  _ 5 volts  .

Le fonctionnement est assez simple  un levier avec un contre poids  équilibre une balance sous une ruche qui prend du poids ou en pert .  Le moto réducteur sert à déplacer le contre poids comme ont peut le faire sur les balance manuel .

QUANT le endstop me donne une tention >à 4 volts  >5  le moteur se déplace de 10 pas en avant  (  moins ou plus à voir )
Quant le   endstop me donne une tention  de 2 à volts4 volts  le moto ne fait rien
Quant le   endstop me donne une tention < à 2 volts      le moteur se déplace de 10 pas en arriere  .

La prise de poids est trés lente  1 à 2 kg par 24 heures ,le temps de la boucle reste à déterminée ;
La mécanique fonctionne comme décrite plus haut avec le endstop .

Le nombre de pas du motoréduc   en  plus ou moins  devras etre stoké dans un compteur et multiplier par un coef quime donne le poids de la ruche .

Merci pour pour ton aide si possible  Nolo



Bonjour
Pour faire de la pesée de ruche , il y a plus simple (pour peu que ta méthode soit réellement envisageable avec ce que tu à choisi , ce dont je doute fortement 8)  )
regarde déjà ce sujet pèse ruche de Lacuzon

etibou

Bonjour,

Dans le projet mentionné, ils utilisent un capteur d'une balance électronique qu'ils amplifient.
Si tu veux conserver le fonctionnement de contrepoids avec un déplacement par un moteur pas à pas, c'est possible.
Il faut 2 contacts fin de course sur le balancier, un pour le poids en diminution, un pour le poids en augmentation.
Dès que l'un des contacts est actionné, le moteur déplace le contrepoids jusqu'à ce que le contact disparaît.
Le système peut fonctionner dans un sens ou dans l'autre.(prise ou perte de poids).
Reste le pb de la précision et de la plage de mesure car cela dépendra de la valeur du contrepoids.
Une petite valeur = précision élevée mais plage de mesure réduite (dépend de la longueur de course du contrepoids).. Attention aux perturbations extérieures qui peuvent fausser la mesure.
Une valeur plus importante = précision moindre mais page de mesure plus grande et moins sensible aux
 perturbations extérieures.

Je peux t'écrire un bout de code suivant ce scénario.
Le résultat cumulé du poids sera envoyé par la ligne série.
Pour avoir le poids total de la ruche, il faudra gérer une tare.
Je t'envoi un code à tester rapidement.
Bonne soirée.
Etibou




etibou

Bonsoir,

Voici le code promis.
Du coup, il peut gérer soit des contacts fin de course soit une entrée analogique.
Il suffit de commenter ou dé-commenter les #define non utiles
Le fonctionnement avec les contacts a été testé (moteur 28BYJ6-48 5v)
Reste à tester le fonctionnement avec l'entrée analogique et bien définir le sens des corrections.
A tester..
Bon courage.
Etibou

Go Up