Dalam tutorial ini kita akan menghubungkan sensor FLEX dengan mikrokontroler ATMEGA8. Di ATMEGA8, kita akan menggunakan ciri ADC 10bit (Analog ke Digital Conversion) untuk melakukan pekerjaan ini. Sekarang ADC di ATMEGA tidak dapat mengambil input lebih dari + 5V.
Apa itu Flex Sensor?
A sensor FLEX adalah transduser yang berubah rintangan apabila bentuknya berubah. Ia ditunjukkan dalam rajah di bawah.
Sensor ini digunakan untuk merasakan perubahan dalam linearitas. Oleh itu, apabila sensor FLEX dibengkokkan, rintangan dibengkokkan secara drastik. Ini ditunjukkan dalam rajah di bawah.
Sekarang untuk menukar perubahan rintangan ini kepada perubahan voltan, kita akan menggunakan litar pembahagi voltan. Dalam rangkaian resistif ini kita mempunyai satu rintangan tetap dan rintangan pemboleh ubah yang lain. Seperti yang ditunjukkan dalam gambar di bawah, R1 di sini adalah rintangan tetap dan R2 adalah sensor FLEX yang bertindak sebagai rintangan. Titik tengah cabang dibawa ke pengukuran. Apabila rintangan R2 berubah, Vout berubah dengannya secara linear. Jadi dengan ini kita mempunyai voltan yang berubah dengan linear.
Perkara penting yang perlu diberi perhatian di sini ialah, input yang diambil oleh pengawal untuk penukaran ADC serendah 50µAmp. Kesan pemuatan pembahagi voltan berasaskan rintangan ini penting kerana arus yang diambil dari pembahagi voltan voltan meningkatkan peratusan ralat, buat masa ini kita tidak perlu bimbang tentang kesan pemuatan.
Kami akan mengambil dua perintang dan membentuk rangkaian pembahagi sehingga untuk VV 25Volts, kita mendapat Vout 5Volt. Jadi yang harus kita lakukan adalah menggandakan nilai Vout dengan “5” dalam program untuk mendapatkan voltan input sebenar.
Komponen Diperlukan
PERKAKASAN: ATMEGA8, Bekalan kuasa (5v), PROGRAMMER AVR-ISP, JHD_162ALCD (16x2LCD), kapasitor 100uF, kapasitor 100nF (5 keping), perintang 100KΩ.
PERISIAN: Atmel studio 6.1, progisp atau flash magic.
Diagram Litar dan Penjelasan Kerja
Di litar PORTD ATMEGA8 disambungkan ke LCD port data. Dalam LCD 16x2 terdapat 16 pin di atas semua jika ada lampu belakang, jika tidak ada lampu belakang akan ada 14 pin. Seseorang boleh menghidupkan atau meninggalkan pin lampu belakang. Sekarang dalam 14 pin terdapat 8 data pin (7-14 atau D0-D7), 2 pin bekalan kuasa (1 & 2 atau VSS & VDD atau GND & + 5V), 3 rd pin untuk kawalan kontras (VEE-kawalan berapa tebal watak-watak perlu ditunjukkan) dan 3 pin kawalan (RS & RW & E).
Di litar, anda dapat melihat bahawa saya hanya mengambil dua pin kawalan. Bit kontras dan BACA / MENULIS tidak sering digunakan sehingga boleh dipendekkan ke tanah. Ini meletakkan LCD dalam mod kontras dan baca tertinggi. Kita hanya perlu mengawal pin ENABLE dan RS untuk menghantar watak dan data yang sesuai.
Sambungan LCD dengan ATmega8 adalah seperti berikut:
PIN1 atau VSS ke Ground
PIN2 atau VDD atau VCC untuk +5v kuasa
PIN3 atau VEE ke Ground (memberikan kontras maksimum terbaik untuk pemula)
PIN4 atau RS (Pemilihan Daftar) ke PB0 uC
PIN5 atau RW (Baca / Tulis) ke Tanah (meletakkan LCD dalam mod baca memudahkan komunikasi untuk pengguna)
PIN6 atau E (Aktifkan) ke PB1 uC
PIN7 atau D0 hingga PD0 uC
PIN8 atau D1 hingga PD1 dari uC
PIN9 atau D2 hingga PD2 dari uC
PIN10 atau D3 hingga PD3 dari uC
PIN11 atau D4 hingga D4 dari uC
PIN12 atau D5 hingga PD5 uC
PIN13 atau D6 hingga PD6 dari uC
PIN14 atau D7 hingga PD7 dari uC
Di litar anda dapat melihat kami telah menggunakan komunikasi 8bit (D0-D7) namun ini bukan suatu yang wajib, kami dapat menggunakan komunikasi 4bit (D4-D7) tetapi dengan program komunikasi 4 bit menjadi sedikit rumit jadi kami hanya menggunakan 8 bit komunikasi. (Lihat juga tutorial ini: 16x2 LCD berinteraksi dengan mikrokontroler AVR)
Oleh itu, dari pemerhatian dari jadual di atas, kita menyambungkan 10 pin LCD ke pengawal di mana 8 pin adalah pin data dan 2 pin untuk kawalan.
Voltan merentasi R2 tidak sepenuhnya linear; ia akan menjadi bising. Untuk menyaring kapasitor kebisingan ditempatkan di setiap perintang di litar pembahagi seperti yang ditunjukkan dalam gambar.
Pot 1K di sini adalah untuk menyesuaikan ketepatan ADC. Sekarang mari kita bincangkan mengenai ADC ATMEGA8.
Di ATMEGA8, kita dapat memberikan input Analog ke mana-mana EMPAT saluran PORTC, tidak kira saluran mana yang kita pilih kerana semuanya sama, kita akan memilih saluran 0 atau PIN0 PORTC.
Di ATMEGA8, ADC mempunyai resolusi 10 bit, jadi pengawal dapat mengesan perubahan minimum Vref / 2 ^ 10, jadi jika voltan rujukan adalah 5V, kita mendapat kenaikan output digital untuk setiap 5/2 ^ 10 = 5mV. Oleh itu, untuk setiap kenaikan 5mV input, kita akan mendapat kenaikan satu pada output digital.
Sekarang kita perlu menetapkan daftar ADC berdasarkan syarat berikut, 1. Pertama sekali kita perlu mengaktifkan ciri ADC di ADC.
2. Berikut akan mendapat voltan input maksimum untuk penukaran ADC ialah + 5V. Oleh itu, kita boleh menetapkan nilai maksimum atau rujukan ADC hingga 5V.
3. Pengawal mempunyai ciri penukaran pemicu yang bermaksud penukaran ADC hanya berlaku setelah pemicu luaran, kerana kita tidak mahu bahawa kita perlu menetapkan daftar agar ADC dapat dijalankan dalam mod berjalan bebas berterusan.
4. Untuk mana-mana ADC, kekerapan penukaran (Nilai analog ke nilai Digital) dan ketepatan output digital berkadar songsang. Oleh itu, untuk ketepatan output digital yang lebih baik, kita harus memilih frekuensi yang lebih rendah. Untuk jam ADC biasa, kita menetapkan prale penjualan ADC ke nilai maksimum (2) Oleh kerana kita menggunakan jam dalaman 1MHZ, jam ADC akan menjadi (1000000/2).
Ini adalah satu-satunya empat perkara yang perlu kita ketahui untuk memulakan ADC.
Keempat ciri di atas ditetapkan oleh dua daftar:
MERAH (ADEN): Bit ini harus ditetapkan untuk mengaktifkan ciri ADC ATMEGA.
BLUE (REFS1, REFS0): Kedua-dua bit ini digunakan untuk menetapkan voltan rujukan (atau voltan masukan maksimum yang akan kita berikan). Oleh kerana kita ingin mempunyai voltan rujukan 5V, REFS0 harus ditetapkan, mengikut jadual.
KUNING (ADFR): Bit ini mesti ditetapkan agar ADC dapat dijalankan secara berterusan (mod berjalan bebas).
PINK (MUX0-MUX3): Keempat bit ini adalah untuk memberitahu saluran input. Oleh kerana kita akan menggunakan ADC0 atau PIN0, kita tidak perlu menetapkan bit seperti pada jadual.
BROWN (ADPS0-ADPS2): ketiga-tiga bit ini adalah untuk menetapkan preskalar untuk ADC. Oleh kerana kita menggunakan prescalar 2, kita harus menetapkan satu bit.
DARK GREEN (ADSC): bit ini ditetapkan untuk ADC memulakan penukaran. Bit ini boleh dilumpuhkan dalam program apabila kita perlu menghentikan penukaran.
Interface sensor FLEX dengan ATmega8 dijelaskan langkah demi langkah dalam kod C yang diberikan di bawah.