We read your photo as:

Describe the function of the ADC in Arduino UNO, identify the control system, and explain how the Arduino uses analog signals to control a pump.

Computer Science

ScanSolve AI Answer

7. i)

a) La fonction du convertisseur analogique-numérique (CAN ou ADC) dans l'Arduino UNO est de transformer un signal de tension analogique (continu) provenant du capteur en une valeur numérique discrète que le microcontrôleur peut lire et traiter.

b) Le type de système de contrôle implémenté est un système de contrôle en boucle fermée.
La raison est que la sortie du système (le niveau d'eau, qui est affecté par la pompe) est mesurée par le capteur et cette information est renvoyée à l'Arduino pour ajuster l'action de la pompe, créant ainsi une boucle de rétroaction.

c) L'Arduino UNO utilise le signal analogique pour contrôler la pompe de la manière suivante :

  • Le capteur de niveau d'eau produit une tension analogique proportionnelle au niveau d'eau, qui est envoyée à une broche d'entrée analogique de l'Arduino (A0).
  • Le CAN interne de l'Arduino convertit cette tension analogique en une valeur numérique.
  • L'Arduino compare cette valeur numérique lue avec un point de consigne prédéfini (600).
  • Si la valeur lue est inférieure à 600, l'Arduino envoie un signal numérique HIGH à la broche de sortie (pin 9) pour activer la pompe. Si la valeur est égale ou supérieure à 600, il envoie un signal LOW pour désactiver la pompe.

ii) Voici le programme Arduino :

$$
\begin{align*}
&\text{const int waterSensorPin = A0;}\\
&\text{const int pumpPin = 9;}\\
&\text{const int setpointADC = 600;}\\
\\
&\text{void setup() \{}\\
&\quad \text{pinMode(pumpPin, OUTPUT);}\\
&\quad \text{Serial.begin(9600); // Pour le débogage, facultatif}\\
&\text{\}}\\
\\
&\text{void loop() \{}\\
&\quad \text{int adcReading = analogRead(waterSensorPin);}\\
&\quad \text{Serial.print("ADC Reading: "); // Pour le débogage, facultatif}\\
&\quad \text{Serial.println(adcReading); // Pour le débogage, facultatif}\\
\\
&\quad \text{if (adcReading < setpointADC) \{}\\
&\quad \quad \text{digitalWrite(pumpPin, HIGH); // Allumer la pompe}\\
&\quad \quad \text{Serial.println("Pump ON"); // Pour le débogage, facultatif}\\
&\quad \}\\
&\quad \text{else \{}\\
&\quad \quad \text{digitalWrite(pumpPin, LOW); // Éteindre la pompe}\\
&\quad \quad \text{Serial.println("Pump OFF"); // Pour le débogage, facultatif}\\
&\quad \}\\
&\quad \text{delay(1000); // Attendre 1 seconde avant la prochaine lecture}\\
&\text{\}}\\
\end{align*}
$$
Was this helpful?

Still stuck on this one?

Ask a follow-up, and the answer starts from this question.

Got a different question?Ask your own question