Агуулгын хүснэгт:

AVR микроконтроллер дахь ADC -ийн танилцуулга - Эхлэгчдэд зориулсан: 14 алхам
AVR микроконтроллер дахь ADC -ийн танилцуулга - Эхлэгчдэд зориулсан: 14 алхам

Видео: AVR микроконтроллер дахь ADC -ийн танилцуулга - Эхлэгчдэд зориулсан: 14 алхам

Видео: AVR микроконтроллер дахь ADC -ийн танилцуулга - Эхлэгчдэд зориулсан: 14 алхам
Видео: LDmicro 12: платы Arduino без IDE (лестничное программирование ПЛК микроконтроллера с помощью LDmicro) 2024, Арваннэгдүгээр
Anonim
AVR микроконтроллер дахь ADC -ийн танилцуулга | эхлэгчдэд зориулсан
AVR микроконтроллер дахь ADC -ийн танилцуулга | эхлэгчдэд зориулсан

Энэ гарын авлагад та AVR микроконтроллер дахь ADC -ийн бүх зүйлийг мэдэх болно

Алхам 1: ADC гэж юу вэ?

ADC буюу Аналогоос Дижитал Хөрвүүлэгч нь аналог хүчдэлийг микроконтроллер ашиглаж болох тоон утга болгон хөрвүүлэх боломжийг олгодог. Хэмжих дуртай аналог дохионы олон эх сурвалж байдаг. Температур, гэрлийн эрч хүч, зай, байрлал, хүчийг хэмждэг аналог мэдрэгчүүд байдаг.

Алхам 2: AVR дээр ADC хэрхэн ажилладаг вэ- Микроконтроллер

AVR ADC нь AVR микроконтроллерт аналог хүчдэлийг гадаад хэсгүүдээс цөөхөн, тоон утга руу хөрвүүлэх боломжийг олгодог. ATmega8 нь 10 битийн дараалсан ойролцоо ADC онцлогтой. ATmega8 нь PortC дээр 7 сувгийн ADC-тэй. ADC нь тусдаа тэжээлийн хүчдэлийн зүү AVCC -тэй. AVCC нь VCC -ээс ± 0.3 В -оос ихгүй байх ёстой. Хүчдэлийн лавлагаа нь AREF зүү дээр гаднаас салгагдсан байж болно. AVCC нь хүчдэлийн лавлагаа болгон ашигладаг. ADC-ийг тасралтгүй ажиллуулах (чөлөөт горим) эсвэл ганцхан хөрвүүлэлт хийхээр тохируулж болно.

Алхам 3: ADC хөрвүүлэх томъёо

ADC хөрвүүлэх томъёо
ADC хөрвүүлэх томъёо

Вин бол сонгосон оролтын зүү дээрх хүчдэл ба Vref сонгосон хүчдэлийн лавлагаа юм

Алхам 4: ATmega8 дээр ADC -ийг хэрхэн тохируулах вэ?

ATmega8 дээр ADC -ийг хэрхэн тохируулах вэ?
ATmega8 дээр ADC -ийг хэрхэн тохируулах вэ?

ATmega8 дээр ADC -ийг хэрэгжүүлэхийн тулд дараах бүртгэлүүдийг ашигладаг

ADC Multiplexer сонголт

Алхам 5: ADLAR сонголт

ADLAR сонголт
ADLAR сонголт
ADLAR сонголт
ADLAR сонголт

ADC зүүн тохируулгын үр дүн ADLAR бит нь ADC өгөгдлийн бүртгэлд ADC хөрвүүлэх үр дүнг танилцуулахад нөлөөлдөг. Үр дүнг тохируулахын тулд ADLAR руу нэгийг бичнэ үү. Үгүй бол үр дүнг зөв тохируулна

ADC хөрвүүлэлт дууссаны дараа үр дүнг ADCH болон ADCL -ээс олно ADCL -ийг уншихад ADCH -ийн өгөгдлийн бүртгэл ADCH -ийг унших хүртэл шинэчлэгддэггүй. Тиймээс хэрэв үр дүнг тохируулаад 8 битээс илүү нарийвчлалтай байх шаардлагагүй бол ADCH-ийг уншихад хангалттай. Үгүй бол эхлээд ADCL уншиж, дараа нь ADCH унших ёстой. Аналог суваг сонгох битүүд Эдгээр битүүдийн утга нь ADC -тэй ямар аналог оролтыг холбохыг сонгоно.

Алхам 6: ADCSRA сонголт

ADCSRA сонголт
ADCSRA сонголт
ADCSRA сонголт
ADCSRA сонголт

• Bit 7 - ADEN: ADC идэвхжүүлэх Энэ битийг нэг рүү бичих нь ADC -ийг идэвхжүүлдэг. Үүнийг тэг болгосноор ADC -ийг унтраадаг

