Partage d'expérience mesure de tension et intensité l'ensemble stocké

J'ai travaillé sur un projet. Ce projet avait pour but d'exciter différents rélais en fonction de la tension du parc de batterie. Dessous tu veras mon code.

#include <LiquidCrystal.h>
const int N3 = 7 ;
const int N1 = 9 ;
const int N2 = 8 ;
int valeur_lue = 0 ;
//int pwm;

const int potentio = 0;
float valeurlue=0.0;
float tension = 0.0;
float mesure = 0.0;
float Tension_Bat = 0.0;
//float tension_max = 60.0;
LiquidCrystal lcd(11,10,5,4,3,2);
void setup() {
  // put your setup code here, to run once:
  pinMode (N1, OUTPUT) ;
  pinMode (N2, OUTPUT) ;
  pinMode (N3, OUTPUT) ;
  lcd.begin(20,4);
  delay(10);
  /*lcd.setCursor(4,1);
  lcd.print("Charli");
  delay(100);
  lcd.clear();
  delay(10);*/
}

void loop() {
  // put your main code here, to run repeatedly:
valeurlue=analogRead(potentio);
/*lcd.setCursor(0,0);
lcd.print("valeurlue = ");
lcd.println(valeurlue);
lcd.print("");*/
mesure=float (valeurlue)*5000.0/1024.0;
tension = mesure/1000.0;
/*lcd.setCursor(0,1);
lcd.print("U A0 = ");
lcd.print(tension,2);
lcd.println(" V ");
lcd.print("");*/
Tension_Bat = (((75000+10000)*tension)/10000);
/*lcd.setCursor(0,2);
lcd.print("U_BAT = ");
lcd.print(Tension_Bat,2);
lcd.println(" V ");
lcd.print("");
delay(10);*/
if (Tension_Bat>=21 && Tension_Bat<=29){
// do{
lcd.setCursor(2,1);
digitalWrite(N1, HIGH) ;
digitalWrite(N2, HIGH) ;
digitalWrite(N3, HIGH) ;
lcd.print("N1,N2 ET N3 ON");
delay(5000);
 lcd.clear();
 delay(10);
//}
//else
//if(Tension_Bat>=47 && Tension_Bat<=50){
lcd.setCursor(0,1);
  digitalWrite(N1, LOW) ;
digitalWrite(N2, HIGH) ;
digitalWrite(N3, HIGH) ;
lcd.print("N1:OFF ,N2 ET N3 ON");
delay(5000);
//delay(5000);
 lcd.clear();
 delay(10);
//}
//else
//if(Tension_Bat>=43 && Tension_Bat<47){
lcd.setCursor(0,1);
  digitalWrite(N1, LOW) ;
digitalWrite(N2, LOW) ;
digitalWrite(N3, HIGH) ;
lcd.print("N1 ET N2:OFF ,N3:ON");
delay(5000);
//delay(5000);
 lcd.clear();
 delay(10);

 lcd.setCursor(2,1);
digitalWrite(N1, LOW) ;
digitalWrite(N2, LOW) ;
digitalWrite(N3, LOW) ;
lcd.print("N1,N2 ET N3 OFF");
delay(9000);
//delay(5000);
 lcd.clear();
 delay(10);
}
else{
digitalWrite(N1, LOW) ;
digitalWrite(N2, LOW) ;
digitalWrite(N3, LOW) ;
lcd.setCursor(0,1);
lcd.print("TENSION +/- GRANDE");
delay(10000);
 lcd.clear();
 delay(10);
}
}

Tu trouveras en image, le schéma montrant la réalisation.

Aligote, peux tu me laisser avoir plus d'information sur le stockage des données? comment tu t'y prends?..

Merci

Bonjour,

Je suis nouveau sur ce forum, plus orienté électrique qu'informatique et je me permettrai plusieurs questions :

-1 Une description de l'objectif précis serait utile même si on devine des choses en examinant le code et le schéma proposé.
-2 A mon avis, l'objectif étant défini, il faudrait envisager de beaucoup simplifier le schéma électrique et faire de même pour le code déjà écrit
-3 Une fois tout cela fait, si tout fonctionne, alors on peut tenter d'augmenter l'ambition du projet.

Cordialement

S .D

Charli:
............

Aligote, peux tu me laisser avoir plus d'information sur le stockage des données? comment tu t'y prends?..

......

Pour le stockage de données je procède de la façon suivante : (stockage sur SD)

  • En début de programme je teste la présence de la carte SD et met à jour un booléen SD_Existe

Mon programme, dans une boucle de durée fixée (mais paramétrable) :

En mode "mesure"

  • Mesure tension et intensité
  • Envoie les valeurs sur le PC par RS232 via USB
  • Ecrit les valeurs dans un fichier sur la carte SD
    En mode lecture, en différé.
  • Lit les données de la carte SD
  • Les envoie sur le PC par RS232 via USB

Sur le PC un programme dédié se charge du traitement et de l'affichage sous forme de courbes.

Pour le hardware j'utilise une carte nano avec µC 328 munie d'une alim externe pour le 5V ainsi qu'une carte SD associée à quelques résistances pour le bus SPI.
Pour le reste Il y a un buzzer, quelques résistances ainsi que 3 boutons poussoirs

