Le module de puissance est connecté entre GND et PIN11.
Le capteur de niveau utilise l'entrée A0 et est alimenté entre GND et 5V.
Le bouton est branché entre GND et PIN2.
Le moniteur série affiche le signal mesuré par le capteur de niveau. Le bouton permet de remplir le réservoir.
On peut relever la valeur du signal en fonction du niveau.
Sortie série
L’affichage de la sortie série peut se faire en utilisant le moniteur série de l’IDE arduino, accessible par CTRL+MAJ+M
Code à téléverser
/**
* etalonnage.ino
* Ce sketch allume la pompe au maximum lorsqu'on appuie sur le bouton
* Il affiche la valeur de la tension aux bornes du capteur
*
* En lisant au moins deux hauteurs différentes sur la graduation on peut déterminer a et b
* de la relation affine : hauteur (mm) = a × tension (V) + b
*/
// 1. Déclarations des constantes et variables globales
// Capteur de pression
const byte PRESSURE_SENSOR_PIN = A0; // Capteur Pin1 A0, Pin2 GND et Pin3 5 V.
// Module de puissance
const byte PWM_PIN = 11; // Module de puissance entre GND et PIN11
// Bouton
const byte BUTTON_PIN = 2; // Bouton entre GND et PIN2
// 2. Setup − Exécuté une seule fois
void setup() {
// Fixe la vitesse de communication entre arduino et le PC
Serial.begin(9600);
// Configuration du module de puissance
TCCR2B = (TCCR2B & 0b11111000) | 0x07; // Fréquence PWM = 30 Hz
pinMode(PWM_PIN, OUTPUT); // Broche PWM_PIN parametrée en sortie
// Configuration du bouton
pinMode(BUTTON_PIN, INPUT_PULLUP); // Évite une valeur indéterminée lorsque le bouton n’est pas pressé (Force à la valeur 5 V - HIGH)
}
// 3. Loop − Variables recréées à chaque boucle
void loop() {
// Calcul de la tension
int pressureSensorRawValue = averageAnalogRead(PRESSURE_SENSOR_PIN, 30); // Moyenne de 30 valeurs entre 0 et 1023
float pressureSensorVoltage = pressureSensorRawValue * 5.0 / 1023.0; // Valeur de la tension en volts
// Le bouton commande la pompe lorsqu’on appuie dessus
bool buttonPressed = (digitalRead(BUTTON_PIN) == LOW); // Vaut TRUE lorsque le bouton est pressé (0 V - LOW)
if (buttonPressed) {
analogWrite(PWM_PIN, 255); // PWM au max
} else {
analogWrite(PWM_PIN, 0); // PWM éteint
}
// Affichage de la tension aux bornes du capteur
Serial.println(pressureSensorVoltage,3); // Trois décimales
// On attend une demi seconde
delay(500); // Augmenter le delay diminue la réactivité du bouton
}
// 4. Fonctions − Variables locales
/* Cette fonction effectue une moyenne sur les sampleCount
valeurs renvoyées par analogRead(pin) */
int averageAnalogRead(byte pin, byte sampleCount) {
long sum = 0;
for(byte i = 0; i < sampleCount; i++){
sum = sum + analogRead(pin);
}
return sum / sampleCount;
}