• Бит 6 - ADSC: ADC хөрвүүлэлтийг дан хөрвүүлэх горимд эхлүүлэхдээ хөрвүүлэлт бүрийг эхлүүлэхийн тулд энэ битийг нэг рүү бичнэ үү. Чөлөөт гүйлтийн горимд энэ хөрвүүлэлтийг нэг рүү бичээд анхны хөрвүүлэлтийг эхлүүлнэ үү.

• Бит 5 - ADFR: ADC Чөлөөт гүйлтийг сонгох Энэ битийг (нэг) тохируулах үед ADC Чөлөөт гүйлтийн горимд ажилладаг. Энэ горимд ADC нь өгөгдлийн бүртгэлийг байнга дээжлэн шинэчилж байдаг. Энэ битийг (тэг) арилгаснаар Чөлөөт гүйлтийн горимыг зогсооно.

• Bit 4 - ADIF: ADC Interrupt Flag Энэ битийг ADC хувиргах ажил дуусч, өгөгдлийн бүртгэл шинэчлэгдэх үед тохируулна. ADRE хөрвүүлэлтийн бүрэн тасалдал нь ADIE бит болон SREG дахь I-битийг тохируулсан тохиолдолд хийгддэг. Холбогдох тасалдлын харьцах векторыг гүйцэтгэх үед ADIF нь техник хангамжаар цэвэрлэгддэг. Эсвэл ADIF -ийг туг дээр логикоор бичиж цэвэрлэнэ.

• Bit 3-ADIE: ADC Interrupt Enable Энэ битийг нэг рүү бичээд SREG дахь I-битийг тохируулах үед ADC Conversion Complete Interrupt идэвхжинэ.

• Bits 2: 0 - ADPS2: 0: ADC Prescaler Битүүдийг сонгоно уу Мэдээллийн хүснэгтийн дагуу ADC оролтын давтамж нь 50 КГц -ээс 200 КГц хооронд байхаар тохируулсан байх ёстой. ADC цагийг ADPS2: 0 системийн тусламжтайгаар системийн цагнаас гаргаж авсан болно. Эдгээр битүүд нь XTAL давтамж ба ADC -ийн оролтын цагийн хоорондох хуваах хүчин зүйлийг тодорхойлдог.

Алхам 7: Хэрэв та ADC -ийн үнэ цэнийг авахыг хүсч байвал доор жагсаасан зарим ажлыг хийх шаардлагатай болно

  • ADC утгыг тохируулна уу
  • LED гаралтын гаралтыг тохируулах
  • ADC тоног төхөөрөмжийг тохируулах
  • ADC -ийг идэвхжүүлэх
  • Аналогийг тоон хөрвүүлэлтийг эхлүүлэх
  • Үүрд мөнхөд

Хэрэв ADC -ийн утга илүү өндөр байвал Set LED -ийг өөр LED -ийг асаана уу

Алхам 8: ADC утгыг тохируулна уу

Код: uint8_t ADCValue = 128;

Алхам 9: Гаралтын LED зүүг тохируулна уу

Код: DDRB | = (1 << PB1);

Алхам 10: ADC тоног төхөөрөмжийг тохируулах

ADC тоног төхөөрөмжийг тохируулах

Энэ нь ADC -ийн хяналтын бүртгэлд битүүдийг тохируулах замаар хийгддэг. Нэгдүгээрт, ADC -ийн prescalar -ийг тохируулъя. Мэдээллийн хүснэгтийн дагуу ADC оролтын давтамж нь 50 КГц -ээс 200 КГц хооронд байхаар энэхүү урьдчилсан тооцоог тохируулах шаардлагатай байна. ADC цаг нь системийн цагнаас гаралтай. Системийн давтамж 1МГц бол 8 хэмжигч нь 125 кГц -ийн ADC давтамжтай болно. Урьдчилан тооцоолох хугацааг ADCSRA регистрийн ADPS битүүдээр тохируулдаг. Өгөгдлийн хүснэгтийн дагуу ADPS2: 0 -ийн бүх гурван битийг 011 болгож тохируулсан байх ёстой.

Код: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

Дараа нь ADC лавлах хүчдэлийг тохируулъя. Үүнийг ADMUX регистрийн REFS битүүд хянадаг. Дараахь нь лавлах хүчдэлийг AVCC гэж тохируулдаг.

Код: ADMUX | = (1 << REFS0);

Multiplexer -ээр дамжуулсан сувгийг ADC руу тохируулахын тулд ADMUX регистрийн MUX битүүдийг зохих ёсоор тохируулах шаардлагатай. Бид энд ADC5 ашиглаж байгаа болохоор

