Manufaktur industri
Industri Internet of Things | bahan industri | Pemeliharaan dan Perbaikan Peralatan | Pemrograman industri |
home  MfgRobots >> Manufaktur industri >  >> Manufacturing Technology >> Proses manufaktur

Sensor Ultrasonik HC-SR04 dan Arduino – Panduan Lengkap

Dalam tutorial ini kita akan mempelajari cara HC-SR04 sensor ultrasonik cara kerja dan cara menggunakannya dengan Arduino . Ini adalah sensor paling populer untuk mengukur jarak dan membuat robot penghindar rintangan dengan Arduino.

Saya telah menggunakan sensor ultrasonik HC-SR04 untuk membangun beberapa proyek Arduino yang keren dan Anda dapat memeriksanya di sini:

  • Radar Arduino (Sonar)
  • Pengukur Jangkauan dan Tingkat Semangat Digital
  • Proyek Sistem Keamanan dan Alarm
  • Robot Semut Semut Arduino

Anda dapat menonton video berikut atau membaca tutorial tertulis di bawah ini. Ini memiliki informasi dan contoh tambahan untuk sensor, termasuk spesifikasi, pinout, diagram pengkabelan, kode, dan lainnya.

Ikhtisar Perangkat Keras HC-SR04

HC-SR04 adalah sensor pengukur jarak yang terjangkau dan mudah digunakan yang memiliki jangkauan dari 2cm hingga 400cm (sekitar satu inci hingga 13 kaki).

Sensor ini terdiri dari dua transduser ultrasonik. Salah satunya adalah pemancar yang mengeluarkan pulsa suara ultrasonik dan yang lainnya adalah penerima yang mendengarkan gelombang pantul. Ini pada dasarnya adalah SONAR yang digunakan di kapal selam untuk mendeteksi objek bawah air.

Berikut adalah spesifikasi utamanya:

Tegangan Operasi 5V DC
Beroperasi Saat Ini 15mA
Frekuensi Operasi 40KHz
Rentang Minimum 2cm / 1 inci
Rentang Maks 400cm / 13 kaki
Akurasi 3mm
Mengukur Sudut <15°
Dimensi 45 x 20 x 15mm

Pinout Sensor Ultrasonik HC-SR04

Ini pinout sensornya:

Sensor ini memiliki 4 pin. VCC dan GND buka 5V dan GND pin pada Arduino, dan Trig dan Gema pergi ke pin Arduino digital. Menggunakan Trik pin kami mengirim gelombang ultrasound dari pemancar, dan dengan Echo pin kita mendengarkan sinyal yang dipantulkan.

Bagaimana Sensor Jarak Ultrasonik HC-SR04 Bekerja?

Ini memancarkan ultrasound pada 40.000 Hz yang bergerak di udara dan jika ada objek atau hambatan di jalurnya, Ini akan memantul kembali ke modul. Mempertimbangkan waktu tempuh dan kecepatan suara, Anda dapat menghitung jaraknya.

Untuk menghasilkan ultrasound, kita perlu mengatur pin Trigonometri pada Status Tinggi selama 10 s. Itu akan mengirimkan ledakan ultrasonik 8 siklus yang akan bergerak dengan kecepatan suara. Pin Echo langsung menjadi tinggi setelah 8 siklus ledakan ultrasonik dikirim, dan mulai mendengarkan atau menunggu gelombang tersebut dipantulkan dari suatu objek.

Jika tidak ada objek atau pulsa yang dipantulkan, pin Echo akan habis waktu setelah 38 ms dan kembali ke status rendah.

Jika kami menerima pulsa yang dipantulkan, pin Echo akan turun lebih cepat dari 38ms itu. Berdasarkan lamanya waktu pin Echo HIGH, kita dapat menentukan jarak yang ditempuh gelombang suara, dengan demikian jarak dari sensor ke objek.

Untuk itu kami menggunakan rumus dasar berikut untuk menghitung jarak:

Jarak =Kecepatan x Waktu

Kami benar-benar tahu kecepatan dan nilai waktu. Waktu adalah jumlah waktu pin Echo TINGGI, dan kecepatannya adalah kecepatan suara yaitu 340m/s. Ada satu langkah tambahan yang perlu kita lakukan, yaitu membagi hasil akhirnya dengan 2. dan itu karena kita mengukur durasi yang dibutuhkan gelombang suara untuk merambat ke objek dan memantul kembali.

Katakanlah pin Echo TINGGI selama 2 ms. Jika kita ingin mendapatkan hasil jarak dalam cm, kita dapat mengubah nilai kecepatan suara dari 340m/s menjadi 34cm/ms.

Jarak =(Kecepatan x Waktu) / 2 =(34cm/md x 1,5md) / 2 =25,5cm.

