Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

Precieze Ultrasonische Afstandsmeting met Arduino – Stapsgewijze Handleiding

Ultrasonische Afstandsmeting Project met Arduino

Ultrasonische afstandsmeting is een nuttig hulpmiddel in diverse toepassingen. Het kan gebruikt worden voor positionering, lokaliseren, afmeten, selecteren, peilmeting, regelen en profileren. Met wiskundige berekeningen op de uitgangswaarden kunnen we ook snelheid en andere fysieke afmetingen meten. Het apparaat heeft ook toepassingen in robotica.

Met deze toepassingen in gedachten is de Ultrasonische Sensor een geweldig hulpmiddel om afstanden zonder fysiek contact te meten voor kleine afstanden. Ze gebruiken het ECHO-principe. In dit project leren we hoe we de afstand meten door de HC-SR04 sensormodule met Arduino te koppelen en de afstand op een 16×2 LCD weer te geven.

  • Gerelateerd: Variabele Voeding met Arduino UNO – Schema en Code

Schakelingsschema van Afstandsmeting Project

Precieze Ultrasonische Afstandsmeting met Arduino – Stapsgewijze Handleiding

De koppeling is heel eenvoudig. Volg het schema. Allereerst zijn de Trig- en Echo-pinnen van de ultrasonische sensor verbonden met A4 en A5 van de Arduino UNO, VCC en GND met 5V en GND van de Arduino.

Nu gaan we de afstand op een 16×2 LCD weergeven die met de Arduino verbonden is. Verbind RS en EN pin met digitale pin 12 en 11 van de Arduino. Verbind D4-D7 van de LCD met digitale pin 5-2 van de Arduino. We hebben ook een 10K potentiometer aangesloten om de contrast van de LCD te regelen zoals in het schema getoond.

  • Gerelateerd: Automatische Deurbel met Objectdetectie door Arduino

Benodigde Componenten

  • HC-SR04 Ultrasonische Sensormodule
  • Arduino UNO
  • 16×2 LCD
  • Potentiometer
  • Jumper Kabels en Verbindingsdraden

Ultrasonische Sensormodule

De gebruikte sensormodule is de HC-SR04, een contactloos ultrasonisch meetapparaat. Deze kleine module meet afstanden binnen het bereik van 2cm – 400cm. Het is een zeer nauwkeurige sensor, nauwkeurig tot 3mm.

De sensor bestaat uit een ultrasonische zender en ontvanger. Het werkingsprincipe is eenvoudig. Eerst stuurt de IO-trigger een hoog signaal voor 10μs. Vervolgens stuurt de sensormodule acht 40kHz cycli van ultrasonisch geluid en detecteert of het pulssignaal terug ontvangen wordt. Als het signaal ontvangen wordt, blijft de IO-trigger hoog voor de duur van de tijd van verzenden tot ontvangen.

Afstand = (Tijd van Hoog Niveau × Geluidssnelheid in Lucht (340m/s)) / 2

  • Gerelateerd: Automatische Nachtlamp met Arduino
Tijdschema

Zoals besproken, werkt de module op het ECHO van geluid. Voor het triggeren wordt een puls van ongeveer 10μs verstuurd. Daarna stuurt de module acht 40kHz cycli van ultrasonisch geluid en controleert de reflectie. Als er een obstakel is, raakt het signaal dit en keert terug naar de ontvanger. De afstand wordt berekend met de bovenstaande formule. We delen door 2 omdat dit de totale tijd is om het obstakel te bereiken en terug te keren; de tijd om het obstakel te bereiken is de helft. Het tijdschema van deze sensor is hieronder:Precieze Ultrasonische Afstandsmeting met Arduino – Stapsgewijze Handleiding

Technische Specificaties
  • Werks spanning: 5V
  • Werkstroom: 15mA
  • Werksfrequentie: 40kHz
  • Meethoek: 15°
  • Bereik: 2cm tot 400cm
Pin-outs van Ultrasonische Sensor HC-SR04
  • VCC: Voeding voor de module (typisch +5V)
  • Trig: Wordt gebruikt om de module te triggeren.
  • Echo: Uitgangspin. Blijft hoog voor de tijd dat het signaal van zender naar obstakel en terug naar ontvanger gaat.
  • GND: Verbonden met aarde van de hoofschakeling.

Zoals besproken, werkt de module op het ECHO-principe. Wanneer we de module met een microcontroller verbinden, wordt de module eerst getriggerd via de Trig-pin en een hoog-puls van 10μs verstuurd. Daarna wachten we op het ontvangen van de ECHO. De microcontroller kan de tijd berekenen. Vervolgens wordt de afstand berekend met de besproken formule.

  • Gerelateerd: Wat is een Crowbar Schakeling? Ontwerp en Wer