L'alim de la carte SD est prise sur le 3,3V de la carte nano

SD

PS : Je ne sais pas (encore) insérer un schéma sur le forum. Insert une image me demande un lien ....

aligote:
-1 Une description de l'objectif précis serait utile même si on devine des choses en examinant le code et le schéma proposé.

Cordialement

S .D

Mon projet consiste à exciter un relais en fonction de la tension de la batterie.
Supposons que la batterie est bien chargée. Toutes les bobines du relais seront excitées. Au fur et à mesure que la tension de la batterie chutte les relais se d'excite au fur et à mesure.

Je suis toujours entrain de travailler sur le schéma final. Dés que tous les tests seront ok je te ferai un retour avec le code final et le schema final. Cependant, sur mon code j'ai ajouté le programme d'un écran LCD, voila pourquoi il est assez long.

Avec des leds, tu n'aurais pas eu besoin de relais :wink:

Moi aussi j'aurais pensé au LED pour une question d'économie d'énergie et aussi pcq c'est beaucoup moins cher qu'une ampoule 230V, mais ce n'est pas mon point ici. J'ai quelques questions à part que je voulais poser pour ma culture personnelle :

-Pourquoi utiliser 2 régulateurs ? Ce qui semble être un OpAmp n'aurait pas pu fonctionner sur le 9V ?
-Pourquoi utiliser un "OpAmp" si s'en est un ? N'aurait-il pas été possible de connecter l'analogPin 0 de l'Arduino directement au diviseur de tension de la batterie ? Moi par précaution j'aurais ajouté une résistance et/ou un zener pour protéger mon Arduino.
-Pourquoi le neutre des lumières 230V est connecté avec la masse du circuit DC ? Le but du relais n'est-il pas d'isoler le 230V du reste ?
-Pourquoi que le ground de l'Arduino ne semble pas relié au ground de la batterie ? Ne serait-il pas préférable de le faire pour pouvoir prendre une lecture sur l'analogPin 0 ?
-Est-ce que la résistance R4 est utilisé pcq la tension de la batterie est supérieure à 32V ? sinon a quoi sert-elle ?

Merci d'avance, j'apprends l'électronique par moi-même, mais parfois de l'info de d'autres personnes est le bienvenue pour apprendre plus vite.

Charli:
Mon projet consiste à exciter un relais en fonction de la tension de la batterie.
Supposons que la batterie est bien chargée. Toutes les bobines du relais seront excitées. Au fur et à mesure que la tension de la batterie chutte les relais se d'excite au fur et à mesure.
.............
Cependant, sur mon code j'ai ajouté le programme d'un écran LCD, voila pourquoi il est assez long.

Puisque nous sommes au niveau du schéma :

  • J'aurais mis des résistances en série avec les bases des transistors pour limiter l'intensité des sorties du µC
  • J'aurais mis des "diodes de roue libre" sur les relais pour protéger les transistors
  • Je n'aurais pas mis d'ampli op mais un simple diviseur de tension en direction d'une entrée analogique
  • J'aurais pris des relais 48V
  • Pour faire du 5V à partir de 48V j'aurais mis une petite alim à découpage abaisseuse économique (on en trouve facilement pour quelques euros)

Bon courage.

S.D

Pour stocker les données , l'exemple " datalogger" de la librairie SD est parfait :wink: !

Pour stocker les données , l'exemple " datalogger" de la librairie SD est parfait :wink: !

Ne pas oublier :

Il faudra déplacer le LCD pour libérer les bornes du bus spi avant de connecter la carte SD.

S.D

aligote:
Puisque nous sommes au niveau du schéma :

  • J'aurais mis des résistances en série avec les bases des transistors pour limiter l'intensité des sorties du µC
  • J'aurais mis des "diodes de roue libre" sur les relais pour protéger les transistors
  • Je n'aurais pas mis d'ampli op mais un simple diviseur de tension en direction d'une entrée analogique
  • J'aurais pris des relais 48V
  • Pour faire du 5V à partir de 48V j'aurais mis une petite alim à découpage abaisseuse économique (on en trouve facilement pour quelques euros)

Bon courage.

S.D

Bonsoir,

Le schéma a été legerement modifié après l'arduino. J'ai utilisé une carte relais 5V 4 canaux du nom de (Songle SRD-05VDC-SL-C).

L'ampli op était pour fournir une tension stable. Pour mon dernier test réalisé, je l'ai même pas placé.

Je retiens pour l'alimentation à découpage abaisseur.

Merci

Charli:
Bonsoir,

Le schéma a été legerement modifié après l'arduino. J'ai utilisé une carte relais 5V 4 canaux du nom de (Songle SRD-05VDC-SL-C).

L'ampli op était pour fournir une tension stable. Pour mon dernier test réalisé, je l'ai même pas placé.

Je retiens pour l'alimentation à découpage abaisseur.

Merci

OK, je viens de vérifier sur le schéma (Songle SRD-05VDC-SL-C).

Sur ce schéma il y a bien les diodes de roue libre et les résistances auxquelles je faisais allusion.

S.D