You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 6 Next »

Avstand kan måles på mange måter, ultralyd er en av dem. Her skal vi gå nærmere inn på en sensor, HC-S04. Denne sensoren virker kort sagt slik: Når den får beskjed om det, sender den ut en kort lydpuls. Den måler hvor lang tid det tar før den får et ekko tilbake, og akkurat like lenge som det tar holder den ekkopinne høy.

Denne sensoren har, ifølge databladet, avstandsmålinger fra 2 cm til 4 m. Den tilkobles 5 volt, signaljord og to signalpinner fra arduinoen. I dette eksempelet bruker vi pinne 7 og 8, men du kan selvsagt bruke de pinnene du vil. På høyre side kan du se hvordan kretsen kobles opp.

Koden under sender som nevnt ut en kort lydpuls før den måler hvor lang tid denne lydpulsen bruker på å komme tilbake. I følge databladet skal vi dele tiden (som er målt i mikrosekunder) på 58 for å få avstand i cm. Ser vi på de fysiske definisjonene er dette ikke helt nøyaktig, men bra nok for dette eksempelet. Dette eksempelet viser avstanden i meter, vi får da (us / 58) / 100 = us * 1 / 5800. 1/5800 er ca. 0,00017, og vi kan derfor si lengde = us * 0,00017. Dette forklarer det magiske tallet på linje 25 i koden.

Ultralyd avstands eksempel
const int echoPin = 7;
const int triggerPin = 8;

void setup() {
  Serial.begin(9600);
  
  // Definer hvilken type de forskjellige pinnene er
  pinMode(triggerPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
 

void loop() {
  // Gjør ekkokallet
  digitalWrite(triggerPin, LOW);
  delayMicroseconds(2);
  
  digitalWrite(triggerPin, HIGH);
  delayMicroseconds(10);
  
  digitalWrite(triggerPin, LOW);
  // Mål hvor lang tid det tar før ekkoet kommer tilbake
  long duration = pulseIn(echoPin, HIGH);
  // Regn ut avstanden
  float distance = duration * 0.00017;  
  
  Serial.println(distance);
  delay(1000);
}

Koden kan også finnes på github kontoen vår, under Examples/UltrasoundExample. Her er koden mer kommentert, og utledningen av avstandsberegningen er mer detaljert.

Det bør legges merke til at det gjøres ingen sjekk på hvor lang avstand som beregnes. Som nevnt både i datablad og i denne teksten er den gyldige avstanden mellom 2 cm og 4 m. Ved faktisk bruk bør det legges inn sikkerhetssjekker på dette, gjerne i form av enkle if..else setninger.

Oppkobling

Hvordan sensoren faktisk er

  • No labels