Projet Arduino Charge d’un condensateur

Objectif : Le but de ce projet est de savoir grâce à un programme le temps que va mettre le condensateur à se charger à son maximum.

Liste du matériel : 1 carte Arduino Uno

                                   1 breadbord

                                   1 condensateur

                                   1 résistance

                                   3 fils

Mise en place : On place la résistance et le condensateur en série sur la breadbord avec la résistance en premier. On branche la pin 8 de l’Arduino sur la borne positive de la résistance. On branche la borne négative du condensateur sur le GND de l’Arduino. On relie également l’entrée analogique A0 a la borne positive du condensateur.

Schéma de montage :

https://1.bp.blogspot.com/-rDKiEy2nJZ8/VPTJ3VMhyoI/AAAAAAAACug/p6fShSRVlzo/s1600/circuit%2Bcharge-d%C3%A9charge.png

Un exemple d’expérience : (…)

Le programme charge le condensateur jusqu’a son maximun, puis lorsqu’il est atteint il arrête la charge en affichant une première fois le temps qu’il a prid a se charger.

Une fois le condensateur déchargé, il affiche une dernière fois le temps qu’a pris le condensateur à se charger.

On effectue des calculs pour connaitre les valeurs théoriques

C = 51 µF

R 1.8 kW

T = R * C = 1.8*10^3

La tension caractéristique est égale à :

Nous prenons ensuite des mesures pour 63 % de la charge du condensateur

On calcule ensuite l’écart pour nos valeur mesurée et théorique

L’écart entre la valeur théorique et la valeur expérimentale est de 20% pour 63% de la charge du condensateur.

Pour conclure, notre programme permet de calculer le temps de charge et la tension caractéristique de n’importe quelle condensateur avec une charge max réglable manuellement et avec 20 % environ d’écart.

int etat = 0;
unsigned long startTime;
unsigned long endTime;
unsigned long diff;
long previousMillis = 0;
long interval = 10; // nombre de millisecondes entre chaque mesure

int previousTension;

void setup() {
pinMode(8, OUTPUT); // alimentation du condensateur
Serial.begin(9600);

Serial.println("Preparation du condensateur");
digitalWrite(8,LOW);
delay(1000);

etat = 1;
Serial.println("Charge du condensateur");
digitalWrite(8,HIGH);
startTime = millis();

previousTension = analogRead(A0);
}

void loop() {
unsigned long currentMillis = millis();
int tension;
if(currentMillis - previousMillis >= interval) {

previousMillis = currentMillis;
if (etat == 1) { // charge du condensateur
  tension = analogRead(A0);
  float currentTensionFlt = tension;

  if((currentTensionFlt <= 0.63*1023))
  {
    Serial.println(tension);
  }
  else{
    endTime = millis();
    diff = endTime - startTime;
    etat = 2;
    Serial.println("Decharge du condensateur");
    Serial.print("Le condensateur a pris ");
    Serial.print(diff);
    Serial.println("ms a se charger");
    digitalWrite(8,LOW); // désactivation de l'alimentation
  }

  previousTension = tension;
}
if (etat == 2) {
tension = analogRead(A0);
if (tension > 3){ // pas completement déchargé
Serial.println(tension);
}
else {
etat = 3; // on change d'état: tout est terminé
Serial.print("Le condensateur a pris ");
Serial.print(diff);
Serial.println("ms a se charger");

Serial.print("La tension caratéristique est  ");
Serial.print(diff/3);
Serial.print("ms");
}
}
}

}

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *