Aide porte poulallier

Bonjour après installation de ma porte moteur ect
J’ai pu faire mes tests tout fonctionne parfaitement MAIS seulement 24-48h
Ensuite la batterie est complètement vide

Problème de programme ou fuite ?
Des idées ?

Un composant arduino peut il vider une batterie de perceuse avec une simple erreur dans le programme

Sans schéma complet il va être difficile de se prononcer.
Quelle carte ARDUINO ?
Utilises-tu le mode veille ?
Comment la batterie est-elle rechargée ?

Ma carte arduino c’est une nano arduino
Je n’utilise aucun mode veille
La batterie est une batterie de perceuse visseuse sans fil qui est recharger sur son stand

Une NANO consomme 700mAH par jour.

Une PRO MINI, même 16MHz, aurait été préférable, en faisant sauter la LED POWER et en utilisant le mode veille.

Voir ici : arduino-pro-mini-basse-consommation

D'autre part un L293D consomme même au repos (environ 10mA).

J'en parle ici : porte-motorisee-de-poulailler-1ere

Enfin, recharger une batterie manuellement n'est pas très optimal. En cas d'oubli elle tombe en décharge profonde et sa durée de vie diminue.

J’aimerais adapté mon système pour le mettre en vieille avec les librairies disponible mais je ne comprend pas les librairies
Tu a des exemples ?

Une Nano consome 700 mA par jour ?????
Sur ton site c’est écrit par an (365J)

Ducoup en enlevant Led et truc Lecture USB
Je descend à 0,03mA en vieille et 13,8mA en marche je pourrais donc régler ce problème de consomation

greg2221:
Une Nano consome 700 mA par jour ???
Sur ton site c’est écrit par an (365J)

30mA sur 24H cela fait 30*24 donc 720mAH c’est mathématique non ?

hbachetti:
30mA sur 24H cela fait 30*24 donc 720mAH c’est mathématique non ?

J’aimerais mettre en veille la porte la journée et la nuit et l’activé que au moment de l’ouverture pour réduire la consomation !

Avec ce code fais avec l’aide de Hbachetti :
Quelqu’un serait faire ?

// entrée analogique de la photorésistance
int D2 = 2;//monté
int D3 = 3;//descente
const int FinCBas = 12;
int sensorvalbas =0;
const int FinCHaut = 11;
int sensorvalhaut =0;

