Мазмұны:

AVR микроконтроллерінде ADC -ке кіріспе - Жаңадан бастаушыларға: 14 қадам
AVR микроконтроллерінде ADC -ке кіріспе - Жаңадан бастаушыларға: 14 қадам

Бейне: AVR микроконтроллерінде ADC -ке кіріспе - Жаңадан бастаушыларға: 14 қадам

Бейне: AVR микроконтроллерінде ADC -ке кіріспе - Жаңадан бастаушыларға: 14 қадам
Бейне: АВТОМАТИЧЕСКИЙ ВВОД РЕЗЕРВА - Как собрать схему АВР? Как работает схема АВР? Для чего нужно АВР? 2024, Шілде
Anonim
AVR микроконтроллерінде ADC -ке кіріспе | жаңадан бастаушыларға арналған
AVR микроконтроллерінде ADC -ке кіріспе | жаңадан бастаушыларға арналған

Бұл оқулықта сіз AVR микроконтроллеріндегі ADC барлығын білетін боласыз

1 -қадам: ADC дегеніміз не?

ADC немесе аналогты цифрлық түрлендіргіш аналогты кернеуді микроконтроллер пайдалана алатын цифрлық мәнге түрлендіруге мүмкіндік береді. Аналогты сигналдардың көптеген көздері бар, олар өлшеуді қалайды. Температураны, жарық қарқындылығын, қашықтықты, позицияны және күшті өлшейтін аналогты сенсорлар бар.

2-қадам: ADR AVR-микроконтроллерде қалай жұмыс істейді

AVR ADC AVR микроконтроллеріне аналогты кернеулерді сыртқы бөліктері аз немесе аз сандық мәндерге түрлендіруге мүмкіндік береді. ATmega8-де ADC-тың 10-биттік жуықтауы бар. ATmega8-де PortC-те 7 арналы ADC бар. ADC бөлек аналогтық кернеу түйрегіші бар, AVCC. AVCC VCC -тен ± 0,3 В -тан аспауы керек. Кернеу анықтамасы AREF түйреуішінде сырттай ажыратылуы мүмкін. AVCC кернеу анықтамасы ретінде қолданылады. ADC-ті үздіксіз жұмыс істеуге (еркін жұмыс режимі) немесе тек бір түрлендіруге орнатуға болады.

3 -қадам: ADC түрлендіру формуласы

ADC түрлендіру формуласы
ADC түрлендіру формуласы

Мұндағы Vin - таңдалған кіріс шнурындағы кернеу және таңдалған кернеудің сілтемесі Vref

4 -қадам: ATmega8 -де ADC қалай теңшеледі?

ATmega8 -де ADC қалай теңшеуге болады?
ATmega8 -де ADC қалай теңшеуге болады?

ATmega8 -де ADC енгізу үшін келесі тізілімдер қолданылады

ADC мультиплексорын таңдау

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 таңдау

• 7 -бит - ADEN: ADC қосу Бұл битті бірге жазу ADC қосады. Оны нөлге жазу арқылы ADC өшіріледі

• 6 -разряд - ADSC: ADC конверсияны Жалғыз түрлендіру режимінде бастау, әр конверсияны бастау үшін осы битті біреуіне жазыңыз. Еркін жүгіру режимінде бірінші конверсияны бастау үшін осы битті біреуіне жазыңыз.

• 5 -бит - ADFR: ADC Free Running таңдау Бұл бит (бір) орнатылған кезде ADC Free Running режимінде жұмыс істейді. Бұл режимде ADC деректер тізілімін үздіксіз іріктейді және жаңартады. Бұл бит (нөл) тазаланса, еркін жұмыс режимі тоқтатылады.

• 4 -разряд - ADIF: ADC үзу жалаушасы Бұл бит ADC түрлендіру аяқталғанда және деректер тізілімі жаңартылғанда орнатылады. ADC конверсиясының толық үзілуі, егер ADIE биті мен SREG-дегі I-бит орнатылса орындалады. Сәйкес Handling Vector өңдеу үзілісін орындау кезінде ADIF аппараттық құралдармен тазартылады. Немесе ADIF жалаушаға логикалық жазу арқылы тазартылады.

• 3-разряд-ADIE: ADC үзілісін қосу Бұл бит біреуіне жазылып, SREG-дегі I-бит орнатылған кезде, ADC түрлендірудің толық үзілуі қосылады.

• Биттер 2: 0 - ADPS2: 0: ADC Prescaler Биттерді таңдаңыз Деректер кестесіне сәйкес, бұл алдын ала есептеуді ADC кіріс жиілігі 50 КГц пен 200 КГц аралығында болатындай етіп орнату қажет. ADC сағаты ADPS2 көмегімен жүйелік сағаттан алынған: 0 Бұл биттер XTAL жиілігі мен ADC кіріс сағаты арасындағы бөлу коэффициентін анықтайды.

