Мазмуну:

Arduino AREF Pin: 6 кадам
Arduino AREF Pin: 6 кадам

Video: Arduino AREF Pin: 6 кадам

Video: Arduino AREF Pin: 6 кадам
Video: Уроки Arduino #10 - потенциометры и аналоговые пины 2024, Ноябрь
Anonim
Arduino AREF пин
Arduino AREF пин

Бул үйрөткүчтө биз Arduino же AREF төөнөгүч менен бирдикте Arduinoдогу аналогдук кирүү казыктарын колдонуу менен кичине чыңалууларды кантип чоңураактык менен өлчөөгө болорун карап чыгабыз. Бирок, адегенде биз сизди ылдамдатуу үчүн бир аз оңдоолорду жасайбыз. Сураныч, AREF менен биринчи жолу иштешүүдөн мурун бул постту толугу менен окуңуз.

1 -кадам: Текшерүү

Revision!
Revision!

Эсиңизде болсо керек, сиз Arduino analogRead () функциясын колдонуп, сенсорлордон келген электр тогунун чыңалуусун жана аналогдук кирүү казыктарынын бирин колдоно аласыз. AnalogRead () кайтарылган маани нөл менен 1023 ортосунда болмок, нөл нөл вольтту билдирет жана 1023 колдонулган Arduino тактасынын иштөө чыңалуусун билдирет.

Жана биз иштеп жаткан чыңалуу деп айтканыбызда - бул электр менен камсыздоо схемасынан кийин Arduino үчүн жеткиликтүү болгон чыңалуу. Мисалы, эгерде сизде кадимки Arduino Uno тактасы болсо жана аны USB розеткасынан иштетсеңиз, анда компьютериңиздеги же хабыңыздагы USB розеткасынан тактада 5В бар - бирок учурдагы шамалдын айланасында чыңалуу бир аз төмөндөйт. микроконтроллерге туташуу - же USB булагы жөн эле чийилген эмес.

Муну Arduino Uno -ду USB -ге туташтыруу жана 5V жана GND казыктарындагы чыңалууну өлчөө үчүн мультиметрди коюу аркылуу оңой эле көрсөтсө болот. Кээ бир такталар 4.8 Вге чейин төмөндөйт, кээ бирлери жогору, бирок 5Вдан төмөн. Демек, эгерде сиз тактык үчүн аткылап жатсаңыз, тактаңызды DC розеткасы же Вин пини аркылуу тышкы электр булагынан кубаттаңыз - мисалы, 9V DC. Андан кийин, кубат жөнгө салуу схемасынан өткөндөн кийин, сиз жакшы 5Вга ээ болосуз, мисалы сүрөт.

Бул абдан маанилүү, анткени analogRead () маанилеринин тактыгына чыныгы 5 V. жоктугу таасир этет, эгер сизде башка вариант жок болсо, анда чыңалуунун төмөндөшүнүн ордун толтуруу үчүн эскизиңизде кээ бир математиканы колдонсоңуз болот. Мисалы, эгер сиздин чыңалууңуз 4.8V болсо - analogRead () диапазону 0 ~ 1023 0 ~ 4.8В менен эмес, 0 ~ 5V менен байланыштуу болот. Бул кичинекей көрүнүшү мүмкүн, бирок эгер сиз маанини чыңалуу катары кайтаруучу сенсорду колдонуп жатсаңыз (мисалы, TMP36 температура сенсору) - эсептелген маани туура эмес болуп калат. Андыктан тактык үчүн тышкы электр булагын колдонуңуз.

2 -кадам: Эмне үчүн AnalogRead () 0 менен 1023 ортосундагы маанини кайтарат?

Эмне үчүн AnalogRead () 0 менен 1023 ортосундагы маанини кайтарат?
Эмне үчүн AnalogRead () 0 менен 1023 ортосундагы маанини кайтарат?

