- Аналоговият свят с цифрова електроника
- Какво е ADC и как да го използвам?
- Разделителна способност (битове) и канали в ADC
- Референтно напрежение за ADC
- Пример
- Видове ADC и работещи
- Някои често възникващи въпроси относно ADC
Аналоговият свят с цифрова електроника
Преди няколко години всички електронни устройства, които използваме днес, като телефони, компютри, телевизори и т.н., бяха аналогови по своята същност. След това бавно стационарните телефони бяха заменени от модерни мобилни телефони, CRT телевизорите и мониторите бяха заменени от LED дисплеи, компютрите с вакуумни лампи се превърнаха в по-мощни с микропроцесори и микроконтролери вътре в тях и т.н.
В днешната дигитална ера всички ние сме заобиколени от усъвършенстваните цифрови електронни устройства, това може да ни заблуди, когато мислим, че всичко около нас е цифрово по своята същност, което не е вярно. Светът винаги е бил аналогов по природа, например всичко, което ние хората чувстваме и изпитваме като скорост, температура, скорост на въздуха, слънчева светлина, звук и т.н., е аналогово по своята същност. Но нашите електронни устройства, които работят на микроконтролери и микропроцесори, не могат да четат / интерпретират тези аналогови стойности директно, тъй като те работят само на 0 и 1. Така че се нуждаем от нещо, което ще преобразува всички тези аналогови стойности в 0 и 1, за да могат нашите микроконтролери и микропроцесори да ги разберат. Това нещо се нарича Analog to Digital Converters или ADC за кратко. В тази статия ще научимвсичко за ADC и как да ги използвате.
Какво е ADC и как да го използвам?
Както беше казано по-рано, ADC означава аналогово към цифрово преобразуване и се използва за преобразуване на аналогови стойности от реалния свят в цифрови стойности като 1 и 0. И така, какви са тези аналогови стойности? Това са тези, които виждаме в ежедневния си живот като температура, скорост, яркост и т.н. Но изчакайте !! Може ли ADC да преобразува температурата и скоростта директно в цифрови стойности като 0 и 1?
Не предизвикателно не. ADC може да преобразува само аналогови стойности на напрежението в цифрови стойности. Така че който и да е параметър, който искаме да измерим, първо трябва да се преобразува в напрежение, това преобразуване може да се направи с помощта на сензори. Например, за да преобразуваме температурните стойности в напрежение, можем да използваме термистор по подобен начин, за да преобразуваме яркостта в напрежение, можем да използваме LDR. След като се преобразува в напрежение, можем да го прочетем с помощта на ADC.
За да знаем как да използваме ADC, първо трябва да се запознаем с някои основни термини като, резолюция на каналите, обхват, референтно напрежение и т.н.
Разделителна способност (битове) и канали в ADC
Когато прочетете спецификацията на който и да е микроконтролер или ADC IC, подробностите за ADC ще бъдат дадени, използвайки термините канали и разделителна способност (битове). Например ATmega328 на Arduino UNO има 8-канален 10-битов ADC. Не всеки щифт на микроконтролера може да чете аналогово напрежение, терминът 8-канален означава, че на този микроконтролер ATmega328 има 8 щифта, които могат да четат аналогово напрежение и всеки щифт може да чете напрежението с резолюция от 10 бита. Това ще варира за различните видове микроконтролери.
Нека приемем, че нашият ADC диапазон е от 0V до 5V и имаме 10-битов ADC, това означава, че нашето входно напрежение 0-5 волта ще бъде разделено на 1024 нива на дискретни аналогови стойности (2 10 = 1024). Значение 1024 е резолюцията за 10-битов ADC, подобно за 8-битовата ADC резолюция ще бъде 512 (2 8) и за 16-битова ADC резолюция ще бъде 65 536 (2 16).
С това, ако действителното входно напрежение е 0V, тогава ADC на MCU ще го прочете като 0 и ако е 5V MCU ще отчете 1024 и ако е някъде между 2.5V, тогава MCU ще прочете 512. Можем да използваме формулите по-долу за изчисляване на цифровата стойност, която ще бъде отчетена от MCU въз основа на разделителната способност на ADC и работното напрежение.
[Разделителна способност на ADC / Работно напрежение] = (Цифрова стойност на ADC / Действителна стойност на напрежението)
Референтно напрежение за ADC
Друг важен термин, с който трябва да сте запознати, е еталонното напрежение. По време на преобразуване ADC стойността на неизвестното напрежение се намира чрез сравняването му с известно напрежение, това известно напрежение се нарича Референтно напрежение. Обикновено всички MCU имат опция за задаване на вътрешно референтно напрежение, което означава , че можете да настроите това напрежение вътре до известна стойност, използвайки софтуер (програма). В платка Arduino UNO референтното напрежение е зададено вътрешно по подразбиране на 5V, ако е необходимо, потребителят може да настрои това референтно напрежение външно през щифта Vref също след извършване на необходимите промени в софтуера.
Винаги помнете, че измерената стойност на аналоговото напрежение винаги трябва да бъде по-малка от стойността на референтното напрежение, а референтната стойност на напрежението винаги трябва да бъде по-малка от стойността на работното напрежение на микроконтролера.
Пример
Тук ще вземем пример за ADC, който има 3 битова резолюция и 2V референтно напрежение. Така той може да картографира аналоговото напрежение 0-2v с 8 (2 3) различни нива, както е показано на снимката по-долу:
Така че, ако аналоговото напрежение е 0,25, тогава цифровата стойност ще бъде 1 в десетична и 001 в двоична. По същия начин, ако аналоговото напрежение е 0,5, тогава цифровата стойност ще бъде 2 в десетична и 010 в двоична.
Някои микроконтролери имат вграден ADC като Arduino, MSP430, PIC16F877A, но някои микроконтролери не разполагат с него като 8051, Raspberry Pi и т.н.
По-долу можете да намерите различни примери за ADC с различни микроконтролери:
- Как да използвам ADC в Arduino Uno?
- Raspberry Pi ADC Урок
- Връзка ADC0808 с 8051 микроконтролер
- 0-25V цифров волтметър с помощта на AVR микроконтролер
- Как да използвам ADC в STM32F103C8
- Как да използвам ADC в MSP430G2
Видове ADC и работещи
Има много типове ADC, най-често използваните са Flash ADC, Dual Slope ADC, Последователно приближение и Dual Slope ADC. За да се обясни как всяка от работата на тези ADC и разликата между тях би била извън обхвата на тази статия, тъй като те са доста сложни. Но за груба представа ADC има вътрешен кондензатор, който ще се зарежда от аналоговото напрежение, което трябва да се измери. След това измерваме стойността на напрежението чрез разреждане на кондензатора за определен период от време.
Някои често възникващи въпроси относно ADC
Как да измерим повече от 5V с помощта на моя ADC?
Както беше обсъдено по-рано, ADC модулът не може да измерва стойност на напрежението повече от работното напрежение на микроконтролера. Това е 5V микроконтролер, който може да измери само максимум 5V със своя ADC щифт. Ако искате да измервате нещо повече от това, което искате да измервате 0-12V, тогава можете да съпоставите 0-12V в 0-5V, като използвате верига на делител на потенциала или делител на напрежението. Тази схема ще използва двойка резистори за картографиране на стойностите за MCU, можете да знаете повече за веригата на делителя на напрежението, като използвате връзката. За горния ни пример трябва да използваме 1K резистор и 720 ома резистор последователно към източника на напрежение и да измерим напрежението между резисторите, както е обсъдено в горната връзка.
Как да конвертирате цифрови стойности от ADC в действителни стойности на напрежението?
Когато се използва ADC конвертор за измерване на аналогово напрежение, резултатът, получен от MCU, ще бъде цифров. Например в 10-битов 5V микроконтролер, когато действителното напрежение, което трябва да се измери, е 4V, MCU ще го прочете като 820, можем отново да използваме обсъдените по-горе формули, за да преобразуваме 820 в 4V, за да можем да го използваме в нашия изчисления. Нека проверим същото.
(Разделителна способност на ADC / работно напрежение) = (Цифрова стойност на ADC / Действителна стойност на напрежението) Действителна стойност на напрежението = Цифрова стойност на ADC * (Работно напрежение / Разделителна способност на ADC) = 820 * (5/1023) = 4.007 = ~ 4V
Надявам се, че имате добра представа за ADC и как да ги използвате за вашите приложения. Ако имате някакъв проблем с разбирането на понятията, можете да публикувате коментарите си по-долу или да ги напишете на нашите форуми.