Vai al contenuto

Sensore d'altezza

Da Wikiversità, l'apprendimento libero.
(Reindirizzamento da Misuratore d'altezza)
Questa risorsa è stata scritta dagli studenti dell'Istituto ITIS "Enrico Mattei" di Urbino, della classe 4A/EN (Alessandro Magi, Davide Boschetti, Federico Ducci) nell'a.s. 2021/2022, all'interno del corso di Sistemi automatici per le superiori 2.

Per favore, prima di apportare modifiche, attendi sino alla fine dell'anno scolastico (termina il 30 giugno 2022) oppure contatta il docente di riferimento Giacomo Alessandroni nel caso venissero rilevati contenuti non in linea con le linee guida della comunità.

Se leggi questo avviso ad anno scolastico concluso puoi rimuoverlo.

laboratorio
laboratorio
Sensore d'altezza
Tipo di risorsa Tipo: laboratorio
Materia di appartenenza Materia: Sistemi automatici per le superiori 2
Avanzamento Avanzamento: laboratorio completa al 75%

Questa pagina descrive come realizzare un misuratore d'altezza per le persone tramite l'utilizzo di Arduino, di un sensore ad ultrasuoni, e di un display LCD.

Descrizione del progetto

[modifica]

Abbiamo realizzato questo progetto con lo scopo di creare un misuratore per l'altezza delle persone, e per farlo ci siamo serviti dei seguenti componenti:

- Sensore ad ultrasuoni

- display LCD.

Il funzionamento è il seguente:

Una volta posto il sensore ad un'altezza fissa di 220 cm, questo effettua una misurazione tra la distanza a cui è fissato e la testa della persona che si è posta sotto di esso, in seguito viene effettuata da Arduino una sottrazione tra la distanza fissa (220 cm) e la misurazione effettuata dal sensore, ed infine il risultato dell'operazione (ovvero l'altezza della persona) viene mostrato sul display.

Componenti Utilizzati
Sensore a utrasuoni HC SR-04
Display LCD 16x4 con sensore I2C

Schema di montaggio

[modifica]

Di seguito lo schema di montaggio di un misuratore d'altezza realizzato con un sensore a ultrasuoni. Come mostrato nella figura l'altezza di una persona verrà visualizzata su un display LCD.



Schema elettrico

[modifica]

Successivamente viene mostrato lo schema elettrico del misuratore di altezza delle persone:



Codice

[modifica]

Qui di seguito viene mostrato il codice che permette il funzionamento del progetto.

#include <LiquidCrystal_I2C.h>

// pin del sensore di prossimita'
#define triggerPort  7
#define echoPort     8

// dimensione display
#define righeDisp    4
#define colonneDisp 20

#define boud      9600

const int maxAltezza = 220; // in cm
       // velocita' del suono in cm/s
int altezzapersona;
int r;                      // echo in cm
long duration;              // tempo dell'eco in us
                    

// settaggio del modulo I2C per il display
LiquidCrystal_I2C lcd(0x27, colonneDisp, righeDisp);

// connessione display (pin)
void setup() {
  pinMode( triggerPort, OUTPUT );
  pinMode( echoPort, INPUT );
  
  Serial.begin( boud );
  Serial.println( "Sensore ultrasuoni: ");
  
  lcd.begin();
      lcd.clear(); 
      lcd.print("Altezza:");
      lcd.setCursor(18 , 0);
      lcd.print("cm"); 
      lcd.setCursor(16, 0);
      lcd.print(' ');
      lcd.setCursor(17, 0);
      lcd.print(' ');
}

void loop() {
  //porta l'uscita del trigger a livello basso
  digitalWrite( triggerPort, LOW );

  //invia un impulso di 10 us al trigger
  digitalWrite( triggerPort, HIGH );
  delayMicroseconds( 10 );
  
  digitalWrite( triggerPort, LOW );
  duration = pulseIn( echoPort, HIGH );
  r =  0.034 * duration / 2;   

  // Invia i dati alla porta seriale
  Serial.print( "durata: " );
  Serial.print( duration );
  Serial.print( " , " );
  Serial.print( "Altezza:  " );
  
  

  // evitando errori dovuti a nani
  if( duration < 38000 ) {
  }
   Serial.print( r ); Serial.println( "cm" );
  
  // posiziono il cursore alla colonna 13 e riga 0
  if(altezzapersona > 1){
    lcd.setCursor(13, 0);
    lcd.print(altezzapersona = maxAltezza - r);
    }
    
  if(altezzapersona <= 99 && altezzapersona > 9){
    lcd.setCursor(13, 0);
    lcd.print(altezzapersona = maxAltezza - r);
    lcd.setCursor(15, 0);
    lcd.print(" ");
  }
  
  if(altezzapersona <= 9){
    lcd.setCursor(13, 0);
    lcd.print(altezzapersona = maxAltezza - r);
    lcd.setCursor(14, 0);
    lcd.print("  ");
  }
  delay(500);
}

Conclusioni

[modifica]

Per concludere, il progetto è riuscito senza troppi problemi infatti siamo riusciti a raggiungere il nostro obiettivo, ovvero quello di creare un misuratore per l'altezza delle persone.



Espansioni Suggerite

[modifica]

Tra le espansioni suggerite si segnala la possibilità di aggiungere un pulsante che faccia attivare la misurazione solo dopo che viene premuto, in maniera tale da ottenere una misurazione più accurata.

Inoltre si potrebbe anche aggiungere un sensore di peso per la creazione di una bilancia, e fare in modo che il display visualizzi se una persona è in sovrappeso, peso forma o sottopeso.