J'ai besoin d'un coup de main concernant un petit aspect de mon projet.
Je vous explique le projet :
le projet est une petite fenêtre en oscillo-battant qui s'ouvre et qui se ferme à l'aide d'un moteur DC en 24V.
Pour se faire, j'utilise une batterie 24V rechargeable comme alimentation et un arduino UNO avec un pont en H pour commander mon moteur dans un sens et puis dans l'autre.
Mon petit programme 'test' est fait pour ouvrir et fermer la fenêtre en boucle:
int pin1Moteur = 8; //pin de commande moteur 1
int pin2Moteur = 9; // pin de commande moteur 1
/*int pinPMoteur = 10; // pin PWM moteur 1
int pot = A0;*/
void setup() {
// put your setup code here, to run once:
pinMode(pin1Moteur, OUTPUT);
pinMode(pin2Moteur, OUTPUT);
/*pinMode(pinPMoteur, OUTPUT);
pinMode(pot, INPUT);**/
}
void loop() {
/*int valeurpot = analogRead(pot);
int valeur = map(valeurpot, 0 , 1023, 0, 255);
analogWrite(pinPMoteur, valeur);*/
digitalWrite(pin1Moteur, HIGH);
digitalWrite(pin2Moteur, LOW);
delay(5000);
digitalWrite(pin1Moteur, LOW);
digitalWrite(pin2Moteur, LOW);
delay(1000);
digitalWrite(pin1Moteur, LOW);
digitalWrite(pin2Moteur, HIGH);
delay(5000);
digitalWrite(pin1Moteur, LOW);
digitalWrite(pin2Moteur, LOW);
delay(1000);
}
Ma question étant:
Je dois savoir combien de fois je peux exécuter ma boucle avant de devoir recharger ma batterie.
Donc, je voulais programmer un petit compteur qui me permettrait de savoir combien de fois le mouvement (fermeture+ouverture) s'est effectué avant que la batterie ne soit vide (et que donc il n'y ait plus d'alimentation).
donc quand la batterie n'a plus trop de jus et que le moteur appelle beaucoup de courant, la tension s'effondre et l'arduino plante.
Une technique de base serait à la fin de chaque boucle qui dure environ 12 secondes d'écrire en EEPROM un nombre qui s'incrémente.
Il ne faut pas écrire en Permanence la valeur en EEPROM si ce nombre est très grand car le nombre d'écriture en EEPROM au même endroit est limité à 100,000 fois.
➜ si vous pensez que votre batterie ne va fonctionner que 100 fois alors c'est jouable mais si le nombre est trop grand et que vous ne voulez pas endommager l'EEPROM alors il vaut mieux éviter et il faudrait utiliser la technique décrite dans l'article de @hbachetti
Dans ce cas, une fois que le hard est prêt, au niveau logiciel vous mettez un simple compteur de boucle dans votre code et le code de sauvegarde en EEPROM de ce compteur au moment où votre arduino va "mourir" ainsi qu'un drapeau qui dit "mesure effectuée'.
Dans le setup, vous allez lire ce compteur et vous l'affichez sur la sortie série et si mesure effectuée est vrai, vous attendez une action de l'utilisateur pour aller dans la loop().
Comme ça une fois que vous avez vu que l'arduino a planté, il vous suffit de brancher une prise USB sur votre arduino et vous aurez le compteur qui s'affiche