¿Cómo es posible tener frecuencia en un circuito de CC?

Prefacio

Por favor, lea esto detenidamente. Le dediqué mucho tiempo y realmente estoy tratando de entender. He leído numerosos artículos sobre circuitos de CC y CA y busqué en numerosos lugares para obtener esta respuesta, pero no estoy seguro de conocer los términos correctos involucrados.

Además, sí, busqué en Google "¿puede un circuito de CC tener frecuencia?" Y las respuestas que obtiene son que los circuitos de CC tienen una frecuencia de 0.

Fondo

Estoy intentando construir un circuito que examine una frecuencia de entrada y la convierta a MIDI. Aquí está el esquema del circuito del sitio oficial de Arduino (que es incorrecto en al menos un lugar):

esquema analógico a midi

Error explicado

Puede ver que, por alguna razón, el diseñador original dibujó la salida de OpAmp2 aunque no tiene entrada.

Mi intento de probar

Ya que estaba intentando probar el código de ese artículo. Solo quería leer algunos valores de A0. Solo para ver cómo funcionaba para poder comenzar a aplicar ingeniería inversa al circuito obviamente erróneo.

No reproduciré todo el código, pero aquí está la parte importante: Nota : el código es del artículo donde obtuve el esquema ( 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];         

Básicamente, todo lo que me importaba era leer la frecuencia que obtuve del método meter.getFrequency() e imprimirla en el monitor serial.

Preparé el siguiente circuito:

esquemático

simular este circuito : esquema creado con CircuitLab

(Ahora) Resultados obvios

Así que encendí el código y abrí el monitor en serie y comencé a girar la perilla del potenciómetro, pero como probablemente ya sepa, el monitor en serie solo imprime -1.0 (negativo 1.0).

No hay frecuencia en un circuito de CC

Al principio, estaba muy confundido. ¿Por qué nunca obtendría un valor diferente a pesar de que la entrada de voltaje estaba cambiando?

Entonces, me golpeó. No hay frecuencia en un circuito de CC.

La pregunta

¿Cómo podría el código leer la frecuencia fuera del circuito? ¿Cómo podría haber frecuencia en un circuito de CC? ¿Cómo es eso posible?

Entiendo que estoy ignorando por completo el trabajo realizado por la entrada en el circuito original (micrófono a amplificador operacional), pero también entiendo que la entrada será solo una serie de corrientes y voltajes que, de todos modos, simplemente son amplificados por el amplificador operacional.

¿Los pulsos se convierten en frecuencia?

¿Es ese el punto, que se convertirán en pulsos y esos pulsos tendrán una frecuencia?

EDITAR: Agregar código GetFrequency Puede ver el código fuente de ArduinoFrequencyMeter en: https://github.com/arduino-libraries/AudioFrequencyMeter/blob/master/src/AudioFrequencyMeter.cpp

Aquí está la fuente del método getFrequency():

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

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

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

  return frequency;
}

Es interesante que si checkAmp no es mayor que amplitudeThreshold, devolverá -1. Entonces, es probable que eso sea lo que sucede en el caso en que veo todo -1.

Pero, debido a la forma en que está el código, no puede diferenciar ese problema del problema de la frecuencia que cae fuera del rango, ya que la frecuencia fuera del rango también devuelve el mismo valor.

Probablemente modificaré el código en algún momento y haré que devuelva -1, -2, -3 para cada caso.

Algo para que reflexione: ¿cree que sería posible tener CC y CA en el mismo circuito al mismo tiempo, uno superpuesto al otro?
Nunca tiene DC a menos que su dispositivo esté encendido para siempre y haya estado encendido para siempre.
@brhans Esa es una buena pregunta y solo debido a que leí sobre temas como capacitores y (muy poca lectura) sobre diodos (para protección contra CA), sé que es cierto que puede tener ambos. Pero yo tampoco lo entiendo.
@PlasmaHH Eso tiene sentido para mí ... a medida que el circuito se enciende y se apaga, está en un estado de CA hasta que alcanza su nivel de estabilización de CC, supongo, ¿verdad?
En su circuito (preparé el siguiente circuito :), tiene 5v y A0 transpuestos en su potenciómetro, por lo que no obtendrá una señal variable en el ADC cuando gire el potenciómetro.
@HandyHowie Ese es un error que cometí en el esquema. Escribí otro programa de Arduino que hizo una lectura analógica () de A0 para asegurar que mi potenciómetro realmente estuviera enviando valores alterados de voltaje. Después de configurarlo todo, volví al boceto getFrequency() y obtuve todo -1.0. Simplemente no mencioné la pregunta porque es demasiado larga.
@PlasmaHH Pensando en su lógica a la inversa, entonces, también sería cierto que si reduzco la frecuencia de CA, en algún momento se convierte en CC. Y eso es parte de lo que creo que estoy tratando de entender: ¿a qué frecuencia se convierte en CA (¿cuántos pulsos por unidad de tiempo?)
Sí, si reduce la velocidad de cualquier CA infinitamente, se convierte en CC. Hay frecuencias medidas en nHz y más allá.
¿Cómo funciona la función getFrequency()? ¿Tiene un límite inferior en la frecuencia que puede medir?
@ElliotAlderson Esa es una gran pregunta y una que yo mismo estaba considerando. Voy a examinar la fuente de ese método y ver qué se me ocurre. No está documentado en ningún lugar que pueda encontrar. FYI: creo que la fuente está en: github.com/arduino-libraries/AudioFrequencyMeter

