Industrielle Fertigung
Industrielles Internet der Dinge | Industrielle Materialien | Gerätewartung und Reparatur | Industrielle Programmierung |
home  MfgRobots >> Industrielle Fertigung >  >> Manufacturing Technology >> Industrietechnik

Abstandsmessung mit Arduino und Ultraschallsensor

Projekt zur Ultraschall-Entfernungsmessung mit Arduino

Ultraschall-Entfernungsmessung ist in letzter Zeit ein nützliches Werkzeug in verschiedenen Anwendungen. Es kann in verschiedenen Anwendungen wie Positionierung, Ortung, Dimensionierung, Auswahl, Füllstandsmessung, Steuerung und Profilierung eingesetzt werden. Durch einige mathematische Berechnungen mit den Ausgabewerten können wir auch die Geschwindigkeit und verschiedene andere physikalische Größen messen. Das Gerät hat auch Anwendungen im Bereich der Robotik.

In Anbetracht dieser Anwendungen ist der Ultraschallsensor ein großartiges Werkzeug zum Messen von Entfernungen ohne physischen Kontakt für kleine Entfernungen. Sie verwenden das Konzept von ECHO, um die Entfernung zu messen. In diesem Projekt lernen wir, wie man die Entfernung misst, indem man das HC-SR04-Sensormodul mit Arduino verbindet und die Entfernung auf einem 16×2-LCD anzeigt.

Schaltplan des Distanzmessungsprojekts

Die Schnittstelle ist wirklich einfach. Sie müssen nur dem Schaltplan folgen. Zunächst werden die Trig- und Echo-Pins des Ultraschallsensors mit A4 und A5 von Arduino UNO verbunden, und VCC und GND werden mit 5 V und GND von Arduino verbunden.

Jetzt werden wir die Entfernung auf einem 16×2 LCD anzeigen, das mit dem Arduino verbunden ist. Verbinden Sie den RS- und den EN-Pin mit dem digitalen Pin 12 bzw. dem digitalen Pin 11 von Arduino. Verbinden Sie nun D4-D7 von LCD mit dem digitalen Pin 5-2 von Arduino. Wir haben auch ein 10K-Potentiometer angeschlossen, um den Kontrast des LCDs zu steuern, wie im Schaltplan gezeigt.

Erforderliche Komponenten

Ultraschallsensormodul

Das hier verwendete Sensormodul ist HC-SR04 , das ein berührungsloses Ultraschallmessgerät ist. Dieses kleine Modul ist in der Lage, Entfernungen im Bereich von 2 cm – 400 cm zu messen. Es ist ein wirklich genauer Sensor, er kann bis zu 3 mm messen.

Der Sensor besteht aus einem Ultraschallsender und einem Ultraschallempfänger. Das Funktionsprinzip ist wirklich einfach. Erstens sendet der IO-Trigger für 10 μs ein Signal mit hohem Pegel. Dann sendet das Sensormodul acht 40-kHz-Zyklen Ultraschall und erkennt, ob das Impulssignal zurückkommt oder nicht. Und wenn das Signal über einen hohen Pegel empfangen wird, ist die Zeitdauer, während der der IO-Trigger hoch bleibt, die Zeit vom Senden bis zum Empfangen des Signals.

Entfernung =(Zeit des hohen Pegels x Schallgeschwindigkeit in Luft (340 M/s))/2

Zeitdiagramm

Wie oben besprochen, arbeitet das Modul mit dem ECHO des Sounds. Zum Triggern des Moduls wird ein Impuls für ca. 10 μs gesendet. Nach diesem Vorgang sendet das Modul acht 40-kHz-Zyklen Ultraschall und prüft dessen Reflexion. Wenn also ein Hindernis vorhanden ist, trifft das Signal darauf und kehrt zum Empfänger zurück. Und jetzt wird die Entfernung durch eine einfache oben diskutierte Formel berechnet. Wir haben es durch 2 geteilt, da diese Zeit die Gesamtzeit ist, um das Hindernis zu erreichen und zum Empfänger zurückzukehren, sodass die Zeit, die zum Erreichen des Hindernisses benötigt wird, die Hälfte der Gesamtzeit ist. Das Zeitdiagramm dieses Sensors ist unten angegeben:

Technische Daten
Pin-Outs des Ultraschallsensors HC-SR04

Wie oben besprochen, arbeitet das Modul nach dem ECHO-Prinzip. Wenn wir also das Modul mit einem beliebigen Mikrocontroller verbinden, wird das Modul zuerst über den Trig-Pin getriggert und ein Impuls mit hohem Pegel für 10 μs gesendet. Dann warten wir auf das ECHO. Der Mikrocontroller kann die Zeit berechnen. Und dann wird die Entfernung nach der oben besprochenen Formel berechnet.

Arduino UNO

Arduino ist ein Open-Source-Mikrocontroller, der in vielen kleinen und großen eingebetteten Projekten weit verbreitet ist. Das Arduino, das in diesem Projekt verwendet wird, ist Arduino-UNO. Der Grund für die Verwendung dieses Arduino ist, dass es billiger und einfach zu verbinden ist. Das Board bietet 14 digitale I/O-Pins und 6 analoge Pins. Der Mikrocontroller ist Open Source, es liegt also ganz beim Benutzer, wie er ihn verwenden möchte. Sie können das Board und die Software nach Ihren Bedürfnissen modifizieren.

16×2-LCD-Modul

Diese Module werden häufig an vielen Stellen in Embedded-Projekten verwendet, weil sie billiger und einfacher mit Mikrocontrollern zu verbinden sind. Sie haben diese Art der Anzeige vielleicht in Taschenrechnern, Mustimetern usw. gesehen. Das hier verwendete LCD-Modul kann 16 Zeichen hintereinander anzeigen und hat zwei Zeilen. Also im Grunde hat es 16 Spalten und 2 Zeilen. Jedes angezeigte Zeichen besteht aus 5×8 Pixeln (Pixelmatrix).

Wenn Sie die Gesamtpixel auf dem gesamten LCD berechnen, ergeben sich 5x8x16x2=1280 Pixel. Was eine große Zahl ist. Um nun etwas auf dem LCD anzuzeigen, müssen wir auch die Position der Zeichen angeben. Es ist also wirklich eine schwierige Sache. Um die ordnungsgemäße Funktion zu verwalten, wird ein IC namens HD44780 verwendet. Dieser IC ruft die Daten und Befehle vom Mikrocontroller ab und führt dann eine Verarbeitung durch, damit die gewünschte Ausgabe auf dem LCD gedruckt werden kann. Dieser IC macht das Anschließen von LCDs sehr einfach. Wir können LCD in vielen unserer Projekte verwenden, um die Ausgabe durch die Sensoren oder von anderen Modulen anzuzeigen. Werfen wir einen Blick auf einige der technischen Spezifikationen des LCD-Moduls.

Lassen Sie uns eine Pin-Konfiguration von LCD sehen.

16×2 LCD Pinbelegung und Beschreibung

verbunden
PIN-Nummer Name Beschreibung
1 VSS Es ist die Masse und mit Masse der Schaltung verbunden.
2 VDD Stromversorgung für das LCD (4,7V bis 5,3V), typisch 5V
3 VE Dieser Pin wird verwendet, um den Kontrast des LCD zu manipulieren. Dazu müssen wir ein Potentiometer mit diesem Pin verbinden. Indem wir also den Knopf des Potentiometers einstellen, können wir verschiedene Kontraststufen auf dem Display anzeigen lassen.
4 RS Registerauswahl. Dieser Pin wird verwendet, um zwischen Befehls- und Datenregister zu wechseln. Dieser Pin ist mit dem Mikrocontroller
5 RW Lesen/Schreiben. Dieser Pin wird zum Lesen oder Schreiben auf LCD verwendet. Es ist im Allgemeinen geerdet, um die Daten zu schreiben.
6 DE Pin aktivieren. Dieser Pin ist mit dem Mikrocontroller verbunden und erhält 1 oder 0, um Daten zu bestätigen.
7 Datenpins (0-7) Diese Pins werden verwendet, um 8-Bit-Daten vom Mikrocontroller an das LCD zu senden. Dieses LCD kann auch im 4-Bit-Modus verwendet werden. Dazu müssen Sie nur 4 Datenpins verbinden.
8 A Anode. Dieser Pin ist ein positiver Pin für die LCD-Hintergrundbeleuchtung. Es ist völlig optional, diesen Pin zu verwenden. Verwenden Sie es, wenn Sie die Hintergrundbeleuchtung benötigen. Der Stromverbrauch wird sehr geringer, wenn Sie die Hintergrundbeleuchtung nicht verwenden, wie in den technischen Daten angegeben.
9 K Kathode. Dieser Pin ist der negative Pin für die LCD-Hintergrundbeleuchtung.

Sehen wir uns die grundlegende Schnittstelle zwischen LCD und Arduino an. Wir drucken einen Text auf das LCD, indem wir einen einfachen Code schreiben. Verbinden Sie zuerst den RS- und den EN-Pin mit den digitalen Pins 12 und 11 von Arduino. Verbinden Sie nun die Pins D4-D7 des LCD mit den digitalen Pins 5-2 von Arduino. Verbinden Sie nun RW, VSS und K mit Masse und VDD und A mit 5V von Arduino. Verbinden Sie ein Potentiometer mit VE, wie im Schaltplan gezeigt, um den Kontrast des LCD zu steuern.

Nun kommen Sie zum Programmierteil. Zuerst müssen wir die Bibliothek LiquidCrystal.h für das LCD einbinden.

#include

Nun haben wir in den nächsten beiden Zeilen Variablen für die mit Arduino verbundenen Datenpins von LCD definiert und diese dann als Argument in der lcd-Funktion übergeben, damit wir die Daten senden können Arduino zu LCD.

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

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

In der Setup-Funktion haben wir das LCD mit der Funktion lcd.begin() initialisiert. Wir haben 16 und 2 bestanden, weil das von uns verwendete LCD 16 Spalten und 2 Zeilen hat und wir auch das gesamte LCD verwenden. Wenn Sie nur einen Teil des LCD benötigen, können Sie die Argumente entsprechend übergeben.

Als nächstes drucken wir „Hello, World!“ in der nächsten Zeile. Sie können jede benutzerdefinierte Nachricht drucken, die Sie drucken möchten, aber denken Sie daran, dass die Nachricht, die die Größe des Displays überschreitet, in der nächsten Zeile gedruckt wird. Bearbeiten Sie Ihre Nachricht also entsprechend.

lcd.begin(16, 2);

lcd.print(“Hallo, Welt!”);

In der Schleifenfunktion haben wir den Cursor mithilfe der Funktion lcd.setCursor() auf Position (0,1) gesetzt. Danach drucken wir die Zeit, für die die Nachricht gedruckt wird.

lcd.setCursor(0, 1);

lcd.print(millis() / 1000);

Nachdem Sie den Code geschrieben haben, laden Sie ihn auf das Arduino-Board hoch und Sie werden sehen, dass die Nachricht auf dem Display gedruckt wird. Sie können den Kontrast ändern, indem Sie den Knopf des angeschlossenen Potentiometers drehen.

Programmieren von Arduino für die Abstandsmessung mit Ultraschallsensoren

Der Programmierteil ist für dieses Projekt wirklich sehr einfach. Beginnen Sie mit dem Einfügen der Header-Datei für LCD.

#include <LiquidCrystal.h>

In den nächsten beiden Zeilen haben wir Makros für Pin A4 (Pin 18) und A5 (Pin 19) von Arduino definiert, damit wir diese Namen anstelle des Pins verwenden können Nummern.

#define trig 18
#define echo 19

Nun haben wir in den nächsten Zeilen die Variablen für verschiedene Pins des LCD definiert, die mit Arduino verbunden sind, und sie dann an die lcd-Funktion übergeben, damit wir das LCD initialisieren können.

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

Nun haben wir die Abstandsvariable ‚d‘ und die Zeitvariable ‚t‘ definiert und mit 0 initialisiert.

float t=0,d=0;

Nun kommen Sie zur Setup-Funktion. In der ersten Zeile haben wir das LCD mit lcd.begin() initialisiert und dann in den nächsten beiden Zeilen die Pin-Modi für Trigger- und Echo-Pins als Ausgang bzw. Eingang definiert.

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

Als nächstes kommen Sie zur Schleifenfunktion. Zuerst haben wir das LCD mit der Funktion lcd.clear() gelöscht, sodass nach jeder Iteration der Schleife die vorherige Ausgabe die aktuelle Ausgabe nicht beeinflusst. In den nächsten sechs Zeilen initialisieren wir nun unseren Ultraschallsensor, indem wir den Impuls mit hohem Pegel für 10 μs senden. Und wie wir wissen, sendet der Sensor danach automatisch acht 40-kHz-Zyklen Ultraschall und überprüft seine Reflexion. In der nächsten Zeile haben wir also die Zeit vom Sensor abgerufen. Dann berechnen wir die Entfernung. Wir haben es durch 10000 geteilt, weil die Geschwindigkeit in Metern/Sekunde angegeben ist, also müssen wir es in Zentimeter umrechnen.

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("Distance: ");
  lcd.print(d);
  lcd.print(" cm");
  delay(1000); 
}

Funktionsweise der Entfernungsmessschaltung

Nachdem Sie den Code geschrieben haben, laden Sie ihn auf Arduino hoch und Sie sind fertig. Bringen Sie nun einen beliebigen Gegenstand oder Ihre Hand vor den Sensor. Überprüfen Sie den Abstand auf dem LCD. Ändern Sie ständig den Abstand des Objekts vom Sensor und Sie erhalten einen guten genauen Abstand.

Wenn wir den Sensor initialisieren, indem wir den Hochpegelimpuls für 10 μs senden, sendet der Sensor acht 40-kHz-Ultraschallzyklen, und wenn diese Zyklen von einem Hindernis reflektiert werden, werden sie zurück zum Empfänger. Nun gibt der Sensor die Zeit an, die das Ultraschallsignal vom Sender zum Hindernis und vom Hindernis zum Empfänger benötigt. Also nutzen wir diese Zeit, um den Abstand zwischen Sensor und Hindernis zu berechnen.


Industrietechnik

  1. Was ist ein Distanzsensor und seine Anwendungen
  2. Arduino-Sensor – Typen und Anwendungen
  3. Funktionsweise der PIR-Sensorschaltung und des Moduls
  4. Python- und Raspberry Pi-Temperatursensor
  5. ULTRASCHALLLEVITATION-Maschine mit ARDUINO
  6. DIY-Voltmeter mit Arduino und Smartphone
  7. IOT - Smart Jar mit ESP8266, Arduino und Ultraschallsensor
  8. Frequenz- und Duty-Cycle-Messung mit Arduino
  9. FM-Radio mit Arduino und RDA8057M
  10. Mini-Radar mit Arduino