
Мазмуну:
- 1 -кадам: ADC деген эмне?
- 2-кадам: AVR- Микроконтроллерде ADC кантип иштейт
- 3 -кадам: ADC Conversion Formula
- 4 -кадам: ATmega8де ADCди кантип конфигурациялоо керек?
- 5 -кадам: ADLAR тандоо
- 6 -кадам: ADCSRA тандоо
- 7 -кадам: Эгерде сиз ADC баалуулугун алууну кааласаңыз, анда төмөндө тизмеленген кээ бир жумуштар керек
- 8 -кадам: ADC баасын коюңуз
- 9 -кадам: Чыгуу LED пинин конфигурациялоо
- 10 -кадам: ADC жабдыктарын конфигурациялоо
- 11 -кадам: ADC иштетүү
- 12 -кадам: Аналогду санарипке айландырууну баштаңыз
- 13 -кадам: түбөлүккө
- 14 -кадам: аягында толук код бар
2025 Автор: John Day | [email protected]. Акыркы өзгөртүү: 2025-01-23 14:52

Бул үйрөткүчтө сиз AVR микроконтроллериндеги ADC бардыгын билесиз
1 -кадам: ADC деген эмне?
ADC же Analog to Digital Converter, аналогдук чыңалууну микроконтроллер колдоно турган санариптик мааниге айландырууга мүмкүндүк берет. Өлчөөнү каалаган аналогдук сигналдардын көптөгөн булактары бар. Температураны, жарыктын интенсивдүүлүгүн, аралыкты, абалды жана күчтү өлчөй турган аналогдук сенсорлор бар.
2-кадам: AVR- Микроконтроллерде ADC кантип иштейт
AVR ADC AVR микроконтроллерине аналогдук чыңалууларды санариптик баалуулуктарга айландырууга мүмкүндүк берет. ATmega8де 10 биттик ырааттуу жакындаштыруу бар ADC. ATmega8де PortCте 7 канал ADC бар. ADCде өзүнчө аналогдук камсыздоо чыңалуу пини, AVCC бар. AVCC VCCтен ± 0,3В ашпашы керек. Чыңалуу шилтемеси AREF пининде сырттан ажыратылышы мүмкүн. AVCC чыңалуу шилтемеси катары колдонулат. ADC ошондой эле үзгүлтүксүз иштөө үчүн (бекер иштөө режими) же бир гана конверсияны жасоого орнотулушу мүмкүн.
3 -кадам: ADC Conversion Formula

Бул жерде Вин - бул тандалган кирүүчү пиндеги чыңалуу жана Vref тандалган чыңалуу шилтемеси
4 -кадам: ATmega8де ADCди кантип конфигурациялоо керек?

ATmega8де ADCди ишке ашыруу үчүн төмөнкү реестрлер колдонулат
ADC Multiplexer тандоо
5 -кадам: ADLAR тандоо


ADC Left Adjust Result ADLAR бит ADC маалымат реестринде ADC конверсиясынын натыйжасын көрсөтүүгө таасир этет. Жыйынтыгын тууралоо үчүн ADLARга жазыңыз. Болбосо, жыйынтык туура жөнгө салынат
ADC конверсиясы аяктаганда, натыйжа ADCH жана ADCLде табылат, ADCL окулганда, ADC маалыматтар реестри ADCH окулганга чейин жаңыртылбайт. Демек, эгер жыйынтык оңдолуп калса жана 8-битке чейин тактык талап кылынбаса, ADCHти окуу жетиштүү. Болбосо, биринчи ADCL, андан кийин ADCH окуу керек. Аналогдук канал тандоо биттери Бул биттердин мааниси кайсы аналогдук кирүүлөр ADCге туташкандыгын тандайт.
6 -кадам: ADCSRA тандоо


