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

 
» » » Arduino и усилитель с переменным коэффициентом усиления своими руками

Arduino и усилитель с переменным коэффициентом усиления своими руками

Автор: Mike(admin) от 15-12-2017, 17:35

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


Arduino и усилитель с переменным коэффициентом усиления своими руками

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


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


усилитель с переменным коэффициентом усиления

Резистор RF является базовым сопротивлением обратной связи. Если ключ S1 будет замкнут, а остальные останутся открытыми, коэффициент усиления будет равен G1 = 1 + RF/(R1+R2+R3+R4).


Если S2 замкнут, а остальные разомкнуты, коэффициент усиления составит G2 = 1 +(RF+R1)/(R2+R3+R4).


Соответственно для замкнутых S3 и S4 коэффициент усиления будет равен G3 = 1 +(RF+R1+R2)/(R3+R4) и G4 = 1 +(RF+R1+R2+R3)/(R4).


Таким образом, мы можем получить четыре коэффициента усиления. Естественно, увеличивая количество резисторов и ключей можно увеличить количество выбираемых коэффициентов усиления. Итак, имея в виду эту концепцию, мы можем установить соединения между платой Arduino, резисторами, микросхемой переключателя и операционным усилителем, как показано на схеме, приведенной далее. На ней Pin_2, Pin_3, Pin_4 и Pin_5 подключаются к цифровым линиям ввода/вывода Arduino под номерами 2, 3, 4 и 5 соответственно.


Arduino и усилитель с переменным коэффициентом усиления своими руками

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



void setup() {
  pinMode(2, OUTPUT);// к линии 1C
  pinMode(3, OUTPUT);// к линии 2C
  pinMode(4, OUTPUT);// к линии 3C
  pinMode(5, OUTPUT);// к линии 4C
  Serial.begin(9600);
}

char cmd;

void loop() {
  while (Serial.available() > 0) {
    cmd = char(Serial.read());
    
    if (cmd == '0') {
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 0);
      digitalWrite(5, 0);
    }
    if (cmd == '1') {
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 0);
      digitalWrite(5, 0);
    }
    if (cmd == '2') {
      digitalWrite(2, 0);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
    }
    if (cmd == '3') {
      digitalWrite(2, 0);
      digitalWrite(3, 0);
      digitalWrite(4, 0);
      digitalWrite(5, 1);
    }
    if (cmd == '4') {
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 0);
      digitalWrite(5, 1);
    }
    if (cmd == '5') {
      digitalWrite(2, 1);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
    }
    if (cmd == '6') {
      digitalWrite(2, 1);
      digitalWrite(3, 1);
      digitalWrite(4, 0);
      digitalWrite(5, 0);
    }
    if (cmd == '7') {
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 0);
      digitalWrite(5, 1);
    }
    if (cmd == '8') {
      digitalWrite(2, 0);
      digitalWrite(3, 1);
      digitalWrite(4, 1);
      digitalWrite(5, 0);
    }
    if (cmd == '9') {
      digitalWrite(2, 0);
      digitalWrite(3, 0);
      digitalWrite(4, 1);
      digitalWrite(5, 1);
    }
  }
}



© digitrode.ru


Теги: Arduino



   Благодарим Вас за интерес к информационному проекту digitrode.ru.
   Если Вы хотите, чтобы интересные и полезные материалы выходили чаще, и было меньше рекламы,
   Вы можее поддержать наш проект, пожертвовав любую сумму на его развитие.


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

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

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