Arduino UNO

Arduino is een open-source microcontroller die wijd wordt gebruikt in kleine en grote ingesloten projecten. De Arduino in dit project is de Arduino-UNO. De reden om deze te gebruiken is dat het goedkoper en gemakkelijk te koppelen is. Het bord biedt 14 digitale I/O-pinnen en 6 analoge pinnen. De microcontroller is open-source, dus het is aan de gebruiker hoe hij/zij het wil gebruiken. U kunt het bord en de software aanpassen aan uw behoeften.

  • Gerelateerd: Eenvoudige Overbelasting Beveiligingsschakeling met Zener Diode

16×2 LCD Module

Deze modules worden veel gebruikt in ingesloten projecten, omdat ze goedkoop en gemakkelijk te koppelen zijn met microcontrollers. U heeft dit type display wellicht gezien in rekenmachines, multimeters, etc. De LCD-module die hier gebruikt wordt, kan 16 tekens per rij weergeven en heeft twee rijen. Dus 16 kolommen en 2 rijen. Elk getoond teken bestaat uit een 5×8 pixelmatrix.

Als u het totale aantal pixels op de hele LCD berekent: 5×8×16×2 = 1280 pixels. Om iets op de LCD weer te geven, moeten we de positie van tekens specificeren. Dit is lastig. Om het beheer te vergemakkelijken, wordt een IC genaamd HD44780 gebruikt. Deze IC haalt data en commando's op van de microcontroller en verwerkt deze zodat de gewenste uitvoer op de LCD wordt afgedrukt. Deze IC maakt het koppelen van de LCD heel eenvoudig. Laten we enkele technische specificaties bekijken.

  • Werks spanning: 4,7V tot 5,3V
  • Stroomverbruik: 1mA zonder achtergrondverlichting
  • 2 regels met 16 tekens per regel
  • Elk teken bestaat uit 5×8 pixelmatrix
  • Alfanumerieke display: cijfers, letters en speciale tekens
  • Beschikbaar in Groen/Blauw achtergrondverlichting

Laten we de pin-configuratie van de LCD bekijken.

16×2 LCD Pinout en Beschrijving

Pin Nummer Naam Beschrijving
1 VSS Aarde, verbonden met aarde van de schakeling.
2 VDD Voeding voor de LCD (4,7V tot 5,3V), typisch 5V
3 VE Pin om contrast van LCD aan te passen. Verbind een potentiometer met deze pin. Door de knop van de potentiometer te draaien krijgt u verschillende contrastniveaus.
4 RS Register Select. Schuift tussen commando- en dataregister. Verbonden met microcontroller.
5 RW Read/Write. Lezen of schrijven naar LCD. Meestal geaerd om data te schrijven.
6 EN Enable pin. Verbonden met microcontroller, ontvangt 1 of 0 om data te bevestigen.
7 Datapinnen (0-7) Versturen 8-bit data naar LCD van microcontroller. Kan ook in 4-bit modus gebruikt worden (alleen 4 datapinnen nodig).
8 A Anode. Positieve pin voor LCD achtergrondverlichting. Optioneel. Gebruik als u achtergrondverlichting nodig heeft. Stroomverbruik wordt veel lager zonder achtergrondverlichting.
9 K Kathode. Negatieve pin voor LCD achtergrondverlichting.

Laten we basisinterfacing van LCD met Arduino bekijken. We printen wat tekst op de LCD met een eenvoudige code. Verbind RS en EN met digitale pin 12 en 11 van Arduino. Verbind D4-D7 van LCD met digitale pinnen 5-2 van Arduino. Verbind RW, VSS en K met aarde en VDD en A met 5V van Arduino. Verbind een potentiometer met VE zoals in schema voor contrastregeling.

  • Gerelateerd: Verkeerslicht Regeling Electronisch Project met IC 4017 & 555 Timer

Nu naar de code. Eerst includeren we de LiquidCrystal.h bibliotheek voor de LCD.

#include <LiquidCrystal.h>

In de volgende twee regels definiëren we variabelen voor de datapinnen van de LCD verbonden met Arduino en geven ze als argument in de lcd-functie door zodat we data van Arduino naar LCD kunnen sturen.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

In de setup-functie initialiseren we de LCD met lcd.begin(). We geven 16 en 2 door omdat de LCD 16 kolommen en 2 rijen heeft en we de volledige LCD gebruiken. Als u alleen een deel nodig heeft, kunt u de argumenten dienovereenkomstig aanpassen.

Vervolgens printen we 'Hello, World!' in de volgende regel. U kunt elk aangepast bericht printen, maar houd er rekening mee dat berichten die de displaygrootte overschrijden, op de volgende regel worden afgedrukt. Pas uw bericht dienovereenkomstig aan.

