Réduire la consommation

Bonjour
J'ai fait un montage pour surveiller le niveau d'eau dans un bac dans lequel se déverse une fuite de ma chaudière. Ca fonctionne bien. Il y a 2 LED, un capteur de niveau d'eau, un buzzer et un nano.
J'alimente le tout avec une batterie LiPo 7.4V.
Je pensais que ça durerait longtemps, au moins un mois, mais la batterie s'est déchargée en une nuit (elle n'était peut-être pas chargée à fond, je la recharge aujourd'hui pour retester). Normalement, pendant cette nuit, seule la LED verte s'est allumée (elle clignote toutes les 2 secondes), le niveau n'est pas monté assez haut pour déclencher le reste.

Mais comment faire pour que mon montage consomme le minimum ?

Voici le sketch : peut-on l'optimiser en consommation ?

//****************************************************
// Mesure analogique et digitale de l'humidité du sol 
// Avec le module Humidité Sol 
//  TipTopboards.com
//  23 12 2013  demo_hsol
//****************************************************
// Brancher +V -> 5V et GND
// Sortie analogique du capteur -> A0 Arduino
// Sortie digitale du capteur -> pin 3 Arduino (avec seuil)

//On rajoute une LEd témoin sur pin 7

int PinAnalogiqueHumidite=0;       //Broche Analogique de mesure d'humidité
int PinLed=7;    //LED témoin de seuil de  sécheresse
int hsol;  //Humidite su sol, mesure analogique
int buzzer = 10;// Borne de sortie du buzzer
int ledV = 2; // Led Verte D2

void setup(){ // Initialisation 
    Serial.begin(9600);  //Connection série à 9600 baud
    pinMode(PinAnalogiqueHumidite, INPUT);       //pin A0 en entrée analogique
    pinMode(PinLed, OUTPUT);   //LED témoin
    pinMode(buzzer,OUTPUT);// Définir la sortie du buzzer
    pinMode(ledV, OUTPUT);
    digitalWrite(ledV, HIGH);
}

void loop() { //boucle principale
  delay(2000);
  hsol = 1024-analogRead(PinAnalogiqueHumidite); // Lit la tension analogique
  int niveau = map(hsol,0,750,-70,100);
  Serial.println(niveau); // afficher la mesure
  while (niveau>50) {
    digitalWrite(ledV, HIGH);
    digitalWrite(PinLed, HIGH);   // LED allumée
    int freq = map(niveau,20,100,2200,3000);
    tone(buzzer,freq);
    delay(200);
    noTone(buzzer);
    hsol = 1024-analogRead(PinAnalogiqueHumidite); // Lit la tension analogique
    niveau = map(hsol,0,750,-70,100);
    Serial.println(niveau);
    int delai = map(niveau,20,100,1000,100);
    delay(delai); //delai entre 2 mesures 20ms}
    }
    digitalWrite(PinLed, LOW);   // LED off
    digitalWrite(ledV,!digitalRead(ledV));
}

Vous pouvez faire dormir votre système pendant la plupart du temps, cf les techniques de gestion de votre arduino.

Ensuite il faut vous assurer de ne pas alimenter les capteurs en permanence donc piloter l'alim depuis votre arduino avec un transistor parr exemple

ça ne va pas déborder en 2 secondes - sinon réparez la chaudière :slight_smile: - donc vous pouvez sans doute tester (alimenter le capteur de niveau) que une fois par minute ou même 5 minutes par exemple - et la LED peut clignoter plus lentement (réveillez le proc toutes les 8 secondes par exemple avec timer et laissez là allumée 100ms si la LED est vraiment utile pour vous)

Merci
Les transistors c'est pas mon fort ! Je vais essayer quand même...
Quel type de transistor, quelle référence devrais-je utiliser ? Avez-vous des conseils à ajouter ?
Merci

Pour le transistor ça dépend de ce que vous avez comme capteur associé à votre arduino et de sa consommation - s'il consomme peu (quelques mA) vous pouvez le piloter par une pin directement sans transistor. S'il tire plus de 20mA alors vous l'alimentez sans doute depuis La pin 5V sans doute et dans ce cas il faudra un transistor adapté à la puissance requise

Bref qu'est-ce qui est connecté et Avez vous une spec de consommation ?

En image c'est beaucoup mieux.

Bonjour,

Ce sujet m'intéresse, j'ai eu à le résoudre a ma façon pour commander un module de commande de chaudière par GSM.

Compte-tenu de la conso relativement importante de mon modem pendant les phases de communication, de la conso permanente de la carte uno ainsi que celle du LCD associé, j'ai opté pour une alimentation tous les matins pendant 10 minutes.
Pendant ces séquence la carte arduino active le modem qui lis les SMS opère les actions correspondantes et envoie un sms de confirmation de la bonne exécution de l'ordre.

Pour l'activation j'utilise un "morceau" de programmateur horaire avec sa batterie de sauvegarde.

C'est le programmateur horaire qui active périodiquement la carte arduino.

La conso permanente du programmateur horaire est réduite à quelques dz de µA que qui permet une très grande autonomie.

Dans votre cas on pourrait peut-être tenter la même opération avec cependant une activation plus fréquente. (4 fois par jour ?)

Serge .D

Merci de vos réponses. Le projet e commande de chaudière semble très intéressant.
Je vais tester l'ATMEGA standalone quand j'aurai un peu de temps...