Hello Everyone,
I'm doing an application for regulating Turbo pressure, so I need to read the pressure by using a pressure sensor and command a clutch by conditions. so I use an Arduino, Simulating by proteus,
I faced some problems in displaying the pressure I don't know if I have a problem in Maths!
so here is the code :
#include <LiquidCrystal.h>
#define kPa2atm 0.99
//inputs and outputs
const int capteur = A1;
const int led_jaune = 9;
const int led_vert = 10;
const int led_rouge = 11;
const int clutch = 12; // clutch : la membrane du turbo
float volt;
float kPa;
LiquidCrystal lcd(7, 6, 5, 4, 3, 2);
void setup() {
pinMode(capteur, INPUT); // l'entrée A1
pinMode(led_jaune, OUTPUT);
pinMode(led_vert, OUTPUT);
pinMode(led_rouge, OUTPUT);
pinMode(clutch, OUTPUT);
lcd.begin(16, 2);
}
void loop() {
float pressionturbo = analogRead(capteur);
volt = (pressionturbo * 5)/1023;
kPa = ((volt-0.135) / 0.0459)+15;
// according to the datasheet:
// le voltage min est 0.135 at 15kPa.
// le voltage max is 4.863 at 115kPa
// la full span est 4.590
// et 45.9mV par kPa
// conversion kPa to atm avec 1atm = 1bar
float atm = kPa2atm * kPa;
lcd.setCursor(0,0);
lcd.print(" Pressure sensor "); // print pressur sensor
lcd.setCursor(0,1);
lcd.print(kPa);//print the input voltage
lcd.setCursor(9,1);
lcd.print("bar");// print la notation "bar"
if (pressionturbo < 3.2 ){ digitalWrite(clutch, LOW);// la membrane est fermee
} else { //la membrane est ouverte
digitalWrite(clutch, HIGH);
delay (1000);
}
//Jeu de LEDs
// Les LEDs s'allume en fonction de la pression
if (pressionturbo <= 1.2)
{
digitalWrite (led_jaune, HIGH);
digitalWrite (led_vert, LOW);
digitalWrite (led_rouge,LOW);
}
if (pressionturbo >= 1.3)
{ digitalWrite (led_jaune,HIGH);
digitalWrite (led_vert,HIGH);
digitalWrite (led_rouge,LOW);
}
if (pressionturbo >= 2.9)
{ digitalWrite (led_jaune, HIGH);
digitalWrite (led_vert, HIGH);
digitalWrite (led_rouge,HIGH);
}
}
if any one could find my problem, please tell me.