Dalam tutorial ini kita akan membahas dan mendesain rangkaian untuk mengukur jarak. Rangkaian ini dikembangkan dengan menghubungkan sensor ultrasonik “HC-SR04” dengan mikrokontroler AVR. Sensor ini menggunakan teknik yang disebut "ECHO" yang diperoleh saat suara dipantulkan kembali setelah menabrak suatu permukaan.
Kita tahu bahwa getaran suara tidak dapat menembus benda padat. Jadi yang terjadi adalah, ketika sumber suara menghasilkan getaran, mereka bergerak di udara dengan kecepatan 220 meter per detik. Getaran ini ketika bertemu dengan telinga kita, kita gambarkan sebagai suara. Seperti yang dikatakan sebelumnya, getaran ini tidak dapat melewati benda padat, jadi ketika mereka menyerang dengan permukaan seperti dinding, getaran ini dipantulkan kembali dengan kecepatan yang sama ke sumbernya, yang disebut gema.
Sensor ultrasonik “HC-SR04” memberikan sinyal keluaran yang sebanding dengan jarak berdasarkan gema. Sensor di sini menghasilkan getaran suara dalam jangkauan ultrasonik setelah memberikan pemicu, setelah itu menunggu getaran suara kembali. Sekarang berdasarkan parameter, kecepatan suara (220m / s) dan waktu yang dibutuhkan gema untuk mencapai sumber, ini memberikan pulsa keluaran yang sebanding dengan jarak.
Seperti yang ditunjukkan pada gambar, pada awalnya kita perlu menginisiasi sensor untuk mengukur jarak, yaitu sinyal logika TINGGI pada pin pemicu sensor lebih dari 10uS, setelah itu getaran suara dikirim oleh sensor, setelah ada gema, sensor menyediakan sinyal pada pin keluaran yang lebarnya sebanding dengan jarak antara sumber dan halangan.
Jarak ini dihitung sebagai, jarak (dalam cm) = lebar keluaran pulsa (dalam uS) / 58.
Di sini lebar sinyal harus diambil dalam kelipatan uS (mikro detik atau 10 ^ -6).
Komponen Diperlukan
Perangkat keras: ATMEGA32, Power supply (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), kapasitor 1000uF, resistor 10KΩ (2 buah), sensor HC-SR04.
Perangkat lunak: Atmel studio 6.1, progisp atau flash magic.
Diagram Sirkuit dan Penjelasan Kerja
Di sini kami menggunakan PORTB untuk menghubungkan ke port data LCD (D0-D7). Siapapun yang tidak ingin bekerja dengan FUSE BITS ATMEGA32A tidak dapat menggunakan PORTC, karena PORTC berisi jenis komunikasi khusus yang hanya dapat dinonaktifkan dengan mengubah FUSEBITS.
Di sirkuit, Anda mengamati bahwa saya hanya mengambil dua pin kontrol, ini memberikan fleksibilitas pemahaman yang lebih baik. Bit kontras dan BACA / TULIS tidak sering digunakan sehingga dapat disingkat menjadi ground. Ini menempatkan LCD dalam kontras tertinggi dan mode baca. Kita hanya perlu mengontrol pin ENABLE dan RS untuk mengirim karakter dan data yang sesuai.
Koneksi yang dilakukan untuk LCD diberikan di bawah ini:
PIN1 atau VSS ke ground
PIN2 atau VDD atau VCC ke daya + 5v
PIN3 atau VEE ke ground (memberikan kontras maksimum yang terbaik untuk pemula)
PIN4 atau RS (Daftar Pilihan) ke PD6 dari UC
PIN5 atau RW (Baca / Tulis) ke ground (menempatkan LCD dalam mode baca memudahkan komunikasi untuk pengguna)
PIN6 atau E (Enable) ke PD5 dari UC
PIN7 atau D0 ke PB0 dari UC
PIN8 atau D1 ke PB1 dari UC
PIN9 atau D2 ke PB2 dari UC
PIN10 atau D3 ke PB3 dari UC
PIN11 atau D4 ke PB4 dari UC
PIN12 atau D5 ke PB5 dari UC
PIN13 atau D6 ke PB6 dari UC
PIN14 atau D7 ke PB7 dari UC
Pada rangkaian ini kita dapat melihat kita telah menggunakan komunikasi 8bit (D0-D7) namun hal ini tidak wajib dan kita dapat menggunakan komunikasi 4bit (D4-D7) tetapi dengan program komunikasi 4 bit menjadi agak rumit. Jadi seperti yang ditunjukkan pada tabel di atas kami menghubungkan 10 pin LCD ke pengontrol di mana 8 pin adalah pin data dan 2 pin untuk kontrol.
Sensor ultrasonik adalah perangkat empat pin, PIN1- VCC atau + 5V; PIN2-PEMICU; PIN3- ECHO; PIN4- GROUND. Pin pemicu adalah tempat kita memberi pemicu untuk memberi tahu sensor untuk mengukur jarak. Echo adalah pin keluaran dimana kita mendapatkan jarak berupa lebar pulsa. Pin gema di sini terhubung ke pengontrol sebagai sumber interupsi eksternal. Jadi untuk mendapatkan lebar keluaran sinyal, pin echo sensor dihubungkan dengan INT0 (interrupt 0) atau PD2.
1. Memicu sensor dengan menarik pin pemicu selama minimal 12uS.
2. Setelah echo tinggi kita mendapatkan interupsi eksternal dan kita akan memulai penghitung (mengaktifkan penghitung) di ISR (Interrupt Service Routine) yang dijalankan tepat setelah interupsi dipicu.
3. Setelah gema menjadi rendah lagi interupsi dihasilkan, kali ini kita akan menghentikan penghitung (menonaktifkan penghitung).
4. Jadi untuk pulsa tinggi ke rendah pada pin echo, kita sudah memulai penghitung dan menghentikannya. Hitungan ini diperbarui ke memori untuk mendapatkan jarak, karena kita memiliki lebar gema dalam hitungan sekarang.
5. Kami akan melakukan perhitungan lebih lanjut dalam memori untuk mendapatkan jarak dalam cm
6. Jarak ditampilkan pada layar LCD 16x2.
Untuk menyiapkan fitur di atas, kami akan mengatur register berikut:
Tiga register di atas harus diatur agar pengaturan berfungsi dan kita akan membahasnya secara singkat, BLUE (INT0): bit ini harus disetel tinggi untuk mengaktifkan interupsi eksternal0, setelah pin ini disetel, kita bisa merasakan perubahan logika pada pin PIND2.
BROWN (ISC00, ISC01): kedua bit ini disesuaikan untuk perubahan logika yang sesuai pada PD2, yang akan dianggap sebagai interupsi.
Jadi seperti yang dikatakan sebelumnya kita membutuhkan interupsi untuk memulai penghitungan dan menghentikannya. Jadi kami menetapkan ISC00 sebagai satu dan kami mendapatkan interupsi ketika ada logika LOW to HIGH di INT0; interupsi lain ketika ada logika TINGGI ke RENDAH.
RED (CS10): Bit ini hanya untuk mengaktifkan dan menonaktifkan penghitung. Meskipun bekerja bersama dengan bit lain CS10, CS12. Kami tidak melakukan perawatan awal di sini, jadi kami tidak perlu mengkhawatirkan mereka.
Beberapa hal penting yang perlu diingat di sini adalah:
Kami menggunakan jam internal ATMEGA32A yang 1MHz. Tidak ada prescaling di sini, kami tidak melakukan rutinitas pembandingan match interrupt, jadi tidak ada pengaturan register yang rumit.
Nilai hitungan setelah penghitungan disimpan dalam register TCNT1 16bit.
Juga periksa proyek ini dengan Arduino: Pengukuran jarak menggunakan Arduino
Penjelasan Pemrograman
Cara kerja sensor Pengukuran Jarak dijelaskan selangkah demi selangkah dalam program C di bawah ini.
#include // header untuk mengaktifkan kontrol aliran data melalui pin #define F_CPU 1000000 // memberi tahu pengontrol frekuensi kristal terpasang #include