Isi kandungan:
- Langkah 1: Apa itu ADC?
- Langkah 2: Cara Kerja ADC dalam AVR- Microcontroller
- Langkah 3: Formula Penukaran ADC
- Langkah 4: Bagaimana Mengkonfigurasi ADC di ATmega8?
- Langkah 5: Pemilihan ADLAR
- Langkah 6: Pemilihan ADCSRA
- Langkah 7: Sekiranya Anda Ingin Mengambil Nilai ADC, Anda Perlu Memerlukan Sebilangan Kerja Yang Disenaraikan Di Bawah
- Langkah 8: Tetapkan Nilai ADC
- Langkah 9: Konfigurasikan Pin LED Output
- Langkah 10: Konfigurasikan Perkakasan ADC
- Langkah 11: Dayakan ADC
- Langkah 12: Mulakan Penukaran Analog ke Digital
- Langkah 13: SELAMA Selamanya
- Langkah 14: Pada Akhir Kod Lengkap Adalah
Video: Pengenalan ADC dalam AVR Microcontroller - untuk Pemula: 14 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:11
Dalam tutorial ini, anda akan mengetahui semua ADC dalam mikrokontroler avr
Langkah 1: Apa itu ADC?
ADC, atau Analog to Digital Converter, membolehkan seseorang menukar voltan analog ke nilai digital yang dapat digunakan oleh mikrokontroler. Terdapat banyak sumber isyarat analog yang mungkin ingin diukur. Terdapat sensor analog yang tersedia yang mengukur suhu, intensiti cahaya, jarak, kedudukan, dan daya, hanya untuk beberapa nama.
Langkah 2: Cara Kerja ADC dalam AVR- Microcontroller
AVR ADC membolehkan pengawal mikro AVR menukar voltan analog kepada nilai digital dengan beberapa bahagian luaran dan tidak ada. ATmega8 mempunyai ADC 10-bit berturut-turut. ATmega8 mempunyai 7 saluran ADC di PortC. ADC mempunyai pin voltan bekalan analog yang berasingan, AVCC. AVCC tidak boleh berbeza lebih daripada ± 0.3V dari VCC.. Rujukan voltan boleh dilepaskan secara luaran pada pin AREF. AVCC digunakan sebagai rujukan voltan. ADC juga dapat diatur untuk berjalan secara berterusan (mod bebas berjalan) atau hanya melakukan satu penukaran.
Langkah 3: Formula Penukaran ADC
Di mana Vin adalah voltan pada pin input yang dipilih dan Vref rujukan voltan yang dipilih
Langkah 4: Bagaimana Mengkonfigurasi ADC di ATmega8?
Daftar berikut digunakan untuk pelaksanaan ADC di ATmega8
Pemilihan Multiplexer ADC
Langkah 5: Pemilihan ADLAR
ADC Left Adjust Result Bit ADLAR mempengaruhi pembentangan hasil penukaran ADC dalam Daftar Data ADC. Tulis satu ke ADLAR ke kiri menyesuaikan hasilnya. Jika tidak, hasilnya betul
Apabila penukaran ADC selesai, hasilnya dijumpai di ADCH dan ADCL Apabila ADCL dibaca, Daftar Data ADC tidak dikemas kini sehingga ADCH dibaca. Oleh itu, jika hasilnya dibiarkan diselaraskan dan ketepatan tidak lebih dari 8-bit diperlukan, memadai untuk membaca ADCH. Jika tidak, ADCL mesti dibaca terlebih dahulu, kemudian ADCH. Bit Pemilihan Saluran Analog Nilai bit ini memilih input analog yang disambungkan ke ADC.
Langkah 6: Pemilihan ADCSRA
• Bit 7 - ADEN: ADC Enable Menulis bit ini kepada satu membolehkan ADC. Dengan menulisnya menjadi sifar, ADC dimatikan
• Bit 6 - ADSC: ADC Mula Penukaran Dalam mod Penukaran Tunggal, tulis bit ini kepada satu untuk memulakan setiap penukaran. Dalam mod Running Percuma, tulis bit ini untuk memulakan penukaran pertama.
• Bit 5 - ADFR: ADC Free Running Select Apabila bit ini ditetapkan (satu) ADC beroperasi dalam mod Free Running. Dalam mod ini, ADC mengambil sampel dan mengemas kini Daftar Data secara berterusan. Mengosongkan bit ini (sifar) akan Menamatkan mod Running Percuma.
• Bit 4 - ADIF: Bendera Interrupt ADC Bit ini ditetapkan apabila penukaran ADC selesai dan Daftar Data dikemas kini. Interup Selesai Penukaran ADC dijalankan sekiranya bit ADIE dan I-bit dalam SREG ditetapkan. ADIF dibersihkan oleh perkakasan semasa menjalankan Vektor Pengendalian gangguan yang sesuai. Sebagai alternatif, ADIF dibersihkan dengan menulis yang logik pada bendera.
• Bit 3 - ADIE: ADC Interrupt Enable Apabila bit ini ditulis kepada satu dan I-bit dalam SREG ditetapkan, ADC Conversion Complete Interrupt diaktifkan.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Menurut lembar data, prescalar ini perlu ditetapkan supaya frekuensi input ADC antara 50 KHz dan 200 KHz. Jam ADC berasal dari jam sistem dengan bantuan ADPS2: 0 Bit ini menentukan faktor pembahagian antara frekuensi XTAL dan jam masukan ke ADC.
Langkah 7: Sekiranya Anda Ingin Mengambil Nilai ADC, Anda Perlu Memerlukan Sebilangan Kerja Yang Disenaraikan Di Bawah
- Tetapkan nilai ADC
- Konfigurasikan pin LED output
- Konfigurasikan Perkakasan ADC
- Dayakan ADC
- Mulakan Penukaran Analog ke Digital
- SELEPAS Selamanya
JIKA Nilai ADC Lebih Tinggi daripada Tetapkan nilai, Hidupkan LED ELSE Matikan LED
Langkah 8: Tetapkan Nilai ADC
Kod: uint8_t ADCValue = 128;
Langkah 9: Konfigurasikan Pin LED Output
Kod: DDRB | = (1 << PB1);
Langkah 10: Konfigurasikan Perkakasan ADC
Konfigurasikan Perkakasan ADC
Ini dilakukan dengan menetapkan bit dalam daftar kawalan untuk ADC. Pertama, mari kita tetapkan preskalar untuk ADC. Menurut lembar data, prescalar ini perlu ditetapkan supaya frekuensi input ADC antara 50 KHz dan 200 KHz. Jam ADC berasal dari jam sistem. Dengan frekuensi sistem 1MHz, prescaler 8 akan menghasilkan frekuensi ADC 125 Khz. Prescaling ditetapkan oleh bit ADPS dalam daftar ADCSRA. Menurut lembaran data, ketiga-tiga bit ADPS2: 0 mesti ditetapkan ke 011 untuk mendapatkan 8 preskaler.
Kod: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Seterusnya, mari tetapkan voltan rujukan ADC. Ini dikendalikan oleh bit REFS dalam daftar ADMUX. Berikut ini menetapkan voltan rujukan ke AVCC.
Kod: ADMUX | = (1 << REFS0);
Untuk menetapkan saluran yang dilewatkan melalui multiplexer ke ADC, bit MUX dalam daftar ADMUX perlu ditetapkan dengan sewajarnya. Oleh kerana kami menggunakan ADC5 di sini
Kod: ADMUX & = 0xF0; ADMUX | = 5;
Untuk meletakkan ADC ke dalam mod berjalan bebas, tetapkan bit ADFR yang diberi nama tepat dalam daftar ADCSRA:
Kod: ADCSRA | = (1 << ADFR);
Satu perubahan tetapan terakhir akan dibuat untuk mempermudah membaca nilai ADC. Walaupun ADC mempunyai resolusi 10 bit, banyak maklumat ini tidak diperlukan. Nilai 10 bit ini terbahagi kepada dua register 8 bit, ADCH dan ADCL. Secara lalai, 8 bit nilai ADC terendah terdapat di ADCL, dengan dua bahagian atas adalah dua bit ADCH terendah. Dengan menetapkan bit ADLAR dalam daftar ADMUX, kita boleh meninggalkan nilai ADC ke kiri. Ini meletakkan 8 bit pengukuran tertinggi dalam daftar ADCH, dan selebihnya dalam daftar ADCL. Sekiranya kita membaca daftar ADCH, kita mendapat nilai 8 bit yang mewakili pengukuran 0 hingga 5 volt sebagai angka dari 0 hingga 255. Pada dasarnya kita mengubah pengukuran ADC 10 bit kita menjadi 8 bit. Inilah kod untuk menetapkan bit ADLAR:
Kod:
ADMUX | = (1 << ADLAR); Itu melengkapkan persediaan perkakasan ADC untuk contoh ini. Dua bit lagi perlu ditetapkan sebelum ADC mula mengambil ukuran.
Langkah 11: Dayakan ADC
Untuk mengaktifkan ADC, tetapkan bit ADEN di ADCSRA:
Kod: ADCSRA | = (1 << ADEN);
Langkah 12: Mulakan Penukaran Analog ke Digital
Untuk memulakan pengukuran ADC, bit ADSC di ADCSRA perlu ditetapkan:
Kod: ADCSRA | = (1 << ADSC);
Pada ketika ini, ADC akan mula mengambil sampel voltan yang ditunjukkan pada ADC5 secara berterusan. Kod untuk tahap ini akan kelihatan seperti ini:
Langkah 13: SELAMA Selamanya
Yang tinggal hanyalah menguji nilai ADC dan menetapkan LED untuk menunjukkan petunjuk tinggi / rendah. Oleh kerana pembacaan ADC dalam ADCH mempunyai nilai maksimum 255, nilai ujian untuk dipilih untuk menentukan sama ada voltan tinggi atau rendah. Pernyataan IF / ELSE yang mudah dalam gelung FOR akan membolehkan kita menghidupkan LED yang betul:
Kod
jika (ADCH> Nilai ADC)
{
PORTB | = (1 << PB0); // Hidupkan LED
}
yang lain
{
PORTB & = ~ (1 << PB0); // Matikan LED
}
Langkah 14: Pada Akhir Kod Lengkap Adalah
Kod:
#sertakan
int utama (tidak sah)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Tetapkan LED1 sebagai output
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Tetapkan preskalar ADC kepada 8 - // 125KHz kadar sampel 1MHz
ADMUX | = (1 << REFS0); // Tetapkan rujukan ADC ke AVCC
ADMUX | = (1 << ADLAR); // Selaraskan hasil ADC untuk membolehkan pembacaan 8 bit yang mudah
ADMUX & = 0xF0;
ADMUX | = 5; // Nilai MUX perlu diubah untuk menggunakan ADC0
ADCSRA | = (1 << ADFR); // Tetapkan ADC ke Free-Running Mode
ADCSRA | = (1 << ADEN); // Dayakan ADC
ADCSRA | = (1 << ADSC); // Mulakan Penukaran A2D sambil (1) // Gelung Selamanya
{
jika (ADCH> Nilai ADC)
{
PORTB | = (1 << PB0); // Hidupkan LED1
}
yang lain
{
PORTE & = ~ (1 << PB1); // Matikan LED1
}
}
pulangan 0;
}
Mula-mula Terbitkan tutorial ini Klik Di Sini
Disyorkan:
Reka Bentuk Permainan dalam Flick dalam 5 Langkah: 5 Langkah
Reka Bentuk Permainan dalam Flick dalam 5 Langkah: Flick adalah cara yang sangat mudah untuk membuat permainan, terutama seperti teka-teki, novel visual, atau permainan petualangan
Arduino Sebagai ISP -- Bakar Fail Hex dalam AVR -- Fius dalam AVR -- Arduino Sebagai Pengaturcara: 10 Langkah
Arduino Sebagai ISP || Bakar Fail Hex dalam AVR || Fius dalam AVR || Arduino Sebagai Pengaturcara: ……………………… Sila Langgani saluran YouTube saya untuk lebih banyak video …….. Artikel ini adalah mengenai arduino sebagai isp. Sekiranya anda ingin memuat naik fail hex atau jika anda ingin menetapkan fius anda di AVR maka anda tidak perlu membeli programmer, anda boleh melakukan
"Kekal" Aktifkan Papan Kekunci dalam Mod Tablet (Notebook ASUS 2-dalam-1): 4 Langkah
Aktifkan "Kekal" Papan Kekunci dalam Mode Tablet (Notebook ASUS 2-in-1): Baru-baru ini monitor pada Notebook 2-in-1 ASUS Q551LN saya berhenti memaparkan warna merah. Setelah berbulan-bulan berusaha memperbaikinya tanpa kemajuan, saya memutuskan untuk mengubahnya menjadi desktop tetap dan memasangnya ke monitor. Walau bagaimanapun, saya menyedari bahawa jika saya & quot
Pengenalan Skrip VB: Panduan Pemula: 11 Langkah
Pengenalan Skrip VB: Panduan Pemula: *** ((((ALERT: Walaupun terdapat banyak langkah. Ini sebenarnya agak mudah. Saya hanya menerangkan semuanya secara terperinci untuk pemula. Sekiranya anda hanya mahu kod melompat ke langkah terakhir dan anda akan menemui kod penuh di sana.)))) *** Saya bermain banyak Xbox
Pengenalan Skrip VB: Panduan Pemula: Bahagian 2: Bekerja Dengan Fail: 13 Langkah
Pengenalan Skrip VB: Panduan Pemula: Bahagian 2: Bekerja Dengan Fail: Baik dalam arahan VBScript terakhir saya, saya membincangkan cara membuat skrip untuk mematikan internet anda untuk bermain Xbox360. Hari ini saya menghadapi masalah yang berbeza. Komputer saya dimatikan secara rawak dan saya mahu log setiap kali komputer