Orodha ya maudhui:

Utangulizi wa ADC katika AVR Microcontroller - kwa Kompyuta: Hatua 14
Utangulizi wa ADC katika AVR Microcontroller - kwa Kompyuta: Hatua 14

Video: Utangulizi wa ADC katika AVR Microcontroller - kwa Kompyuta: Hatua 14

Video: Utangulizi wa ADC katika AVR Microcontroller - kwa Kompyuta: Hatua 14
Video: How measure DC Voltage and Current and build Energy meter with LCD Display | Lesson 104 2024, Julai
Anonim
Utangulizi wa ADC katika AVR Microcontroller | kwa Kompyuta
Utangulizi wa ADC katika AVR Microcontroller | kwa Kompyuta

Katika mafunzo ya thid utajua kila kitu ADC katika avr microcontroller

Hatua ya 1: ADC ni nini?

ADC, au Analog to Digital Converter, inaruhusu mtu kubadilisha voltage ya analog kuwa dhamani ya dijiti ambayo inaweza kutumiwa na mdhibiti mdogo. Kuna vyanzo vingi vya ishara za analog ambazo mtu anapenda kupima. Kuna sensorer za analog zinazopatikana ambazo hupima joto, kiwango cha mwanga, umbali, msimamo, na nguvu, kwa kutaja chache tu.

Hatua ya 2: Jinsi ADC inavyofanya kazi katika AVR- Microcontroller

ADR ADC inaruhusu mdhibiti mdogo wa AVR kubadilisha voltages za Analog kuwa maadili ya dijiti na chache kuwa sehemu za nje. ATmega8 ina alama ya kulinganisha AD-10 mfululizo. ADC ina pini tofauti ya usambazaji wa analog, AVCC. AVCC haipaswi kutofautiana zaidi ya ± 0.3V kutoka VCC.. Rejeleo la voltage linaweza kung'olewa nje kwenye pini ya AREF. AVCC hutumiwa kama kumbukumbu ya voltage. ADC pia inaweza kuweka kuendelea kuendelea (hali ya kukimbia bure) au kufanya uongofu mmoja tu.

Hatua ya 3: Mfumo wa Uongofu wa ADC

Mfumo wa Uongofu wa ADC
Mfumo wa Uongofu wa ADC

Ambapo Vin ni voltage kwenye pini ya pembejeo iliyochaguliwa na Vref rejeleo la voltage iliyochaguliwa

Hatua ya 4: Jinsi ya kusanidi ADC katika ATmega8?

Jinsi ya kusanidi ADC katika ATmega8?
Jinsi ya kusanidi ADC katika ATmega8?

Rejista zifuatazo zinatumika kwa utekelezaji wa ADC katika ATmega8

Uchaguzi wa ADC Multiplexer

Hatua ya 5: Uteuzi wa ADLAR

Uteuzi wa ADLAR
Uteuzi wa ADLAR
Uteuzi wa ADLAR
Uteuzi wa ADLAR

ADC Kushoto Kurekebisha Matokeo Kidogo cha ADLAR huathiri uwasilishaji wa matokeo ya ubadilishaji wa ADC katika Sajili ya Takwimu ya ADC. Andika moja kwa ADLAR kushoto kurekebisha matokeo. Vinginevyo, matokeo ni sawa kubadilishwa

Wakati ubadilishaji wa ADC umekamilika, matokeo hupatikana katika ADCH na ADCL Wakati ADCL inasomwa, Daftari la Takwimu la ADC halijasasishwa hadi ADCH itakaposomwa. Kwa hivyo, ikiwa matokeo yameachwa yamebadilishwa na hakuna zaidi ya usahihi wa 8-bit inahitajika, inatosha kusoma ADCH. Vinginevyo, ADCL lazima isomwe kwanza, kisha ADCH. Biti ya Uteuzi wa Kituo cha Analog Thamani ya bits hizi huchagua ni pembejeo gani za analogi zimeunganishwa na ADC.

Hatua ya 6: Uteuzi wa ADCSRA

Uteuzi wa ADCSRA
Uteuzi wa ADCSRA
Uteuzi wa ADCSRA
Uteuzi wa ADCSRA

• Kidogo 7 - ADEN: ADC Wezesha Kuandika kidogo hii kwa moja kuwezesha ADC. Kwa kuiandika kwa sifuri, ADC imezimwa