7 -қадам: Егер сіз ADC мәнін алғыңыз келсе, сізге төменде көрсетілген жұмыс қажет

  • ADC мәнін орнатыңыз
  • Шығу светодиодының түйреуішін конфигурациялаңыз
  • ADC аппараттық құралын конфигурациялау
  • ADC қосу
  • Аналогты сандық түрлендіруді бастаңыз
  • МӘҢГІЛІК

Егер ADC мәні орнатылған мәннен жоғары болса, басқа жарық диодты қосыңыз, басқа жарықдиодты өшіріңіз

8 -қадам: ADC мәнін орнатыңыз

Код: uint8_t ADCValue = 128;

9 -қадам: Жарық диодты түйреуішті конфигурациялаңыз

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

10 -қадам: ADC аппараттық құралын конфигурациялау

ADC аппараттық құралын конфигурациялау

Бұл ADC басқару регистрлерінде биттерді орнату арқылы жүзеге асады. Алдымен ADC үшін прескалярды орнатайық. Деректер кестесіне сәйкес, бұл алдын ала есептеуді ADC кіріс жиілігі 50 КГц пен 200 КГц аралығында болатындай етіп орнату қажет. ADC сағаты жүйелік сағаттан алынған. Жүйелік жиілігі 1 МГц болғанда, 8 -дің алдын ала есептегіші 125 кГц АДК жиілігіне әкеледі. Алдын ала бағалау ADCSRA регистріндегі ADPS биттерімен орнатылады. Деректер кестесіне сәйкес, ADPS2: 0 үш битінің барлығы 8 алдын ала есептегішті алу үшін 011 мәніне орнатылуы керек.

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

Әрі қарай, ADC эталондық кернеуін орнатайық. Бұл ADMUX регистріндегі REFS биттерімен басқарылады. Төменде AVCC эталондық кернеуі орнатылады.

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

ADP -ге мультиплексор арқылы өтетін арнаны орнату үшін ADMUX регистріндегі MUX биттерін сәйкесінше орнату қажет. Біз мұнда ADC5 қолданамыз

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

ADC-ті еркін жұмыс режиміне қою үшін ADCSRA реестрінде дұрыс аталатын ADFR битін орнатыңыз:

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

ADC мәнін оқуды жеңілдету үшін соңғы бір параметр өзгерісі енгізіледі. ADC рұқсаты 10 бит болса да, бұл көп ақпарат қажет емес. Бұл 10 биттік мән 8 биттік екі регистрге бөлінеді, ADCH және ADCL. Әдепкі бойынша, ADCL мәнінің ең төменгі 8 биті ADCL -де табылған, ал жоғарғы екеуі ADCH ең төменгі екі биті. ADMUX регистрінде ADLAR битін орнату арқылы біз ADC мәнін солға туралауға болады. Бұл ADCH регистріне ең үлкен 8 битті, ал қалғаны ADCL регистріне енгізеді. Егер біз ADCH регистрін оқитын болсақ, біз 0 -ден 5 вольтке дейінгі 0 -ден 255 -ке дейінгі санды білдіретін 8 биттік мәнді аламыз. Міне ADLAR битін орнататын код:

Код:

ADMUX | = (1 << ADLAR); Бұл мысал үшін ADC аппараттық құралын орнатуды аяқтайды. ADC өлшеуді бастамас бұрын тағы екі бит орнату керек.

11 -қадам: ADC қосыңыз

ADC қосу үшін ADCSRA ішіндегі ADEN битін орнатыңыз:

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

12 -қадам: Аналогты цифрлық түрлендіруді бастаңыз

ADC өлшеулерін бастау үшін ADCSRA ішіндегі ADSC битін орнату қажет:

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

Бұл кезде ADC ADC5 ұсынылған кернеуді іріктеуді үздіксіз бастайды. Осы кездегі код келесідей болады:

13 -қадам: мәңгілікке

Жалғыз нәрсе - ADC мәнін тексеру және жарық диодтарын жоғары / төмен көрсеткішті көрсету үшін орнату. ADCH бойынша ADC көрсеткіші 255 максималды мәнге ие болғандықтан, кернеудің жоғары немесе төмен екенін анықтау үшін сынақ мәні таңдалды. FOR ілмектеріндегі қарапайым IF/ELSE мәлімдемесі бізге дұрыс жарықдиодты қосуға мүмкіндік береді:

Код

егер (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Жарық диодты қосыңыз

}

басқа

{

PORTB & = ~ (1 << PB0); // Жарық диодты өшіріңіз

}

14 -қадам: Соңында толық код бар

Код:

#қосу

int main (жарамсыз)

{

uint8_t ADCValue = 128;

DDRB | = (1 << PB0); // LED1 шығыс ретінде орнатыңыз

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // ADC prescalar мәнін 8 - // 125 кГц үлгі жиілігі 1 МГц етіп орнатыңыз

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)

{

ПОРТБ | = (1 << PB0); // LED1 қосыңыз

}

басқа

{

PORTE & = ~ (1 << PB1); // LED1 өшіріңіз

}

}

қайтару 0;

}

Алдымен осы оқулықты жариялаңыз Мұнда басыңыз

Ұсынылған: