Code zoeken

Arduino-code en video voor de HC-SR501 bewegingssensor

Arduino-code en video voor de HC-SR501 bewegingssensor

In deze tutorial verkennen we de HC-SR501 bewegingssensor, die is ontworpen om beweging te detecteren via infraroodtechnologie. De sensor kan een uitgang activeren, waardoor je apparaten zoals LED's of alarmen kunt aansturen op basis van bewegingsdetectie. Aan het einde van deze tutorial heb je een duidelijk begrip van hoe je de sensor moet bedraden en de Arduino-code implementeert om deze effectief te laten functioneren. (in video op 00:45)

Hardware uitgelegd

De HC-SR501 bewegingssensor is een compacte module van 32 bij 24 millimeter, die kan werken binnen een spanningsbereik van 5 tot 20 volt. De kern is de LHI 778 infraroodsensor, die beweging detecteert door veranderingen in infraroodstraling waar te nemen. Dit maakt de sensor geschikt voor verschillende toepassingen, waaronder beveiligingssystemen en robotprojecten.

Deze module heeft drie hoofd pinnen: VCC voor voeding, GND voor aarde en OUT voor het uitgangssignaal. Wanneer beweging wordt gedetecteerd, stuurt de OUT-pin een hoog signaal (3,3 volt TTL), dat kan worden gebruikt om alarmen of andere apparaten te activeren. De sensor heeft ook instelbare gevoeligheids- en tijdvertragingsinstellingen, zodat je de werking kunt aanpassen aan je specifieke behoeften.

Datasheet-details

FabrikantHC-SR501
OnderdeelnummerHC-SR501
Logica/IO-spanning3,3 V
Voedingsspanning5–20 V
Uitgangsstroom (per kanaal)≤ 20 mA
Piekstroom (per kanaal)≤ 50 mA
PWM-frequentierichtlijnNiet van toepassing
Ingangslogische drempels0,8 V (LAAG), 2,0 V (HOOG)
Spanningsval / RDS(on) / verzadiging0,1 V
Thermische limieten0°C tot 70°C
BehuizingModule
Opmerkingen / variantenInstelbare gevoeligheid en tijdvertraging

  • Zorg voor de juiste voedingsspanning (5-20 V).
  • Gebruik een weerstand in serie met LED's om de stroom te beperken.
  • Pas de gevoeligheidspotentiometer aan voor het detectiebereik.
  • Stel de tijdvertraging in om te bepalen hoe lang de uitgang hoog blijft.
  • Wees voorzichtig met zwevende ingangen; gebruik pull-up- of pull-down-weerstanden indien nodig.

Bedradingsinstructies

Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor

Om de HC-SR501 bewegingssensor te bedraden, begin je met het verbinden van de VCC-pin met de 5V-uitgang op de Arduino. Verbind vervolgens de GND-pin met de aarde (GND) op de Arduino. De OUT-pin moet worden verbonden met digitale pin 2 op de Arduino, die het bewegingsdetectiesignaal zal lezen.

Als je een LED gebruikt voor visuele feedback, verbind dan de anode (lange pin) van de LED met digitale pin 8 op de Arduino. De kathode (korte pin) moet worden verbonden met een aansluiting van een 680-ohm weerstand, waarbij de andere aansluiting van de weerstand naar aarde gaat. Deze opstelling stelt de Arduino in staat om de LED aan te sturen op basis van bewegingsdetectie.

Codevoorbeelden en uitleg

De Arduino-code voor deze opstelling initialiseert de seriële monitor en configureert de invoer- en uitvoerpinnen. De belangrijkste identificatoren in de code zijn motion, die de status van de bewegingssensor opslaat, en de digitale pinnen die worden gebruikt voor het lezen van invoer en het aansturen van de LED.

void setup() {
  Serial.begin(9600);// setup Serial Monitor om informatie weer te geven
  pinMode(2, INPUT);// Invoer van sensor
  pinMode(8, OUTPUT);// UITVOER naar alarm of LED
}

In dit fragment initialiseert de setup()-functie de seriële communicatie en stelt de pinmodi in voor de sensor en LED. Pin 2 is ingesteld als invoer om de uitgang van de bewegingssensor te lezen, terwijl pin 8 is ingesteld als uitvoer om de LED aan te sturen.

void loop() {
  int motion = digitalRead(2);
  if(motion){
    Serial.println("Beweging gedetecteerd");
    digitalWrite(8, HIGH);
  }else{
    Serial.println("===niets beweegt");
    digitalWrite(8, LOW);
  }
  delay(500);
}

Dit codefragment vertegenwoordigt de hoofdloop waarin het programma continu de status van de bewegingssensor controleert. Als beweging wordt gedetecteerd, print het "Beweging gedetecteerd" naar de seriële monitor en schakelt het de LED in. Als er geen beweging wordt gedetecteerd, print het "===niets beweegt" en schakelt het de LED uit.

Demonstratie / Wat te verwachten

Wanneer de opstelling compleet is en de code naar de Arduino is geüpload, moet je verwachten dat de LED oplicht wanneer beweging wordt gedetecteerd door de HC-SR501-sensor. Daarnaast zal de seriële monitor berichten weergeven die aangeven of er beweging wordt gedetecteerd of niet. Als je de gevoeligheids- en tijdvertragingsinstellingen op de sensor aanpast, merk je mogelijk veranderingen in hoe snel de sensor reageert op beweging (in video op 05:30).

Veelvoorkomende valkuilen zijn onder meer onjuiste bedrading, zoals het omwisselen van de aansluitingen voor VCC en GND, wat de sensor kan beschadigen. Zorg ervoor dat de uitgangspin van de sensor correct is verbonden met de aangewezen invoerpin op de Arduino om zwevende ingangen te voorkomen.

Videotijdstempels

  • 00:00 Introductie
  • 00:45 Hardware-overzicht
  • 02:30 Bedradingsinstructies
  • 04:00 Code-uitleg
  • 05:30 Demonstratie

Afbeeldingen

HC-SR501 back
HC-SR501 back
HC-SR501 module
HC-SR501 module
Arduino wiring for HC-SR501 Motions sensor
Arduino wiring for HC-SR501 Motions sensor
48-This is the Arduino code for the HC-SR501 motion sensor.
Taal: C++
/*
 * This is the Arduino code for HC-SR501 Motion Sensor
 * to detect motion of humans or objects using Arduino for robotic car and other applications
 * Watch the video https://youtu.be/mZCJNOf69JI
 * 
 * Written by Ahmad Shamshiri for Robojax Video
 * Date: Dec 27, 2017, in Ajax, Ontario, Canada
 * Permission granted to share this code given that this
 * note is kept with the code.
 * Disclaimer: this code is "AS IS" and for educational purposes only.
 * 
 */

void setup() {
  Serial.begin(9600);// setup Serial Monitor to display information
  pinMode(2, INPUT);// Input from sensor
  pinMode(8, OUTPUT);// OUTPUT to alarm or LED
}

void loop() {
  int motion =digitalRead(2);
  if(motion){
    Serial.println("Motion detected");
    digitalWrite(8,HIGH);
  }else{
     Serial.println("===nothing moves");
     digitalWrite(8,LOW);
  }
  delay(500);

}

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Andere bestanden