цифровая электроника
вычислительная техника
встраиваемые системы

 
» » » Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Автор: Mike(admin) от 7-05-2020, 03:55

Усилитель с программируемым усилением своими руками


В измерительной аппаратуре очень важным функциональным блоком является усилитель с программируемым усилением. Вы, вероятно, знаете, что мультиметр или осциллограф очень точно измеряют очень малые напряжения, потому что схема имеет встроенный усилитель с программируемым усилением наряду с мощным АЦП, который также обеспечивает точность процесса измерения.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

В настоящее время стандартный усилитель с программируемым усилением в основном представляет собой неусиливающий усилитель на основе операционного усилителя с программируемым пользователем коэффициентом усиления. Этот тип устройства имеет очень высокий входной импеданс, широкую полосу пропускания, и селективный опорный входной сигнал напряжения, встроенный в микросхему. Но все эти функции стоят дорого, и для многих не стоит использовать такую дорогостоящую микросхему для универсального приложения.


Чтобы иметь доступный усилитель с программируемым усилением, можно собрать схему, состоящую из операционного усилителя, МОП-транзистора (MOSFET) и Arduino, благодаря которой можно программно изменить коэффициент усиления операционного усилителя.


Чтобы понять работу этой схемы, очень важно знать, как работает операционный усилитель.


операционный усилитель

На рисунке выше вы можете увидеть обозначение операционного усилителя. Основная задача усилителя заключается в усилении входного сигнала, наряду с усилением, операционный усилитель также может выполнять различные операции, такие как суммирование, дифференцирование, интегрирование и т. д. Операционный усилитель имеет только три вывода. Клемма со знаком (+) называется неинвертирующим входом, а клемма со знаком (-) называется инвертирующим входом. Помимо этих двух линий третья линия является выходной.


Операционный усилитель следует только двум правилам: 1) ток не входит и не выходит из входов операционного усилителя, 2) операционный усилитель пытается удерживать входы на тех же уровнях напряжения. Итак, после прояснения этих двух правил мы можем проанализировать приведенные ниже схемы.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Приведенный выше рисунок дает вам базовое представление о схеме стандартного усилителя с программируемым усилением. В этой схеме операционный усилитель сконфигурирован как неинвертирующий усилитель, и, как мы все знаем, с помощью неинвертирующей схемы, мы можем изменить коэффициент усиления операционного усилителя, изменив резистор обратной связи или входной резистор, Как вы можете видеть из приведенного выше схемного расположения, просто нужно переключать MOSFET по одному, чтобы изменить коэффициент усиления операционного усилителя. Далее приведена полная схема усилителя с программируемым усилением на основе Arduino.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Для демонстрации программируемого усилителя схема собрана на макетной плате без припоя с помощью проводов. Чтобы уменьшить внутреннюю паразитную индуктивность и емкость сборки, все компоненты были расположены как можно ближе.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Здесь операционный усилитель в схеме настроен как неинвертирующий усилитель, а входное напряжение от стабилизатора напряжения 7805 составляет 4,99 В. Измеренное значение для резистора R6 составляет 6,75 кОм, а R7 - 220,8 Ом. Эти два резистора образуют делитель напряжения, который используется для генерации входного испытательного напряжения для операционного усилителя. Резисторы R8 и R9 используются для ограничения входного базового тока транзисторов T3 и T4. Резисторы R10 и R11 используются для ограничения скорости переключения полевых МОП-транзисторов T1 и T2, в противном случае может быть вызвано колебание напряжения в цепи.


В данном случае Arduino Nano используется для управления базой транзистора и затвором МОП-транзисторов, а мультиметр используется для отображения уровней напряжения, поскольку встроенный АЦП Arduino не подходит по точности, когда речь идет об измерении низких уровней напряжения. Полный код Arduino для этого проекта приведен далее. Поскольку это очень простой код Arduino, нам не нужно подключать какие-либо библиотеки. Но нам нужно определить некоторые константы и входные контакты, как показано в коде.


#define BS170_WITH_50K_PIN 9
#define BS170_WITH_24K_PIN 8
#define BC548_WITH_24K_PIN 7
#define BC548_WITH_50K_PIN 6
#define BUTTON_PIN 5
#define LED_PIN1 2
#define LED_PIN2 3
#define 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, OUTPUT);
  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;
      button_is_pressed++;
    }
    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;
    }
 }
}

Измеренные значения для схемы усилителя с программируемым усилением следующие:


Vin = 4,99 В
R7 = 220,8 Ом
R6 = 6,82 кОм
R5 = 199,5K
R4 = 50,45К
R3 = 23,99K
R2 = 23,98K
R1 = 50,5 КБ


Расчеты в калькуляторе делителя напряжения:


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

Выход делителя напряжения составляет 0,1564 В. Расчет коэффициента усиления неинвертирующего усилителя для 4 резисторов состоит в следующем. Выходное напряжение, когда R1 является выбранным резистором: Vout = (1+ (199,5 / 50,5)) * 0,1564 = 0,77425 В. Выходное напряжение, когда R2 является выбранным резистором: Vout = (1+ (199,5 / 23,98)) * 0,1564 = 1,45755 В. Выходное напряжение, когда R3 является выбранным резистором: Vout = (1+ (199,5 / 23,99)) * 0,1564 = 1,45701 В. Выходное напряжение, когда R4 является выбранным резистором: Vout = (1+ (199,5 / 50,45)) * 0,1564 = 0,77486 В.


Мы сделали все это, чтобы сравнить теоретические и практические значения как можно точнее. После завершения всех вычислений мы можем перейти к тестированию.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

На изображении выше показано выходное напряжение, когда полевой МОП-транзистор T1 включен, следовательно, ток течет через резистор R1.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

На изображении выше показано выходное напряжение, когда транзистор T4 включен, следовательно, ток течет через резистор R4.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

На изображении выше показано выходное напряжение при включенном MOSFET T2, следовательно, ток течет через резистор R2.


Усилитель с программируемым усилением на основе Arduino и МОП-транзисторах

На изображении выше показано выходное напряжение, когда транзистор T3 включен, следовательно, ток течет через резистор R3.


Как видно из схемы, T1, T2 – полевые транзисторы, а T3, T4 – транзисторы. Поэтому, когда используются МОП-транзисторы, ошибка находится в диапазоне от 1 до 5 мВ, но когда транзисторы используются в качестве переключателей, мы получаем ошибку в диапазоне от 10 до 50 мВ. С учетом приведенных выше результатов ясно, что полевые транзисторы являются оптимальным решением для такого рода приложений, и ошибки теоретического и практического характера могут быть вызваны ошибкой смещения ОУ.




© digitrode.ru


Теги: Arduino, операционный усилитель




Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

Комментарии:

Оставить комментарий