Commande compresseur avec sécurisation Nitrox

Commande compresseur  avec sécurisation Nitrox

 

 

Liste du matériel

Schéma de l'installation

 

 

 

En branchant un bloc sur  la rampe comprenant le capteur,Réglage  sans pression réglé le Zéro, puis sous pression à la valeur maximale du compresseur (200 ou 300 bars) réglé le Gain pour afficher 300 bars

 

 

 

 

 

 

Code arduino

//-----------prog compresseur avec auto electrovanne NITROX ET GND VERSION DEFINIVE CHAGEE DANS L'ARDUINO COMPRESSEUR------------------
//----------chargement bibliothèque----------------------
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include <Adafruit_ADS1015.h>
//----- Adressage matériel -----

LiquidCrystal_I2C lcd(0x3F,20,4);
Adafruit_ADS1115 ads1115(0x49);

// déclarartion des variables
// affectation entrées commutateur
int inPin300 = 2;
int inPin230 = 3;
int inPin200 = 5;
int inPin176 = 4;

int button1pin=10;//validation démarage compresseur
int marche_compresseur = 0;// variable état marche compresseur
int BP_reset = 7; // reset carte arduino
int commande_nitrox = 6 ;// info commutateur nitrox
const int commande_compresseur = 8 ;// commande relais compresseur
const int commande_electrovanne = 9 ;// commande relais electrovanne
// variable convertion commutateur int
int val1 = 1;
int val2 = 1;
int val3 = 1;
int val4 = 1;
int val5 = 0;// valeur commutateur nitrox
int val6 = 1; //valeur retour bp reset
int valpression_int = 0; //variable de conversion float -> int
float valpression = 0;// variable lecture ads1115

 


void setup()
{

//starts ADS readings

ads1115.begin();
lcd.init(); // initialisation de l'afficheur
pinMode(inPin176,INPUT_PULLUP);// non utilisée
pinMode(inPin200,INPUT_PULLUP);
pinMode(inPin230,INPUT_PULLUP);
pinMode(inPin300,INPUT_PULLUP);
pinMode(button1pin, INPUT);
pinMode(commande_nitrox, INPUT_PULLUP);
pinMode(commande_compresseur, OUTPUT);
pinMode(commande_electrovanne, OUTPUT);
pinMode(button1pin,INPUT_PULLUP);
pinMode(BP_reset, INPUT_PULLUP);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);
digitalWrite(commande_electrovanne, HIGH);// INITIALISATION ELECTROVANNE
digitalWrite(commande_compresseur, HIGH);// INITIALISATION COMPRESSEUR
digitalWrite(12, HIGH);// PAS DE RESET
}
void loop()
{
int16_t adc0;
adc0 = ads1115.readADC_SingleEnded(0);// lecture du capteur de pression
valpression = (adc0 * 0.1875)/1000; // convertion de lecture
val1 = digitalRead(inPin176); // lecture commutateur rotatif 176bars
val2 = digitalRead(inPin200); // lecture commutateur rotatif 200bars
val3 = digitalRead(inPin230); // lecture commutateur rotatif 230bars
val4 = digitalRead(inPin300); // lecture commutateur rotatif 300bars
val5 = digitalRead(commande_nitrox); // lecture commutateur NITROX
val6 = digitalRead(BP_reset);// lecture BP reset
valpression_int = valpression * 100.00;//conversion en int pour comparaison
//test valeur de la pression du bloc avec la consigne
if (val1 == 0 && valpression_int >= 180) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;} // arrêt du compresseur pression atteinte 180 bars
else
if (val2 == 0 && valpression_int >= 200) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;}// arrêt du compresseur pression atteinte 200 bars
else
if (val3 == 0 && valpression_int >= 230) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;}// arrêt du compresseur pression atteinte 230 bars
else
if (val4 == 0 && valpression_int >= 300) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;}// arrêt du compresseur pression atteinte 300 bars
else
{
digitalWrite(commande_compresseur, LOW);
marche_compresseur = 1;}
// test autorisation commande electrovanne si marche compresseur

if (val5 == 0 && marche_compresseur == 1) {digitalWrite(commande_electrovanne, LOW);} // COMMANDE ELECTROVANE
else
{digitalWrite(commande_electrovanne, HIGH);}

//Reset hard carte arduino
if (val6 == 0) {digitalWrite(12,LOW);
digitalWrite(13,HIGH);
}
else
{digitalWrite(12, HIGH);
digitalWrite(13,LOW); }

// gestion de l'affichage

lcd.backlight();
lcd.clear();
// Ecriture afficheur
lcd.setCursor(0, 0); // affichage pression de consigne
if (val1==0) lcd.print("176 Bars");
if (val2==0)lcd.print("200 Bars");
if (val3==0) lcd.print("230 Bars");
if (val4==0) lcd.print("300 Bars");
lcd.setCursor(9,0); // affichage NITROX
if (val5 == 0 && marche_compresseur == 1) lcd.print("Inj O2");
lcd.setCursor(12,1); // affichage NITROX
if (val5 == 0) lcd.print("Nx");
lcd.setCursor(0,1); // affichage pression bloc
lcd.print("P BLOC");
lcd.setCursor(7,1);
lcd.print(valpression*100,00);
lcd.setCursor(10,1);
lcd.print("B");

delay (500);// convention pour affichage

}