Код: ADMUX & = 0xF0; ADMUX | = 5;

ADC-ийг чөлөөтэй ажиллах горимд оруулахын тулд ADCSRA бүртгэлд тохирох нэртэй ADFR битийг тохируулна уу.

Код: ADCSRA | = (1 << ADFR);

ADC утгыг уншихад хялбар болгохын тулд сүүлчийн тохиргоог өөрчлөх болно. ADC нь 10 битийн нарийвчлалтай боловч энэ их мэдээлэл шаардлагагүй байдаг. Энэхүү 10 битийн утга нь ADCH ба ADCL гэсэн 8 битийн хоёр регистрт хуваагдана. Анхдагч байдлаар, ADC -ийн хамгийн бага 8 битийг ADCL -ээс олдог бөгөөд дээд хоёр нь ADCH -ийн хамгийн доод хоёр бит юм. ADMUX регистрт ADLAR битийг тохируулснаар бид ADC утгыг зүүн тийш зэрэгцүүлж болно. Энэ нь хэмжилтийн хамгийн өндөр 8 битийг ADCH бүртгэлд, үлдсэнийг нь ADCL бүртгэлд оруулна. Хэрэв бид ADCH регистрийг уншвал бид 0 -ээс 5 вольтын хэмжилтийг 0 -ээс 255 хүртэлх тоогоор илэрхийлдэг 8 битийн утгыг авах болно. Бид үндсэндээ 10 битийн ADC хэмжилтийг 8 бит болгон хувиргадаг. ADLAR битийг тохируулах код энд байна:

Код:

ADMUX | = (1 << ADLAR); Энэ жишээнд зориулсан ADC тоног төхөөрөмжийн тохиргоог хийж дуусгасан болно. ADC хэмжилт хийж эхлэхээс өмнө өөр хоёр битийг тохируулах шаардлагатай.

Алхам 11: ADC -ийг идэвхжүүлнэ үү

ADC -ийг идэвхжүүлэхийн тулд ADEN битийг ADCSRA дээр тохируулна уу.

Код: ADCSRA | = (1 << ADEN);

Алхам 12: Аналогоос тоон хөрвүүлэлтийг эхлүүлэх

ADC хэмжилтийг эхлүүлэхийн тулд ADCSRA дахь ADSC битийг тохируулах шаардлагатай.

Код: ADCSRA | = (1 << ADSC);

Энэ үед ADC нь ADC5 дээр үзүүлсэн хүчдэлийн дээжийг тасралтгүй авч эхэлнэ. Энэ хүртэлх код дараах байдлаар харагдах болно.

Алхам 13: Үүрд мөнхөд

Үлдэх цорын ганц зүйл бол ADC -ийн утгыг туршиж үзээд LED -ийг өндөр / бага үзүүлэлтийг харуулахаар тохируулах явдал юм. ADCH дахь ADC уншилт нь хамгийн ихдээ 255 утгатай тул хүчдэлийн өндөр эсвэл бага эсэхийг тодорхойлохын тулд th -ийн туршилтын утгыг сонгосон. FOR гогцоонд байгаа IF/ELSE -ийн энгийн мэдэгдэл нь зөв LED -ийг асаах боломжийг бидэнд олгоно.

Код

хэрэв (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // LED асаах

}

өөр

{

PORTB & = ~ (1 << PB0); // LED унтраах

}

Алхам 14: Эцэст нь код бүрэн байна

Код:

#оруулах

int main (хүчингүй)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // LED1 -ийг гаралт болгон тохируулна уу

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC prescalar -ийг 8 - // 125KHz түүврийн хурд 1MHz болгон тохируулна уу

ADMUX | = (1 << REFS0); // ADC лавлагааг AVCC болгож тохируулна уу

ADMUX | = (1 << ADLAR); // Зүүн талын ADC -ийн үр дүнг 8 битийн хялбар унших боломжтой болгохын тулд тохируулна уу

ADMUX & = 0xF0;

ADMUX | = 5; // ADC0 ашиглахын тулд MUX утгыг өөрчлөх шаардлагатай байв

ADCSRA | = (1 << ADFR); // ADC-ийг Чөлөөт гүйлтийн горимд тохируулна уу

ADCSRA | = (1 << ADEN); // ADC -ийг идэвхжүүлэх

ADCSRA | = (1 << ADSC); // A2D хөрвүүлэлтийг (1) байхад эхлүүлээрэй // Loop Forever

{

хэрэв (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // LED1 -ийг асаана уу

}

өөр

{

PORTE & = ~ (1 << PB1); // LED1 -ийг унтраа

}

}

буцаах 0;

}

Эхлээд энэ гарын авлагыг нийтлэх Энд дарна уу

Зөвлөмж болгож буй: