Dalam tutorial ini kita akan menghubungkan sensor FLEX dengan mikrokontroler ATMEGA8. Di ATMEGA8, kami akan menggunakan fitur 10bit ADC (Analog to Digital Conversion) untuk melakukan pekerjaan ini. Sekarang ADC di ATMEGA tidak dapat menerima input lebih dari + 5V.
Apa itu Sensor Fleksibel?
Sebuah sensor FLEX adalah transduser yang mengubah perlawanan ketika bentuknya berubah. Itu ditunjukkan pada gambar di bawah ini.
Sensor ini digunakan untuk merasakan perubahan linieritas. Jadi ketika sensor FLEX dibengkokkan maka resistansinya bengkok secara drastis. Ini ditunjukkan pada gambar di bawah ini.
Sekarang untuk mengubah perubahan resistansi ini menjadi perubahan tegangan, kita akan menggunakan rangkaian pembagi tegangan. Dalam jaringan resistif ini kami memiliki satu resistansi konstan dan resistansi variabel lainnya. Seperti yang ditunjukkan pada gambar di bawah ini, R1 di sini adalah resistansi konstan dan R2 adalah sensor FLEX yang bertindak sebagai resistansi. Titik tengah cabang digunakan untuk pengukuran. Ketika resistansi R2 berubah, Vout berubah secara linier. Jadi dengan ini kita memiliki tegangan yang berubah dengan linieritas.
Sekarang hal penting untuk dicatat di sini adalah, input yang diambil oleh pengontrol untuk konversi ADC serendah 50µAmp. Efek pembebanan pembagi tegangan berbasis resistansi ini penting karena arus yang ditarik dari Vout pembagi tegangan meningkatkan persentase kesalahan, untuk saat ini kita tidak perlu khawatir tentang efek pembebanan.
Kami akan mengambil dua resistor dan membentuk rangkaian pembagi sehingga untuk Vin 25Volts, kami mendapatkan 5Volt Vout. Jadi yang harus kita lakukan adalah mengalikan nilai Vout dengan "5" dalam program untuk mendapatkan tegangan input yang sebenarnya.
Komponen Diperlukan
PERANGKAT KERAS: ATMEGA8, Power supply (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16x2LCD), kapasitor 100uF, kapasitor 100nF (5 buah), resistor 100KΩ.
PERANGKAT LUNAK: Atmel studio 6.1, progisp atau flash magic.
Diagram Sirkuit dan Penjelasan Kerja
Pada rangkaian PORTD ATMEGA8 terhubung ke port data LCD. Pada LCD 16x2 terdapat 16 pin seluruhnya jika ada lampu belakang, jika tidak ada lampu belakang akan ada 14 pin. Satu dapat memberi daya atau meninggalkan pin lampu belakang. Sekarang di 14 pin ada 8 data pin (7-14 atau D0-D7), 2 pin power supply (1 & 2 atau VSS & Vdd atau gnd & + 5V), 3 rd pin untuk kontrol kontras (VEE-kontrol seberapa tebal karakter harus ditampilkan) dan 3 pin kontrol (RS & RW & E).
Di sirkuit, Anda dapat mengamati bahwa saya hanya mengambil dua pin kontrol. 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 LCD dengan ATmega8 adalah sebagai berikut:
PIN1 atau VSS ke Ground
PIN2 atau VDD atau VCC ke daya + 5v
PIN3 atau VEE ke Ground (memberikan kontras maksimum terbaik untuk pemula)
PIN4 atau RS (Daftar Pilihan) ke PB0 dari UC
PIN5 atau RW (Baca / Tulis) ke Ground (menempatkan LCD dalam mode baca memudahkan komunikasi bagi pengguna)
PIN6 atau E (Aktifkan) ke PB1 dari UC
PIN7 atau D0 ke PD0 dari UC
PIN8 atau D1 ke PD1 dari UC
PIN9 atau D2 ke PD2 dari UC
PIN10 atau D3 ke PD3 dari UC
PIN11 atau D4 ke D4 dari UC
PIN12 atau D5 ke PD5 dari UC
PIN13 atau D6 ke PD6 dari UC
PIN14 atau D7 ke PD7 dari UC
Pada rangkaian ini kita dapat melihat bahwa kita telah menggunakan komunikasi 8bit (D0-D7) namun ini tidak wajib, kita dapat menggunakan komunikasi 4bit (D4-D7) tetapi dengan program komunikasi 4 bit menjadi agak rumit jadi kita hanya menggunakan 8 bit komunikasi. (Juga periksa tutorial ini: LCD 16x2 berinteraksi dengan mikrokontroler AVR)
Dari tabel diatas kita dapat menghubungkan 10 pin LCD ke controller dimana 8 pin adalah pin data dan 2 pin untuk kontrol.
Tegangan pada R2 tidak sepenuhnya linier; itu akan menjadi yang berisik. Untuk menyaring kapasitor noise ditempatkan di setiap resistor di rangkaian pembagi seperti yang ditunjukkan pada gambar.
Pot 1K disini untuk mengatur akurasi dari ADC. Sekarang mari kita bahas 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.
Antarmuka sensor FLEX dengan ATmega8 dijelaskan selangkah demi selangkah dalam kode C yang diberikan di bawah ini.