ዝርዝር ሁኔታ:

የኤ.ዲ.ሲ መግቢያ በ AVR ማይክሮ መቆጣጠሪያ - ለጀማሪዎች 14 ደረጃዎች
የኤ.ዲ.ሲ መግቢያ በ AVR ማይክሮ መቆጣጠሪያ - ለጀማሪዎች 14 ደረጃዎች

ቪዲዮ: የኤ.ዲ.ሲ መግቢያ በ AVR ማይክሮ መቆጣጠሪያ - ለጀማሪዎች 14 ደረጃዎች

ቪዲዮ: የኤ.ዲ.ሲ መግቢያ በ AVR ማይክሮ መቆጣጠሪያ - ለጀማሪዎች 14 ደረጃዎች
ቪዲዮ: Ehlers-Danlos Syndrome (EDS) እና hypermobility በዶክተር አንድሪያ ፉርላን ኤም.ዲ.ዲ. ፒ 2024, ህዳር
Anonim
በ AVR ማይክሮ መቆጣጠሪያ ውስጥ ለኤዲሲ መግቢያ | ለጀማሪዎች
በ AVR ማይክሮ መቆጣጠሪያ ውስጥ ለኤዲሲ መግቢያ | ለጀማሪዎች

በ thid አጋዥ ስልጠና ውስጥ ሁሉንም ነገር ኤዲሲን በአቫር ማይክሮ መቆጣጠሪያ ውስጥ ያውቃሉ

ደረጃ 1 ADC ምንድን ነው?

ኤዲሲ ፣ ወይም አናሎግ ወደ ዲጂታል መለወጫ ፣ አንድ የአናሎግ ቮልቴጅን በማይክሮ መቆጣጠሪያ ሊጠቀምበት ወደሚችል ዲጂታል እሴት እንዲቀይር ያስችለዋል። አንድ ሰው ለመለካት ሊወደው የሚችል ብዙ የአናሎግ ምልክቶች ምንጮች አሉ። ጥቂቶቹን ለመጥቀስ ያህል የሙቀት መጠንን ፣ የብርሃን ጥንካሬን ፣ ርቀትን ፣ ቦታን እና ኃይልን የሚለኩ የአናሎግ ዳሳሾች አሉ።

ደረጃ 2- በ AVR- ማይክሮ መቆጣጠሪያ ውስጥ ADC እንዴት እንደሚሰራ

የ AVR ADC የኤቪአር ማይክሮ መቆጣጠሪያ የአናሎግ ቮልቴጆችን ወደ ጥቂት ዲጂታል እሴቶች ለመለወጥ ያስችለዋል። ATmega8 ባለ 10 ቢት ተከታታይ ግምታዊ ADC አለው። Atmega8 በ PortC 7 ሰርጥ ኤዲሲ አለው። ኤዲሲው የተለየ የአናሎግ አቅርቦት ቮልቴጅ ፒን ፣ AVCC አለው። AVCC ከ VCC ከ ± 0.3V በላይ ሊለያይ አይገባም። የቮልቴጅ ማመሳከሪያው በ AREF ፒን ላይ በውጪ ሊፈታ ይችላል። AVCC እንደ ቮልቴጅ ማጣቀሻ ጥቅም ላይ ይውላል። ኤዲሲው ያለማቋረጥ እንዲሠራ (የነፃ አሂድ ሞድ) ወይም አንድ ልወጣ ብቻ ለማድረግ ሊቀናበር ይችላል።

ደረጃ 3 የ ADC የመቀየሪያ ቀመር

የኤ.ዲ.ሲ የልወጣ ቀመር
የኤ.ዲ.ሲ የልወጣ ቀመር

ቪን በተመረጠው የግብዓት ፒን ላይ ያለው ቮልቴጅ እና የተመረጠው የቮልቴጅ ማጣቀሻ Vref ነው

ደረጃ 4: በ ATmega8 ውስጥ ADC ን እንዴት ማዋቀር?

ATmega8 ውስጥ ADC ን እንዴት ማዋቀር?
ATmega8 ውስጥ ADC ን እንዴት ማዋቀር?

የሚከተሉት መመዝገቢያዎች በ ATmega8 ውስጥ ለ ADC ትግበራ ያገለግላሉ

የኤ.ዲ.ሲ ባለብዙ ባለሙያ ምርጫ

ደረጃ 5: የ ADLAR ምርጫ

የ ADLAR ምርጫ
የ ADLAR ምርጫ
የ ADLAR ምርጫ
የ ADLAR ምርጫ

የ ADC ግራ ውጤት ያስተካክሉ ADLAR ቢት በ ADC የውሂብ መዝገብ ውስጥ የ ADC ቅየራ ውጤትን አቀራረብ ላይ ተጽዕኖ ያሳድራል። ውጤቱን ለማስተካከል በግራ በኩል አንዱን ወደ ADLAR ይፃፉ። ያለበለዚያ ውጤቱ በትክክል ተስተካክሏል

የኤ.ዲ.ሲ ቅየራ ሲጠናቀቅ ውጤቱ በ ADCH እና ADCL ውስጥ ይገኛል ADCL ሲነበብ ፣ ADCH እስኪያነብ ድረስ የ ADC የውሂብ መመዝገቢያ አይዘምንም። በውጤቱም ፣ ውጤቱ ተስተካክሎ ከ 8 ቢት በላይ ትክክለኛነት የማይፈለግ ከሆነ ፣ ADCH ን ማንበብ በቂ ነው። አለበለዚያ ፣ ADCL መጀመሪያ መነበብ አለበት ፣ ከዚያ ADCH። የአናሎግ ሰርጥ ምርጫ ቢት የእነዚህ ቢት ዋጋ የትኞቹ የአናሎግ ግብዓቶች ከኤዲሲ ጋር እንደሚገናኙ ይመርጣል።

ደረጃ 6 የ ADCSRA ምርጫ

የ ADCSRA ምርጫ
የ ADCSRA ምርጫ
የ ADCSRA ምርጫ
የ ADCSRA ምርጫ

• ቢት 7 - አዴን - ኤዲሲ ይህንን ቢት ለአንዱ መፃፍ ኤዲሲን ያስችላል። ወደ ዜሮ በመጻፍ ፣ ኤዲሲው ጠፍቷል

• ቢት 6 - ኤ.ዲ.ኤስ.ሲ. - ADC ን መለወጥ በአንዲት የልወጣ ሁኔታ ውስጥ ፣ እያንዳንዱን ልወጣ ለመጀመር ይህንን ትንሽ ወደ አንዱ ይፃፉ። በነጻ አሂድ ሁኔታ ውስጥ የመጀመሪያውን ልወጣ ለመጀመር ይህንን ትንሽ ወደ አንዱ ይፃፉ።

• ቢት 5 - ADFR: ADC ነፃ ሩጫ ይምረጡ ይህ ቢት ሲዋቀር (አንድ) ኤዲሲው በነጻ የማስኬድ ሁኔታ ውስጥ ይሠራል። በዚህ ሁኔታ ፣ የኤ.ዲ.ሲ ናሙናዎች እና የመረጃ መዝገቦችን ያለማቋረጥ ያዘምናል። ይህን ትንሽ (ዜሮ) ማጽዳት የነፃ ሩጫ ሁነታን ያበቃል።

• ቢት 4 - ኤዲኤፍ ፦ ኤዲሲ ማቋረጫ ሰንደቅ ይህ ቢት የሚዘጋጀው የኤዲሲ ልወጣ ሲጠናቀቅ እና የውሂብ መመዝገቢያዎቹ ሲዘመኑ ነው። ADIE ቢት እና በ SREG ውስጥ I-bit ከተዋቀሩ የ ADC ልወጣ የተሟላ መቋረጥ ይፈጸማል። ተጓዳኝ ማቋረጫ አያያዝ ቬክተርን ሲፈጽም ኤዲኤፍ በሃርድዌር ይጸዳል። በአማራጭ ፣ ኤዲኤፍ ለሠንደቅ ዓላማው አመክንዮአዊ በመጻፍ ይጸዳል።

• ቢት 3-ADIE: ADC ማቋረጥ ያንቁ ይህ ቢት ለአንድ ሲፃፍ እና በ SREG ውስጥ ያለው I-bit ሲዋቀር ፣ የ ADC ልወጣ የተሟላ ማቋረጫ ገቢር ይሆናል።

• ቢት 2: 0 - ADPS2: 0: ADC Prescaler Select Bits በውሂብ ሉህ መሠረት ፣ የኤዲሲ የግብዓት ድግግሞሽ ከ 50 ኪኸ እስከ 200 ኪኸዝ እንዲሆን ይህ ቅድመ -ተቆጣጣሪ መዘጋጀት አለበት። የኤ.ዲ.ሲ ሰዓት በ ADPS2: 0 እነዚህ ቢት በ XTAL ድግግሞሽ እና በ ADC የግብዓት ሰዓት መካከል ያለውን የመከፋፈል ሁኔታ ይወስናሉ።