• Bit 7 - ADEN: ADC иштетүү Бул битти бирине жазуу ADCди иштетет. Аны нөлгө жазуу менен, ADC өчүрүлөт
• Bit 6 - ADSC: ADC Conversion'ти Single Conversion режиминде баштаңыз, ар бир конверсияны баштоо үчүн бул битти бирине жазыңыз. Эркин чуркоо режиминде, биринчи конверсияны баштоо үчүн бул битти бирине жазыңыз.
• Bit 5 - ADFR: ADC Free Running Select Бул бит (бир) коюлганда, ADC Free Running режиминде иштейт. Бул режимде ADC маалымат регистрлерин үзгүлтүксүз жаңыртып турат. Бул битти (нөл) тазалоо Free Running режимин токтотот.
• Bit 4 - ADIF: ADC Interrupt Flag Бул бит ADC конверсиясы аяктаганда жана Маалымат Реестрлери жаңыртылганда коюлат. ADC Conversion Complete Interrupt, эгер ADIE бит жана SREGдеги I-бит коюлса аткарылат. Тиешелүү үзгүлтүккө учуроочу Векторду аткарууда ADIF жабдыктар менен тазаланат. Же болбосо, ADIF желекке логикалык жазуу аркылуу тазаланат.
• Bit 3-ADIE: ADC Interrupt Enable Бул бит бирөөгө жазылып, SREGде I-бит орнотулганда, ADC Conversion Complete Interrupt иштетилет.
• Биттер 2: 0 - ADPS2: 0: ADC Prescaler Битти тандаңыз Маалыматтар барагына ылайык, бул алдын ала эсептөөчтү ADC киргизүү жыштыгы 50 КГцтен 200 КГцке чейин болушу керек. ADC сааты ADPS2 жардамы менен системалык сааттан алынган: 0 Бул биттер XTAL жыштыгы менен ADCге кирүүчү сааттын ортосундагы бөлүнүү факторун аныктайт.
7 -кадам: Эгерде сиз ADC баалуулугун алууну кааласаңыз, анда төмөндө тизмеленген кээ бир жумуштар керек
- ADC маанисин коюңуз
- Чыгуучу LED пинди конфигурациялоо
- ADC жабдыктарын конфигурациялоо
- ADC иштетүү
- Аналогду санарипке айландырууну баштаңыз
- ТҮБӨЛҮК
Эгерде ADC мааниси андан жогору болсо, LEDди күйгүзүңүз, калганын өчүрүңүз
8 -кадам: ADC баасын коюңуз
Код: uint8_t ADCValue = 128;
9 -кадам: Чыгуу LED пинин конфигурациялоо
Код: DDRB | = (1 << PB1);
10 -кадам: ADC жабдыктарын конфигурациялоо
ADC жабдыктарын конфигурациялоо
Бул ADC үчүн контролдоо реестрине биттерди коюу аркылуу жасалат. Биринчиден, ADC үчүн прескаларды орнотолу. Маалыматтар барагына ылайык, бул прецкаларды ADC киргизүү жыштыгы 50 КГцтен 200 КГцке чейин болушу керек. ADC сааты системалык сааттан алынган. Системалык жыштыгы 1 МГц болгондо, 8дин алдын ала эсептөөчүсү ADC жыштыгына 125 КГц алып келет. Алдын ала эсептөө ADCSRA реестриндеги ADPS биттери тарабынан коюлат. Маалыматтар барагына ылайык, бардык ADPS2: 0 биттеринин бардыгы 8 prescaler алуу үчүн 011ге коюлушу керек.
Код: ADCSRA | = (0 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
Андан кийин, ADC маалымдама чыңалуусун орнотолу. Бул ADMUX реестриндеги REFS биттери тарабынан көзөмөлдөнөт. Төмөндө маалымдама чыңалуусу AVCCге коюлат.
Код: ADMUX | = (1 << REFS0);
Каналды мультиплексор аркылуу 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 иштетүү үчүн ADCSRAда ADEN битин орнотуңуз:
Код: ADCSRA | = (1 << ADEN);
12 -кадам: Аналогду санарипке айландырууну баштаңыз
ADC өлчөөлөрүн баштоо үчүн ADCSRAдагы ADSC битти орнотуу керек:
Код: ADCSRA | = (1 << ADSC);
Бул жерде, ADC ADC5те көрсөтүлгөн чыңалууну үзгүлтүксүз тандап ала баштайт. Бул учурдагы код мындай көрүнөт:
13 -кадам: түбөлүккө
Жалгыз нерсе - ADC маанисин текшерүү жана LEDлерди жогорку / төмөн көрсөткүчтү көрсөтүү. ADCHдеги ADC окуусу 255 максималдуу мааниге ээ болгондуктан, чыңалуу жогорку же төмөн экендигин аныктоо үчүн сынактын мааниси тандалды. FOR циклдериндеги жөнөкөй IF/ELSE билдирүүсү туура LEDди күйгүзүүгө мүмкүндүк берет:
Code
эгер (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 үлгү ылдамдыгы 1МГцке коюңуз
ADMUX | = (1 << REFS0); // ADC шилтемесин AVCCге коюңуз
ADMUX | = (1 << ADLAR); // 8 битти оңой окуу үчүн ADC жыйынтыгын солго тууралаңыз
ADMUX & = 0xF0;
ADMUX | = 5; // ADC0 колдонуу үчүн MUX баалуулуктарын өзгөртүү керек
ADCSRA | = (1 << ADFR); // ADCти Free-Running режимине коюңуз
ADCSRA | = (1 << ADEN); // ADC иштетүү
ADCSRA | = (1 << ADSC); // A2D конверсиясын баштоо (1) // Loop Forever
{
эгер (ADCH> ADCValue)
{
PORTB | = (1 << PB0); // LED1 күйгүзүү
}
башка
{
PORTE & = ~ (1 << PB1); // LED1ди өчүрүү
}
}
return 0;
}
Биринчи бул окуу куралын жарыялоо Бул жерди басыңыз
Сунушталууда:
Жаңыдан баштагандар үчүн DJ орнотууларын кантип түзүү керек - Vinyl Style!: 7 кадам

Жаңыдан баштагандар үчүн DJ орнотууларын кантип түзүү керек - Винил стили! Сиз хоббиңизби же профессионал болгуңуз келеби, балким дүйнө жүзүн кыдырып, киреше табасызбы, бул кадамдар сизди
Микро: баштагандар үчүн бит MU Vision Sensor - I2C жана Shape Card таануу: 8 кадам

Micro: bit MU Vision Sensor for Beginners - I2C жана Shape Card таануу: Мен Micro: bit үчүн MU көрүнүш сенсоруна колумду алдым. Бул мага көптөгөн түрдүү көрүнүштөргө негизделген долбоорлорду ишке ашырууга мүмкүнчүлүк бере турган сонун курал окшойт. Тилекке каршы, бул үчүн көптөгөн жетекчилер жок окшойт жана документтер чынында
Микро: жаңыдан баштагандар үчүн бит MU Vision Sensor - Этикетка баалуулуктары жана номер карталарын таануу: 6 кадам

Микро: жаңыдан баштагандар үчүн бит MU Vision Sensor - Label Values жана Number Card Recognition: Бул MU көрүү сенсоруна менин экинчи жол көрсөткүчүм. Бул долбоордо биз micro: bitти программалайбыз, энбелгинин маанилерин колдонуу менен ар кандай сан карталарын тааныйбыз
Жаңыдан баштагандар үчүн Microsoft Accessте реляциялык базаларды кантип иштеп чыгуу керек: 17 кадам

Жаңыдан баштагандар үчүн Microsoft Accessте реляциялык базаларды кантип түзүү керек: Кийинки инструкцияда Microsoft Accessте реляциялык маалымат базаларын кантип долбоорлоо керектиги көрсөтүлгөн. Бул колдонмо адегенде эки (2) столду кантип туура байланыштыруу керек экенин көрсөтөт. Андан кийин мен бул жаңы мамиледен форманы кантип түзүү керектигин деталдуу түрдө түшүндүрөм, бул колдонуучуга киргизүүгө мүмкүндүк берет
Жаңыдан баштагандар үчүн электрондук долбоорлор: 14 кадам (сүрөттөр менен)

Жаңыдан баштагандар үчүн электрондук долбоорлор: Эгерде сиз электроникага кирүүнү кааласаңыз жана баштоого жер керек болсо, бул сиз үчүн. EBay жана Aliexpressте 2 же 3 долларга ала турган бир топ арзан комплекттер бар, алар сизге компоненттерди аныктоо боюнча бир аз тажрыйба берет