• Kidogo cha 6 - ADSC: ADC Anza Ubadilishaji Katika Njia ya Ubadilishaji Moja, andika kidogo hadi moja kuanza kila uongofu. Katika hali ya Kuendesha Bure, andika kidogo hii ili kuanza uongofu wa kwanza.

• Kidogo 5 - ADFR: ADC Bure Mbio Chagua Wakati kipengee hiki kimewekwa (moja) ADC inafanya kazi katika hali ya Kuendesha Bure. Kwa hali hii, sampuli za ADC na husasisha Rejista za Takwimu kila wakati. Kufuta kidogo (sifuri) Kumaliza Njia ya Kuendesha Bure.

• Kidogo 4 - ADIF: Bendera ya Usumbufu wa ADC Kidogo hiki kinawekwa wakati ubadilishaji wa ADC unakamilisha na Rejista za Takwimu zinasasishwa. Usumbufu kamili wa Uongofu wa ADC unafanywa ikiwa ADIE kidogo na I-bit katika SREG zimewekwa. ADIF inafutwa na vifaa wakati wa kutekeleza usumbufu wa Kushughulikia Vector. Vinginevyo, ADIF inafutwa kwa kuandika moja ya mantiki kwa bendera.

• Kidogo 3 - ADIE: Kukatizwa kwa ADC Wezesha Wakati kidogo hii imeandikwa kwa moja na I-bit katika SREG imewekwa, ADC Conversion Complete Interrupt imeamilishwa.

Bits 2: 0 - ADPS2: 0: Prescaler ya ADC Chagua Bits Kulingana na data, data hii inahitaji kuwekwa ili mzunguko wa uingizaji wa ADC uwe kati ya 50 KHz na 200 KHz. Saa ya ADC inatokana na saa ya mfumo kwa msaada wa ADPS2: 0 Biti hizi huamua sababu ya mgawanyiko kati ya masafa ya XTAL na saa ya kuingiza kwa ADC.

Hatua ya 7: Ikiwa Unataka Kuchukua Thamani ya ADC Lazima Uhitaji Kazi Iliyofanywa Iliyoorodheshwa Hapa chini

  • Weka dhamana ya ADC
  • Sanidi pini ya pato la LED
  • Sanidi Vifaa vya ADC
  • Washa ADC
  • Anza Analog kwa Ubadilishaji wa Dijiti
  • WAKATI Milele

Ikiwa ADC Thamani ya Juu kisha Weka thamani, Washa LED Nyingine Zima LED

Hatua ya 8: Weka Thamani ya ADC

Nambari: uint8_t ADCValue = 128;

Hatua ya 9: Sanidi Pembe ya LED ya Pato

Nambari: DDRB | = (1 << PB1);

Hatua ya 10: Sanidi vifaa vya ADC

Sanidi Vifaa vya ADC

Hii imefanywa kupitia kuweka bits kwenye rejista za kudhibiti kwa ADC. Kwanza, wacha tuweke kiunga kwa ADC. Kulingana na hati ya data, uangalizi huu unahitaji kuwekwa ili masafa ya kuingiza ADC iwe kati ya 50 KHz na 200 KHz. Saa ya ADC imetokana na saa ya mfumo. Na masafa ya mfumo wa 1MHz, daktari mkuu wa 8 atasababisha masafa ya ADC ya Khz 125. Usimamizi umewekwa na bits za ADPS kwenye rejista ya ADCSRA. Kulingana na data, data zote tatu za ADPS2: 0 lazima ziwekwe kwa 011 kupata daktari 8.

Nambari: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

Ifuatayo, wacha tuweke voltage ya kumbukumbu ya ADC. Hii inadhibitiwa na bits za REFS kwenye rejista ya ADMUX. Yafuatayo huweka voltage ya kumbukumbu kwa AVCC.

Nambari: ADMUX | = (1 << REFS0);

Ili kuweka kituo kilichopita kupitia multiplexer kwenda kwa ADC, vipande vya MUX kwenye rejista ya ADMUX vinahitaji kuwekwa ipasavyo. Kwa kuwa tunatumia ADC5 hapa

Nambari: ADMUX & = 0xF0; ADMUX | = 5;