ደረጃ 7: የ ADC ዋጋን መውሰድ ከፈለጉ ከዚህ በታች የተዘረዘረውን የተወሰነ ሥራ ማከናወን አለብዎት

  • የ ADC እሴት ያዘጋጁ
  • የ LED ፒን ውፅዓት ያዋቅሩ
  • የ ADC ሃርድዌር ያዋቅሩ
  • ADC ን አንቃ
  • አናሎግ ወደ ዲጂታል ልወጣዎች ይጀምሩ
  • ለዘለዓለም

የኤ.ዲ.ሲ እሴት ከፍ ካለ ከዚያ እሴትን ያዘጋጁ ፣ ኤልኢዲ ኤልኢስን ያብሩ

ደረጃ 8 የ ADC እሴት ያዘጋጁ

ኮድ: uint8_t ADCValue = 128;

ደረጃ 9 የውጤት LED ፒን ያዋቅሩ

ኮድ: DDRB | = (1 << PB1);

ደረጃ 10 የ ADC ሃርድዌርን ያዋቅሩ

የ ADC ሃርድዌር ያዋቅሩ

ይህ የሚከናወነው ለኤ.ዲ.ሲ በመቆጣጠሪያ መመዝገቢያዎች ውስጥ ቢት በማቀናበር ነው። በመጀመሪያ ፣ ለኤ.ዲ.ሲ ቅድመ -ተቆጣጣሪ እናስቀምጥ። በውሂብ ሉህ መሠረት ፣ የኤዲሲ የግብዓት ድግግሞሽ ከ 50 ኪኸ እስከ 200 ኪኸዝ እንዲደርስ ይህ ቅድመ -ተቆጣጣሪ መዘጋጀት አለበት። የኤ.ዲ.ሲ ሰዓት ከስርዓት ሰዓት የተገኘ ነው። በ 1 ሜኸር የስርዓት ድግግሞሽ ፣ የ 8 ቅድመ -ተቆጣጣሪ የኤዲሲ ድግግሞሽ 125 ኪኸስ ያስከትላል። ቅድመ -ውሳኔው በ ADCSRA መዝገብ ውስጥ በ ADPS ቢት ተዘጋጅቷል። በውሂብ ሉህ መሠረት ፣ ሦስቱ ADPS2: 0 ቢት 8 ቅድመ -ተቆጣጣሪ ለማግኘት 011 መዘጋጀት አለባቸው።

ኮድ ፦ ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);

በመቀጠል የኤዲሲን የማጣቀሻ ቮልቴጅን እናስቀምጥ። ይህ በ ADMUX መዝገብ ውስጥ በ REFS ቢት ቁጥጥር ይደረግበታል። የሚከተለው የማጣቀሻ ቮልቴጅን ወደ AVCC ያዘጋጃል።

ኮድ ፦ ADMUX | = (1 << REFS0);

ሰርጥውን በብዜት (multixer) በኩል ወደ ኤዲሲ ለማቀናበር ፣ በ ADMUX መዝገብ ውስጥ ያለው የ MUX ቢት በዚህ መሠረት መዘጋጀት አለበት። ADC5 ን እዚህ እየተጠቀምን ስለሆነ

ኮድ: ADMUX & = 0xF0; ADMUX | = 5;

ኤ.ዲ.ሲን ወደ ነፃ አሂድ ሁኔታ ለማስገባት ፣ በ ADCSRA መዝገብ ውስጥ በትክክል የተሰየመውን ADFR ቢት ያዘጋጁ-

ኮድ ፦ ADCSRA | = (1 << ADFR);

