Dalam tutorial ini kita akan membuat antarmuka modul joystick dengan mikrokontroler atmega8. A JOY STICK adalah modul input yang digunakan untuk komunikasi. Ini pada dasarnya memudahkan komunikasi mesin pengguna. Joystick ditunjukkan pada gambar di bawah ini.
Modul joystick memiliki dua sumbu - satu horizontal dan lainnya vertikal. Setiap sumbu joystick dipasang ke potensiometer atau pot atau resistansi variabel. Poin tengah diturunkan sebagai Rx dan Ry. Pin ini dibawa sebagai pin sinyal keluaran untuk JOYSTICK. Ketika tongkat digerakkan sepanjang sumbu horizontal, dengan tegangan suplai, tegangan pada pin Rx berubah.
Tegangan pada Rx bertambah saat digerakkan maju, tegangan pada pin Rx berkurang saat digerakkan mundur. Demikian pula tegangan di Ry meningkat saat digerakkan ke atas, tegangan di pin Ry berkurang saat digerakkan ke bawah.
Jadi kami memiliki empat arah JOYSTICK di dua saluran ADC. Pada kasus normal kami memiliki 1Volt pada setiap pin dalam keadaan normal. Ketika tongkat digerakkan tegangan pada setiap pin naik atau turun tergantung arah. Jadi empat arah sebagai (0V, 5V pada saluran 0) untuk sumbu x; (0V, 5V pada saluran 1) untuk sumbu y.
Kami akan menggunakan dua saluran ADC ATMEGA8 untuk melakukan pekerjaan itu. Kami akan menggunakan saluran 0 dan saluran 1.
Komponen Diperlukan
Hardware: ATMEGA8, power supply (5v), AVR-ISP PROGRAMMER, LED (4 buah), kapasitor 1000uF, kapasitor 100nF (5 buah), resistor 1KΩ (6 buah).
Perangkat lunak: Atmel studio 6.1, progisp atau flash magic.
Diagram Sirkuit dan Penjelasan Kerja
Tegangan di JOYSTICK tidak sepenuhnya linier; itu akan menjadi yang berisik. Untuk menyaring kebisingan kapasitor ditempatkan di setiap resistor di sirkuit seperti yang ditunjukkan pada gambar.
Seperti yang ditunjukkan pada gambar, ada empat LED di sirkuit. Setiap LED mewakili setiap arah JOYSTICK. Saat tongkat digerakkan ke satu arah, maka LED yang sesuai akan menyala.
Sebelum melangkah lebih jauh kita perlu berbicara tentang ADC ATMEGA8, Di ATMEGA8, kita dapat memberikan input Analog ke salah satu dari EMPAT saluran PORTC, tidak masalah saluran mana yang kita pilih karena semuanya sama, kita akan memilih saluran 0 atau PIN0 dari PORTC.
Di ATMEGA8, ADC memiliki resolusi 10 bit, sehingga pengontrol dapat mendeteksi perubahan minimum Vref / 2 ^ 10, jadi jika tegangan referensi 5V kita mendapatkan kenaikan keluaran digital untuk setiap 5/2 ^ 10 = 5mV. Jadi untuk setiap kenaikan 5mV dalam input, kami akan memiliki kenaikan satu pada output digital.
Sekarang kita perlu mengatur register ADC berdasarkan ketentuan berikut, 1. Pertama-tama kita perlu mengaktifkan fitur ADC di ADC.
2. Disini akan didapat tegangan input maksimum untuk konversi ADC + 5V. Jadi kita dapat mengatur nilai maksimum atau referensi ADC ke 5V.
3. Kontroler memiliki fitur konversi pemicu yang berarti konversi ADC terjadi hanya setelah pemicu eksternal, karena kita tidak ingin perlu menyetel register untuk ADC agar berjalan dalam mode berjalan bebas berkelanjutan.
4. Untuk ADC apa pun, frekuensi konversi (Nilai analog ke nilai Digital) dan keakuratan keluaran digital berbanding terbalik. Jadi untuk akurasi keluaran digital yang lebih baik kita harus memilih frekuensi yang lebih rendah. Untuk jam ADC normal kita mengatur presale ADC ke nilai maksimum (2). Karena kita menggunakan clock internal 1MHZ, clock ADC akan menjadi (1000000/2).
Inilah empat hal yang perlu kita ketahui untuk memulai ADC.
Keempat fitur di atas diatur oleh dua register:
MERAH (ADEN): Bit ini harus disetel untuk mengaktifkan fitur ADC ATMEGA.
BIRU (REFS1, REFS0): Kedua bit ini digunakan untuk mengatur tegangan referensi (atau tegangan input maks yang akan kami berikan). Karena kami ingin memiliki tegangan referensi 5V, REFS0 harus diatur, oleh tabel.
KUNING (ADFR): Bit ini harus disetel agar ADC terus berjalan (mode berjalan bebas).
PINK (MUX0-MUX3): Empat bit ini untuk memberi tahu saluran input. Karena kita akan menggunakan ADC0 atau PIN0, kita tidak perlu mengatur bit apa pun seperti pada tabel.
BROWN (ADPS0-ADPS2): ketiga bit ini untuk mengatur prescalar untuk ADC. Karena kami menggunakan prescalar 2, kami harus menetapkan satu bit.
DARK GREEN (ADSC): bit ini diatur untuk ADC untuk memulai konversi. Bit ini dapat dinonaktifkan dalam program ketika kita perlu menghentikan konversi.