Différences entre les versions de « Niveau de liquide dans une cuve ou un forage »

De GCE Electronics
Aller à la navigation Aller à la recherche
(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... »)
 
Ligne 25 : Ligne 25 :


===Cas d'une cuve cylindrique===
===Cas d'une cuve cylindrique===
[[fichier:NiveauCylindrique.png]]


'''usage : '''
'''usage : '''
Ligne 68 : Ligne 70 :
return `
return `
<style>
<style>
body {
  background:$bgColor;
  font: 14px/1 'Open Sans', helvetica, sans-serif;
  -webkit-font-smoothing: antialiased;
  color:#fff;
}
.box{  
.box{  
   height: 80px;
   height: 80px;

Version du 4 octobre 2020 à 18:55

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

NiveauCylindrique.png

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>
.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