Ili kuweka ADC katika hali ya bure, weka kitufe kilichoitwa kwa jina la ADFR katika rejista ya ADCSRA:

Nambari: ADCSRA | = (1 << ADFR);

Mabadiliko ya mipangilio ya mwisho yatafanywa ili kufanya usomaji wa dhamana ya ADC iwe rahisi. Ingawa ADC ina azimio la bits 10, habari hii mara nyingi sio lazima. Thamani hii kidogo imegawanywa kwenye sajili mbili za 8, ADCH na ADCL. Kwa chaguo-msingi, bits 8 za chini kabisa za thamani ya ADC zinapatikana katika ADCL, na mbili za juu zikiwa bits mbili za chini kabisa za ADCH. Kwa kuweka kipengee cha ADLAR kwenye rejista ya ADMUX, tunaweza kushoto kulinganisha thamani ya ADC. Hii inaweka vipande 8 vya juu zaidi vya kipimo katika rejista ya ADCH, na zingine kwenye rejista ya ADCL. Ikiwa tutasoma rejista ya ADCH, tunapata thamani kidogo ya 8 ambayo inawakilisha kipimo chetu cha voliti 0 hadi 5 kama nambari kutoka 0 hadi 255. Kimsingi tunageuza kipimo chetu cha ADC 10 kuwa 8 kidogo. Hapa kuna nambari ya kuweka kidogo ADLAR:

Nambari:

ADMUX | = (1 << ADLAR); Hiyo inakamilisha usanidi wa vifaa vya ADC kwa mfano huu. Biti mbili zaidi zinahitaji kuwekwa kabla ya ADC kuanza kuchukua vipimo.

Hatua ya 11: Wezesha ADC

Ili kuwezesha ADC, weka ADEN kidogo katika ADCSRA:

Nambari: ADCSRA | = (1 << ADEN);

Hatua ya 12: Anza Analog kwa Ubadilishaji wa Dijiti

Ili kuanza vipimo vya ADC, ADSC kidogo katika ADCSRA inahitaji kuwekwa:

Nambari: ADCSRA | = (1 << ADSC);

Kwa wakati huu, ADC ingeanza kuendelea kuchukua sampuli ya voltage iliyowasilishwa kwenye ADC5. Nambari ya kufikia hapa itaonekana kama hii:

Hatua ya 13: WAKATI MILELE

Kitu pekee kilichobaki kufanya ni kujaribu thamani ya ADC na kuweka LEDs kuonyesha dalili ya juu / chini. Kwa kuwa usomaji wa ADC katika ADCH una thamani ya juu ya 255, thamani ya jaribio la th ilichaguliwa kuamua ikiwa voltage ilikuwa kubwa au ya chini. Taarifa rahisi ya IF / ELSE katika matanzi ya FOR itaturuhusu kuwasha taa sahihi ya LED kwenye:

Kanuni

ikiwa (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Washa LED

}

mwingine

{

PORTB & = ~ (1 << PB0); // Zima LED

}

Hatua ya 14: Mwishowe Nambari kamili ni

Nambari:

# pamoja

kuu (batili)

{

uint8_t ADC Thamani = 128;

DDRB | = (1 << PB0); // Weka LED1 kama pato

ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Weka mapema ya ADC kuwa 8 - // 125KHz kiwango cha sampuli 1MHz

ADMUX | = (1 << REFS0); // Weka kumbukumbu ya ADC kwa AVCC

ADMUX | = (1 << ADLAR); // Kushoto rekebisha matokeo ya ADC ili kuruhusu usomaji rahisi wa 8 kidogo

ADMUX & = 0xF0;

ADMUX | = 5; // Thamani za MUX zinahitajika kubadilishwa ili kutumia ADC0

ADCSRA | = (1 << ADFR); // Weka ADC kwa Njia ya Kuendesha Bure

ADCSRA | = (1 << ADEN); // Wezesha ADC

ADCSRA | = (1 << ADSC); // Anza Ubadilishaji wa A2D wakati (1) // Kitanzi Milele

{

ikiwa (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // Washa LED1

}

mwingine

{

PORTE & = ~ (1 << PB1); // Zima LED1

}

}

kurudi 0;

}

Kwanza Chapisha mafunzo haya Bonyeza Hapa

Ilipendekeza: