Niveau de liquide dans une cuve ou un forage

De GCE Electronics
Révision datée du 4 octobre 2020 à 17:50 par Fgtoul (discussion | contributions) (Page créée avec « {{sommaire|niveau=3|flottant=left}} {{Infobox IPX800 | titre = Niveau de liquide | image = Netatmo_presentation3.png | famille = Widget | date-create = 04/10/2020 | date-u... »)
(diff) ← Version précédente | Voir la version actuelle (diff) | Version suivante → (diff)
Aller à la navigation Aller à la recherche

Niveau de liquide

Netatmo presentation3.png
Nom Niveau de liquide
Famille Widget
Wiki créé le 04/10/2020
Wiki mis à jour le 04/10/2020
Auteur fgtoul

Présentation

Voici quelques widgets écrits en javascript et HTML. Vous pourrez les personnaliser et les utiliser sur les dashboards de votre IPX800 V4.

Attention, si vous mesurez le niveau d'un hydrocarbure (fioul, ...) dans une cuve, il faudra utiliser un capteur spécifique.

exemples avec un capteur analogique

Il existe différents types de capteurs permettant de mesurer un niveau.

  • à laser, infrarouges ou ultrasons, ils mesurent la hauteur vide en haut de cuve. Le niveau de liquide s'obtient par soustraction à partir de la hauteur totale de la cuve.
  • composés d'une sonde immergée, ils calculent la hauteur de liquide grâce à la pression lue en fond de cuve. La sonde à pression différentielle est plus précise car elle réajuste la mesure en fonction de la pression athmosphérique.

la hauteur de liquide est en lecture directe.

  • résistifs ou capacitifs, ils sont mesurent la hauteur d'eau en contact avec leur partie immergée (tige, fil conducteur, ...)


Nous admettrons que vous avez correctement configuré votre entrée analogique afin d'obtenir une hauteur en centimètres. Pour cela, vous aurez adapté les formules de conversion dans la configuration de l'entrée analogique concernée, en fonction des caractéristiques du capteur.

Cas d'une cuve cylindrique

usage :

  • Sur le dashboard, créez une source de données vers le fichier Status.xml de l'ipx800.
  • Renseignez le volume total de la cuve en litres, le diamètre de la cuve en cm, puis liez la variable hauteurFuel à la datasource, sur l’analogique de la sonde . la hauteur est attendue en cm.
  • creez un widget de type HTML, haueur 2 blocs.
  • insérez et ajustez ce code dans le widget :
 afficher le code
 
var hauteurFuel==(datasources["STATUS"]["response"]["analog0"] * 100).toFixed(2);


var diametreCuve=86; //diametre en cm
var volumeCuve=2000; //volume cuve pleine en litres

var pourcentage=100 - (100*hauteurFuel/diametreCuve);

var vc=volumeCuve/1000; //conversion en m3
var d=diametreCuve/100; //conversion en m
var r=d/2;
var h=hauteurFuel/100; //conversion en m

//calcul de la longueur de la cuve
var lc=(vc/Math.PI/Math.pow(r,2)).toFixed(2); 

//calcul volume Fuel
var vf=0;

if(h<=r && h>=0){// hauteur inférieure à rayon cuve
    vf=(Math.sqrt(r*r-(h-r)*(h-r))*(h-r)+r*r*Math.asin(Math.sqrt(r*r-(h-r)*(h-r))/r))*vc/(Math.PI*r*r);
}
else if (h>r && h<=2*r) {//  hauteur supérieure à rayon cuve
    vf=(Math.PI*r*r-Math.sqrt(r*r-(2*r-h-r)*(2*r-h-r))*(2*r-h-r)-r*r*Math.asin(Math.sqrt(r*r-(2*r-h-r)*(2*r-h-r))/r))*vc/(Math.PI*r*r);
}

vf=(vf*1000).toFixed(0);
return `
<style>


body { 
  background:$bgColor; 
  font: 14px/1 'Open Sans', helvetica, sans-serif; 
  -webkit-font-smoothing: antialiased; 
  color:#fff; 
} 
.box{ 
  height: 80px;
  width: 80px;
  position: absolute;
  top: 50%;
  left: 10px;
  transform: translate(0, -50%);
  background: #666666;
  border-radius:100%;
  overflow: hidden; 
}
   
 .fuel{ 
    position: absolute;
    left: 0;
    top: 0;
    width: 80px;
    height: 80px;
transform:translate(0,${pourcentage}%);
    background:#76B558;
  } 
</style>
<div class="box"> 
  <div id="fuel" class="fuel"></div> 
</div> 
<div style="float:left;margin-left:100px;margin-top:15px;font-size:12px;"> 
	<span >Contenance cuve: ${volumeCuve}</span> litres<br>
	<span >Longueur cuve: ${lc}</span> m<br>
	<span >Diamètre cuve : ${diametreCuve} </span> cm<br>
	<span >Hauteur Fioul : ${hauteurFuel}</span> cm<br>
	<span style="font-weight:bold;">Volume Fioul : ${vf}  litres</span><br>
<span >Ratio volume : ${(vf/volumeCuve*100).toFixed(2)}</span> %<br> 
</div> 

`;

cas d'une cuve rectangulaire

exemples avec des capteurs tout ou rien (interrupteurs à flotteur)

cas d'une cuve cylindrique

cas d'une cuve rectangulaire