Mündəricat:
- Addım 1: ADC nədir?
- Addım 2: AVR-Mikrokontrollerdə ADC necə işləyir
- Addım 3: ADC Dönüşüm Formulu
- Addım 4: ATmega8 -də ADC -ni necə qurmaq olar?
- Addım 5: ADLAR Seçimi
- Addım 6: ADCSRA Seçimi
- Addım 7: ADC dəyərinə sahib olmaq istəyirsinizsə, aşağıda sadalanan işlərə ehtiyacınız var
- Addım 8: ADC dəyərini təyin edin
- Addım 9: Çıxış LED Pinini konfiqurasiya edin
- Addım 10: ADC Hardware -ni konfiqurasiya edin
- Addım 11: ADC -ni aktivləşdirin
- Addım 12: Analogdan Rəqəmsal Dönüşümlərə Başlayın
- Addım 13: Sonsuza qədər
- Addım 14: Sonda Tam Kod Var
2025 Müəllif: John Day | [email protected]. Son dəyişdirildi: 2025-01-23 12:54
Bu dərsdə, avr mikrokontrolöründəki ADC hər şeyi biləcəksiniz
Addım 1: ADC nədir?
Bir ADC və ya Analogdan Rəqəmsal Dönüştürücü, bir analog gərginliyi bir mikro nəzarətçi tərəfindən istifadə edilə bilən rəqəmsal bir dəyərə çevirməyə imkan verir. Ölçmək istəyə biləcəyiniz bir çox analoq siqnal mənbəyi var. İstilik, işıq intensivliyi, məsafə, mövqe və qüvvəni ölçən analoq sensorlar mövcuddur.
Addım 2: AVR-Mikrokontrollerdə ADC necə işləyir
AVR ADC, AVR mikrokontrolörünün xarici hissələri az və ya çox olmayan analog dəyərləri rəqəmsal dəyərlərə çevirməsinə imkan verir. ATmega8, 10 bitlik ardıcıl bir yaxınlaşmaya malikdir. ATmega8, PortC-də 7 kanallı ADC-yə malikdir. ADC -də ayrıca bir analog təchizat gərginliyi pimi var, AVCC. AVCC, VCC -dən ± 0.3V -dən çox fərqlənməməlidir. Gərginlik istinadı AREF pinində xaricdən ayrıla bilər. AVCC gərginlik istinad olaraq istifadə olunur. ADC da davamlı olaraq (sərbəst işləmə rejimi) və ya yalnız bir dönüşüm etmək üçün qurula bilər.
Addım 3: ADC Dönüşüm Formulu
Burada Vin seçilmiş giriş pinindəki gərginlikdir və Vref seçilmiş gərginlik istinadıdır
Addım 4: ATmega8 -də ADC -ni necə qurmaq olar?
ATmega8 -də ADC tətbiq etmək üçün aşağıdakı qeydlər istifadə olunur
ADC Multiplexer Seçimi
Addım 5: ADLAR Seçimi
ADC Sol Ayarlama Nəticəsi ADLAR biti ADC Məlumat Reyestrində ADC dönüşüm nəticəsinin təqdimatını təsir edir. Nəticəni tənzimləmək üçün ADLAR -a yazın. Əks təqdirdə nəticə düzgün tənzimlənir
ADC çevrilməsi tamamlandıqda, nəticə ADCH və ADCL -də tapılır ADCL oxunduqda, ADCH oxunana qədər ADC Məlumat Reyestri yenilənmir. Nəticə olaraq, nəticə tənzimlənərsə və 8 bitdən çox dəqiqlik tələb olunmasa, ADCH oxumaq kifayətdir. Əks təqdirdə əvvəlcə ADCL, sonra ADCH oxunmalıdır. Analog Kanal Seçim Bitləri Bu bitlərin dəyəri ADC -yə hansı analog girişlərin bağlı olduğunu seçir.
Addım 6: ADCSRA Seçimi
• Bit 7 - ADEN: ADC Enable Bu bitin birinə yazılması ADC -ni aktivləşdirir. Sıfıra yazmaqla ADC söndürülür
• Bit 6 - ADSC: ADC Dönüşümə Tək Dönüşüm rejimində başlayın, hər bir çevrilməyə başlamaq üçün bu biti birinə yazın. Pulsuz İşləmə rejimində, ilk çevrilməyə başlamaq üçün bu biti birinə yazın.
• Bit 5 - ADFR: ADC Pulsuz Çalışma Seçimi Bu bit (bir) təyin edildikdə ADC Sərbəst Çalışma rejimində işləyir. Bu rejimdə, ADC davamlı olaraq Məlumat Reyestrini götürür və yeniləyir. Bu bitin (sıfır) silinməsi Sərbəst Çalışma rejiminə son qoyacaq.
• Bit 4 - ADIF: ADC Interrupt Flag Bu bit, ADC çevrilməsi başa çatdıqda və Məlumat Qeydləri yeniləndikdə təyin olunur. ADIE biti və SREG-də I-bit təyin edildikdə, ADC Dönüşüm Tamamilə Aralanması icra edilir. Müvafiq fasilə Handling Vector işlənərkən ADIF aparat tərəfindən təmizlənir. Alternativ olaraq, ADIF bayrağa məntiqi bir yazı yazmaqla silinir.
• Bit 3-ADIE: ADC Interrupt Enable Bu bit birə yazıldıqda və SREG-də I-bit təyin edildikdə, ADC Conversion Complete Interrupt aktivləşir.
• Bit 2: 0 - ADPS2: 0: ADC Prescaler Bitləri seçin Məlumat cədvəlinə görə, bu prescalar ADC giriş tezliyi 50 KHz və 200 KHz arasında olacaq şəkildə qurulmalıdır. ADC saatı ADPS2 köməyi ilə sistem saatından əldə edilir: 0 Bu bitlər XTAL tezliyi ilə ADC -yə giriş saatı arasındakı bölünmə faktorunu təyin edir.
Addım 7: ADC dəyərinə sahib olmaq istəyirsinizsə, aşağıda sadalanan işlərə ehtiyacınız var
- ADC dəyərini təyin edin
- Çıxış LED pinini konfiqurasiya edin
- ADC Avadanlıqlarını konfiqurasiya edin
- ADC aktiv edin
- Analogdan Rəqəmsal Dönüşümlərə Başlayın
- Sonsuza qədər
ADC Dəyəri Yüksək, sonra Qiyməti təyin edin, LED -i Yandırın
Addım 8: ADC dəyərini təyin edin
Kod: uint8_t ADCValue = 128;
Addım 9: Çıxış LED Pinini konfiqurasiya edin
Kod: DDRB | = (1 << PB1);
Addım 10: ADC Hardware -ni konfiqurasiya edin
ADC Avadanlıqlarını konfiqurasiya edin
Bu, ADC üçün nəzarət qeydlərində bitləri təyin etməklə edilir. Əvvəlcə ADC üçün prescalar təyin edək. Məlumat cədvəlinə görə, bu prescalar ADC giriş tezliyi 50 KHz və 200 KHz arasında olacaq şəkildə qurulmalıdır. ADC saatı sistem saatından əmələ gəlir. Sistem tezliyi 1MHz olduqda, 8 -ə qədər bir ön kalkulyator 125 Khz -lik bir ADC tezliyi ilə nəticələnəcək. Öncədən ölçmə ADCSRA reyestrindəki ADPS bitləri tərəfindən təyin edilir. Məlumat cədvəlinə görə, 8 prescaler almaq üçün hər üç ADPS2: 0 biti 011 olaraq təyin olunmalıdır.
Kod: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Sonra ADC istinad gərginliyini təyin edək. Bu, ADMUX reyestrindəki REFS bitləri tərəfindən idarə olunur. Aşağıda istinad gərginliyi AVCC olaraq təyin olunur.
Kod: ADMUX | = (1 << REFS0);
ADP -yə multiplekserdən keçən kanalı təyin etmək üçün ADMUX reyestrindəki MUX bitlərini buna uyğun olaraq qurmaq lazımdır. Burada ADC5 istifadə etdiyimiz üçün
Kod: ADMUX & = 0xF0; ADMUX | = 5;
ADC-ni sərbəst iş rejiminə salmaq üçün ADCSRA reyestrində düzgün adlandırılmış ADFR bitini təyin edin:
Kod: ADCSRA | = (1 << ADFR);
ADC dəyərinin oxunmasını asanlaşdırmaq üçün son bir parametr dəyişikliyi ediləcək. ADC 10 bitlik bir qətnaməyə sahib olsa da, bu qədər məlumat çox vaxt lazım deyil. Bu 10 bitlik dəyər, ADCH və ADCL olmaqla 8 bitlik iki qeydə bölünür. Varsayılan olaraq, ADC dəyərinin ən aşağı 8 biti ADCL -dədir, üst ikisi ADCH -in ən aşağı iki bitidir. ADMUX qeydində ADLAR bitini təyin edərək ADC dəyərini sola hizalaya bilərik. Bu, ən yüksək 8 bit ölçüsünü ADCH reyestrinə, qalanları isə ADCL qeydinə qoyur. ADCH qeydini oxusaq, 0 ilə 255 arasında bir rəqəm olaraq 0 ilə 5 volt ölçmələrimizi təmsil edən 8 bitlik bir dəyər əldə edirik. Əsasən 10 bitlik ADC ölçmələrimizi 8 bit ölçüyə çeviririk. ADLAR bitini təyin etmək üçün kod budur:
Kod:
ADMUX | = (1 << ADLAR); Bu nümunə üçün ADC aparatının qurulmasını tamamlayır. ADC -nin ölçmə aparmağa başlamasından əvvəl daha iki bitin qurulması lazımdır.
Addım 11: ADC -ni aktivləşdirin
ADC -ni aktiv etmək üçün ADCSRA -da ADEN bitini təyin edin:
Kod: ADCSRA | = (1 << ADEN);
Addım 12: Analogdan Rəqəmsal Dönüşümlərə Başlayın
ADC ölçmələrinə başlamaq üçün ADCSRA -da ADSC bitini təyin etmək lazımdır:
Kod: ADCSRA | = (1 << ADSC);
Bu nöqtədə, ADC davamlı olaraq ADC5 -də təqdim olunan gərginliyi seçməyə başlayacaq. Bu nöqtədəki kod belə görünür:
Addım 13: Sonsuza qədər
Yalnız ADC dəyərini yoxlamaq və LED -ləri yüksək / aşağı göstərici göstərmək üçün qurmaq qalır. ADCH -də ADC oxunması maksimum 255 dəyərə malik olduğundan, gərginliyin yüksək və ya aşağı olduğunu müəyyən etmək üçün th testi seçildi. FOR döngələrində sadə bir IF/ELSE ifadəsi düzgün LED -i yandırmağımıza imkan verəcəkdir:
Kod
əgər (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // LED yandırın
}
başqa
{
PORTB & = ~ (1 << PB0); // LED -i söndürün
}
Addım 14: Sonda Tam Kod Var
Kod:
#daxil edin
int main (boş)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // LED1 -i çıxış olaraq təyin edin
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC prescalarını 8 - // 125KHz nümunə dərəcəsi 1MHz olaraq təyin edin
ADMUX | = (1 << REFS0); // ADC istinadını AVCC olaraq təyin edin
ADMUX | = (1 << ADLAR); // 8 bit asan oxumaq üçün ADC nəticəsini sola tənzimləyin
ADMUX & = 0xF0;
ADMUX | = 5; // ADC0 istifadə etmək üçün MUX dəyərlərinin dəyişdirilməsi lazım idi
ADCSRA | = (1 << ADFR); // ADC-ni Sərbəst Çalışma Rejiminə təyin edin
ADCSRA | = (1 << ADEN); // ADC -ni aktiv edin
ADCSRA | = (1 << ADSC); // (1) olarkən A2D Dönüşümlərə başlayın // Əbədi döngə edin
{
əgər (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // LED1 yandırın
}
başqa
{
PORTE & = ~ (1 << PB1); // LED1 söndürün
}
}
qaytarma 0;
}
Əvvəlcə bu təlimatı dərc edin Buraya Tıklayın
Tövsiyə:
Raspberry Pi üçün Başlayanlar Kılavuzu: 6 addım (şəkillərlə)
Raspberry Pi üçün Başlayanlar Kılavuzu: Uzun müddətdir Arduino ilə işləyirəm. Asan, ucuz və işi başa çatdırır. Ancaq son vaxtlar IoT layihələrinə daha çox meyl edirəm. ESP inkişaf lövhəsindən istifadə etməyə başladım və mükəmməl işləyir. Amma indi doğru hərəkət etmək istəyirəm
Başlayanlar üçün DJ Quraşdırma Necə Yaranır - Vinil Stili !: 7 addım
Başlayanlar üçün DJ Quraşdırma Necə Yaranır - Vinil Stili! Bu Təlimat kitabında sizə vinildən istifadə edərək klassik turntable üslubunda DJ qurğusunun necə qurulacağını göstərəcəyəm. Bir həvəskarsınızsa və ya bir peşə sahibi olmaq və bəlkə də qazanc əldə etmək üçün bütün dünyanı gəzmək istəyirsinizsə, bu addımları atacaqsınız
Başlayanlar üçün Ultimate Başsız RPi Sıfır Quraşdırma: 8 Addım
Yeni Başlayanlar üçün Ultimate Başsız RPi Zero Quraşdırması: Bu Təlimatda, bütün Raspberry Pi Zero layihələri üçün əsas quruluşuma nəzər salacağıq. Hamısını bir Windows maşınından edəcəyik, əlavə klaviatura və ya monitor lazım deyil! İşimiz bitdikdə internetdə olacaq, faylları şəbəkə üzərindən paylaşacaq, vay
Başlayanlar üçün mötərizədən istifadə edərək sadə bir veb səhifəsi necə yaradılır: 14 addım
Başlayanlar üçün mötərizədən istifadə edərək sadə bir veb səhifəsi necə yaradılır: Giriş Aşağıdakı təlimatlar mötərizələrdən istifadə edərək veb səhifəsi hazırlamaq üçün addım -addım təlimat verir. Mötərizələr, veb inkişafına əsas diqqət yetirən bir mənbə kodu redaktorudur. Adobe Systems tərəfindən yaradılmışdır, pulsuz və açıq mənbəli bir proqramdır
Başlayanlar üçün Açıqlanan Gərginliyə, Cərəyana, Müqavimətə və Gücə Giriş: 3 addım
Başlayanlar üçün Açıqlanan Gərginlik, Cərəyan, Müqavimət və Gücə Giriş: Bu video əsas elektronika terminləri ilə əlaqədardır və başa düşülməsi asandır, su bənzətmə anlayışı ilə asanlıqla izah etməyə çalışacağam, buna görə də meyilli sonra nəzəriyyəni anlamağa kömək edir, buna görə baxın Akım, Gərginlik haqqında anlayışınızı aydınlaşdırmaq üçün bu video