Mundarija:
- 1 -qadam: ADC nima?
- 2-qadam: AVR-mikrokontrollerda ADC qanday ishlaydi
- 3 -qadam: ADC konvertatsiya formulasi
- 4 -qadam: ATmega8 -da ADC -ni qanday sozlash kerak?
- 5 -qadam: ADLAR tanlovi
- 6 -qadam: ADCSRA tanlovi
- 7 -qadam: Agar siz ADC qiymatiga ega bo'lishni xohlasangiz, quyida keltirilgan ishni bajarish kerak bo'ladi
- 8 -qadam: ADC qiymatini o'rnating
- 9 -qadam: Chiqish LED pinini sozlash
- 10 -qadam: ADC uskunasini sozlang
- 11 -qadam: ADC -ni yoqing
- 12 -qadam: analogdan raqamli konvertatsiyaga o'ting
- 13 -qadam: abadiy
- 14 -qadam: Oxirida to'liq kod
Video: AVR mikrokontrolleridagi ADC -ga kirish - Yangi boshlanuvchilar uchun: 14 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:27
Bu qo'llanmada siz AVR mikrokontrolleridagi ADC bilan hamma narsani bilib olasiz
1 -qadam: ADC nima?
ADC yoki analogdan raqamli konvertor analog kuchlanishni mikrokontroller tomonidan ishlatilishi mumkin bo'lgan raqamli qiymatga o'zgartirishga imkon beradi. O'lchashni xohlaydigan analog signallarning ko'plab manbalari mavjud. Harorat, yorug'lik intensivligi, masofa, pozitsiya va kuchni o'lchaydigan analog sensorlar mavjud.
2-qadam: AVR-mikrokontrollerda ADC qanday ishlaydi
AVR ADC AVR mikrokontroleriga analog kuchlanishni raqamli qiymatlarga tashqi qismlari kam yoki kam bo'lmagan holda o'zgartirishga imkon beradi. ATmega8 ADC-ning 10-bitli ketma-ket yaqinlashuviga ega. ADC -da alohida analog kuchlanish pimi - AVCC mavjud. AVCC VCC dan ± 0,3V dan farq qilmasligi kerak. AREF pinida kuchlanish moslamasi tashqi tomondan ajratilishi mumkin. AVCC kuchlanish manbai sifatida ishlatiladi. ADC-ni uzluksiz ishlashga (erkin ishlash rejimiga) yoki faqat bitta konvertatsiyaga sozlash mumkin.
3 -qadam: ADC konvertatsiya formulasi
Bu erda Vin - tanlangan kirish pinidagi kuchlanish va Vref tanlangan kuchlanish moslamasi
4 -qadam: ATmega8 -da ADC -ni qanday sozlash kerak?
ATmega8 da ADCni amalga oshirish uchun quyidagi registrlar ishlatiladi
ADC multipleksorini tanlash
5 -qadam: ADLAR tanlovi
ADC chap sozlash natijasi ADLAR biti ADC ma'lumotlari reestrida ADC konvertatsiya natijasini ko'rsatilishiga ta'sir qiladi. Natijani sozlash uchun ADLARga yozing. Aks holda, natija to'g'ri sozlangan
ADC konvertatsiyasi tugagach, natija ADCH va ADCLda topiladi ADCL o'qilganda ADC ma'lumotlar registri ADCH o'qilmaguncha yangilanmaydi. Natijada, agar natija to'g'rilansa va 8 bitli aniqlik talab qilinmasa, ADCHni o'qish kifoya. Aks holda, avval ADCL o'qilishi kerak, keyin ADCH. Analog kanallarni tanlash bitlari Ushbu bitlarning qiymati ADCga qaysi analog kirishlar ulanganligini tanlaydi.
6 -qadam: ADCSRA tanlovi
• Bit 7 - ADEN: ADC ni yoqish Bu bitni biriga yozish ADC ni yoqadi. Nolga yozib, ADC o'chiriladi
• Bit 6 - ADSC: ADC konvertatsiyani bitta konversiya rejimida boshlang, har bir konvertatsiyani boshlash uchun bu bitni biriga yozing. Bepul ishga tushirish rejimida, birinchi konvertatsiyani boshlash uchun bu bitni biriga yozing.
• Bit 5 - ADFR: ADC Free Running Select Bu bit o'rnatilganda (bitta) ADC Free Running rejimida ishlaydi. Ushbu rejimda ADC ma'lumotlar ro'yxatini doimiy ravishda namuna oladi va yangilaydi. Bu bit (nol) tozalansa, erkin yugurish rejimi to'xtatiladi.
• Bit 4 - ADIF: ADC uzilish bayrog'i Bu bit ADC konvertatsiyasi tugagandan so'ng va ma'lumotlar registrlari yangilanganda o'rnatiladi. Agar ADIE biti va SREG-dagi I-bit o'rnatilgan bo'lsa, ADC konvertatsiyasining to'liq uzilishi bajariladi. Tegishli ishlov berish vektorini bajarishda ADIF apparat tomonidan tozalanadi. Shu bilan bir qatorda, ADIF bayroqqa mantiqiy yozish orqali tozalanadi.
• Bit 3-ADIE: ADC Interrupt Enable Bu bit bitta yozilsa va SREGda I-bit o'rnatilgan bo'lsa, ADC Conversion Complete Interrupt faollashadi.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Bits ni tanlang Ma'lumotlar jadvaliga ko'ra, ADC kirish chastotasi 50 KGts va 200 KGts oralig'ida bo'lishi kerak. ADC soati tizim soatidan ADPS2 yordamida olingan: 0 Bu bitlar XTAL chastotasi va ADCga kirish soati o'rtasidagi bo'linish faktorini aniqlaydi.
7 -qadam: Agar siz ADC qiymatiga ega bo'lishni xohlasangiz, quyida keltirilgan ishni bajarish kerak bo'ladi
- ADC qiymatini o'rnating
- Chiqish LED pinini sozlash
- ADC uskunasini sozlash
- ADC -ni yoqish
- Raqamli konvertatsiyani analogdan boshlang
- Qachonki abadiy
Agar ADC qiymati belgilangan qiymatdan yuqori bo'lsa, boshqa LEDni yoqing, LEDni o'chiring
8 -qadam: ADC qiymatini o'rnating
Kod: uint8_t ADCValue = 128;
9 -qadam: Chiqish LED pinini sozlash
Kod: DDRB | = (1 << PB1);
10 -qadam: ADC uskunasini sozlang
ADC uskunasini sozlash
Bu ADC boshqaruv registrlarida bitlarni o'rnatish orqali amalga oshiriladi. Birinchidan, ADC uchun prescalar ni o'rnataylik. Ma'lumotlar jadvaliga ko'ra, ADC kirish chastotasi 50 KGts va 200 KGts oralig'ida bo'lishi kerak. ADC soati tizim soatlaridan olingan. Tizim chastotasi 1 MGts bo'lganida, 8 ta oldindan hisoblagich ADC chastotasini 125 KGts ga olib keladi. Oldindan hisoblash ADCSRA registridagi ADPS bitlari tomonidan o'rnatiladi. Ma'lumotlar jadvaliga ko'ra, 8 ta oldindan hisoblagichni olish uchun barcha ADPS2: 0 bitlari 011 ga sozlanishi kerak.
Kod: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Keyinchalik, ADC mos yozuvlar kuchlanishini o'rnataylik. Bu ADMUX registridagi REFS bitlari tomonidan nazorat qilinadi. Quyida AVCC mos yozuvlar kuchlanishi o'rnatiladi.
Kod: ADMUX | = (1 << REFS0);
ADP ga multipleksor orqali o'tadigan kanalni sozlash uchun ADMUX registridagi MUX bitlarini mos ravishda sozlash kerak. Biz ADC5 -ni bu erda ishlatganimiz uchun
Kod: ADMUX & = 0xF0; ADMUX | = 5;
ADC-ni erkin ishlash rejimiga o'tkazish uchun ADCSRA registrida to'g'ri nomlangan ADFR bitini o'rnating:
Kod: ADCSRA | = (1 << ADFR);
ADC qiymatini o'qishni soddalashtirish uchun bitta oxirgi sozlamalar o'zgartiriladi. ADC 10 bitli ruxsatga ega bo'lsa -da, ko'pincha bu ma'lumot kerak emas. Bu 10 bitli qiymat 8 bitli ikkita registrga bo'linadi, ADCH va ADCL. Odatiy bo'lib, ADCL qiymatining eng past 8 biti ADCLda topilgan, yuqori ikkita ADCH ning eng past ikki biti. ADMUX registrida ADLAR bitini o'rnatish orqali biz ADC qiymatini chapga tekislashimiz mumkin. Bu o'lchovning eng yuqori 8 bitini ADCH registriga, qolganini ADCL reestriga qo'yadi. Agar biz ADCH registrini o'qigan bo'lsak, biz 0 dan 255 gacha bo'lgan 0 dan 5 voltgacha bo'lgan o'lchovni ifodalovchi 8 bitli qiymatga ega bo'lamiz. Bu erda ADLAR bitini o'rnatish kodi:
Kod:
ADMUX | = (1 << ADLAR); Bu misol uchun ADC uskunasini o'rnatishni yakunlaydi. ADC o'lchashni boshlashdan oldin yana ikkita bitni o'rnatish kerak.
11 -qadam: ADC -ni yoqing
ADC -ni yoqish uchun ADCSRA -da ADEN bitini o'rnating:
Kod: ADCSRA | = (1 << ADEN);
12 -qadam: analogdan raqamli konvertatsiyaga o'ting
ADC o'lchovlarini boshlash uchun ADCSRAda ADSC bitini sozlash kerak:
Kod: ADCSRA | = (1 << ADSC);
Shu nuqtada, ADC doimiy ravishda ADC5da ko'rsatilgan kuchlanishni tanlay boshlaydi. Kod shu paytgacha shunday bo'ladi:
13 -qadam: abadiy
Qolgan yagona narsa - ADC qiymatini sinab ko'rish va LEDlarni yuqori / past ko'rsatkichni ko'rsatish uchun sozlash. ADCHda ADC o'qilishi maksimal 255 qiymatiga ega bo'lganligi sababli, kuchlanishning yuqori yoki pastligini aniqlash uchun th ning sinov qiymati tanlangan. FOR tsikllaridagi oddiy IF/ELSE iborasi to'g'ri LEDni yoqishga imkon beradi:
Kod
agar (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // LEDni yoqing
}
boshqa
{
PORTB & = ~ (1 << PB0); // LEDni o'chiring
}
14 -qadam: Oxirida to'liq kod
Kod:
#qo'shing
int main (bekor)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // LED1 -ni chiqish sifatida o'rnating
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC prescalar -ni 8 - // 125KHz namuna tezligi 1 MGts ga o'rnating
ADMUX | = (1 << REFS0); // ADC ma'lumotnomasini AVCC ga o'rnating
ADMUX | = (1 << ADLAR); // ADC natijasini 8 bitli o'qishni osonlashtirish uchun chapga sozlash
ADMUX & = 0xF0;
ADMUX | = 5; // ADC0 dan foydalanish uchun MUX qiymatlarini o'zgartirish kerak edi
ADCSRA | = (1 << ADFR); // ADC-ni erkin ishlash rejimiga o'rnating
ADCSRA | = (1 << ADEN); // ADC -ni yoqish
ADCSRA | = (1 << ADSC); // A2D konvertatsiyasini (1) vaqtida boshlang // Loop Forever
{
agar (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // LED1 -ni yoqing
}
boshqa
{
PORTE & = ~ (1 << PB1); // LED1ni o'chiring
}
}
qaytarish 0;
}
Avvalo bu darslikni chop eting Bu yerni bosing
Tavsiya:
Har qanday loyihaga WiFi boshqaruvini qanday qo'shish mumkin -- ESP32 boshlanuvchilar uchun qo'llanma: 5 qadam
Har qanday loyihaga WiFi boshqaruvini qanday qo'shish mumkin || ESP32 boshlanuvchilar uchun qo'llanma: Ushbu loyihada men har qanday elektronika loyihasiga WiFi boshqaruvini qo'shish uchun Arduino IDE bilan ESP32 -dan foydalanish qanchalik oson/qiyin ekanligini ko'rsataman. Yo'l davomida men sizga ESP32 -dan oddiy Wi -Fi serverini yaratish va qanday yaratishni ko'rsataman
Boshlanuvchilar uchun boshsiz RPi nolinchi sozlash: 8 qadam
Boshlang'ichlar uchun boshsiz RPi Zero -ni o'rnatish: Bu yo'riqnomada biz Raspberry Pi Zero -ning barcha loyihalari uchun asosiy sozlamalarimizni ko'rib chiqamiz. Biz hammasini Windows mashinasidan qilamiz, qo'shimcha klaviatura yoki monitor talab qilinmaydi! Ishimiz tugagach, u internetda bo'ladi, fayllarni tarmoq orqali almashadi, voy
Televizoringizga ulangan har bir kirish uchun Ambilight tizimi. WS2812B Arduino UNO Raspberry Pi HDMI (12.2019 yil yangilangan): 12 qadam (rasmlar bilan)
Televizoringizga ulangan har bir kirish uchun Ambilight tizimi. WS2812B Arduino UNO Raspberry Pi HDMI (12.2019 yangilangan): Men har doim televizorimga ambilight qo'shishni xohlaganman. Juda zo'r ko'rinadi! Men nihoyat qildim va umidsizlikka tushmadim! Men sizning televizoringiz uchun Ambilight tizimini yaratish bo'yicha ko'plab videolarni va ko'plab qo'llanmalarni ko'rdim, lekin men hech qachon o'zim uchun to'liq qo'llanmani topa olmadim
Bumpin elektron trekini qanday qilish kerak: FL Studio uchun kirish musiqa ishlab chiqarish: 6 qadam
Bumpin elektron trekini qanday qilish mumkin: FL Studio uchun kirish musiqa ishlab chiqarish: xush kelibsiz! Bu ko'rsatma qo'llanma boshlang'ich musiqa ishlab chiqaruvchilariga turli xil elektron raqs musiqalarini yaratish uchun FL Studio dasturidan foydalanishga yordam beradi. U asosiy maslahatlarni batafsil aytib berish uchun qo'shiq yaratishning asosiy elementlari orqali o'tadi
Qanday qilib to'g'ri lehim qilish kerak (simlarsiz!) SMT mikrokontrolleridagi qopqoqlarni ajratish: 9 qadam (rasmlar bilan)
SMT mikrokontrolleridagi qopqoqlarni qanday qilib to'g'ri payvandlash kerak (simlarsiz!). Bu ko'rsatma sizga adapter platasida SMT mikrokontrollerlari (yoki boshqa qurilmalar) bilan prototiplashning toza va tartibli usulini qo'llashni o'rgatish uchun yozilgan. PIC18F I -dagi quvvat pimlarini ajratish bo'yicha aniq vazifani bajarishga qiynalganimdan keyin