Respuestas (2)

"DC" es muy parecido a decir "sin fricción". Hay dos formas de definirlos:

  1. CC es frecuencia cero. Sin fricción es cero fricción.

  2. Cualquier frecuencia que sea demasiado pequeña para que nos importe (es decir, demasiado larga en el tiempo) es CC. Cualquier fricción que sea demasiado pequeña para que nos importe no tiene fricción.

La definición #1 es una buena definición teórica. No hay ambigüedad sobre lo que significa: cero es cero. Es lo que encontrará a menudo en los libros de texto.

La definición #2 es más práctica. Ningún ciclo natural tiene frecuencia cero, ya que su período sería una cantidad infinita de tiempo. Todo sistema mecánico tiene algo de fricción. Pero en ambos casos, estos efectos pueden ser tan pequeños que no nos preocupamos por ellos. Entonces podemos tratarlos como si fueran cero.

Entonces, ¿cuál es la frecuencia de corte para DC? Varía con cada problema y, a veces, es una cuestión de opinión. Parte de ser un EE es saber cuándo puede asumir que las cosas están en estado estable.


En cuanto a tu pregunta sobre Arduino... Le das una señal e intenta determinar su frecuencia. No es magia; hay un algoritmo involucrado. El algoritmo tiene una frecuencia mínima y máxima; tiene razón en que devuelve -1 si la señal parece estar por encima de la frecuencia máxima o por debajo de la mínima.

Este es el por qué. Suponga que el software puede leer frecuencias tan bajas como 1 Hz. Eso significa que, en el peor de los casos, tendrías que esperar 1 segundo (*nota 1) para encontrar la frecuencia.

Ahora suponga que cambia la frecuencia mínima a 0,1 Hz. El tiempo de espera en el peor de los casos será de 10 segundos. A 0,001 Hz, 1000 segundos. A medida que la frecuencia se acerca a la frecuencia cero "ideal" de CC, el tiempo de espera se vuelve infinito.

No querrás esperar una eternidad para que el algoritmo te diga que estás en DC. Por lo tanto, devolverá -1 a menos que haya encontrado una frecuencia en el rango correcto.


(*nota 1) Sí, tal vez 0,5 segundos debido a la tasa de Nyquist. Todavía no cambia mi argumento de que el tiempo de espera se vuelve infinito.

Esa fue una explicación fantástica y lúcida de las cosas que estoy experimentando, pero (dado que en realidad no soy un EE, soy un desarrollador de software) ni siquiera podía entender cómo hacer las preguntas. Muchas gracias por ayudarme a entender mejor.

esquemático

simular este circuito : esquema creado con CircuitLab

Figura 1. Conexión del potenciómetro.

El circuito de prueba de su potenciómetro está cableado incorrectamente. En la Figura 1a, si el potenciómetro se gira al mínimo, cortocircuitará el suministro de 5 V a GND. En su lugar, conéctelo como en la Figura 1b para que A0 pueda pasar de 0 a 5 V. Solo fluirán 5/10k = 0,5 mA a través de R2.

¿Cómo podría el código leer la frecuencia fuera del circuito? ¿Cómo podría haber frecuencia en un circuito de CC? ¿Cómo es eso posible?

Es posible y es inherente a algunos diseños y está diseñado deliberadamente en otros circuitos.

Fuente de alimentación DC

esquemático

simular este circuito

Figura 1. Una fuente de alimentación de CC alimentada por la red proporciona una salida de CC pero con una ondulación de 100 o 120 Hz. (Tomado de mi respuesta a ¿cómo funciona el condensador de filtro en un circuito rectificador? ).

ingrese la descripción de la imagen aquí

Figura 2. Resultados del simulador. (Click para agrandar.)

  • El trazo azul superior muestra el voltaje que sale de la fuente de alimentación y se presenta a la carga. El capacitor se carga en cada medio ciclo de la red, pero en los espacios donde el voltaje cae, el voltaje cae. El resultado es un voltaje de CC con una ondulación de CA.

Amplificadores de audio

esquemático

simular este circuito

Los amplificadores de audio requieren una polarización de CC en la señal de audio (que es CA) cuando el amplificador recibe alimentación de una fuente de alimentación de un solo extremo.

Figura 3. El amplificador operacional recibe alimentación de un solo suministro, por lo que no puede aceptar señales de entrada negativas ni voltajes negativos de salida.

La solución para la Figura 3 es:

  • Agregue el condensador de bloqueo de CC C1 en la entrada.
  • Desvíe el amplificador operacional a la mitad del suministro con R1 y R2.
  • Amplificar con OA1. (En este caso, la ganancia es 1 y es solo un amplificador de búfer).
  • Retire el componente de CC con C2.

Sistema telefónico tradicional (POTS)

ingrese la descripción de la imagen aquí

Figura 4. Un teléfono rotatorio GPO 746 transmite CA superpuesta a la alimentación de 50 V CC.

Otro caso familiar es el teléfono estándar. El teléfono recibe alimentación de 50 V CC de la central, pero el audio se superpone a la CC y se transmite por la línea.

Gracias es una gran información. Verificaré mi circuito de potenciómetro real en casa nuevamente, pero creo que lo dibujé incorrectamente en el esquema. Lo probé con otro circuito analogRead() muy simple y leí valores de 7 a 1023 mientras variaba el potenciómetro, así que creo que es correcto, pero lo comprobaré de nuevo.