Commande compresseur avec sécurisation Nitrox version 2

Commande compresseur  avec sécurisation Nitrox et réglage fin de la consigne de pression

Dans cette version on remplace la fonction 176 bars par un position réglable à l'aide de deux boutons poussoirs, à la mise sous tension la valeur de départ est de 100 bars ( valeurMP) 

 

 

Liste du matériel

Désignation

Nombre

Fournisseurs

Prix indicatif

 

Carte Arduino uno

1

Aliexpress

4€

Carte ADS 1115

1

Aliexpress

2.3€

Carte  2 relais

1

Aliexpress

1.2€

Carte conversion 4-20mA

1

Aliexpress

1€

Transmetteur de pression 4-20 mA 0-400 Bars 12/24/36V G1/4

1

Aliexpress

35€

Alimentation 12v /3 A

1

Aliexpress

7.5€

Ecran 16*2 I2C

1

Aliexpress

2.9€

Electrovanne 12V 540mA

1

Aliexpress

5€

Carré 3 sorties (si on veut conserver le manomètre d’origine sur  la rampe)

 

1

Bigata

21.60

Interrupteur  1 NO

1

Aliexpress

0.5€

Bp

3

Aliexpress

0.5€

Commutateur rotatif 5 circuits 1 pistes

1

Aliexpress

1€

 

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 et réglage manuelle 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 inPinMP = 4;


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 valup=1;
int valdown = 1;
int valeurMP = 100;// départ MP à 100 bars
int boutonuppin = 10;//up pression
int boutondownpin = 11;//down pression
int valpression_int = 0; //variable de conversion float -> int
float valpression = 0;// variable lecture ads1115

void setup()
{
Serial.begin(9600);
//starts ADS readings

ads1115.begin();
lcd.init(); // initialisation de l'afficheur
pinMode(inPinMP,INPUT_PULLUP);// réglage manuelle pression
pinMode(inPin200,INPUT_PULLUP);
pinMode(inPin230,INPUT_PULLUP);
pinMode(inPin300,INPUT_PULLUP);
pinMode(commande_nitrox, INPUT_PULLUP);
pinMode(commande_compresseur, OUTPUT);
pinMode(commande_electrovanne, OUTPUT);
pinMode(boutonuppin,INPUT_PULLUP);
pinMode(boutondownpin,INPUT_PULLUP);
pinMode(BP_reset, INPUT_PULLUP);
pinMode(12, OUTPUT);
pinMode(13, OUTPUT);//utilisation led carte
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(inPinMP); // lecture commutateur rotatif MP
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
valup = digitalRead(boutonuppin);// lecture bp up
valdown = digitalRead(boutondownpin);// lecture bp down
valpression_int = valpression * 100.00;//conversion en int pour comparaison
if (valup == 0 && valeurMP <= 310) {delay(0) ;
valeurMP = (valeurMP+1);} // incrémente MP
if (valdown == 0 && valeurMP >=0) {delay(0) ;
valeurMP = valeurMP-1;}//décrément MP

//test valeur de la pression du bloc avec la consigne

if (val1 == 0 && valpression_int >= valeurMP) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;} // arrêt du compresseur pression atteinte valeur MP
else
if (val2 == 0 && valpression_int >= 205) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;}// arrêt du compresseur pression atteinte 200 bars
else
if (val3 == 0 && valpression_int >= 235) {digitalWrite(commande_compresseur, HIGH);
marche_compresseur = 0;}// arrêt du compresseur pression atteinte 230 bars
else
if (val4 == 0 && valpression_int >= 305) {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(valeurMP);
lcd.setCursor(4, 0);
lcd.print("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 (100);

delay (200);// convention pour affichage

}