Talaan ng mga Nilalaman:
- Hakbang 1: Ano ang isang ADC?
- Hakbang 2: Paano Magtrabaho ang ADC sa AVR- Microcontroller
- Hakbang 3: Formula ng Conversion ng ADC
- Hakbang 4: Paano I-configure ang ADC sa ATmega8?
- Hakbang 5: Pagpili ng ADLAR
- Hakbang 6: Seleksyon ng ADCSRA
- Hakbang 7: Kung Nais Mong Kumuha ng Halaga ng ADC Kailangan Mong Mangangailangan ng Ilang Trabaho Tapos Na Nakalista sa ibaba
- Hakbang 8: Itakda ang Halaga ng ADC
- Hakbang 9: I-configure ang Output LED Pin
- Hakbang 10: I-configure ang ADC Hardware
- Hakbang 11: Paganahin ang ADC
- Hakbang 12: Simulan ang Analog sa Mga Digital na Conversion
- Hakbang 13: HABANG Kailanman
- Hakbang 14: Sa Wakas na Kumpletong Code Ay
Video: Panimula sa ADC sa AVR Microcontroller - para sa mga Nagsisimula: 14 Hakbang
2024 May -akda: John Day | [email protected]. Huling binago: 2024-01-30 13:14
Sa thid tutorial malalaman mo ang lahat ng ADC sa avr microcontroller
Hakbang 1: Ano ang isang ADC?
Ang isang ADC, o Analog sa Digital Converter, ay nagbibigay-daan sa isa na i-convert ang isang analog boltahe sa isang digital na halaga na maaaring magamit ng isang microcontroller. Maraming mga mapagkukunan ng mga analog signal na maaaring sukatin ng isa. May mga magagamit na mga analog sensor na sumusukat sa temperatura, ilaw ng ilaw, distansya, posisyon, at puwersa, sa ilang pangalan lamang.
Hakbang 2: Paano Magtrabaho ang ADC sa AVR- Microcontroller
Pinapayagan ng AVR ADC ang AVR microcontroller na i-convert ang mga voltages ng analog sa mga digital na halagang walang kaunti sa mga panlabas na bahagi. Nagtatampok ang ATmega8 ng 10-bit na sunud-sunod na pagtatantya sa ADC. Ang ATega8 ay mayroong 7 channel ADC sa PortC. Ang ADC ay may hiwalay na analog supply boltahe na pin, AVCC. Ang AVCC ay hindi dapat magkakaiba ng higit sa ± 0.3V mula sa VCC.. Ang sanggunian ng boltahe ay maaaring mapalabas ng panlabas na pin sa AREF. Ginamit ang sanggunian ng boltahe ng AVCC. Maaari ring maitakda ang ADC upang magpatakbo ng tuloy-tuloy (ang mode na walang bayad) o upang gawin lamang ang isang conversion.
Hakbang 3: Formula ng Conversion ng ADC
Kung saan ang Vin ay ang boltahe sa napiling input pin at Vref ang napiling sanggunian ng boltahe
Hakbang 4: Paano I-configure ang ADC sa ATmega8?
Ang mga sumusunod na Rehistro ay ginagamit para sa pagpapatupad ng ADC sa ATmega8
Seleksyon ng Multiplexer ng ADC
Hakbang 5: Pagpili ng ADLAR
ADC Left Adjust Result Ang ADLAR ay nakakaapekto sa pagtatanghal ng resulta ng conversion ng ADC sa Rehistro ng Data ng ADC. Sumulat ng isa sa ADLAR sa kaliwa ayusin ang resulta. Kung hindi man, ang resulta ay tamang nababagay
Kapag ang isang pag-convert ng ADC ay kumpleto, ang resulta ay matatagpuan sa ADCH at ADCL Kapag nabasa ang ADCL, ang Pagrehistro ng Data ng ADC ay hindi na-update hanggang mabasa ang ADCH. Dahil dito, kung ang resulta ay naiwan na nababagay at hindi hihigit sa 8-bit na katumpakan na kinakailangan, sapat na upang basahin ang ADCH. Kung hindi man, dapat basahin muna ang ADCL, pagkatapos ay ang ADCH. Mga Bit Seleksyon ng Analog Channel Ang halaga ng mga bit na ito ay pipili kung aling mga analog input ang konektado sa ADC.
Hakbang 6: Seleksyon ng ADCSRA
• Bit 7 - ADEN: Paganahin ng ADC Ang pagsulat ng kaunting ito sa isa ay nagbibigay-daan sa ADC. Sa pamamagitan ng pagsulat nito sa zero, naka-off ang ADC
• Bit 6 - ADSC: Magsimula ang Conversion ng ADC Sa mode na Single Conversion, isulat ang bit na ito sa isa upang simulan ang bawat conversion. Sa Free Running mode, isulat ang kaunti sa isa upang simulan ang unang conversion.
• Bit 5 - ADFR: Piliin ang Libreng Pagpapatakbo ng ADC Kapag naayos ang bit na ito (isa) ang ADC ay nagpapatakbo sa mode na Libreng Running. Sa mode na ito, ang mga sample ng ADC at patuloy na ina-update ang Mga Rehistro ng Data na tuloy-tuloy. Tatapusin ng pag-clear sa bit na ito (zero) ang Libreng Running mode.
• Bit 4 - ADIF: ADC Interrupt Flag Ang bit na ito ay itinakda kapag nakumpleto ang isang conversion ng ADC at na-update ang Mga Rehistro ng Data. Ang ADC Conversion complete Interrupt ay isinasagawa kung ang ADIE bit at ang I-bit sa SREG ay nakatakda. Ang ADIF ay na-clear sa pamamagitan ng hardware kapag nagpapatupad ng kaukulang nakakagambala na Paghawak ng Vector. Bilang kahalili, ang ADIF ay nabura sa pamamagitan ng pagsulat ng isang lohikal sa watawat.
• Bit 3 - ADIE: ADC Interrupt Enable Kapag ang bit na ito ay nakasulat sa isa at ang I-bit sa SREG ay nakatakda, ang ADC Conversion Kumpleto na Pag-abala ay naaktibo.
• Bits 2: 0 - ADPS2: 0: ADC Prescaler Select Bits Ayon sa datasheet, ang prescalar na ito ay kailangang maitakda upang ang dalas ng input ng ADC ay nasa pagitan ng 50 KHz at 200 KHz. Ang orasan ng ADC ay nagmula sa orasan ng system sa tulong ng ADPS2: 0 Ang mga bit na ito ay tumutukoy sa kadahilanan ng paghahati sa pagitan ng dalas ng XTAL at ng input na orasan sa ADC.
Hakbang 7: Kung Nais Mong Kumuha ng Halaga ng ADC Kailangan Mong Mangangailangan ng Ilang Trabaho Tapos Na Nakalista sa ibaba
- Itakda ang halaga ng ADC
- I-configure ang output LED pin
- I-configure ang ADC Hardware
- Paganahin ang ADC
- Simulan ang Analog sa Mga Digital na Conversion
- HABANG Habang Panahon
KUNG Mas Mahalaga ang ADC Value pagkatapos ay Itakda ang halaga, I-on ang LED ELSE Turn Off LED
Hakbang 8: Itakda ang Halaga ng ADC
Code: uint8_t ADCValue = 128;
Hakbang 9: I-configure ang Output LED Pin
Code: DDRB | = (1 << PB1);
Hakbang 10: I-configure ang ADC Hardware
I-configure ang ADC Hardware
Ginagawa ito sa pamamagitan ng pagtatakda ng mga piraso sa mga rehistro ng kontrol para sa ADC. Una, itakda natin ang prescalar para sa ADC. Ayon sa datasheet, ang prescalar na ito ay kailangang itakda upang ang dalas ng input ng ADC ay nasa pagitan ng 50 KHz at 200 KHz. Ang orasan ng ADC ay nagmula sa orasan ng system. Sa dalas ng system na 1MHz, isang prescaler na 8 ay magreresulta sa dalas ng ADC na 125 Khz. Ang prescaling ay itinakda ng mga piraso ng ADPS sa rehistro ng ADCSRA. Ayon sa datasheet, ang lahat ng tatlong mga piraso ng ADPS2: 0 ay dapat itakda sa 011 upang makuha ang 8 prescaler.
Code: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Susunod, itakda natin ang boltahe ng sanggunian ng ADC. Kinokontrol ito ng mga REFS na bit sa rehistro ng ADMUX. Ang sumusunod ay nagtatakda ng sanggunian boltahe sa AVCC.
Code: ADMUX | = (1 << REFS0);
Upang maitakda ang channel na dumaan sa multiplexer sa ADC, ang mga bit na MUX sa rehistro ng ADMUX ay kailangang maitakda nang naaayon. Dahil ginagamit namin ang ADC5 dito
Code: ADMUX & = 0xF0; ADMUX | = 5;
Upang mailagay ang ADC sa mode na walang bayad, itakda ang aptly na pinangalanang ADFR bit sa rehistro ng ADCSRA:
Code: ADCSRA | = (1 << ADFR);
Ang isang huling pagbabago sa mga setting ay gagawin upang gawing mas simple ang pagbabasa ng halaga ng ADC. Bagaman ang ADC ay may resolusyon na 10 bits, ang karaming impormasyon na ito ay madalas na hindi kinakailangan. Ang halagang 10 bit na ito ay nahahati sa dalawang 8 bit register, ADCH at ADCL. Bilang default, ang pinakamababang 8 piraso ng halaga ng ADC ay matatagpuan sa ADCL, na ang pinakamataas na dalawa ay ang pinakamababang dalawang piraso ng ADCH. Sa pamamagitan ng pagtatakda ng ADLAR na bit sa rehistro ng ADMUX, maaari nating iwanang ihanay ang halaga ng ADC. Inilalagay nito ang pinakamataas na 8 piraso ng pagsukat sa rehistro ng ADCH, kasama ang natitira sa rehistro ng ADCL. Kung binasa namin ang rehistro ng ADCH, nakakakuha kami ng isang halaga ng 8 bit na kumakatawan sa aming 0 hanggang 5 volt na pagsukat bilang isang numero mula 0 hanggang 255. Karaniwan naming binabago ang aming 10 bit na pagsukat ng ADC sa isang 8 bit na isa. Narito ang code upang maitakda ang ADLAR bit:
Code:
ADMUX | = (1 << ADLAR); Nakumpleto nito ang pag-set up ng hardware ng ADC para sa halimbawang ito. Dalawang iba pang mga piraso ang kailangang maitakda bago magsimula ang ADC sa pagsukat.
Hakbang 11: Paganahin ang ADC
Upang paganahin ang ADC, itakda ang ADEN bit sa ADCSRA:
Code: ADCSRA | = (1 << ADEN);
Hakbang 12: Simulan ang Analog sa Mga Digital na Conversion
Upang simulan ang mga sukat ng ADC, ang ADSC bit sa ADCSRA ay kailangang maitakda:
Code: ADCSRA | = (1 << ADSC);
Sa puntong ito, ang ADC ay magsisimulang patuloy na pag-sample ng boltahe na ipinakita sa ADC5. Ang code sa puntong ito ay ganito ang hitsura:
Hakbang 13: HABANG Kailanman
Ang natitirang bagay na dapat gawin ay subukan ang halaga ng ADC at itakda ang mga LED upang ipakita ang isang mataas / mababang pahiwatig. Dahil ang pagbabasa ng ADC sa ADCH ay may maximum na halaga na 255, isang halaga ng pagsubok na ika ang napili upang matukoy kung ang boltahe ay mataas o mababa. Ang isang simpleng pahayag na KUNG / IBA sa mga FOR loop ay magpapahintulot sa amin na buksan ang tamang LED:
Code
kung (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // I-on ang LED
}
iba pa
{
PORTB & = ~ (1 << PB0); // Patayin ang LED
}
Hakbang 14: Sa Wakas na Kumpletong Code Ay
Code:
# isama
int main (walang bisa)
{
uint8_t ADCValue = 128;
DDRB | = (1 << PB0); // Itakda ang LED1 bilang output
ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0); // Itakda ang ADC prescalar sa 8 - // 125KHz sample rate na 1MHz
ADMUX | = (1 << REFS0); // Itakda ang sanggunian ng ADC sa AVCC
ADMUX | = (1 << ADLAR); // Kaliwa ayusin ang resulta ng ADC upang payagan ang madaling 8 bit na pagbabasa
ADMUX & = 0xF0;
ADMUX | = 5; // MUX mga halagang kinakailangan upang mabago upang magamit ang ADC0
ADCSRA | = (1 << ADFR); // Itakda ang ADC sa Free-Running Mode
ADCSRA | = (1 << ADEN); // Paganahin ang ADC
ADCSRA | = (1 << ADSC); // Start A2D Conversions habang (1) // Loop Forever
{
kung (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // I-on ang LED1
}
iba pa
{
PORTE & = ~ (1 << PB1); // Patayin ang LED1
}
}
ibalik ang 0;
}
Una I-publish ang tutorial na ito Mag-click Dito
Inirerekumendang:
Nagsisimula ng Sariling Robotic Vehicle ng Nagsisimula Sa Pag-iwas sa banggaan: 7 Hakbang
Ang Sasakyan ng Robotic Sasakyan na Nagsisimula sa Sarili Na May Pag-iwas sa banggaan: Kamusta! Maligayang pagdating sa aking baguhan na madaling maituturo sa kung paano gumawa ng sarili mong robotic na sasakyan na may pag-iwas sa banggaan at Pag-navigate sa GPS. Sa itaas ay isang video sa YouTube na nagpapakita ng robot. Ito ay isang modelo upang maipakita kung paano ang isang tunay na autonomou
Paano Mag-install ng Linux (Nagsisimula ang Mga Nagsisimula Dito!): 6 Mga Hakbang
Paano Mag-install ng Linux (Nagsisimula ang Mga Nagsisimula Dito!): Ano nga ba ang Linux? Sa gayon, mahal na mambabasa, ang Linux ay isang gateway sa isang mundo ng buong mga bagong posibilidad. Nawala ang mga araw ng pagkuha ng OSX ng kasiyahan sa pagmamay-ari ng isang computer. Nawala na ang mga nakakaloko na notasyon ng seguridad kahit na Windows 10. Ngayon, ang iyong t
Pag-configure ng AVR Microcontroller Fuse Bits. Paglikha at Pag-upload sa Flash Memory ng Microcontroller ang LED Blinking Program .: 5 Mga Hakbang
Pag-configure ng AVR Microcontroller Fuse Bits. Paglikha at Pag-upload sa Flash Memory ng Microcontroller ang LED Blinking Program .: Sa kasong ito lilikha kami ng simpleng programa sa C code at susunugin ito sa memorya ng microcontroller. Susulat kami ng aming sariling programa at isulat ang hex file, gamit ang Atmel Studio bilang pinagsamang platform ng pag-unlad. Ise-configure namin ang fuse bi
Panimula sa VB Script: isang Gabay sa Mga Nagsisimula: 11 Mga Hakbang
Panimula sa VB Script: isang Gabay sa Mga Nagsisimula: *** ((((ALERT: Bagaman maraming mga hakbang. Ito ay talagang medyo madali. Ipinaliwanag ko lamang ang lahat nang detalyado para sa mga nagsisimula. Kung nais mo lamang ang code tumalon sa ang huling hakbang at mahahanap mo ang buong code doon.))))) *** Naglalaro ako ng maraming Xbox
Panimula sa VB Script: isang Gabay sa Mga Nagsisimula: Bahagi 2: Paggawa Sa Mga File: 13 Mga Hakbang
Panimula sa VB Script: isang Gabay sa Mga Nagsisimula: Bahagi 2: Paggawa Sa Mga File: Sa huling itinuro ko sa VBScript, nagpunta ako sa kung paano gumawa ng isang script upang patayin ang iyong internet upang i-play ang Xbox360. Ngayon may iba akong problema. Ang aking computer ay na-shut down nang random na oras at nais kong mag-log sa bawat oras na ang computer