Jadi, jika pin Echo HIGH selama 2 ms (yang kami ukur menggunakan pulseIn() fungsi), jarak dari sensor ke objek adalah 34cm.

Cara Menghubungkan Sensor Ultrasonik HC-SR04 ke Arduino

Inilah cara kita perlu menghubungkan sensor HC-SR04 ke papan Arduino.

Pin Ground dan VCC dari modul harus dihubungkan ke Ground dan pin 5 volt masing-masing pada Arduino Board dan pin trigonometri dan echo ke pin I/O Digital pada Arduino Board.

Anda bisa mendapatkan kebutuhan komponen ini untuk tutorial ini dari salah satu situs di bawah:

  • Sensor Ultrasonik HC-SR04 ………… 
  • Dewan Arduino ……………………………
  • Breadboard dan Kabel Lompat ……… 

HC-SR04 Sensor Ultrasonik Kode Arduino

Berikut kode untuk mengukur jarak menggunakan sensor ultrasonik HC-SR04 dan Arduino.



/*
  Ultrasonic Sensor HC-SR04 and Arduino Tutorial

  by Dejan Nedelkovski,
  www.HowToMechatronics.com

*/
// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;
// defines variables
long duration;
int distance;
void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}
void loop() {
  // Clears the trigPin
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  // Sets the trigPin on HIGH state for 10 micro seconds
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  // Reads the echoPin, returns the sound wave travel time in microseconds
  duration = pulseIn(echoPin, HIGH);
  // Calculating the distance
  distance = duration * 0.034 / 2;
  // Prints the distance on the Serial Monitor
  Serial.print("Distance: ");
  Serial.println(distance);
}Code language: Arduino (arduino)

Penjelasan Kode

Pertama kita harus mendefinisikan pin Trig dan Echo. Dalam hal ini adalah pin nomor 9 dan 10 pada Arduino Board dan diberi nama trigPin dan echoPin. Kemudian kita membutuhkan variabel Panjang, bernama “durasi” untuk waktu tempuh yang akan kita dapatkan dari sensor dan variabel bilangan bulat untuk jarak.

// defines pins numbers
const int trigPin = 9;
const int echoPin = 10;

// defines variables
long duration;
int distance;Code language: Arduino (arduino)

Dalam setup kita harus mendefinisikan trigPin sebagai output dan echoPin sebagai Input dan juga memulai komunikasi serial untuk menampilkan hasilnya pada monitor serial.

void setup() {
  pinMode(trigPin, OUTPUT); // Sets the trigPin as an Output
  pinMode(echoPin, INPUT); // Sets the echoPin as an Input
  Serial.begin(9600); // Starts the serial communication
}Code language: Arduino (arduino)

Dalam loop pertama kita harus memastikan bahwa trigPin jelas sehingga Anda harus menyetel pin tersebut pada Status RENDAH hanya selama 2 detik. Sekarang untuk menghasilkan gelombang suara Ultra, kita harus menyetel trigPin ke HIGH State selama 10 s.

// Clears the trigPin
digitalWrite(trigPin, LOW);
delayMicroseconds(2);

// Sets the trigPin on HIGH state for 10 micro seconds
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);Code language: Arduino (arduino)

Menggunakan pulseIn() fungsi kita membaca waktu perjalanan dan memasukkan nilai itu ke dalam variabel "durasi". Fungsi ini memiliki 2 parameter, yang pertama adalah nama dari pin Echo dan yang kedua adalah status dari pulsa yang kita baca, baik High maupun Low.

// Reads the echoPin, returns the sound wave travel time in microseconds
duration = pulseIn(echoPin, HIGH);Code language: Arduino (arduino)

Dalam hal ini, kita memerlukan set ini ke HIGH, karena sensor HC-SR04 menyetel pin Echo ke High setelah mengirim gelombang ultrasonik 8 siklus dari pemancar. Ini benar-benar memulai pengaturan waktu dan begitu kami menerima gelombang suara yang dipantulkan, pin Echo akan menuju ke Rendah yang menghentikan pengaturan waktu. Pada akhirnya fungsi akan mengembalikan panjang pulsa dalam mikrodetik.

Untuk mendapatkan jarak, kita akan mengalikan durasi dengan 0,034 dan membaginya dengan 2 seperti yang telah kita jelaskan persamaan ini sebelumnya.

// Calculating the distance
distance= duration*0.034/2;

// Prints the distance on the Serial Monitor
Serial.print("Distance: ");
Serial.println(distance);Code language: Arduino (arduino)

Pada akhirnya kita akan mencetak nilai jarak pada Serial Monitor.

Contoh Sensor Ultrasonic Arduino dan Tampilan LCD

Berikut contoh lain cara menggunakan sensor ultrasonik dengan Arduino dan menampilkan hasilnya di LCD.

Anda dapat menghubungkan sensor ultrasonik dan LDC sebagai berikut:

Kode yang mengukur jarak hampir sama dengan contoh dasar. Di sini, alih-alih mencetak hasilnya di monitor serial, kami mencetaknya di LCD. Jika Anda memerlukan detail lebih lanjut tentang cara menggunakan dan menghubungkan LCD dengan Arduino, Anda dapat memeriksa tutorial khusus saya untuk itu.

/*
  Ultrasonic Sensor HC-SR04 and Arduino Tutorial

  by Dejan Nedelkovski,
  www.HowToMechatronics.com

*/
#include <LiquidCrystal.h> // includes the LiquidCrystal Library
LiquidCrystal lcd(1, 2, 4, 5, 6, 7); // Creates an LCD object. Parameters: (rs, enable, d4, d5, d6, d7)
const int trigPin = 9;
const int echoPin = 10;
long duration;
int distanceCm, distanceInch;
void setup() {
  lcd.begin(16, 2); // Initializes the interface to the LCD screen, and specifies the dimensions (width and height) of the display
  pinMode(trigPin, OUTPUT);
  pinMode(echoPin, INPUT);
}
void loop() {
  digitalWrite(trigPin, LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH);
  distanceCm = duration * 0.034 / 2;
  distanceInch = duration * 0.0133 / 2;
  lcd.setCursor(0, 0); // Sets the location at which subsequent text written to the LCD will be displayed
  lcd.print("Distance: "); // Prints string "Distance" on the LCD
  lcd.print(distanceCm); // Prints the distance value from the sensor
  lcd.print(" cm");
  delay(10);
  lcd.setCursor(0, 1);
  lcd.print("Distance: ");
  lcd.print(distanceInch);
  lcd.print(" inch");
  delay(10);
}Code language: Arduino (arduino)

Contoh Kode Menggunakan Pustaka NewPing

Sebenarnya ada cara yang lebih sederhana dan lebih baik untuk memprogram Arduino untuk mengukur jarak menggunakan sensor ultrasonik HC-SR04, dan itu menggunakan perpustakaan NewPing.

Dalam kode yang dijelaskan sebelumnya, kami secara manual memicu sensor dan mengukur durasi pulsa sinyal yang diterima. Kemudian menurut hasil tersebut kami menghitung jarak berdasarkan itu. Dengan menggunakan library NewPing, kita bisa mendapatkan jarak hanya dengan satu baris kode.

Berikut contoh kodenya:

#include <NewPing.h>

#define TRIGGER_PIN  9
#define ECHO_PIN     10
#define MAX_DISTANCE 400 // Maximum distance we want to measure (in centimeters).


NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); // NewPing setup of pins and maximum distance.

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(50);                    // Wait 50ms between pings (about 20 pings/sec). 29ms should be the shortest delay between pings.

  int distance = sonar.ping_cm(); // Send ping, get distance in cm and print result (0 = outside set distance range)

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println("cm");
}Code language: Arduino (arduino)

Ini jauh lebih sederhana daripada contoh sebelumnya. Kami hanya menggunakan panggilan ping_cm() metode pada objek sonar NewPing dan kami mendapatkan jarak dalam sentimeter. Jika kita ingin jarak dalam inci kita dapat menggunakan ping_in() sebagai gantinya.

Perpustakaan juga memiliki beberapa fitur berguna lainnya. Misalnya, dengan ping_median(iterasi [, max_cm_distance]) metode, kita bisa mendapatkan hasil yang lebih akurat, karena mengembalikan median, atau nilai tengah dari beberapa pengukuran. Dengan iterasi parameter kami mengatur jumlah sampel yang akan diambil program untuk menghitung nilai tengah. Nilai default adalah 5 iterasi. ping_median() mengembalikan durasi pulsa yang diterima dalam mikrodetik.

Namun demikian, untuk info dan detail lebih lanjut, Anda dapat memeriksa halaman wiki NewPing.

Meningkatkan Akurasi Sensor Jarak HC-SR04 dengan Sensor Suhu DHT22

Sensor HC-SR04 cukup akurat, tetapi karena kerjanya bergantung pada kecepatan suara, untuk hasil yang lebih akurat, kita juga harus mempertimbangkan suhu udara. Kecepatan suara dapat berubah secara signifikan seiring dengan perubahan suhu udara. Misalnya, pada 20°C, kecepatan suara sekitar 340m/s, tetapi pada -20°C kecepatan suara sekitar 315m/s. Kelembaban relatif mempengaruhi kecepatan juga.

