Как вообще возможно иметь частоту в цепи постоянного тока?

Предисловие

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

Кроме того, да, я погуглил: «Может ли цепь постоянного тока иметь частоту?» И ответы, которые вы получаете, заключаются в том, что цепи постоянного тока имеют частоту 0.

Фон

Я пытаюсь построить схему, которая проверяет входную частоту и преобразует ее в MIDI. Вот схема к схеме с официального сайта Arduino (которая неверна как минимум в одном месте):

аналог миди схемы

Объяснение ошибки

Вы можете видеть, что по какой-то причине первоначальный дизайнер получил вывод от OpAmp2, хотя у него нет ввода.

Моя попытка протестировать

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

Я не буду воспроизводить весь код, но вот важная часть: Примечание . Код взят из статьи, где я получил схему ( https://www.arduino.cc/en/Tutorial/AnalogToMidi )

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  pinMode(11, OUTPUT);
  // Set available bandwidth between 75Hz and 600Hz
  meter.setBandwidth(75.00, 600.00);          
  // Intialize A0 at sample rate of 45kHz
  meter.begin(A0, 45000);                     
}

void loop() {
  float frequency = meter.getFrequency();
  Serial.prinln(frequency);
  if (frequency > 0)
  {
   // Find the index of the corresponding frequency
    int noteIndex = searchForNote(frequency); 
    int note = notePitch[noteIndex];         

По сути, все, о чем я заботился, это считать частоту, которую я получил из методаmeter.getFrequency(), и распечатать ее на последовательном мониторе.

Я собрал следующую схему:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

(Сейчас) Очевидные результаты

Итак, я запустил код, открыл последовательный монитор и начал крутить ручку регулятора, но, как вы, наверное, уже знаете, последовательный монитор выводит только -1,0 (минус 1,0).

В цепи постоянного тока нет частоты

Сначала я был очень смущен. Почему бы ему никогда не получить другое значение, даже если входное напряжение менялось?

Затем меня поразило. В цепи постоянного тока нет частоты.

Вопрос

Как код вообще сможет считывать частоту с цепи? Как может быть частота в цепи постоянного тока? Как это возможно?

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

Импульсы становятся частотой?

В том ли дело, что они станут импульсами, и эти импульсы будут иметь частоту?

РЕДАКТИРОВАТЬ: добавление кода GetFrequency Вы можете увидеть исходный код ArduinoFrequencyMeter по адресу: https://github.com/arduino-libraries/AudioFrequencyMeter/blob/master/src/AudioFrequencyMeter.cpp

Вот источник метода getFrequency():

float AudioFrequencyMeter::getFrequency()
{
  float frequency = -1;

  if (checkMaxAmp > amplitudeThreshold) {
    frequency = (float)(sampleRate / period);

    if ((frequency < minFrequency) || (frequency > maxFrequency)) {
      frequency = -1;
    }
  }

  return frequency;
}

Интересно, что если checkAmp не больше амплитудыThreshold, то он вернет -1. Так что, вероятно, именно это и происходит в том случае, когда я вижу все -1.

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

Вероятно, в какой-то момент я изменю код и заставлю его возвращать -1, -2, -3 для каждого случая.

Вам надлежит задуматься: как вы думаете, возможно ли иметь одновременно и постоянный, и переменный ток в одной цепи — одно накладывается на другое?
У вас никогда не будет постоянного тока, если только ваше устройство не будет включено навсегда и не будет включено всегда.
@brhans Это хороший вопрос, и только из-за того, что я читал о таких темах, как конденсаторы и (очень мало читал) о диодах (для защиты от переменного тока), я знаю, что это правда, что вы можете иметь и то, и другое. Но я тоже этого не понимаю.
@PlasmaHH Для меня это имеет смысл ... когда схема включается и выключается, она находится в состоянии переменного тока, пока не достигнет уровня стабилизации постоянного тока, я думаю, верно?
В вашей схеме (я собрал следующую схему :) у вас есть 5 В и A0, переставленные на вашем потенциометре, поэтому вы не получите меняющийся сигнал на АЦП, когда вы поворачиваете потенциометр.
@HandyHowie Это ошибка, которую я сделал на схеме. Я написал еще одну программу для Arduino, которая выполняла функцию AnalogRead() для A0, чтобы убедиться, что мой потенциометр действительно отправляет изменяющиеся значения напряжения. После того, как я все это настроил, я вернулся к скетчу getFrequency() и получил все -1.0. Я просто не упоминал в вопросе, потому что слишком долго.
@PlasmaHH Если подумать о вашей логике в обратном порядке, было бы верно и то, что если я уменьшу частоту переменного тока, то в какой-то момент она станет постоянной. И это часть того, что я пытаюсь понять - на какой частоте он становится переменным (сколько импульсов в единицу времени?)
Да, если вы бесконечно замедляете любой переменный ток, он становится постоянным. Есть частоты, измеряемые в нГц и выше.
Как работает функция getFrequency()? Есть ли у него нижний предел частоты, которую он может измерить?
@ElliotAlderson Это отличный вопрос, который я сам обдумывал. Я собираюсь изучить источник этого метода и посмотреть, что я могу придумать. Это не задокументировано нигде, что я могу найти. К сведению: я полагаю, что источник находится по адресу: github.com/arduino-libraries/AudioFrequencyMeter .

Ответы (2)

«DC» очень похоже на «без трения». Есть два способа определить их:

  1. DC - нулевая частота. Без трения - это нулевое трение.

  2. Любая частота, которая слишком мала для нашего внимания (т.е. слишком длинна во времени), является постоянной. Любое трение, которое слишком мало для нас, чтобы заботиться о нем, не имеет трения.

Определение № 1 — хорошее теоретическое определение. Нет никакой двусмысленности в том, что это значит: ноль есть ноль. Это то, что вы часто найдете в учебниках.

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

Так какая частота среза для постоянного тока? Это зависит от каждой проблемы и иногда зависит от мнения. Частью того, чтобы быть EE, является знание того, когда вы можете предположить, что все находится в устойчивом состоянии.


Что касается вашего вопроса об Arduino... Вы даете ему сигнал, и он пытается определить его частоту. Это не магия; там задействован алгоритм. Алгоритм имеет минимальную и максимальную частоту; вы правы в том, что он возвращает -1, если сигнал кажется выше максимальной или ниже минимальной частоты.

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

Теперь предположим, что вы изменили минимальную частоту на 0,1 Гц. В худшем случае время ожидания составит 10 секунд. При 0,001 Гц, 1000 секунд. Когда частота приближается к «идеальной» нулевой частоте постоянного тока, время ожидания становится бесконечным.

Вы не хотите вечно ждать, пока алгоритм скажет вам, что вы находитесь в округе Колумбия. Следовательно, он вернет -1, если не найдет частоту в правильном диапазоне.


(*примечание 1) Да, может быть, 0,5 секунды из-за скорости Найквиста. Это все еще не меняет моего аргумента, что время ожидания становится бесконечным.

Это было фантастическое и ясное объяснение вещей, с которыми я сталкиваюсь, но (поскольку я на самом деле не EE - я разработчик программного обеспечения) даже не мог понять, как задавать вопросы. Большое спасибо за то, что помогли мне получить больше понимания.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Рисунок 1. Подключение потенциометра.

Цепь проверки потенциометра подключена неправильно. На рисунке 1а, если потенциометр повернут на минимум, вы замкнете питание 5 В на GND. Вместо этого подключите его, как показано на рисунке 1b, чтобы A0 можно было изменять от 0 до 5 В. Через R2 будет проходить только 5/10k = 0,5 мА.

Как код вообще сможет считывать частоту с цепи? Как может быть частота в цепи постоянного тока? Как это возможно?

Это возможно и присуще некоторым конструкциям и намеренно заложено в другие схемы.

источник постоянного тока

схематический

смоделируйте эту схему

Рис. 1. Источник питания постоянного тока с питанием от сети дает на выходе постоянный ток, но с пульсациями 100 или 120 Гц. (Взято из моего ответа на вопрос, как работает конденсатор фильтра в схеме выпрямителя? ).

введите описание изображения здесь

Рисунок 2. Результаты моделирования. (Нажмите, чтобы увеличить.)

  • Верхняя синяя кривая показывает напряжение на выходе из источника питания и подается на нагрузку. Конденсатор заряжается в каждом полупериоде сети, но в промежутках, где напряжение падает, напряжение падает. В результате получается постоянное напряжение с пульсациями переменного тока.

Аудио усилители

схематический

смоделируйте эту схему

Аудиоусилителям требуется смещение постоянного тока для аудиосигнала (который представляет собой переменный ток), когда усилитель питается от несимметричного источника питания.

Рисунок 3. Операционный усилитель питается от одного источника питания, поэтому он не может принимать отрицательные входные сигналы или выходные отрицательные напряжения.

Решение для рисунка 3:

  • Добавьте на вход блокировочный конденсатор C1 по постоянному току.
  • Сместите операционный усилитель на половину питания с R1 и R2.
  • Усильте с OA1. (В этом случае коэффициент усиления равен 1, и это просто буферный усилитель.)
  • Удалите компонент постоянного тока с помощью C2.

Обычная телефонная система (POTS)

введите описание изображения здесь

Рисунок 4. Дисковый телефон GPO 746 передает переменный ток, наложенный на питание 50 В постоянного тока.

Еще один знакомый случай — стандартный телефон. Телефон питается от 50 В постоянного тока от АТС, но звук накладывается на постоянный ток и передается по линии.

Спасибо, это отличная информация. Я еще раз проверю свою фактическую схему потенциометра дома, но я считаю, что просто неправильно нарисовал ее на схеме. Я протестировал его на другой очень простой схеме AnalogRead() и считывал значения от 7 до 1023 при изменении потенциометра, поэтому я думаю, что это правильно, но я проверю еще раз.