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

 
» » » 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




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

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

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