Jadi, jika kita menggunakan sensor ini untuk mengukur jarak pada berbagai suhu, kita harus menerapkan kompensasi suhu, dan kita dapat melakukannya dengan rumus berikut:

Kecepatan =331,4 + 0,6 x Suhu + 0,0124 x Kelembaban_Relatif

Ini contohnya:

Di sepanjang sensor ultrasonik HC-SR04, kami akan menggunakan sensor DHT11 / DHT22 untuk mengukur suhu dan kelembaban lingkungan, dan menyesuaikan nilai kecepatan suara yang sesuai.

Kode Arduino

/*
  Example made by Dejan, How To Mechatronics,
  https://howtomechatronics.com/

*/

#include <NewPing.h>  // https://bitbucket.org/teckel12/arduino-new-ping/wiki/Home
#include "dht.h"      // https://github.com/RobTillaart/DHTlib

#define TRIGGER_PIN  9
#define ECHO_PIN     10
#define MAX_DISTANCE 400
#define dht22 5 // DHT22 temperature and humidity sensor

NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
dht DHT; // Creats a DHT object

int readDHT, temp, hum;
float speedOfSound, distance, duration;

void setup() {
  Serial.begin(9600);
}

void loop() {
  delay(100);

  // Read temperature and humidity from DHT22 sensor
  readDHT = DHT.read22(dht22); // Reads the data from the sensor
  temp = DHT.temperature; // Gets the values of the temperature
  hum = DHT.humidity; // Gets the values of the humidity


  speedOfSound = 331.4 + (0.6 * temp) + (0.0124 * hum); // Calculate speed of sound in m/s

  duration = sonar.ping_median(10); // 10 interations - returns duration in microseconds
  duration = duration/1000000; // Convert mircroseconds to seconds
  distance = (speedOfSound * duration)/2;
  distance = distance * 100; // meters to centimeters

  Serial.print("Distance: ");
  Serial.print(distance);
  Serial.println("cm");

}Code language: Arduino (arduino)

Jadi, pertama-tama kita membaca nilai suhu dan kelembaban dari sensor DHT22, dan kemudian menggunakan nilai tersebut untuk menghitung kecepatan suara. Kemudian kita mendapatkan durasi perjalanan gelombang suara dalam mikrodetik, mengubahnya menjadi detik, dan menghitung jarak dari sensor ke objek dalam sentimeter.

Dimensi HC-SR04 dan Model 3D

Saya membuat model 3D dari sensor ultrasonik HC-SR04 jika Anda membutuhkannya saat membuat proyek berikutnya dengannya. Anda dapat mengunduhnya dari tautan di bawah ini.

Anda dapat menemukan dan mengunduh model 3D ini di Thans.

Berikut adalah dimensi sensor HC-SR04:

Harap diingat bahwa mereka terkadang dapat sedikit berbeda tergantung pada produsennya.

Kesimpulan

Jadi, kami telah membahas hampir semua hal yang perlu kami ketahui tentang penggunaan sensor Ultrasonik HC-SR04 dengan Arduino. Ini adalah sensor yang bagus untuk banyak proyek elektronik DIY yang membutuhkan pengukuran jarak non-kontak, deteksi keberadaan atau objek, ketinggian atau posisi sesuatu, dll.

Saya sudah menyebutkan proyek yang saya buat dengan sensor ini di awal posting. Berikut beberapa proyek keren lainnya yang menggunakan sensor HC-SR04 dan Arduino:

  • Tempat Sampah Sensor Gerak Otomatis Tanpa Sentuh
  • Kontrol Cahaya Cerdas Gerakan Tangan
  • Levitasi Akustik Mini
  • Robot Penghindar Rintangan

Saya harap Anda menikmati tutorial ini dan belajar sesuatu yang baru. Jangan ragu untuk mengajukan pertanyaan apa pun di bagian komentar di bawah dan jangan lupa untuk melihat koleksi lengkap 30+ Proyek Arduino saya.


Proses manufaktur

  1. Apa itu Sensor Ultrasonik HC-SR04 :Cara Kerja dan Aplikasinya
  2. Sensor Arduino – Jenis dan Aplikasi
  3. Sensor Ultrasonik (HC-SR04) + Raspberry Pi
  4. HC-SR04 Ultrasonic Range Sensor pada Raspberry Pi
  5. Sensor DHT11 dengan LED dan Speaker Piezo
  6. FlickMote
  7. IOT - Smart Jar Menggunakan ESP8266, Arduino dan Sensor Ultrasonik
  8. Radar Mini dengan Arduino
  9. Detektor Jangkauan Ultrasonik Dengan Arduino
  10. Sensor Ultrasonik dengan Alarm, LCD, dan Suhu