lcd.begin(16, 2);

lcd.print("Hello, World!");

In de loop-functie zetten we de cursor op positie (0,1) met lcd.setCursor(). Daarna printen we de tijd waarvoor het bericht wordt afgedrukt.

lcd.setCursor(0, 1);

lcd.print(millis() / 1000);

Na het uploaden van de code naar het Arduino-bord ziet u het bericht op de display. U kunt het contrast aanpassen door de knop van de potentiometer te draaien.

  • Gerelateerd: Klapschakeling met IC 555 Timer & Zonder Timer

Arduino Programmeren voor Ultrasonische Sensor Afstandsmeting

De code is heel eenvoudig. Start met het includeren van de headerfile voor LCD.

#include <LiquidCrystal.h>

In de volgende twee regels definiëren we macro's voor pin A4 (pin 18) en A5 (pin 19) van Arduino zodat we die namen kunnen gebruiken in plaats van pinnummers.

#define trig 18
#define echo 19

Nu definiëren we variabelen voor de verschillende LCD-pinnen verbonden met Arduino en geven ze door aan de lcd-functie voor initialisatie.

const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

Nu definiëren we de afstandsvariabele 'd' en tijdsvariabele 't' en initialiseren ze met 0.

float t=0, d=0;

Nu de setup-functie. Eerst initialiseren we de LCD met lcd.begin() en definiëren de pin-modes voor trigger en echo als output en input.

void setup() {
  lcd.begin(16,2);
  pinMode(trig, OUTPUT);
  pinMode(echo, INPUT);
}

Nu de loop-functie. Eerst wissen we de LCD met lcd.clear() zodat na elke lus de vorige uitvoer de huidige niet beïnvloedt. In de volgende zes regels initialiseren we de ultrasonische sensor door een hoog-puls van 10μs te sturen. De sensor stuurt automatisch acht 40kHz cycli ultrasonisch geluid en controleert de reflectie. In de volgende regel halen we de tijd van de sensor op. Vervolgens berekenen we de afstand. We delen door 10000 omdat de snelheid in m/s is, dus converteren we naar centimeters.

void loop() {
  digitalWrite(trig, LOW);
  delayMicroseconds(2);
  digitalWrite(trig, HIGH);
  delayMicroseconds(10);
  digitalWrite(trig, LOW);
  t = pulseIn(echo, HIGH);
  d = t * 0.0340 / 2;
  d = t * 0.01330 / 2;
  lcd.setCursor(0, 0);
  lcd.print("Afstand: ");
  lcd.print(d);
  lcd.print(" cm");
  delay(1000);
}
  • Gerelateerd: Automatische Badkamer Lichtschakeling Schema en Wer

Werking van Afstandsmeetschakeling

Na het schrijven van de code, upload naar Arduino en u bent klaar. Breng elk object of uw hand voor de sensor. Controleer de afstand op de LCD. Verander de afstand van het object tot de sensor en u krijgt een nauwkeurige meting.

Wanneer we de sensor initialiseren door een hoog-puls van 10μs te sturen, stuurt de sensor acht 40kHz ultrasonische cycli en als deze gereflecteerd worden door een obstakel, keren ze terug naar de ontvanger. De sensor geeft de tijd die nodig was voor het reizen van het ultrasonische signaal van zender naar obstakel en van obstakel naar ontvanger. We gebruiken deze tijd om de afstand tussen sensor en obstakel te berekenen.

Precieze Ultrasonische Afstandsmeting met Arduino – Stapsgewijze Handleiding

Industriële technologie

  1. Een externe temperatuursensor bouwen met Raspberry Pi en Python – Stap-voor-stap handleiding
  2. Bouw een Ultrasonische Zweefapparaat met Arduino – Stap-voor-stap Handleiding
  3. Een slimme voltmeter bouwen met Arduino en smartphone – Eenvoudig DIY-project
  4. Bouw een Slimme IoT Pot met ESP8266, Arduino & Ultrasonische Sensor – Real-time Monitoring
  5. Nauwkeurige Frequentie- en Duty Cycle-meting met Arduino UNO
  6. Bouw een compacte FM-radio met Arduino Nano en RDA5807M
  7. Compact Arduino Radarsysteem met HC-SR04 Ultrasonische Sensor & 1.8" Display
  8. Capacitieve Touch LED Schakelaar met Arduino UNO – Eenvoudig DIY Project
  9. Hoe Afstandssensoren Werken en Hun Belangrijkste Toepassingen
  10. Arduino Sensoren: Typen, Toepassingen en Real-World Projecten
  11. Hoe PIR-sensor Schakelingen Werken: Ontwerp, Werking en Real-World Toepassingen