የኤዲሲ እሴትን ማንበብ ቀለል ለማድረግ አንድ የመጨረሻ ቅንብሮች ለውጥ ይደረጋል። ምንም እንኳን ኤዲሲው 10 ቢት ጥራት ቢኖረውም ፣ ይህ ብዙ መረጃ ብዙውን ጊዜ አስፈላጊ አይደለም። ይህ 10 ቢት እሴት በሁለት 8 ቢት መመዝገቢያዎች ፣ ADCH እና ADCL ላይ ተከፍሏል። በነባሪ ፣ የ ADC እሴት ዝቅተኛው 8 ቢት በ ADCL ውስጥ ይገኛል ፣ የላይኛው ሁለቱ የ ADCH ዝቅተኛ ሁለት ቢት ናቸው። በኤዲኤምኤክስ መመዝገቢያ ውስጥ የ ADLAR ቢት በማቀናበር ፣ የ ADC እሴቱን አሰላለፍ መተው እንችላለን። ይህ በ ADCH መዝገብ ውስጥ ከፍተኛውን 8 ቢት ልኬቶችን ያስቀምጣል ፣ ቀሪው በ ADCL መዝገብ ውስጥ። ከዚያ የ ADCH መዝገቡን ካነበብን ፣ ከ 0 እስከ 255 ያለውን የ 0 እስከ 5 ቮልት ልኬታችንን የሚወክል 8 ቢት እሴት እናገኛለን። በመሠረቱ የእኛን 10 ቢት የኤዲሲ መለኪያ ወደ 8 ቢት እየቀየርን ነው። የ ADLAR ቢት ለማዘጋጀት ኮድ እዚህ አለ

ኮድ ፦

ADMUX | = (1 << ADLAR); ያ ለዚህ ምሳሌ የኤዲሲ ሃርድዌር ማዋቀሩን ያጠናቅቃል። ኤዲሲ መለኪያዎች መውሰድ ከመጀመሩ በፊት ሁለት ተጨማሪ ቢቶች ማዘጋጀት ያስፈልጋል።

ደረጃ 11 ADC ን ያንቁ

ADC ን ለማንቃት ፣ ADCSRA ውስጥ ADEN ቢት ያዘጋጁ -

ኮድ ፦ ADCSRA | = (1 << አዴን);

ደረጃ 12 አናሎግን ወደ ዲጂታል ልወጣዎች ይጀምሩ

የ ADC ልኬቶችን ለመጀመር ፣ በ ADCSRA ውስጥ ያለው የ ADSC ቢት መዘጋጀት አለበት።

ኮድ ፦ ADCSRA | = (1 << ADSC);

በዚህ ጊዜ ፣ ኤዲሲው በ ADC5 ላይ የቀረውን voltage ልቴጅ ያለማቋረጥ ናሙና ይጀምራል። እስከዚህ ነጥብ ድረስ ያለው ኮድ እንደዚህ ይመስላል

ደረጃ 13: እስከ ዘላለም ድረስ

ማድረግ ያለብዎት ብቸኛው ነገር የኤዲሲ እሴቱን መሞከር እና ከፍተኛ / ዝቅተኛ አመላካች ለማሳየት የኤልዲዎቹን ማዘጋጀት ነው። በ ADCH ውስጥ ያለው የኤ.ዲ.ሲ ንባብ ከፍተኛው 255 እሴት ስላለው ፣ ቮልቴጁ ከፍ ያለ ወይም ዝቅተኛ መሆኑን ለማወቅ የ th የሙከራ እሴት ተመርጧል። በ FOR loops ውስጥ ቀለል ያለ የ 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 ቅድመ -ቅምሻውን ወደ 8 - // 125 ኪኸ ናሙና ናሙና 1 ሜኸዝ ያዘጋጁ

ADMUX | = (1 << REFS0); // የኤ.ዲ.ሲ ማጣቀሻ ወደ AVCC ያዘጋጁ

ADMUX | = (1 << ADLAR); // የ 8 ቢት ንባብን በቀላሉ ለመፍቀድ የ ADC ውጤትን በግራ በኩል ያስተካክሉ

ADMUX & = 0xF0;

ADMUX | = 5; // MUX እሴቶች ADC0 ን ለመጠቀም መለወጥ ያስፈልጋል

ADCSRA | = (1 << ADFR); // ኤዲሲን ወደ ነፃ-አሂድ ሁኔታ ያቀናብሩ

ADCSRA | = (1 << አዴን); // ኤዲሲን ያንቁ

ADCSRA | = (1 << ADSC); // (2) // Loop ለዘላለም

{

ከሆነ (ADCH> ADCValue)

{

PORTB | = (1 << PB0); // LED1 ን ያብሩ

}

ሌላ

{

PORTE & = ~ (1 << PB1); // LED1 ን ያጥፉ

}

}

መመለስ 0;

}

በመጀመሪያ ይህንን አጋዥ ስልጠና ያትሙ እዚህ ጠቅ ያድርጉ

የሚመከር: