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

Afstandsmeting met behulp van Arduino en ultrasone sensor

Ultrasoon project voor afstandsmeting met Arduino

Ultrasone afstandsmeting is de laatste tijd een handig hulpmiddel in verschillende toepassingen. Het kan worden gebruikt in verschillende toepassingen zoals positioneren, lokaliseren, dimensioneren, selecteren, niveaumeting, regelen en profileren. Door wat wiskundige berekeningen uit te voeren met de uitvoerwaarden kunnen we ook de snelheid en verschillende andere fysieke afmetingen meten. Het toestel heeft ook toepassingen op het gebied van robotica.

Dus rekening houdend met deze toepassingen, is de Ultrasone Sensor een geweldig hulpmiddel om afstanden te meten zonder fysiek contact te maken voor kleine afstanden. Ze gebruiken het concept van ECHO om de afstand te meten. In dit project leren we hoe we de afstand kunnen meten door de HC-SR04-sensormodule te koppelen aan Arduino en de afstand weer te geven op een 16×2 LCD-scherm.

  • Gerelateerde post:Variabele voeding met Arduino UNO - Circuit en code

Circuitdiagram van project voor afstandsmeting

De interface is heel eenvoudig. Je hoeft alleen maar het schakelschema te volgen. Dus eerst zijn de Trig- en Echo-pinnen van de ultrasone sensor verbonden met A4 en A5 van Arduino UNO en VCC en GND zijn verbonden met 5V en GND van Arduino.

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

  • Gerelateerde post:automatische deurbel met objectdetectie door Arduino

Vereiste componenten

  • HC-SR04 ultrasone sensormodule
  • Arduino UNO
  • 16×2 LCD-scherm
  • Potentiometer
  • Jumperkabels en verbindingsdraden

Ultrasone sensormodule

De hier gebruikte sensormodule is HC-SR04 , wat een contactloos ultrasoon meetapparaat is. Deze kleine module kan de afstand meten binnen het bereik van 2 cm - 400 cm. Het is een erg nauwkeurige sensor, hij kan tot 3 mm meten.

De sensor bestaat uit een ultrasone zender en een ultrasone ontvanger. Het werkingsprincipe is heel eenvoudig. Ten eerste verzendt de IO-trigger een signaal op hoog niveau gedurende 10μs. Vervolgens zendt de sensormodule acht cycli van 40 kHz ultrasoon geluid uit en detecteert of het pulssignaal wordt terugontvangen of niet. En als het signaal via een hoog niveau wordt ontvangen, is de tijdsduur waarmee de IO-trigger hoog blijft de tijd vanaf het verzenden tot het ontvangen van het signaal.

Afstand =(Tijd van hoog niveau x geluidssnelheid in de lucht (340M/s))/2

  • Gerelateerde post:Automatische nachtlamp met Arduino
Tijdschema

Zoals hierboven besproken, werkt de module op de ECHO van het geluid. Voor het triggeren van de module wordt een puls van ongeveer 10μs verzonden. Na dit proces stuurt de module acht cycli van 40 kHz ultrasoon geluid en controleert de reflectie ervan. Dus als er een obstakel is, slaat het signaal ermee toe en keert terug naar de ontvanger. En nu wordt de afstand berekend met een eenvoudige formule die hierboven is besproken. We hebben het door 2 gedeeld omdat deze tijd de totale tijd is om het obstakel te bereiken en terug te komen naar de ontvanger, dus de tijd die nodig is om het obstakel te bereiken is de helft van de totale tijd. Het timingdiagram van deze sensor wordt hieronder gegeven:

Technische specificaties
  • Bedrijfsspanning:5V
  • Bedrijfsstroom:15mA
  • Bedrijfsfrequentie:40Hz
  • Meethoek:15°
  • Bereik:2 cm tot 400 cm
Pin-outs van ultrasone sensor HC-SR04
  • VCC:voeding voor de module (meestal +5V)
  • Trig:wordt gebruikt om de module te activeren.
  • Echo:het is een o/p-pin. Het blijft hoog gedurende de tijd dat het signaal van de zender naar het obstakel gaat en vervolgens terugkeert naar de ontvanger.
  • GND:aangesloten op aarde van het hoofdcircuit.

Zoals hierboven besproken, werkt de module volgens het principe van ECHO van geluid. Dus wanneer we de module verbinden met een microcontroller, dan wordt eerst de module getriggerd via de Trig-pin en wordt een puls van hoog niveau verzonden voor 10μs. Daarna wachten we op de ontvangst van de ECHO. De microcontroller kan de tijd berekenen. En dan wordt de afstand berekend met de hierboven besproken formule.

  • Gerelateerde post: Wat is Crowbar Circuit? Ontwerp en bediening

Arduino UNO

Arduino is een open source microcontroller die veel wordt gebruikt in veel kleine en grootschalige embedded projecten. De Arduino die in dit project wordt gebruikt, is Arduino-UNO. De reden om deze Arduino te gebruiken is dat hij goedkoper en makkelijk te interfacen 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 de behoeften.

  • Verwante post: Eenvoudig overspanningsbeveiligingscircuit met zenerdiode

16×2 LCD-module

Deze modules worden vaak gebruikt op veel plaatsen in embedded projecten, omdat ze stilletjes goedkoper zijn en gemakkelijk te koppelen zijn met microcontrollers. U hebt dit type weergave misschien gezien in rekenmachines, mustimeters enz. De hier gebruikte LCD-module kan 16 tekens achter elkaar weergeven en heeft twee rijen. Dus eigenlijk heeft het 16 kolommen en 2 rijen. Elk weergegeven teken bestaat uit 5×8 pixels (pixelmatrix).

Als u het totale aantal pixels op het hele LCD-scherm berekent, komt dit uit op 5x8x16x2=1280 pixels. Wat een groot aantal is. Om nu iets op het LCD-scherm weer te geven, moeten we ook de positie van tekens specificeren. Het is dus echt een moeilijk iets om te doen. Dus om de juiste werking te beheren, wordt een IC met de naam HD44780 gebruikt. Dit IC haalt de data en commando's op van de microcontroller en doet vervolgens wat bewerkingen zodat de gewenste output op het LCD kan worden afgedrukt. Dit IC maakt de interface van LCD zeer eenvoudig. We kunnen LCD in veel van onze projecten gebruiken om de output via de sensoren of van andere modules weer te geven. Laten we eens kijken naar enkele technische specificaties van de LCD-module.

  • Verwante post: 12V naar 5V-convertercircuit
  • Bedrijfsspanning:4,7V tot 5,3V
  • Stroomverbruik:1mA zonder gebruik van achtergrondverlichting
  • 2 regels met 16 karakters in elke regel.
  • Elk teken bestaat uit een matrix van 5×8 pixels.
  • Het display is alfanumeriek, dus het kan zowel cijfers als alfabetten en speciale tekens weergeven.
  • Het wordt geleverd in een groen/blauwe variant met achtergrondverlichting.

Laten we een pinconfiguratie van LCD bekijken.

16×2 LCD pinout en beschrijving

Pincode Naam Beschrijving
1 VSS Het is de aarde en is verbonden met de aarde van het circuit.
2 VDD Voeding voor het LCD-scherm (4,7V tot 5,3V), typisch 5V
3 VE Deze pin wordt gebruikt om het contrast van het LCD-scherm te manipuleren. Om dit te doen, moeten we een potentiometer op deze pin aansluiten. Dus door de knop van de potentiometer aan te passen, kunnen we verschillende contrastniveaus op het scherm krijgen.
4 RS Registreren Selecteren. Deze pin wordt gebruikt om te schakelen tussen commando en dataregister. Deze pin is verbonden met Microcontroller
5 RW Lees/Schrijf. Deze pin wordt gebruikt om te lezen of te schrijven naar LCD. Het is over het algemeen geaard om de gegevens te schrijven.
6 NL Pincode inschakelen. Deze pin is verbonden met de microcontroller en krijgt 1 of 0 om gegevens te bevestigen.
7 Data pinnen (0-7) Deze pinnen worden gebruikt om 8-bits gegevens vanaf de microcontroller naar het LCD-scherm te sturen. Dit LCD-scherm kan ook in 4-bits modus worden gebruikt. Hiervoor hoef je maar 4 datapinnen aan te sluiten.
8 A Anode. Deze pin is een positieve pin voor de LCD-achtergrondverlichting. Het is volledig optioneel om deze pin te gebruiken. Gebruik het als je de achtergrondverlichting nodig hebt. Het stroomverbruik wordt veel minder als u de achtergrondverlichting niet gebruikt zoals aangegeven in de technische specificaties.
9 K Kathode. Deze pin is een negatieve pin voor LCD-achtergrondverlichting.

Laten we de basisinterface van LCD met Arduino eens bekijken. We zullen wat tekst op het LCD-scherm afdrukken door een eenvoudige code te schrijven. Sluit eerst de RS- en EN-pin aan op digitale pin 12 en 11 van Arduino. Sluit nu de D4-D7-pinnen van het LCD-scherm aan op de digitale pinnen 5-2 van Arduino. Verbind nu RW, VSS en K met aarde en VDD en A met 5V van Arduino. Sluit een potentiometer aan op VE zoals weergegeven in het schakelschema om het contrast van het LCD-scherm te regelen.

  • Gerelateerde post:Elektronisch project verkeerslichtregeling met IC 4017 &555 Timer

Kom nu naar het codeergedeelte. Eerst moeten we de bibliotheek LiquidCrystal.h voor het LCD-scherm opnemen.

#include

In de volgende twee regels hebben we variabelen gedefinieerd voor de data-pinnen van LCD die zijn verbonden met Arduino en deze vervolgens als argument in de lcd-functie doorgegeven, zodat we de gegevens van Arduino naar LCD.

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 hebben we het LCD-scherm geïnitialiseerd door de lcd.begin()-functie te gebruiken. We zijn 16 en 2 gepasseerd omdat het LCD-scherm dat we gebruiken 16 kolommen en 2 rijen heeft en we ook het hele LCD-scherm gebruiken. Als u slechts een deel van het LCD-scherm nodig heeft, kunt u de argumenten dienovereenkomstig doorgeven.

Vervolgens drukken we 'Hello, World!' in de volgende regel. U kunt elk aangepast bericht afdrukken dat u wilt afdrukken, maar houd er rekening mee dat het bericht dat groter is dan het display, op de volgende regel wordt afgedrukt. Manipuleer uw bericht dus dienovereenkomstig.

lcd.begin(16, 2);

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

In de loop-functie hebben we de cursor op positie (0,1) gezet met behulp van de functie lcd.setCursor(). Hierna drukken we de tijd af waarvoor het bericht wordt afgedrukt.

lcd.setCursor(0, 1);

lcd.print(millis() / 1000);

Na het schrijven van de code, upload deze naar het Arduino-bord en je zult zien dat het bericht op het display wordt afgedrukt. U kunt het contrast wijzigen door aan de knop van de aangesloten potentiometer te draaien.

  • Gerelateerde post:Klapschakelaarcircuit met IC 555-timer en zonder timer

Arduino programmeren voor ultrasone sensorafstandsmeting

Het codeergedeelte is echt heel gemakkelijk voor dit project. Begin met het opnemen van het headerbestand voor LCD.

#include <LiquidCrystal.h>

In de volgende twee regels hebben we macro's gedefinieerd voor pin A4 (pin 18) en A5 (pin 19) van Arduino, zodat we die namen kunnen gebruiken in plaats van de pin nummers.

#define trig 18
#define echo 19

In de volgende regels hebben we de variabelen gedefinieerd voor verschillende pinnen van LCD die zijn aangesloten op Arduino en deze vervolgens doorgegeven aan de lcd-functie zodat we de LCD kunnen initialiseren.

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

Nu hebben we de afstandsvariabele 'd' en tijdvariabele 't' gedefinieerd en deze met 0 geïnitialiseerd.

float t=0,d=0;

Kom nu naar de setup-functie. In de eerste regel hebben we het LCD-scherm geïnitialiseerd met behulp van lcd.begin() en in de volgende twee regels hebben we de pin-modi voor trigger- en echo-pinnen gedefinieerd als respectievelijk output en input.

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

Kom vervolgens naar de loop-functie. Ten eerste hebben we het LCD-scherm gewist met de functie lcd.clear() zodat na elke iteratie van de lus de vorige uitvoer de huidige uitvoer niet beïnvloedt. Nu, in de volgende zes regels, initialiseren we onze ultrasone sensor door de puls op hoog niveau gedurende 10μs te verzenden. En zoals we weten, stuurt de sensor hierna automatisch acht 40 kHz ultrasoon geluid en controleert de reflectie ervan. Dus in de volgende regel hebben we de tijd van de sensor gehaald. Dan berekenen we de afstand. We hebben het gedeeld door 10000 omdat de snelheid in meter/sec is, dus we moeten het in centimeters omrekenen.

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); 
}
  • Gerelateerde post: Automatisch schakelschema en bediening van de badkamerlichtschakelaar

Werking van afstandsmeetcircuit

Na het schrijven van de code, upload deze naar Arduino en je bent helemaal klaar. Breng nu een voorwerp of uw hand voor de sensor. Controleer de afstand op het LCD-scherm. Blijf de afstand van het object tot de sensor veranderen en je krijgt een goede nauwkeurige afstand.

Als we de sensor initialiseren door de puls op hoog niveau gedurende 10μs te verzenden, stuurt de sensor acht ultrasone cycli van 40 kHz en als deze cycli worden weerkaatst door een obstakel, worden ze teruggekaatst naar de ontvanger. Nu geeft de sensor de tijd aan die nodig is om het ultrasone signaal van zender naar obstakel en van obstakel naar ontvanger te verplaatsen. We gebruiken deze tijd dus om de afstand tussen de sensor en het obstakel te berekenen.


Industriële technologie

  1. Wat is de werking van een afstandssensor en zijn toepassingen
  2. Arduino-sensor – Typen en toepassingen
  3. PIR-sensorcircuit en module werken
  4. Python- en Raspberry Pi-temperatuursensor
  5. ULTRASONE LEVITATION-machine die ARDUINO gebruikt
  6. DIY voltmeter met Arduino en smartphone
  7. IOT - Smart Jar met ESP8266, Arduino en ultrasone sensor
  8. Frequentie- en werkcyclusmeting met Arduino
  9. FM-radio met Arduino en RDA8057M
  10. Mini-radar met Arduino
  11. Touch Controlled Light met Arduino