Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2013-03-25 13:59:44 Programmation Sonde Lambda sur arduino. Bug dans le code.

sindu29
nouveau membre
Date d'inscription: 2013-02-11
Messages: 2

Programmation Sonde Lambda sur arduino. Bug dans le code.



Salut tout le monde, j'ai un bug dans mon programme.
Celui ci a pour but de récupérer la valeur de tension d'une sonde à oxygène : 0-5V et de retranscrire cette tension en  valeur lambda air / essence. J'ai affecté des valeurs de tension à une valeur Lambda.

Voici les premières esquisses de mon code. En théorie il devrait m'afficher le message sur le port série de mon arduino UNO. Le probleme c'est qu'il affiche le message que pour les valeurs de tension inférieur a 45mV.
J'ai effectué des tests avec un potentiomètre afin d'avoir des valeurs de tension.



// These constants won't change.  They're used to give names
// to the pins used:
const int analogInPin = A0;  // Analog input pin that the potentiometer is attached to
const int analogOutPin = 9; // Analog output pin

int sensorValue = 0;        // value read from the pot
int outputValue = 0;        // value output to the PWM (analog out)

void setup()
{
  // initialize serial communications at 9600 bps:
  Serial.begin(9600);
}

void loop() {
  // read the analog in value:
  sensorValue = analogRead(analogInPin);           
  // map it to the range of the analog out:
  outputValue = map(sensorValue, 0, 1023, 0, 1023);


  // change the analog out value:
 
switch (1,11)                      // sélection du cas en fonction de la valeur de sortie
  {
  case 1:
  if(945 < outputValue)            // Si outputValue est supérieur a 945
  Serial.print("Facteur Lambda = 0.8 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);            // Afficher la valeur de sortie.
 
  case 2:
  if(900 < outputValue < 945)            // Si outputValue est entre : 900 et 945
  Serial.print("Facteur Lambda = 0.85 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);           // Afficher la valeur de sortie.
 
  case 3:
  if(855 < outputValue < 900)            // Si outputValue est entre : 855 et 900
  Serial.print("Facteur Lambda = 0.9 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);          // Afficher la valeur de sortie.
 
  case 4:
  if(810 < outputValue < 855)            // Si outputValue est entre : 810 et 855
  Serial.print("Facteur Lambda = 0.93 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);          // Afficher la valeur de sortie.
 
  case 5:
  if(540 < outputValue < 810)            // Si outputValue est entre : 540 et 810
  Serial.print("Facteur Lambda = 0.97 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);          // Afficher la valeur de sortie.
 
  case 6:
  if(255 < outputValue < 540)            // Si outputValue est entre : 255 et 540
  Serial.print("Facteur Lambda = 0.98 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);          // Afficher la valeur de sortie.
 
  case 7:
  if(180 < outputValue < 225)            // Si outputValue est entre : 180 et 225
  Serial.print("Facteur Lambda = 1.0 car la tention vaut (mV):  "); // Afficher le méssage suivant.
  Serial.println(outputValue);          // Afficher la valeur de sortie.
 
  case 8:
  if(135 < outputValue < 180)          // Si outputValue est entre : 135 et 180
  Serial.print("Facteur Lambda = 1.02 car la tention vaut (mV):  "); // Afficher le méssage suivant.
  Serial.println(outputValue);         // Afficher la valeur de sortie.
 
  case 9:
  if(90 < outputValue < 135)           // Si outputValue est entre : 90 et 135
  Serial.print("Facteur Lambda = 1.04 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);         // Afficher la valeur de sortie.
 
  case 10:
  if(45 < outputValue < 90)            // Si outputValue est entre : 45 et 90
  Serial.print("Facteur Lambda = 1.15 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);        // Afficher la valeur de sortie.
 
  case 11:
  if(outputValue < 45)                // Si outputValue inférieur à 45
  Serial.print("Facteur Lambda = 1.25 car la tention vaut (mV): "); // Afficher le méssage suivant.
  Serial.println(outputValue);        // Afficher la valeur de sortie.
  }
 
  // wait 2 milliseconds before the next loop
  // for the analog-to-digital converter to settle
  // after the last reading:
  delay(200);
}


Si vous avez des questions, des pistes, ou des solutions à me proposé, je suis preneur. Ce projet est à faire dans le cadre scolaire.

Hors ligne

 

#2 2014-02-25 03:36:07 Re : Programmation Sonde Lambda sur arduino. Bug dans le code.

fabrice54
membre
Date d'inscription: 2012-06-07
Messages: 242

Re: Programmation Sonde Lambda sur arduino. Bug dans le code.



bonjour

Si tu veux lire une tension via un potar il faut changer tes valeurs dans ta fonction map tu mets 0,1024,0,1024,il
faut mettre 0,1024,0,5 et tu auras une tension de 0 à 5 votls.

Hors ligne

 

#3 2014-02-25 09:58:40 Re : Programmation Sonde Lambda sur arduino. Bug dans le code.

Mushussu
membre
Lieu: Orléans
Date d'inscription: 2012-05-24
Messages: 802

Re: Programmation Sonde Lambda sur arduino. Bug dans le code.



Bonjour,

Ton instruction switch() case ne sert à rien si ensuite tu refais des tests. J'ai laissé ta suite de test d'intervalle afin de changer une variable, le code est ainsi plus lisible.

N'ayant pas d'arduino sous la main je ne peux tester ce code.

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024