- Основи на Op-Amp
- Програмируем усилвател на усилването работи
- Необходими компоненти
- Схематична диаграма
- Код на Arduino за PGA
- Изчисления за програмируем усилвател на усилване
- Тестване на верига с усилвател с програмируем усилвател
- Плюсове и минуси на програмируем усилвател за усилване
- По-нататъшно подобрение
В измервателната индустрия много важен функционален блок е програмируем усилвател на усилване (PGA). Ако сте електронен ентусиаст или студент, вероятно сте виждали мултицет или осцилоскоп, измерващ много малки напрежения много скъпо, защото веригата има вграден PGA заедно с мощен ADC, който помага за прецизния процес на измерване.
В наши дни PGA усилвателят предлага не-инвертиращ усилвател с опционален усилвател с програмируем от потребителя коефициент на усилване. Този тип устройства имат много висок входен импеданс, широка честотна лента и избираема референтна стойност на входното напрежение, вградена в интегралната схема. Но всички тези функции идват с цена и за мен не си струва да поставям толкова скъпо струващия чип за общо приложение.
За да преодолея тези ситуации, измислих споразумение, състоящо се от Op-усилвател, MOSFET и Arduino, чрез което успях програмно да променя усилването на операционния усилвател. И така, в този урок ще ви покажа как да създадете свой собствен програмируем усилвател с усилвател LM358 и MOSFETS и ще обсъдя някои плюсове и минуси на веригата заедно с тестването.
Основи на Op-Amp
За да се разбере работата на тази схема, е много важно да се знае как работи операционният усилвател. Научете повече за Op-amp, като следвате тази схема на тестер за op-amp.
На горната фигура можете да видите операционен усилвател. Основната работа на усилвателя е да усилва входния сигнал, заедно с усилването, операционният усилвател може също да извършва различни операции като сумиране, диференциране, интегриране и др. Научете повече за сумиращия усилвател и диференциалния усилвател тук.
Op-amp има само три терминала. Терминалът със знака (+) се нарича неинвертиращ вход, а терминалът със знака (-) се нарича инвертиращ вход. Освен тези два терминала, третият терминал е изходният терминал.
Операционният усилвател следва само две правила
- Ток не тече във или извън входовете на операционния усилвател.
- Операционният усилвател се опитва да поддържа входовете на същите нива на напрежение.
Така че с изчистването на тези две правила можем да анализираме схемите по-долу. Също така научете повече за Op-amp, като преминете през различни схеми, базирани на Op-amp.
Програмируем усилвател на усилването работи
Горната фигура ви дава основна представа за схемата на моето сурово PGA усилвател. В тази схема операционният усилвател е конфигуриран като неинвертиращ усилвател и както всички знаем с неинвертираща схема, можем да променим усилването на операционния усилвател, като сменим резистора за обратна връзка или входния резистор, както можете да видите от горното подреждане на схемата, просто трябва да превключвам MOSFET един по един, за да променя усилването на операционния усилвател.
В тестовия раздел направих точно това, че превключих един по един MOSFET и сравних измерените стойности с практическите стойности и можете да наблюдавате резултатите в раздела "тестване на веригата" по-долу.
Необходими компоненти
- Arduino Nano - 1
- LM358 IC - 1
- LM7805 регулатор - 1
- BC548 Генеричен NPN транзистор - 2
- BS170 Generic N-channel MOSFET - 2
- 200K резистор - 1
- 50K резистор - 2
- 24K резистор - 2
- 6.8K резистор - 1
- 1K резистор - 4
- 4.7K резистор - 1
- 220R, 1% резистор - 1
- Тактилен превключвател Generic - 1
- Жълт LED 3mm - 2
- Табла за хляб Generic - 1
- Джъмперни проводници Generic - 10
- Захранване ± 12V - 1
Схематична диаграма
За демонстрация на програмируем усилвател на усилване, веригата е конструирана върху без запояване макет с помощта на схемата; За да се намали вътрешната паразитна индуктивност и капацитет на макета, всички компоненти са поставени възможно най-близо.
И ако се чудите защо в моята макет има клъстер жици? Позволете ми да ви кажа, че това е да се направи добра връзка на земята, тъй като вътрешните връзки на земята в макет са много лоши.
Тук оп-усилвателят във веригата е конфигуриран като неинвертиращ усилвател и входното напрежение от регулатора на напрежение 7805 е 4.99V.
Измерената стойност за резистора R6 е 6.75K и R7 е 220.8R, тези два резистора образуват делител на напрежението, който се използва за генериране на входното тестово напрежение за операционния усилвател. В резистори R8 и R9 са използвани за ограничаване на входния ток база на транзистора Т3 и Т4. На резистори R10 и R11 са използвани за ограничаване на скоростта на превключване на MOSFET-Т1 и Т2, в противен случай, може да предизвика колебание във веригата.
В този блог искам да ви покажа причината за използването на MOSFET, а не BJT, следователно схемата на схемата.
Код на Arduino за PGA
Тук Arduino Nano се използва за управление на основата на транзистора и портата на MOSFET, а мултиметър се използва за показване на нивата на напрежение, тъй като вграденият ADC на Arduino върши много лоша работа, когато става въпрос за измерване на ниско нива на напрежение.
Пълният код на Arduino за този проект е даден по-долу. Тъй като това е много прост код на Arduino, не е необходимо да включваме никакви библиотеки. Но ние трябва да дефинираме някои константи и входни щифтове, както е показано в кода.
Настройката за празнота () е основният функционален блок, където операцията за четене и запис за всички входове и изходи се извършва според изискването.
# определят BS170_WITH_50K_PIN 9 # определят BS170_WITH_24K_PIN 8 # определят BC548_WITH_24K_PIN 7 # определят BC548_WITH_50K_PIN 6 # определят BUTTON_PIN 5 # определят LED_PIN1 2 # определят LED_PIN2 3 # определят PRESSED_CONFIDENCE_LEVEL 5000 Int button_is_pressed = 0; int debounce_counter = 0; void setup () {pinMode (BS170_WITH_50K_PIN, OUTPUT); pinMode (BS170_WITH_24K_PIN, ИЗХОД); pinMode (BC548_WITH_24K_PIN, OUTPUT); pinMode (BC548_WITH_50K_PIN, OUTPUT); pinMode (LED_PIN1, OUTPUT); pinMode (LED_PIN2, OUTPUT); pinMode (BUTTON_PIN, INPUT); } void loop () {bool val = digitalRead (BUTTON_PIN); // четем входна стойност if (val == LOW) {debounce_counter ++; if (debounce_counter> PRESSED_CONFIDENCE_LEVEL) {debounce_counter = 0; бутон_и_пресиран ++; } if (button_is_pressed == 0) {digitalWrite (BS170_WITH_50K_PIN, HIGH); digitalWrite (BS170_WITH_24K_PIN, LOW);digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, LOW); } if (button_is_pressed == 2) {digitalWrite (BS170_WITH_24K_PIN, HIGH); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, LOW); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 3) {digitalWrite (BC548_WITH_24K_PIN, HIGH); digitalWrite (BC548_WITH_50K_PIN, LOW); digitalWrite (BS170_WITH_24K_PIN, LOW); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (LED_PIN1, HIGH); digitalWrite (LED_PIN2, HIGH); } if (button_is_pressed == 1) {digitalWrite (BC548_WITH_50K_PIN, HIGH); digitalWrite (BS170_WITH_50K_PIN, LOW); digitalWrite (BS170_WITH_24K_PIN, LOW); digitalWrite (BC548_WITH_24K_PIN, LOW); digitalWrite (LED_PIN1, HIGH);digitalWrite (LED_PIN2, LOW); } if (button_is_pressed> = 4) {button_is_pressed = 0; }}}
Изчисления за програмируем усилвател на усилване
Измерените стойности за веригата PGA усилвател са показани по-долу.
Vin = 4.99V R7 = 220.8 Ω R6 = 6.82 KΩ R5 = 199.5K R4 = 50.45K R3 = 23.99K R2 = 23.98K R1 = 50.5K
Забележка! Показани са измерените стойности на резистора, тъй като с измерените стойности на резистора можем да сравним отблизо теоретичните и практическите стойности.
Сега изчислението от калкулатора на делителя на напрежението е показано по-долу,
Изходът на делителя на напрежението е 0,1564V
Изчисляване на усилването на неинвертиращия усилвател за 4-те резистора
Vout, когато R1 е избраният резистор
Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425V
Vout, когато R2 е избраният резистор
Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755V
Vout, когато R3 е избраният резистор
Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701V
Vout, когато R4 е избраният резистор
Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486V
Направих всичко това, за да сравня теоретичните и практическите стойности възможно най-близо.
С всички направени изчисления можем да преминем към раздела за тестване.
Тестване на верига с усилвател с програмируем усилвател
Горното изображение ви показва изходното напрежение, когато MOSFET T1 е включен, следователно токът протича през резистора R1.
Горното изображение ви показва изходното напрежение, когато транзисторът T4 е включен, следователно токът протича през резистора R4.
Горното изображение ви показва изходното напрежение, когато MOSFET T2 е включен, следователно токът протича през резистора R2.
Горното изображение ви показва изходното напрежение, когато транзисторът T3 е включен, следователно токът протича през резистора R3.
Както можете да видите от схемата, че T1, T2 са MOSFET, а T3, T4 са транзистори. Така че, когато се използват MOSFET, грешката е в диапазон от 1 до 5 mV, но когато транзисторите се използват като превключватели, получаваме грешка в диапазон от 10 до 50 mV.
С горните резултати става ясно, че MOSFET е решението за този тип приложения и грешките в теоретичните и практическите могат да бъдат причинени поради грешката на компенсиране на операционния усилвател.
Забележка! Моля, обърнете внимание, че добавих два светодиода само за тестване и не можете да ги намерите в действителната схема, той показва двоичен код, за да покаже кой пин е активен
Плюсове и минуси на програмируем усилвател за усилване
Тъй като тази схема е евтина, лесна и проста, тя може да бъде внедрена в много различни приложения.
Тук MOSFET се използва като превключвател за преминаване на целия ток през резистора към земята, поради което ефектът от температурата не е сигурен и с моите ограничени инструменти и оборудване за изпитване не успях да ви покажа ефектите от променящата се температура върху веригата.
Целта на използването на BJT заедно с MOSFET е, защото искам да ви покажа колко лош може да бъде BJT за този вид приложения.
Стойностите на резисторите с обратна връзка и входните резистори трябва да бъдат в диапазона KΩ, тоест защото при по-ниски стойности на резистора през MOSFET ще тече повече ток, като по този начин повече напрежение ще падне през MOSFET, което води до непредсказуеми резултати.
По-нататъшно подобрение
Веригата може да бъде допълнително модифицирана, за да се подобри нейната производителност, както можем да добавим филтъра за отхвърляне на високочестотни шумове.
Тъй като в този тест се използва LM358 желе усилвател, усилващите грешки на операционния усилвател играят основна роля при изходното напрежение. Така че може да бъде допълнително подобрен чрез използване на инструментален усилвател, а не на LM358.
Тази схема е направена само за демонстрационни цели. Ако мислите да използвате тази схема в практическо приложение, трябва да използвате оптоусилвател тип чопър и резистор с висока точност 0,1 ома, за да постигнете абсолютна стабилност.
Надявам се тази статия да ви е харесала и да сте научили нещо ново от нея. Ако имате някакви съмнения, можете да попитате в коментарите по-долу или да използвате нашите форуми за подробна дискусия.