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

Простой усилитель с переменным коэффициентом усиления состоит из нескольких резисторов с разными значениями, операционного усилителя и компонентов, которые переключают цепь усилителя между этими резисторами. Это может быть электромагнитный переключатель (соленоид) или электронный переключатель.
В этом случае аналоговый переключатель 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, который позволяет реализовать управление усилителем с переменным коэффициентом усиления благодаря коммутации ключей микросхемы переключателя. Этот скетч очень прост, потому что он содержит, по сути, лишь команды 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