Exercice long — indicateur de réserve d'une cuve d'eau : solution câblée puis solution programmée (3,5 points), dans l'esprit des sessions 2015–2025
Une cuve d'eau potable alimente un immeuble. Elle est formée de deux cylindres superposés : un fût étroit de 1 m de haut, puis une partie large jusqu'à 3 m. Un capteur de pression placé au fond délivre une tension proportionnelle à la hauteur d'eau : ( en V, en m). Quatre diodes indiquent la réserve : aucune pour m ; D1 pour m ; D1 et D2 pour m ; D1, D2 et D3 pour m ; les quatre pour m. On propose deux montages : l'un à base d'A.L.I, l'autre à base d'un microcontrôleur.
B.1 — Solution câblée (figure 1). La chaîne kΩ, kΩ, kΩ, kΩ, kΩ, sous V, applique , , , aux entrées inverseuses de quatre A.L.I parfaits, alimentés en 0 / +12 V ; attaque toutes les entrées non inverseuses. La diode est allumée quand la sortie vaut +12 V.
1. Quel est le régime de fonctionnement des A.L.I ? Justifier.
2. Exprimer , , et en fonction de et des résistances, puis calculer leurs valeurs.
3. Pour m, compléter les tableaux.
| U (V) | Vs1 (V) | Vs2 (V) | Vs3 (V) | Vs4 (V) |
|---|---|---|---|---|
| …… | …… | …… | …… | …… |
| D1 | D2 | D3 | D4 |
|---|---|---|---|
| …… | …… | …… | …… |
4. En déduire, pour chaque A.L.I, la hauteur d'eau à laquelle sa sortie bascule. Ces hauteurs sont-elles celles du cahier des charges ?
B.2 — Solution programmée. Le même capteur est relié à RA0/AN0 d'un PIC 16F876A ; les diodes D1 à D4 sont reliées à RC0 à RC3, un LCD au port B. Le programme affiche le volume d'eau en litres et le taux de remplissage, calculés d'après la caractéristique de la cuve (figure 2), et allume les diodes selon les mêmes zones que la solution câblée.
5. Déterminer l'équation du segment [BC] : .
6. Montrer que la hauteur calculée à partir du résultat de la conversion vaut .
unsigned int N, Litres;
unsigned short Taux;
float h, V;
char txt1[6], txt2[4];
// Connexion de l'afficheur LCD (à ne pas traiter)
void main() {
ADCON1 = 0x8E; // RA0/AN0 seule analogique
TRISA = 0x……;
TRISC = 0x……; // RC0 à RC3 : D1 à D4
Lcd_Init(); Lcd_Cmd(_LCD_CURSOR_OFF);
while (1) {
N = ADC_Read(……);
h = ……………………; // hauteur d'eau en m
if (h <= 1) V = 2 * h; // volume en m3 (fût)
else V = ……………; // partie large
Litres = V * 1000;
Taux = V * 100 / 14;
WordToStr(Litres, txt1); ByteToStr(Taux, txt2);
Lcd_Out(1, 1, "Volume:"); Lcd_Out(1, 9, txt1);
Lcd_Out(1, 15, "L");
Lcd_Out(2, 1, "Taux:"); Lcd_Out(2, 9, txt2);
Lcd_Out(2, 13, "%");
// mêmes zones que la solution câblée
if (h < ……) PORTC = 0x00;
if ((h >= 0.5) && (h < ……)) PORTC = 0x01;
if ((h >= ……) && (h < 2)) PORTC = 0x……;
if ((h >= 2) && (h < ……)) PORTC = 0x……;
if (h >= ……) PORTC = 0x0F;
}
}8. Pour m, le CAN délivre (partie entière de 736,56). Calculer , , les valeurs affichées et PORTC. Les deux solutions allument-elles les mêmes diodes ?
9. Un technicien préfère tester le volume plutôt que la hauteur. Par quelles valeurs de faut-il remplacer les bornes 0,5 ; 1 ; 2 et 2,8 m ? Justifier que le fonctionnement est inchangé.
Voir la correction commentéeAprès avoir posé votre démarche
1. Idée : chercher une liaison entre la sortie et l'entrée inverseuse. Il n'y en a pas : les A.L.I fonctionnent en régime non linéaire (comparateurs). V si , V sinon.
2. Idée : le même courant traverse toute la chaîne, avec kΩ ; chaque tension est prise au-dessus des résistances qui la séparent de la masse.
3. V : supérieure à , , , inférieure à .
| U (V) | Vs1 (V) | Vs2 (V) | Vs3 (V) | Vs4 (V) |
|---|---|---|---|---|
| 3,6 | 12 | 12 | 12 | 0 |
| D1 | D2 | D3 | D4 |
|---|---|---|---|
| allumée | allumée | allumée | éteinte |
4. bascule quand , soit : A.L.I1 à 0,5 m, A.L.I2 à 1 m, A.L.I3 à 2 m, A.L.I4 à 2,8 m. Ce sont exactement les bornes des zones du cahier des charges.
5. Idée : pente entre B et C. m³ par m, et , soit (m³, pour m).
6. Le CAN donne et le capteur , d'où .
TRISA = 0xFF;
TRISC = 0xF0;
N = ADC_Read(0);
h = N * 5.0 / 1023 / 1.5;
else V = 6 * h - 4;
if (h < 0.5) PORTC = 0x00;
if ((h >= 0.5) && (h < 1)) PORTC = 0x01;
if ((h >= 1) && (h < 2)) PORTC = 0x03;
if ((h >= 2) && (h < 2.8)) PORTC = 0x07;
if (h >= 2.8) PORTC = 0x0F;8. m ; m³ ; Litres ; Taux , affiché %. Comme , PORTC : D1, D2 et D3 allumées, comme dans la solution câblée. L'écart de 2 mm sur vient de la quantification (un pas vaut 3,26 mm).
9. Idée : une relation croissante conserve l'ordre. m³, m³, m³, m³. étant strictement croissante, ⇔ : chaque test donne le même résultat.