Про Ардуино и не только
Мы бы хотели отслеживать нажатие кнопки для выполнения каких-то действий. Для этого мы подключили линию +5В через резистор и кнопку к цифровому выводу Ардуино, полагая, что при нажатии на кнопку ток потечет через нее и Ардуино считает на цифровом входе 2 сигнал высокого уровня. Соответственно, при размыкании контакта мы рассчитываем получить на входе сигнал низкого уровня. Так ли это? Проверим.
Подключим кнопку по приведенной схеме и загрузим в Ардуино следующий скетч. Результат его работы посмотрим в мониторе порта.
При нажатии на кнопку Ардуино, действительно, зафиксирует на входе сигнал высокого уровня, при этом в монитор порта будет выводиться значение «1». Но при отпускании кнопки в мониторе порта будут выводиться как «0», так и «1». Я даже больше скажу: можно исключить из схемы кнопку (все равно она разомкнута), у нас останется только провод, подключенный к порту 2 Ардуино, результат опроса порта будет таким же непредсказуемым. Особенно это хорошо заметно с длинным куском провода. Почему так происходит? Дело в том, что вход Ардуино не подключен ни к линии питания, ни к земле — он находится «ни в каком» состоянии. Такое состояние называется высокоимпедансным или Z-состоянием. Провод в данном случае выполняет роль антенны, на которую оказывают воздействие окружающие ее электромагнитные поля. В результате Ардуино непредсказуемо фиксирует то высокий, то низкий уровень сигнала на данном входе.
Чтобы логический вход не оставался в подвешенном состоянии при разомкнутом контакте кнопки и гарантировать на нем сигнал низкого уровня, его через резистор соединяют с землей. Такой резистор называют подтягивающим: он обеспечивает подтяжку сигнала к земле (как в данном случае) или же к питанию, если устанавливается между логическим входом устройства и линией питания. Соответственно при подтяжке к питанию на логическом входе будет гарантирован высокий уровень сигнала.
Иногда подтягивающим называют резистор, который подтягивает именно к питанию, также используют англоязычный термин pull-up (pull-up резистор). А для обозначения резистора, подтягивающего к земле, можно использовать термин стягивающий или pull-down резистор. Ниже приведены схемы подключения кнопки к логическому входу (не обязательно Ардуино) с использованием подтягивающего и стягивающего резисторов.
Попробуйте подключить кнопку к Ардуино используя одну из приведенных схем. В этот раз в мониторе порта не будет никаких неожиданных значений.
Как вы понимаете, подтягивающие резисторы весьма востребованы в электронике. Они нужны не только для подключения кнопок, но также при подключении выводов устройств с Z-состоянием или открытым коллектором. Поэтому многие контроллеры имеют встроенные подтягивающие резисторы, в том числе и Ардуино (а точнее используемые в них микроконтроллеры). Чтобы подтянуть порт Ардуино к питанию необходимо функцией pinMode установить для данного порта режим INPUT_PULLUP. Давайте немного изменим схему и скетч из начала этой статьи. Из схемы уберем резистор и установим кнопку между вторым портом и землей:
А в скетче изменим режим работы порта на INPUT_PULLUP, чтобы задействовать внутренний подтягивающий резистор:
Загрузите этот код в Ардуино и убедитесь, что схема работает как нам нужно без дополнительных (внешних) резисторов. В тот момент когда кнопка разомкнута порт Ардуино не остается подвешенным в воздухе: он подтянут к питанию внутренним резистором. Поэтому на нем гарантирован сигнал высокого уровня. А при нажатии кнопки будет считываться сигнал низкого уровня.
Не забывайте о встроенных подтягивающих резисторах Ардуино. Я довольно часто замечаю, что люди, пишущие статьи про Ардуино, не знают об их наличии и вешают для тех же кнопок внешние подтягивающие резисторы.
Что такое сильный (strong pull-up) и слабый (weak pull-up) подтягивающий резистор? Чем ниже сопротивление подтягивающего резистора, тем больший ток протекает через него и тем сильнее он подтягивает сигнал к питанию (или земле, если речь о pull-down резисторе). Отсюда и название сильный подтягивающий резистор. Соответственно, чем выше сопротивление, тем слабже резистор подтягивает сигнал, поэтому его называют слабым.
Как выбрать номинал для подтягивающего резистора? Общая рекомендация — это, как правило, 10кОм. Где-то от 5кОм и ниже считается сильной подтяжкой, 20..100кОм — слабая. Подтягивающие резисторы Ардуино имеют номинал 20..50кОм (конкретное значение подбирается и устанавливается на заводе изготовителе), т.е. являются слабыми. Поэтому в документации к различным устройствам можно увидеть рекомендации использовать более сильные подтягивающие резисторы. Особенно это актуально для устройств, работающих в неблагоприятных условиях или при значительной длине проводников, когда увеличивается вероятность возникновения электромагнитных помех.
Есть ли в Ардуино подтяжка к земле (внутренние pull-down резисторы)? — Нет. В Ардуино доступны только к подтягивающие к питанию резисторы. Поэтому если вам нужно подтянуть вывод к земле, то используйте для этого внешний резистор.
На этом всё. А дочитавшим до конца в качестве бонуса функциональная схема порта ввода/вывода микроконтроллера ATmega328P, используемого в Arduino UNO. На схеме показан подтягивающий резистор и условия для его включения:
- бит PUD (PULLUP DISABLE) регистра MCUCR должен быть сброшен;
- регистр DDxn (Data Direction) должен быть установлен в 0, т.е. порт сконфигурирован на ввод;
- регистр PORTxn должен быть установлен в 1.
Возможно, Вам будет интересно:
28 комментариев:
Друг ты опять спас меня, только из твоей статьи понял что если PULLUPом включаем подтягивающий резистор надо кидать контакт датчиков на землю. Весь русскоязычный интернет ато перешерстил. Спасибо.
Узнал про подтягивающие из курса универа в PIC16, использовать в ардуино начну сегодня 😀
Надеюсь, в том смысле, что хорошая?
Получил Raspberry Pi и пользуюсь готовыми решениями с интернета, но ненмогу понять принципов работы, что очень напрягает (скорее раздражает). Ваш пост очень помог, хотя все ещё никакне могу понять две вещи:
1. Разве резистор на 10к Ом не должен снижать напряжение до нулевых значений, что при подводе к вводу должен преобразовываться в 0?
2. Почему при нажатии кнопки сигнал не разделяется и не поступает одновременно и на заземление и на ввод?
А почему резистор должен снижать напряжение?
Посмотрите на приведенную выше схему включения подтягивающего резистора. Когда кнопка разомкнута ток течет от VCC через резистор к микроконтроллеру — цифровой вход подтянут к питанию, на нем сигнал высокого уровня.
Сопротивление порта микроконтроллера (в режиме INPUT) очень велико и при нажатии на кнопку ток пойдет по цепи с меньшим сопротивлением — через кнопку. Через цифровой вход ток уже не потечет, на нем будет сигнал низкого уровня.
Спасибо за ответ, наконец то все понял. Странно что все это хорошо знал когда был школьником, а сейчас ума не приложу как все это работает. Хорошо что вы продолжаете поддерживать пост и читателей (особенно таких как я).
Великая статья. А главное понятно мне начинающему.
Привет Владимир !
Очень хорошая статья , спасибо .
Добрый день.
С удовольствием читаю ваши статьи.
Вопрос. Как влияют на энергопотребление подключение кнопки через стягивающий и подтягивающий резисторы?
Добрый день!
Вообще увеличивают, ведь через них протекает ток. Тем больший, чем меньше сопротивление резистора. Но по этому поводу не стоит заморачиваться, если вы работаете с Ардуино: на ее фоне подтяжка не влияет на потребление. А вот когда вы пересядете с Ардуино на отдельные микроконтроллеры и начнете считать микроамперы, вот тогда можно обратить на этот вопрос внимание.
Nick Gammon на странице http://www.gammon.com.au/power привел результаты своих измерений тока, потребляемого ATmega328P в режиме SLEEP_MODE_PWR_DOWN (BOD и ADC отключены) для различных состояний выводов:
Все пины в режиме OUTPUT, LOW: 0.35 мкА.
Все пины в режиме OUTPUT, HIGH: 1.86 мкА.
Все пины в режиме INPUT, LOW (внутренние подтягивающие резисторы не задействованы): 0.35 мкА.
Все пины в режиме INPUT, HIGH (задействованы внутренние подтягивающие резисторы): 1.25 мкА.
Разница в последних двух результатах — это и есть потери на подтяжку всех выводов.
Добрый день, Владимир большое спасибо за обзоры и пояснения, уже несколько дней усиленно штудирую интернет, из всего, что довелось перечитать и пересмотреть — Ваши материал пожалуй самое внятное.
Я сейчас в одном большом ступоре, если не сложно помогите, пожалуйста, определиться, какой контроллер (или систему) лучше взять за основу. Я биолог, но так получилось, что уже давно помимо прочего, отвечаю за сбор, хранение и обработку данных. Признаюсь сразу — программирование как таковое вызывает паралич мозга, но есть такое слово НАДО, поэтому уже 14 и 2 года соответственно у меня успешно работают две базы собранные на VB в Exel, из записей встроенного ридера, уроков "Планеты EXEL" и всякого разного не всегда цензурного….
В общем, сперва почитал восторги на счет Ардуино, посмотрел FLProg (с души вроде не воротит, как XOD ID), в процессе Arduino IDE мелькает — тоже вроде бы явного отторжения не вызывает. Не нравиться два момента — цена кусается, и кушать все таки любит она, а с моим зрение боюсь даже светодиод отпаять будет проблематично. Второй взгляд был на STM32L0 — тут вроде бы и энергопотребление вкусное и часы реального времени тебе встроенные и. зашел еще на один ресурс БЛИН, уши в трубочку свернулись. и мозги-то народу ардуиной зс$р@ны и все эти ваши таблЭтки и примочки хуже чем инвалиды на всю жизнь бейсиком искалеченные и ниже -10 уже не работает и вообще… ИДИТЕ ВЫ. Не мешайте народу НОРМАЛЬНЫЕ языки программирования изучать, ПУСТЬ УЧАТ, а не это ваше всякое-разное!
В общем аппаратная часть STM32 если честно нравиться, но как ее программировать и с какого боку прошивать, пока даже образно, если честно плохо понимаю, в то время как по Ардуино и в скетчах уже покопался и библиотеки посмотрел, логического шока вроде нет (пока). Вот и думаю имеет смысл углубляться в Ардуино среду или все же на какие-то другие контроллеры посмотреть? Например MSP430 еще рассматривал, но это я так понимаю еще одна среда и уже другая, значит и скетчи для датчиков не факт, что будут и библиотеки тоже, то есть все руками через регистры, что это такое я вроде бы (хотя не факт), а вот как руками делать пока увы не представляю.
Сама задача из-за чего весь сыр-бор выглядит так, есть необходимость сделать простую, но гибкую метеосистему. Гибкую в том плане, что вот надо сейчас сделать регистратор температуры и влажности воздуха, что бы просыпался, допустим каждые 10 минут, снимал данные, писал на SD и засыпал, но при этом с автономным сроком работы хотя бы полгода и МАЛЕНЬКИЙ (грибники тырят блин) и все это в количестве штук 5-10 за не сильно астрономическую сумму (к слову посмотрел цены очень хороших датчиков SHT35 и приятно офигел, с модулями не сравнить). А завтра надо тоже самое, но плюс замер света и каждый час продувание камеры вентилятором (для учета транспирации), то есть уже не такое автономное (пара недель), не такое маленькое (может с батарейкой солнечной или даже с выводом данных по wi-fi/sim/радиоканалу), но что бы не с нуля и в той же системе?
Про энергосбережение читал кстати очень внимательно, про прерывания тоже. Главная головная боль на данный момент, ОЧЕНЬ много информации о том, что из глубокого сна хорошо выходить по внешнему прерыванию, например с часов реального времени (выбрал DS3231), нашел даже связку блоков сон/пробуждение для FLProg, библиотеки вроде бы тоже есть. НО. нигде не найду, хоть сколько ни будь, внятного объяснения куда в этом случае прописывать или ставить в визуальную среду этот самый внутренний будильник часов реального времени, как программировать его, способна ли сама программа после пробуждения его перепрограммировать на новое время и как запрограммировать ногу SQW на модуле, что бы она выдавала этот самый вожделенный сигнал на пробуждение платы.
Буду очень признателен, если хотя бы по общему направлению сориентируете — куда смотреть и что искать.
Добрый день!
С STM я не работал, поэтому сравнить с AVR не могу. Может оно было бы и лучше. Но Ардуино однозначно популярнее, для нее куча библиотек, примеров — на ней будет проще сделать. И если использовать не саму Ардуину, а отдельно микроконтроллер, то потребление будет реально низким. Проработать автономно год, периодически просыпаясь для опроса датчиков — запросто.
Что касается flprog, то, мне кажется, для серьезных проектов он не очень. Лучше использовать нормальную IDE, в которой сам всё контролируешь.
Так что мне видится следующее решение: AVR (ATmega328P) + DS3231 + датчики + на что писать показания (flash). Часы программируются на генерацию сигнала с нужным интервалом (10 минут), они будут выдавать его на SQW. Микроконтроллер при включении переводим в режим PowerDown, разрешив пробуждение по внешнему прерыванию — от DS3231. Проснувшись, запитываем датчики и память, читаем показания, пишем их в память, отключаем всех и снова спать до следующего сигнала будильника.
Цена ATmega328P на Али меньше 100р. Потребление, как уже сказал, низкое: спать — хоть несколько лет; с учетом просыпаний — нужно иметь представление об общем потреблении системы, но батареи 1Ач на год-то должно хватить. Температурный диапазон -40..105C. Вполне нормальный МК для данной задачи.
Зачем нужен подтягивающий резистор
В зарубежных источниках их называют pull-up (стягивающий резистор) или pull-down (подтягивающий резистор) сопротивлениями.
Такое сопротивление как-бы «подтягивает» потенциал вывода до потенциала питания или корпуса. При этом, кроме функции фиксации потенциала, подтягивающий резистор дает возможность использовать вывод микросхемы по своему прямому назначению.
Следует выбирать подтягивающий резистор таким образом, чтобы протекающий через него ток был очень низкий. Такой ток принято нызывать слабым сигналом. И если вывод микроконтроллера будет «подтянут» с помощью сопротивления, а затем на него подать полезный (сильный) сигнал, то соотношение между мощностями будет велико, и слабый сигнал будет полностью не виден на фоне сильного. Т.е. на вывод микросборки через подтягивающий резистор поступают оба сигнала, но главную роль играет только сильный сигнал.
Таким простым способом решается задача защиты цифровой микросхем и микроконтроллеров от случайных срабатываний. Точнее можно сказать, что эти сопротивления чётко задают или определяют логический уровень на высокоомных входах цифровых микросхем.
Стягивающие и подтягивающие резисторы применяются в модулях Ардуино со входными контактами логических компонентов, которым важен только один факт: поступает ноль вольт (логический ноль) или не ноль (логическая единица). Подтягивающие резисторы здесь нужны, чтобы не оставить вход Arduino в «подвешенном» состоянии. Рассмотрим такую схему подключения подтягивающего резистора.
Нам надо, чтобы когда кнопка не нажата, вход платы фиксировал полное отсутствие напряжения. Но в данном примере выше вход находится в «никаком» состоянии. Он может срабатать и нет, случайным образом. Причина тому различные шумы, образующиеся вокруг провода и действуют как антенны и генерирующие небольшой потенциал из электромагнитных волн. Чтобы полностью гарантировать отсутствие напряжения при разомкнутой схеме, рядом с входом Arduino необходимо добавить стягивающий резистор, как на схеме ниже.
Теперь наведенный ток будет утекать через стягивающий компонент в землю. Для стягивания применяются радио элементы больших сопротивлений (10 кОм и выше). В моменты, когда схема замкнута, большое сопротивление не дает основной части тока попасть на землю: сигнал следует к входному контакту Ардуино. Если бы сопротивление было низким (единицы Ом), при замкнутой цепи случилось бы короткое замыкание.
Аналогичным образом, подтягивающий резистор удерживает сигнальный вход в состоянии логической единицы, пока внешняя цепь находится в разомкнутом состоянии:
Также применяются подтягивающие резисторы больших номиналов (10 кОм и выше), чтобы минимизировать потери энергии при замкнутойсхеме и исключить короткое замыкание при разомкнутой цепи.
Подтягивающий резистор
Подтягивающий резистор — резистор, включенный между проводником, по которому распространяется электрический сигнал, и питанием, либо между проводником и землей.
Подтягивающий резистор нужен, чтобы гарантировать на логическом входе, с которым соединен проводник, высокий (в первом случае) либо низкий (во втором случае) уровень в случаях:
- проводник не соединен с логическим выходом
- присоединённый логический выход находится в высокоимпедансном состоянии.
- когда разомкнут ключевой элемент на присоединённом логическом выходе, который устроен, как открытый вывод ключевого элемента. Ключевым элементом может быть полевой или биполярный транзистор, а открытым выводом — коллектор, эммитер, сток или исток.
Подтягивающий резистор образует цепь, обеспечивающую подтяжку сигнала к питанию либо к земле. В первом случае подтяжка называется подтяжкой к питанию, во втором — подтяжкой к земле.
Цепь с подтягивающим резистором можно сравнить с делителем напряжения из двух резисторов — большого подтягивающего, и очень маленького на месте кнопки или открытого стока.
Любой логический вход имеет емкость относительно земли. Если сигнал формируется на открытом выводе ключевого элемента, то чем больше сопротивление подтягивающего резистора, тем больше время нарастания или спада сигнала при размыкании ключевого элемента. Если подтяжка к питанию, то надо учитывать время нарастания сигнала. Если подтяжка к земле, то — время спада сигнала. Время спада или нарастания — это время между размыканием ключа и достижением сигнала порогового напряжения.
Пороговое напряжение — это напряжение при достижении которого, логическим входом фиксируется изменение логического состояния.
Время спада или нарастания — это произведение сопротивления, емкости и коэффициента, который учитывает пороговое напряжение.
При проектировании логических схем приходится рассчитывать сопротивление подтягивающего резистора, при этом известны емкость входа и пороговое напряжение. Время спада или нарастания пропорционально сопротивлению подтягивающего резистора, то есть, например, при увеличении сопротивления вдвое время спада или нарастания увеличится вдвое.
Разделение земли в усилителе
В некоторых усилителях мощности в земляную цепь включен резистор небольшого сопротивления.
Для чего он нужен?
Идеальный усилитель, как его представляет теория усилителей, показан на рис. 1. На вход подается входной сигнал, а на выходе в каждый момент времени устанавливается напряжение больше чем на входе в Ку раз, где Ку – коэффициент усиления усилителя.
В таком усилители входная и выходная цепи разделены – это совершенно разные цепи и они никак не связаны. Источник сигнала замыкается входной цепью, а выходная цепь, состоящая из блока питания (именно из него в нагрузку поступает электрическая мощность) и регулятора (он нужен для того, чтобы устанавливать в нагрузке нужное напряжение) – сама по себе. Подобные усилители реально существуют, и его в принципе можно сделать из «обычного» усилителя, включив на его вход и/или выход сигнальный трансформатор. А вот источник питания и нагрузка обязательно имеют общую точку, это важный момент.
В реальности гораздо удобнее иметь один провод общий для всего устройства, и даже общий для нескольких устройств. Тогда все напряжения во всех точках схемы можно измерять (и прикладывать) относительно этого общего провода. Такой принцип конструирования очень удобен, он имеет множество достоинств и поэтому применяется более чем очень широко. Честно говоря, я вот так с ходу и не смог бы придумать ряд цепей, существующих в реальном современном усилителе, если бы в нем не было общего провода – «земли». А раз есть провод, общий для всех цепей усилителя, то и входная цепь, и выходная цепь – обе они должны быть соединены с этим общим проводом, рис. 2. Этот общий провод по ряду причин соединяют с корпусом устройства.
По идее, этот общий провод, показанный на рис. 2 красной линией, никого ни к чему не обязывает. Просто уравнивает потенциалы входной и выходной цепи. То есть с точки зрения электротехники напряжения и на нижнем входном проводнике, и на нижнем выходном проводнике равны нулю (относительно общего провода). Входная и выходная цепи при этом все равно остаются независимыми, каждая из них работает со своими напряжениями и токами, которые из одной цепи в другую попасть никак не могут. На рис. 3 показано, что токи входной и выходной цепей независимы, поэтому по участку АВ земляного проводника никакой ток не течет.
Почему я так подробно про это говорю? Потому, что собираюсь разъединить эти только что соединенные мною земли входа и выхода.
К сожалению, все так хорошо только на бумаге.
В реальности по участку АВ, связывающему входную и выходную цепи, ток может протекать:
1. В реальном усилителе нет отдельно входа и отдельно выхода. В нем много разных элементов «сопровождают» сигнал от начала и до конца. Токи этих элементов могут протекать по участку АВ, и тут ничего не поделаешь. В этом случае стараются сгруппировать токи так, чтобы те, которые больше относятся ко входной цепи протекали в точке А, а те, которые относятся к выходной цепи протекали в точке В.
2. Неудачный монтаж. Источник питания обязательно соединен с выходной (силовой) землей. И в ней всегда протекает ток нагрузки. При неудачном монтаже этот ток нагрузки может попасть во входную цепь, или повлиять на нее.
3. Ток через участок АВ может быть создан другими блоками усилителя. Об этом поговорим подробнее позже.
Что плохого в том, что через участок АВ на рис. 3 будет протекать ток?
1. Так как сопротивление участка АВ не равно нулю, то по закону Ома на нем возникает напряжение (помеха), пропорциональное протекающему току. И это напряжение помехи складывается со входным напряжением усиливаемого сигнала.
2. Ток по участку АВ может быть вызван внешними причинами, например, наличием земляной петли. Это самый неприятный случай: мало того, что земляная петля вредна и ток, текущий по ней вреден, так еще этот ток может быть никак не связан с усиливаемым сигналом, и может содержать неизвестно что. И это «неизвестно что» создает напряжение, поступающее на вход усилителя. Особенно все становится плохо, если блоки усилителя соединены между собой неправильно (вот статья про правильное соединение блоков усилителя).
Пример образования земляной петли показан на рис. 4.
В этом случае на вход усилителя мощности поступает как минимум две помехи:
1. Помеха, циркулирующая по земляной петле.
2. Помеха, вызванная током питания, протекающим из точки D1 в точку С. По идее ток источника питания в предварительный усилитель должен поступать по такому пути: D1-C1-C. Но ведь есть еще другой путь по другим проводам: D1-D-A1-B-C. Второй путь параллелен первому, сопротивление у проводов маленькое, вот ток и течет.
Как с этим бороться? Проще всего было бы вернуться к изначальной схеме, где нет провода АВ (провод А1-В на рис. 4 и 5) и вход отделен от выхода. Но нельзя – усилитель спроектирован на основе того, что у всех цепей один и тот же потенциал земли. А что если разорвать провод на участке АВ не совсем, а «частично»? В разрыв включаем резистор с маленьким сопротивлением 1…2 ома, но это сопротивление в десятки раз больше, чем сопротивление провода, который мы разорвали. Главное при этом земляной провод разорвать в таком месте, чтобы земли входных цепей остались присоединенными к входу, а земли выходных цепей – присоединенными к выходу. Т.е. чтобы включаемый в земляную цепь резистор не повлиял на работу цепей усилителя, рис. 5. Что тогда получится?
Точка включения земляного резистора выбирается так, чтобы через нее никакой специальный ток не протекал. Тогда напряжение на этом резисторе будет равно нулю, и потенциалы входной и выходной земель (левого и правого по схеме концов резистора) будут одинаковы. То есть земля как бы остается и ее сопротивление как бы остается равно нулю. То есть работа усилителя никак не нарушится. С другой стороны, сопротивление земляной петли возрастет, и ток помех по ней циркулировать не будет. Да и ток, текущий из точки D1 в точку С, пойдет по земле блока питания через точку С1, а в усилитель мощности вообще не потечет. Кроме того (это тоже важный момент), земляной резистор – это преграда для смешивания между собой входных и выходных токов: он мешает этим токам затекать в чужую цепь.
Это мое описание работы земляного резистора весьма упрощенное. На самом деле все сложнее, и не так замечательно, как выглядит на первый взгляд. Одна из самых больших проблем – выбрать точку в которой можно безболезненно разорвать землю усилителя. Другая проблема – если вдруг через этот резистор станет протекать какой-то посторонний ток (например, вызванный неудачным монтажом, неудачным соединением блоков усилителя между собой или какими-то другими причинами), то падение напряжения на земляном резисторе будет (относительно) очень большое – гораздо больше, чем было бы без него. И все проблемы с попаданием помех во входную цепь вырастут многократно. Вот почему земляной резистор используется нечасто. И не всегда его наличие приносит пользу. В моем усилителе на микросхеме TDA7294 такой резистор есть. В этой схеме удалось удачно разделить входную и выходную земли. И почти всегда, земляной резистор приносит пользу. Но иногда люди, собравшие этот мой усилитель, пишут, что исключение земляного резистора улучшило работу усилителя (просто удалить из схемы его нельзя – нарушится электрическое соединение! если надо исключить резистор, то его заменяют перемычкой!).
Поэтому если в той схеме усилителя, которую вы собираете, присутствует земляной резистор, то используйте его. Но позаботьтесь о правильном соединении всех блоков усилителя между собой, иначе этот резистор может принести не пользу, а вред. Если в вашей схеме такой резистор отсутствует – ни в коем случае не пытайтесь его ввести самостоятельно! Если этого не смог (или по каким-то причинам не захотел) автор схемы, то у вас это наверняка не получится. Самостоятельным введением земляного резистора можно вообще испортить усилитель.
Закончить все же хочется на положительной ноте: при правильном использовании, земляной резистор очень помогает получить от усилителя в целом максимум того качества звучания, которое этот усилитель может обеспечить.
PS.
Через несколько дней после опубликования этой статьи, я использовал свой усилитель на микросхеме TDA7293 с Т-образной ООС для измерений. В нем как раз входная земля отделена от силовой резистором порядка 1,5 Ом. И так неудачно случилось, что в кабеле питания пропал контакт в земляном проводе. В результате резистор, разделяющий земли, сгорел (ток нагрузки пошел через него в землю источника питания — на рис. 5 этот путь такой: B1-D-A1-B-C-C1-D1). На тот момент у меня не оказалось низкоомных резисторов, и я заменил резистор, разделяющий земли, перемычкой. Но продолжать измерения я не смог — увеличились помехи. Пришлось ехать покупать низкоомный резистор для разделения земли и впаивать его в плату. Вот как выглядел сигнал на выходе усилителя без разделения земли (рис. 6) и когда я снова разделил входную и силовую земли, рис. 7. Обратите внимание на количество и уровень помех с частотой сети 50 Гц и ее гармоник.