void setup()
{
// démarrage la liaison série entre entrée analogique et ordi
Serial.begin(9600);
//Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
pinMode(11, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
//Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
pinMode(12, INPUT_PULLUP);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
}
void loop()
{
int val;
val=analogRead(0);
sensorvalbas = digitalRead( FinCBas );
Serial.print(“FDC BAS =”);
Serial.println(sensorvalbas);
delay(1000);
sensorvalhaut = digitalRead( FinCHaut );
//Valeur comprise entre 0 et 1024
//on affiche la valeur lue sur la liaison série
Serial.print("PhotoRLue = ");
Serial.println(val,DEC);//print the value to serial
delay(500);

if (val <520 && sensorvalbas == HIGH) //Condition : Detection de la nuit et la porte est ouverte
//Alors on ferme la porte
{
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
while(1){ //Tant que la porte n’est pas fermé, le moteur tourne
//Fermeture
int fdc = digitalRead(FinCBas);
Serial.print(“FDC=”);
Serial.print(fdc);
if (fdc == LOW) {
break;
}
}
digitalWrite(D3, LOW);

}
}

Utilise la librairie LowPower.

Elle est installable depuis le gestionnaire de librairies (Rocket Scream).
Regarde l'exemple powerDownWakePeriodic.

Sur une NANO tu pourras descendre à une douzaine de mA au lieu de 30.
Si l'on ajoute la consommation du L293 (10mA) cela va amener une division de la consommation par deux.

Donc si auparavant l'autonomie était de 2 jours maxi elle va grimper à 4. Cela ne fait pas une grosse différence.
Une PRO MINI et un contrôle de l'alimentation du L293 permettrait d'aller plus loin.

Sans une recharge par panneau solaire il va être assez fastidieux de continuer dans cette voie.
Quelle type de batterie ? NIMH ou LITHIUM ?

hbachetti:
Utilise la librairie LowPower.

Elle est installable depuis le gestionnaire de librairies (Rocket Scream).
Regarde l'exemple powerDownWakePeriodic.

Sur une NANO tu pourras descendre à une douzaine de mA au lieu de 30.
Si l'on ajoute la consommation du L293 (10mA) cela va amener une division de la consommation par deux.

Donc si auparavant l'autonomie était de 2 jours maxi elle va grimper à 4. Cela ne fait pas une grosse différence.
Une PRO MINI et un contrôle de l'alimentation du L293 permettrait d'aller plus loin.

Sans une recharge par panneau solaire il va être assez fastidieux de continuer dans cette voie.
Quelle type de batterie ? NIMH ou LITHIUM ?

Je vais regardé ça !

C'est une batterie au Lithium Ion donc pas de risque de détérioration une fois vidé, + présence sécurité sur celle ci

J’ai regarder là librairies Lowpower
Mais je n’en comprend pas trop utilisation et où faut la placer?

Ce que j’ai c’est qu’il faut choisir une durée de veille genre 10 minutes et toute les 10 minutes le programme ce fais et à la fin elle replonge en veille pour 10 minutes c’est bien ça ?

    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Endort l'ARDUINO en fin de loop().
L'endormissement est de 8s maxi. Pour 10 minutes il faudra faire une boucle.

Envisages-tu des boutons pour ouverture manuelle ?

hbachetti:

    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Endort l'ARDUINO en fin de loop().
L'endormissement est de 8s maxi. Pour 10 minutes il faudra faire une boucle.

Envisages-tu des boutons pour ouverture manuelle ?

Non je n'envisages pas de boutons.
Mais 10 minutes c'étais un exemple pourquoi pas 30 min ou 15 min
je veux juste que ça vérifie pas trop longtemps après la mise en veille sinon l'hivers quand le soleil ce couche plus vite cela sera problématique

hbachetti:

    LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Endort l'ARDUINO en fin de loop().
L'endormissement est de 8s maxi. Pour 10 minutes il faudra faire une boucle.

Envisages-tu des boutons pour ouverture manuelle ?

Donc pour utilisé cette librairie j'ai juste à mettre ce code à la fin du loop et ça endors l'arduino 8 secondes ?

Oui.

hbachetti:
Oui.

#include <LowPower.h>;

// entrée analogique de la photorésistance
int D2 = 2;//monté
int D3 = 3;//descente
const int FinCBas = 12;
int sensorvalbas =0;
const int FinCHaut = 11;
int sensorvalhaut =0;
int enA = 5;

void setup()
{
// démarrage la liaison série entre entrée analogique et ordi
Serial.begin(9600);
//Déclaration des contacts fin de course en entrée avec utilisation de la fonction PULLUP interne
pinMode(11, INPUT_PULLUP); //Les Pull Up sont des résistances internes à l’arduino.
//Donc de base lorsque le boutton n’est pas appuyé on lit un état haut (5V = niveau logique 1)
pinMode(12, INPUT_PULLUP);
pinMode(D2, OUTPUT);
pinMode(D3, OUTPUT);
pinMode(5, OUTPUT);
}
void loop()
{
int val;
val=analogRead(0);
sensorvalbas = digitalRead( FinCBas );
Serial.print(“FDC BAS =”);
Serial.println(sensorvalbas);
delay(1000);
sensorvalhaut = digitalRead( FinCHaut );
//Valeur comprise entre 0 et 1024
//on affiche la valeur lue sur la liaison série
Serial.print("PhotoRLue = ");
Serial.println(val,DEC);//print the value to serial
delay(500);

if (val <150 && sensorvalbas == HIGH) //Condition : Detection de la nuit et la porte est ouverte
//Alors on ferme la porte
{
digitalWrite(D2, HIGH);
digitalWrite(D3, LOW);
analogWrite(enA, 100);
while(1){ //Tant que la porte n’est pas fermé, le moteur tourne
//Fermeture
int fdc = digitalRead(FinCBas);
Serial.print(“FDC=”);
Serial.print(fdc);
if (fdc == LOW) {
break;
}
}
digitalWrite(D2, LOW);
Serial.println(“porte fermé”);
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

}
if (val >150 && sensorvalhaut == HIGH) //Condition : Detection de la nuit et la porte est ouverte
//Alors on ferme la porte
{
digitalWrite(D2, LOW);
digitalWrite(D3, HIGH);
analogWrite(enA, 100);
while(1){ //Tant que la porte n’est pas fermé, le moteur tourne
//Fermeture
int fdc2 = digitalRead(FinCHaut);
Serial.print(“FDC=”);
Serial.print(fdc2);
if (fdc2 == LOW) {
break;
}
}
digitalWrite(D3, LOW);
Serial.println(“Porte ouverte”);
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

}
}

J’ai mis LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF); à la fin de chaque IF mais si la porte est ouverte et qu’il fait jour cela rentre dans aucuns IF?
Dois-je faire un if la porte et ouverte et il fait jour OU la porte est fermé et il fait nuit alors :
LowPower.powerDown(SLEEP_8S, ADC_OFF, BOD_OFF);

Pourquoi pas un seul appel à powerDown en fin de loop() ?

Je vais essayé je ne connais pas la bibliothèque, je pensais qu’il fallait le mettre à la fin de chaque action

Si tu places un powerDown en fin de loop() cela va rythmer aussi les mesures de lumière.
Tu peux aussi utiliser une boucle pour endormir N fois, car 8 secondes c’est franchement court.
5, 10, 15 minutes, comme tu veux.