Moduler la puissance envoyée à une batterie électrique


salut

je commande via un relais une batterie électrique de 1200w pour préchauffer l'air avant l'échangeur de vmc pour qu'il ne gèle pas par les -15° actuels.

actuellement, je réchauffe tant que la température de l'air n'est pas égale à 0°. je fais ça avec une condition if et ça marche bien, mais j'ai des cycles de chauffe de 30 secondes lorsqu'il fait très froid.
du coup, je pense que l'alternance très chaud/froid peut endommager ma batterie et j'envisage de faire des cycles de chauffe de 5 secondes, quitte à en faire plus fréquemment, pour que la résistance électrique soit toujours un peu chaude mais n'alterne pas les phases extrêmes.

j'ai rédigé un script (simplifié et purgé des éléments annexes). si vous pouviez y jeter un coup d'oeil et me dire s'il fonctionne ?
- je ne voudrais pas tomber dans des conditions où ma batterie s'allume tout le temps. comme c'est la première fois que j'utilise millis()...
- j'ai un problème avec la variable batteriestate, je n'ai pas trouvé où ça coince ("" ou variable mal déclarée ?)
- j'ai bien commenté mon code et j'y pose même des questions :-)

merci pour la relecture.

code: [select]
unsigned long timebatterie;
char batteriestate;

void setup()
{
#define relaisbatt 6
pinmode(relaisbatt, output);
digitalwrite(relaisbatt, high); // j'éteinds la batterie
        //je pense que je peux le déclarer ici pour l'état initial, avant de lancer le script, non ?


//je vous passe la déclaration des sondes de temp.

//déclaration de la variable batteriestate
batteriestate = 'eteinte';

}

void loop() {

if (airvmc <0)
    {


switch (batteriestate){

case batteriestate == 'active' : //si l'état de la batterie est à allumée, on vérifie le temps d'allumage
if (millis() - timebatterie  > 5000) // s'il s'est déroulé plus de 5 secondes
{
digitalwrite(relaisbatt, high); // j'éteinds la batterie
batteriestate = 'eteinte';
//j'attend deux secondes avant de continuer le script

delay(2000); //on met en pause pendant deux secondes

}
break;


case batteriestate == 'eteinte' :    //si l'état de la batterie est à éteinte, on l'allume
digitalwrite(relaisbatt, low); //j'allume la batterie
batteriestate = 'active';
timebatterie= millis(); //on stocke le moment d'allumage de la batterie

break;


}
    }
else
{
//ventilation normale.
}


}

hello
avec ton prg incomplet, il est difficile de te dire que tout est ok

par exemple:
avec ton delai de 2000 tu chaufferas au moins 6 secondes et non 5

ensuite si le température = -1, tu chauffes et 3 secondes après elle est à +1.
mais là, tu ne passe plus dans ta condition if t<0
donc la batterie reste en chauffe.

à moins que tu e traite ça dans le else...


donc prg complet si tu veux des avis fiables


Arduino Forum > International > Français (Moderators: jfs, Snootlab) > Moduler la puissance envoyée à une batterie électrique


arduino

Comments

Popular posts from this blog

DHT11 Time out error using v0.4.1library

Sketch upload fails with Java error (___REMOVE___/bin/avrdude)!

Arduino Uno + KTY81/210 temperature sensor