Bonjour les arduigeekos!
j'ai besoin de deux trois conseil et de vos avis sur mon petit projet :
le sujet :
J'ai un chargeur de batterie de voiture/moto/tondeuse intelligent (type Optimate), et je souhaite charger plusieurs batteries de différentes puissances/ampérages avec.
Je ne peut donc pas charger les batteries en même temps.
Voila l'idée : un Arduino commande des relais, sur lequels sont branchés le chargeur et les batteries.
le relais 1 est actionné --->La batterie 1 est en charge et pas les autres.
le relais 2 est actionné --->La batterie 2 est en charge et pas les autres.
ect
pour indiquer combien de batteries sont à charger je vais utilisé un commutateur 4 positions.
Position 1 : 1 seule batterie à charger.
Position 2 : 2 batteries à charger avec un temps de charge de chaque batterie de 3Jours (2.592e+8 ms).
Position 3 : 3 batteries à charger avec un temps de charge de chaque batterie de 3Jours (2.592e+8 ms).
Position 4 : 4 batteries à charger avec un temps de charge de chaque batterie de 3Jours (2.592e+8 ms).
Tout d'abord, je voulais savoir si vous pensez que les relais sont nécessaires pour :
- couper/alimenter la borne "+" et "-" de chaque batterie (donc 8 relais nécessaires)
ou si - je coupe/alimente juste les bornes "+" et que toutes les bornes "-" des batteries sont reliés entres elles au "-" du chargeur (et dans ce cas seul 4 relais sont nécessaires).
Je crois que l'Optimate envoi des impulsions de courant en sens inverse pour "nettoyer" les plaques des batteries (et dans ce cas, je ne peut pas connecter tout les "-" ensembles.)
Ensuite je vous présente mon code, dites moi ce que vous en pensez si je peut l’améliorer ou autre.
(je sais que vous préférez utiliser millis() que delay() mais ici je pense delay() plus approprié.)
int batt1 = 2; //commande relais Batterie 1 sur pin 2
int batt2 = 3; //commande relais Batterie 2 sur pin 3
int batt3 = 4; //commande relais Batterie 3 sur pin 9
int batt4 = 5; //commande relais Batterie 4 sur pin 11
int com1 = 8; //Position commutateur 1 sur pin 8
int com2 = 9; //Position commutateur 2 sur pin 9
int com3 = 10; //Position commutateur 3 sur pin 10
int com4 = 11; //Position commutateur 4 sur pin 11
int tps = 259200000; //temps de charge 259200000 = 3 jours
void setup() {
pinMode (batt1, OUTPUT);
pinMode (batt2, OUTPUT);
pinMode (batt3, OUTPUT);
pinMode (batt4, OUTPUT);
pinMode (com1, INPUT);
pinMode (com2, INPUT);
pinMode (com3, INPUT);
pinMode (com4, INPUT);
}
void loop() {
if (digitalRead (com1) == HIGH) {
digitalWrite(batt1, HIGH); //Charge batterie 1 permanente
};
if (digitalRead (com2) == HIGH) {
digitalWrite(batt1, LOW);
digitalWrite(batt2, HIGH);
delay (tps); //Charge batterie 2 pendant 3 jours
digitalWrite(batt2, LOW);
digitalWrite(batt1, HIGH);
delay (tps); //Charge batterie 1 pendant 3 jours et boucle
};
if (digitalRead (com3) == HIGH) {
digitalWrite(batt1, LOW);
digitalWrite(batt3, HIGH);
delay (tps); //Charge batterie 3 pendant 3 jours
digitalWrite(batt3, LOW);
digitalWrite(batt2, HIGH);
delay (tps); //Charge batterie 2 pendant 3 jours
digitalWrite(batt2, LOW);
digitalWrite(batt1, HIGH);
delay (tps); //Charge batterie 1 pendant 3 jours et boucle
};
if (digitalRead (com4) == HIGH) {
digitalWrite(batt1, LOW);
digitalWrite(batt4, HIGH);
delay (tps); //Charge batterie 4 pendant 3 jours
digitalWrite(batt4, LOW);
digitalWrite(batt3, HIGH);
delay (tps); //Charge batterie 3 pendant 3 jours
digitalWrite(batt3, LOW);
digitalWrite(batt2, HIGH);
delay (tps); //Charge batterie 2 pendant 3 jours 259 200 000
digitalWrite(batt2, LOW);
digitalWrite(batt1, HIGH);
delay (tps); //Charge batterie 1 pendant 3 jours et boucle
};
}
Merci pour votre lecture!