Om HC-SR04

    HC-SR04 er en veldig mye brukt modul sammen med mikrokontrollersystemer som Arduino. Sensoren bruker ultralyd for å måle avstand, og er ganske nøyaktig fra 3-4 meter ned til noen centimeter.

    Virkemåte:

    For at sensoren skal starte en måling, sender vi en 10 mikrosekund puls på pinnen som heter "Trig" (trigger). Sensoren sender da ut 8 pulser på 40kHz, og måler tiden det tar før signalet reflekteres. Resultatet vises på Echo-pinnen, som en puls opp til ca. 40ms.


    Her er en veldig grundig video om sensoren, som til og med tar hensyn til at lydhastigheten avhenger av temperatur og luftfuktighet, og bruker en DHT22 for å måle disse verdiene. I løpet av videoen installerer han et bibliotek som heter NewPing. Dette kan legges til mye enklere nå, ved å søke det opp under "Skisse->Administrer bibliotek"

    Using the HC-SR04 Ultrasonic Distance Sensor with Arduino - Everything you need to know! 

    HC-SR04.PNG

    Bruksområder


    Avstandsmåler på "robotbil"
    HC-SR04
    Ottobot
    Ottobot
    Høydemåler på quadcopter
    Drone
     
       

    Oppgaver:

    Vi avslutter denne bolken med et par enkle oppgaver:

    1.1: Bruk biblioteket HCSR04 til å måle avstand til sensoren og skrive målet i centimeter til serieporten.

    1.2: Bruk en meterstokk eller målebånd, og finn ut hvor nøyaktig sensoren er.
    UltraLydSensor.MOV

    (Filmen laget av min gode kollega og eksamenspartner Knut D. Angelsen.)

    2: Legg til en Buzzer og gjør om avstandsmålingen til et lydsignal, slik at den enten piper med høyere frekvens, eller korte pip med kortere mellomrom jo nærmere objektet kommer.

     

     

    int trigPin = 11;    // Trigger
    int echoPin = 12;    // Ekko
    int frekvens;        //Frekvens pipetone (200Hz-2kHz)
    int Buzzer = 8;      //Buzzer
    long tid, cm;
     
    void setup() {
      Serial.begin (9600);
     
      pinMode(trigPin, OUTPUT);
      pinMode(echoPin, INPUT);
      pinMode(Buzzer, OUTPUT);
    }
     
    void loop() {
     
      digitalWrite(trigPin, LOW);
      delayMicroseconds(5);
      digitalWrite(trigPin, HIGH);
      delayMicroseconds(10);
      digitalWrite(trigPin, LOW);

      tid = pulseIn(echoPin, HIGH);
     
      // Gjør om tid til avstand
      cm = (tid/2) / 29.1; 
      frekvens = 2000 - ( cm * 9 ); //regner ut frekvens i forhold til avstand

    if (cm >= 200 || cm <= 0) {
            Serial.println("Fritt leide");
            digitalWrite(Buzzer,LOW);
      } else {
            Serial.println("Detektert på avstand");
            Serial.print(cm);             
            Serial.print("cm");       
            tone(Buzzer,frekvens);             //gir pipetone
      }
        
      Serial.print("Avstand ");
      Serial.print(cm);
      Serial.print("cm");
      Serial.println();
     
      delay(250);
    }

    Søk på siden

    © Lilleholt.no 2020
    Free Joomla! templates by Engine Templates