mercoledì 8 aprile 2020

Arduino N° 44 - Sensore digitale di livello















< Segue da Arduino N°  43        

 Achille De Santis

Arduino N° 45




Un misuratore analogico di livello si può implementare con il vecchio sensore 4-20 mA, che ha le sue peculiarità.



In alternativa, si può realizzare un misuratore di livello con tecnica digitale; quello qui presentato rileva 4 livelli ed indica anche una "riserva", quando il livello è al di sotto di un quarto di serbatoio.




/* ----------------------------- Inizio Programma ---------------------------------------
  Sensore digitale di livello, a cinque stati: 0%, 25%, 50%, 75%, 100%
  I pulsanti vanno sostituiti con 4 interruttori di livello, a galleggiante.
  by prof. Achille De Santis V4 del 12-02-2020.
*/

// ------------------ I/O --------------------------
#define U0  7  // livello inferiore al 25%
#define U1  6  // livello 25%
#define U2  5  // livello 50%
#define U3  4  // livello 75%
#define U4  3  // livello 100%
// ------------------ Sensori -------------------
#define P1  13  // livello 25%
#define P2  12  // livello 50%
#define P3  11  // livello 75%
#define P4  10  // livello 100%
// -------------------------------------------------

int L;

void intestazione()
  { // Serial.begin(9600);        // velocità seriale
    Serial.println(" ________ Tecnatron Creation ___________");
    Serial.println(" Sensore digitale di livello                           --");
    Serial.println(" prof. Achille De Santis - 27-10-2019 --------");
  }

void livello(int u)  {Serial.print("Serbatoio: "); digitalWrite(u, HIGH);}   // indicatore di livello


void setup()
{
  pinMode(P1, INPUT);  // interruttori di livello, a galleggiante.
  pinMode(P2, INPUT);
  pinMode(P3, INPUT);
  pinMode(P4, INPUT);

  pinMode(U0, OUTPUT);  // uscite per i led di livello o per attuatori
  pinMode(U1, OUTPUT);
  pinMode(U2, OUTPUT);
  pinMode(U3, OUTPUT);
  pinMode(U4, OUTPUT);
  Serial.begin(9600);
  intestazione();
}

// ------------------------------------------------------------------------------------------------------

void loop()
{
  digitalWrite(U0, LOW);               L=digitalRead(P4); 
  if (L==HIGH)           {Serial.println("100%"); livello(U4); }   
    else
    {digitalWrite(U4, LOW);            L=digitalRead(P3);
      if(L==HIGH)        {Serial.println("75%"); livello(U3); }   
       else
       { digitalWrite(U3, LOW);         L=digitalRead(P2);
        if(L==HIGH)      {Serial.println("50%"); livello(U2); }   
         else
          { digitalWrite(U2, LOW);      L=digitalRead(P1);
           if(L==HIGH)  {Serial.println("25%"); livello(U1); }   
              else     
              {
                digitalWrite(U1, LOW);
                Serial.println("quasi vuoto"); livello(U0);     
              }                     
          }
       }
    }
delay(500);
}

// ----------------------------- Fine Programma ---------------------------------------



Simulazione:

Sensore digitale di livello
Sensore digitale di livello, V4

Argomenti correlati:



Arduino N° 45



Nessun commento:

Posta un commento