Обхватът на ADC преобразуване на микроконтролера може да бъде удвоен без загуба на точност
Електронен дизайн Европа
Много микроконтролери имат вграден аналогово-цифров преобразувател (ADC), обикновено многоканален, с мултиплексирани входове. Въпреки това, в повечето случаи тези ADC са в състояние да дигитализират само еднополярни сигнали между положителните и отрицателните референтни нива на напрежение (+VREF и –VREF), с редки изключения с –VREF = 0. За да работят с отрицателни напрежения, е необходимо някакво устройство за кондициониране на сигнала.
Най-често за тази цел се използва схема за изместване на ниво на операционен усилвател, която измества измерения сигнал нагоре с половината от напрежението + VREF, така че сигналът да не напуска положителната област и съответно да може да бъде обработен от ADC. Но този метод има два сериозни недостатъка. Първо, обхватът на преобразуваните напрежения е намален наполовина. Второ, за да се компенсира изместването, е необходима допълнителна софтуерна обработка на резултатите от цифровизацията, което може да увеличи, вероятно доста значително, общото време за преобразуване.
Алтернативен метод се основава на разделянето и независимото цифровизиране на положителните и отрицателните компоненти на сигнала. Това ще изисква два ADC канала на микроконтролера, два диода на Шотки и двете половини на двоен операционен усилвател.
Като се има предвид, че източникът на сигнал за ADC трябва да има нисък изходен импеданс (обикновено нисък от 10 kΩ), почти всяка верига се нуждае от операционен усилвател, за да съответства на импедансите. Това означава, че двойният операционен усилвател, използван във веригата, може да бъде изключен от списъка с "разходи" за изпълнение на предложената идея.
Пример за такава схема, направена на микроконтролер със средна производителност PIC16F876 (U3), е показан на фигура 1. На диаграматапоказани са само изходите на контролера, които са пряко свързани с темата на статията. На едната половина на операционния усилвател (U1A) е направен последовател на напрежение с коефициент на усилване +1, от друга (U1B) - инвертор с коефициент на усилване -1. Изходът на U1A е свързан към аналогов вход AN0 (U3, щифт 2) чрез терминиращ резистор R1. По същия начин U1B е свързан към AN1 чрез резистор R4.
![]() | |
Снимка 1. | Положителните и отрицателните компоненти, извлечени от сигнала, се дигитализират отделно, което позволява на микроконтролера с еднополюсен ADC да обработва биполярни сигнали в два пъти по-голям от входния диапазон без загуба на разделителна способност. |
Когато входното напрежение е положително (да кажем +4,00 V), +4,00 V се прилага от U1A към AN0. U1B е -4,00 V, а AN1 (U3, щифт 3) ще бъде около 0,24 V поради ниския преден спад на Шотки диода. По същия начин, ако VIN е -4,00 V, U1B и AN1 ще бъдат +4,0 0 V, а напрежението -4,00 V ще премине към входа AN0, ограничен до около -0,24 V.
Ограничителите на сигнала предотвратяват навлизането на отрицателни напрежения под –0,3 V във входовете на ADC.Подаването на ток при по-ниски напрежения може да изкриви резултатите на други канали. Фигура 2 показва вълните на 8 Vp-p синусоида на VIN входа и съответните сигнали на ADC щифтовете. Всяко напрежение, равно или по-малко от 0, се третира като нула от ADC.
Щракнете за уголемяване | |
Фигура 2. | Всеки канал на ADC дигитализира една полувълна от входния синусоидален сигнал. |
Програма, която контролира четенетовходен сигнал, първо трябва да изберете канал 0 (AN0) и да изчакате завършването на вземането на проби за около 40 µs, след което да започнете преобразуването. Ако резултатът е различен от нула, тогава въведеният VIN е положителен. Тъй като VREF=4,096V, или 4×1024mV, стойностите, прочетени от ADC, ще представляват броя на 4mV проби на сигнала. Следователно, умножавайки по 4 числото, получено в резултат на преобразуването, получаваме измереното напрежение във волтове. Необходими са два байта за съхраняване на тази стойност в паметта.
Ако резултатът от преобразуването на вход AN0 е нула, програмата трябва да избере ADC канала AN1 и да изчака още 40 µs, докато завърши второто преобразуване. Ако резултатът е различен от нула (например 1,5 V), тогава входното напрежение VIN е отрицателно (-1,50 V) и програмата трябва да обърне резултата преди запис. Случаят, когато и AN0, и AN1 са нула, означава, че VIN = 0V.
Показаната схема може да дигитализира сигнали от +4,092 V до -4,092 V (8,184 Vp-p). При референтно напрежение от +VREF = 5 V обхватът на измерване може да бъде разширен до 10 Vp-p, но поради частичната стъпка на вземане на проби преобразуването на отчетените стойности ще стане по-трудно. И така, видяхме как, без загуба на разделителна способност, можете да удвоите дължината на скалата за преобразуване на ADC.
Описаният дизайн трябва да използва операционни усилватели с ниско отклонение с входове и изходи rail-to-rail. Ако скоростта на преобразуване не е достатъчна, можете да изберете по-широк операционен усилвател и да намерите микроконтролер с по-бърз ADC. Е, както винаги, търсете компромис между скорост, точност и консумация на енергия.
Превод: AlexAAN по поръчка на RadioPilot