hello, merci de ton retour.
en complément,
j'ai déterminé la valeur de RH pullup par approximation , je connaissais à quelque chose près la Rh
donc, avec quelques résistances en série, j'ai déterminé la valeyr réelle des pullup de ma méga.
puis, avec le prg modifié, j'ai déclaré D2 à D10 comme entrées, mais ensute, je n'ai utilisé que D2,D3,D4 et D5.
j'ai cablé D2,D3,D4 ensemble ( pas D5 qui est resté NC) . leur point commun relié d'une part à A9 et Rb (dont la valeur est identique à celle de Rh). l'autre extrémité de Rb est raccordée à GND.
dans le prog, j'effectue en boucle :
la déclaration de D2,D3,D4,D5 en INPUT (elles se retrouvent en haute impédence.
puis je déclare D2 et D3 en pullup. je me retrouve donc avec les deux pullup en série.
les calculs du programme me donnent Rh = 18 000 ohms.
au tour de boucle suivante, ce sont D3 et D4 qui sont mises en //
les calculs du programme me donnent Rh = 18000 ohms.
au dernier tour, ce sont D4 et D5 qui sont mises en //. mais D5 n'est pas cablé. donc il n'y a en réalité que D4.
les calculs du programme me donnent Rh 36 000 ohms.
voilà, j'en suis là . je continuerai probablement, mais pour l'instant, je pense aux vacances.
le code n'est pas "présentable", c'est du brut de "tests"
byte pinRh[10] = {2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
float Rh[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
float Rh_pullup = 0.00;
float Vs = 0.00;
float Ve = 5.08;//tension de fonctionnement de la platine Arduino
//float Rh = 00.00;
float Rb = 33030 + 3302 + 269 + 17.7; //36618//résistance connue (mesurée avec un multimètre)
void setup() {
Serial.begin(115200);
pinMode(2, INPUT_PULLUP);
for (int f = 0; f <= 10; f++) {
pinMode(pinRh[f], INPUT);
}
Serial.println(F(" mettre Rb égale à Rh"));
Serial.println(F(" assurez vous que sa valeur excate à été renseignée dans les déclarations"));
//calcul des valeurs des 10 résistances de pullup des entrées 2,3,4,5,6,7,8,9,10,11,12
Vs = Ve - ((analogRead(A9)) * (Ve / 1023));
Serial.println (Vs);
for (int f = 0; f <= 2; f++)
{
//Serial.println(f);
for (int g = 0; g <= 2; g++)
{ delay(50);
Serial.print(F(" D")); Serial.print(pinRh[g]); Serial.println(" input");
pinMode(pinRh[g], INPUT); // toutes les entrées en haute inpédance
}
delay(50);
pinMode(pinRh[f], INPUT_PULLUP);
pinMode(pinRh[f + 1], INPUT_PULLUP);
//pinMode(pinRh[f+2], INPUT_PULLUP);
Serial.print(F(" D")); Serial.print(pinRh[f]); Serial.print(" passe en input_pullup "); Serial.println((1023 - analogRead(A9))); // sauf celle dont c'est le tour d'etre calcule
Serial.print(F(" D")); Serial.print(pinRh[f + 1]); Serial.print(" passe en input_pullup "); Serial.println((1023 - analogRead(A9)));
//Serial.print(F(" D"));Serial.print(pinRh[f+2]);Serial.print(" passe en input_pullup "); Serial.println((1023-analogRead(A9)));
Serial.println(F("et sont raccordées au point milieu du pont diviseur"));
delay(1000);
Vs = (Ve - (analogRead(A9)) * (Ve / 1023));
Serial.print(F(" Vs/Rh = ")); Serial.print (Vs); Serial.println(F(" "));
Serial.print(F(" Vs/Rb = ")); Serial.print (Ve - Vs); Serial.println(F(" "));
Rh[f] = 0.0;
float tampon1 = Ve * Rb;
Serial.print(F(" Ve*Rb = ")); Serial.print(tampon1);
//Vs = (Ve-(analogRead(A9)) * (Ve / 1023));
Vs = ((analogRead(A9)) * (Ve / 1023));
//Serial.print(F(" Vs = "));Serial.println((analogRead(A9)*(Ve/1023)));
float tampon2 = tampon1 / Vs;
Serial.print(F(" Ve*Rb/Vs = ")); Serial.print(tampon2);
float tampon3 = tampon2 - Rb;
Serial.print(F(" Ve*Rb/Vs-Rb = ")); Serial.println(tampon3);
Rh[f] = tampon3;
Serial.print(F(" Rh = ")); Serial.println(Rh[f]);
//Rh[f] = (((Ve * Rb) / Vs) - Rb);
//Serial.println(Rh[f],8);
delay(2000);
}
for (int f = 0; f <= 2; f++) {
Serial.print(F("resistance de pull up de l entree D"));
Serial.print(pinRh[f]);
Serial.print(F(" "));
Serial.println(Rh[f]);
//Serial.print(F("resistance de pull up de l entree D"));
//Serial.print(pinRh[f+1]);
//Serial.print(F(" "));
//Serial.println(Rh[f+1]);
}
//Serial.print(F(" Rh = ")); Serial.println(Rh);
Serial.println(" ");
while (1);
}
void loop() {
Serial.println(analogRead(A9));
//Serial.println(F(" Vs =(Ve/(Rh+Rb))*Rb"));
//Serial.print(F(" Rh = ((Ve*Rb)/Vs)-Rb"));
//Vs = Ve - (analogRead(A8) * (Ve / 1023));
Rh_pullup = (((Ve * Rb) / Vs) - Rb);
Serial.print(F(" Rh = ")); Serial.println(Rh[0]) ;
Serial.println(" ");
//calcul_Rb();
// if(Rb<=Rh){pinMode(D3,INPUT_PULLUP);}
Serial.println(F(" "));
Serial.println(F(" "));
while (1);
}
/*
void calcul_Rb(){
//Serial.print(F(" Vs = "));Serial.println(Ve-(analogRead(A8)*(Ve/1023)));
//Serial.print(F(" Ve = "));Serial.println(Ve);
//Serial.print(F(" Rh = "));Serial.println(Rh);
//Serial.println(F("Rb=((Ve*Rh)/Vs)-Rh"));
Rb = 0.0;
float tampon1 = Ve * Rh;
//Serial.print(F("Ve*Rh = "));Serial.println(Ve*Rh);
Vs = Ve - (analogRead(A8) * (Ve / 1023));//4096));//1023));
//Serial.print(F(" Vs = "));Serial.println(Ve-(analogRead(A8)*(Ve/1023)));
float tampon2 = tampon1 / Vs;
//Serial.print(F(" Ve*Rh/Vs = "));Serial.println((Ve*Rh)/Vs);
float tampon3 = tampon2 - Rh;
//Serial.print(F(" Ve*Rh/Vs-Rh = "));Serial.println(((Ve*Rh)/Vs)-Rh);
Rb = tampon3;
//Serial.print(F(" Rb = ")); Serial.println(Rb);
}
*/