Бул ADC токтомуна байланыштуу. Чечим (бул макала үчүн) - бул бир нерсенин сандык түрдө чагылдырылышы. Чечим канчалык жогору болсо, бир нерсени чагылдыруунун тактыгы ошончолук жогору болот. Биз токтомду биттердин саны боюнча өлчөйбүз.

Мисалы, 1-разряддык чечим эки (экөөнүн күчү боюнча) мааниге гана жол берет-нөл жана бир. 2-биттик чечим төрт (экөөнүн бийлигине чейин) баалуулуктарга мүмкүндүк берет-нөл, бир, эки жана үч. Эгерде биз эки разряддуу беш вольттуу диапазонду өлчөөгө аракет кылсак жана чыңалган чыңалуу төрт вольтту түзсө, биздин АДК 3 деген сандык маанини кайтарат-анткени төрт вольт 3.75тен 5Вга чейин түшөт. Муну сүрөт менен элестетүү оңой.

Ошентип, биздин мисал ADC менен 2-разряддуу, ал чыңалууну төрт мүмкүн болгон жыйынтык мааниси менен гана көрсөтө алат. Эгерде кирүү чыңалуусу 0 менен 1.25 ортосунда түшсө, ADC сандык 0 кайтарат; эгер чыңалуу 1,25 жана 2,5тин ортосунда түшсө, ADC 1 деген сан маанисин кайтарат. 0 ~ 1023 болгон биздин Arduino ADC диапазону менен-бизде 1024 мүмкүн болгон баалуулуктар бар-же 2нин күчү 10го чейин. Ошентип, биздин Arduinos 10 бит разряддуу ADCге ээ.

3 -кадам: Ошентип, AREF деген эмне?

Узун окуяны кыскартуу үчүн, сиздин Arduino аналогдук көрсөткүчтү алганда, аналогдук пиндин ченелген чыңалуусун шилтеме чыңалуусу менен салыштырат. Кадимки analogRead колдонууда, маалымдама чыңалуусу - коллегиянын иштөө чыңалуусу.

Uno, Mega, Duemilanove жана Leonardo/Yún такталары сыяктуу популярдуу Arduino такталары үчүн 5В иштөө чыңалуусу. Эгерде сизде Arduino Due тактасы болсо, анда иштөө чыңалуусу 3.3V болот. Эгерде сизде башка нерсе болсо - Arduino продукт баракчасын текшериңиз же тактаңыздын жеткирүүчүсүнөн сураңыз.

Демек, эгер сизде 5В чыңалуу чыңалуусу болсо, analogRead () менен кайтарылган ар бир бирдик 0.00488 В.га бааланат (Бул 1024тү 5Вга бөлүү менен эсептелет). 0 жана 2, же 0 жана 4.6 ортосундагы чыңалууларды өлчөгүбүз келсе, эмне кылабыз? ADC биздин чыңалуу диапазонубуздун 100% экенин кайдан билмек эле?

Жана бул жерде AREF пининин себеби жатат. AREF аналогдук REFerence дегенди билдирет. Бул бизге Arduinoго тышкы электр булагынан маалымдама чыңалуусун берүүгө мүмкүнчүлүк берет. Мисалы, эгер биз 3.3V максималдуу диапазону менен чыңалууну кааласак, анда биз жакшы жылмакай 3.3Vны AREF төөнөгүчүнө - балким IC чыңалуу жөндөгүчүнөн беребиз.

Андан кийин ADCдин ар бир кадамы 3.22 милливольттун тегерегинде болмок (1024тү 3.3кө бөлүү). Эң төмөнкү шилтеме чыңалуусу 1.1V экенин эске алыңыз. AREFтин эки формасы бар - ички жана тышкы, андыктан аларды карап көрөлү.

4 -кадам: Тышкы AREF

Тышкы AREF - бул Arduino тактасына тышкы маалымдама чыңалуусун берген жер. Бул жөнгө салынуучу электр энергиясынан келип чыгышы мүмкүн, же сизге 3.3V керек болсо, аны Arduino 3.3V пининен ала аласыз. Эгерде сиз тышкы электр булагын колдонуп жатсаңыз, GND'ди Arduino GND пинине туташтырыңыз. Же эгер сиз Arduno 3.3V булагын колдонуп жатсаңыз - жөн эле 3.3V пинден AREF пинине секиргичти иштетиңиз.

Тышкы AREFти иштетүү үчүн, төмөнкүлөрдү жараксыз орнотууда колдонуңуз ():

analogReference (ТЫШКЫ); // шилтеме чыңалуусу үчүн AREFти колдонуңуз

Бул шилтеме чыңалуусун AREF пинге туташтырганыңыздын бардыгына коет - бул, албетте, 1.1V менен коллегиянын иштөө чыңалуусунун ортосунда чыңалууга ээ болот. Өтө маанилүү эскертүү - тышкы чыңалуу шилтемесин колдонууда, аналогдук шилтемени СЫРТКА коюңуз analogRead () колдонуудан мурун. Бул активдүү ички маалымдама чыңалуусунун жана AREF пининин кыска болушуна жол бербейт, бул тактадагы микроконтроллерди бузушу мүмкүн. Колдонмоңуз үчүн керек болсо, сиз AREFтин тактайынын иштөө чыңалуусуна (башкача айтканда - кадимкидей) төмөнкүлөр менен кайрыла аласыз.

analogReference (DEFAULT);

Эми иштөөдө тышкы AREFти көрсөтүү үчүн. 3.3V AREFти колдонуу менен, төмөнкү эскиз A0 чыңалуусун өлчөйт жана жалпы AREFтин пайызын жана эсептелген чыңалуусун көрсөтөт:

#"LiquidCrystal.h" кошуу

LiquidCrystal lcd (8, 9, 4, 5, 6, 7);

int analoginput = 0; // биздин аналогдук пин

int analogamount = 0; // кирүүчү маанини калкыган пайызды сактайт = 0; // биздин пайыздык маанибизди сактоо үчүн колдонулат калкыма чыңалуу = 0; // чыңалуу маанисин сактоо үчүн колдонулат

жараксыз орнотуу ()

{lcd.begin (16, 2); analogReference (ТЫШКЫ); // шилтеме чыңалуусу үчүн AREFти колдонуңуз}

боштук цикл ()

{lcd.clear (); analogamount = analogRead (analoginput); пайыз = (окшош сумма/1024.00)*100; чыңалуу = аналогдук сумма*3.222; // милливольт менен lcd.setCursor (0, 0); lcd.print ("% AREF:"); lcd.print (пайыз, 2); lcd.setCursor (0, 1); lcd.print ("A0 (mV):"); lcd.println (чыңалуу, 2); кечигүү (250); }

Жогорудагы эскиздин жыйынтыгы видеодо көрсөтүлгөн.

5 -кадам: Ички AREF

Биздин Arduino такталарындагы микроконтроллерлер 1.1V ички чыңалуусун жаратышы мүмкүн жана биз муну AREF иши үчүн колдоно алабыз. Жөн эле линияны колдонуңуз:

analogReference (ИЧКИ);

Arduino Mega такталары үчүн, колдонуңуз:

analogReference (INTERNAL1V1);

in void setup () жана сиз өчүрүлгөнсүз. Эгерде сизде Arduino Mega бар болсо, анда дагы 2.56V маалымдама чыңалуусу бар, ал активдештирилет:

analogReference (INTERNAL2V56);

Акырында - AREF пиниңиздин жыйынтыктарын чечүүдөн мурун, ар дайым белгилүү жакшы мультиметрге каршы көрсөткүчтөрдү калибрлеңиз.

Жыйынтык

AREF функциясы аналогдук сигналдарды өлчөө менен сизге көбүрөөк ийкемдүүлүк берет.

Бул пост сизге pmdway.com тарабынан келген - бүткүл дүйнө жүзү боюнча бекер жеткирүү менен, жасоочулар жана электроника ышкыбоздору үчүн.

Сунушталууда: