Wie ist es möglich, jemals eine Frequenz in einem Gleichstromkreis zu haben?

Vorwort

Bitte lesen Sie diese sorgfältig durch. Ich stecke viel Zeit hinein und versuche wirklich zu verstehen. Ich habe zahlreiche Artikel über Gleichstrom- und Wechselstromkreise gelesen und an zahlreichen Stellen gesucht, um diese Antwort zu erhalten, aber ich bin mir nicht sicher, ob ich die richtigen Begriffe kenne, um die es geht.

Ja, ich habe auch gegoogelt: "Kann ein Gleichstromkreis jemals eine Frequenz haben?" Und die Antworten, die Sie erhalten, sind, dass Gleichstromkreise eine Frequenz von 0 haben.

Hintergrund

Ich versuche, eine Schaltung zu bauen, die eine Eingangsfrequenz untersucht und in MIDI umwandelt. Hier ist der Schaltplan der Schaltung von der offiziellen Arduino-Site (die an mindestens einer Stelle falsch ist):

Analog zum Midi-Schema

Fehler erklärt

Sie können sehen, dass der ursprüngliche Designer aus irgendeinem Grund die Ausgabe von OpAmp2 gezeichnet hat, obwohl es keine Eingabe hat.

Mein Testversuch

Da ich versucht habe, den Code aus diesem Artikel zu testen. Ich wollte nur einige Werte von A0 ablesen. Nur um zu sehen, wie das Ding funktioniert, damit ich anfangen könnte, die offensichtlich fehlerhafte Schaltung zurückzuentwickeln.

Ich werde nicht den gesamten Code reproduzieren, aber hier ist der wichtige Teil: Hinweis : Der Code stammt aus dem Artikel, in dem ich den Schaltplan erhalten habe ( 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];         

Im Grunde ging es mir nur darum, die Frequenz zu lesen, die ich von der Methode meter.getFrequency() erhalten habe, und sie auf dem seriellen Monitor auszudrucken.

Ich habe folgende Schaltung aufgebaut:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

(Jetzt) ​​Offensichtliche Ergebnisse

Also habe ich den Code gestartet und den seriellen Monitor geöffnet und angefangen, den Pot-Regler zu drehen, aber wie Sie wahrscheinlich bereits wissen, druckt der serielle Monitor nur -1,0 (negativ 1,0).

In einem Gleichstromkreis gibt es keine Frequenz

Zuerst war ich sehr verwirrt. Warum würde es nie einen anderen Wert bekommen, obwohl sich der Spannungseingang änderte?

Dann traf es mich. Es gibt keine Frequenz in einem Gleichstromkreis.

Die Frage

Wie würde der Code jemals die Frequenz von der Schaltung lesen? Wie könnte es jemals eine Frequenz in einem Gleichstromkreis geben? Wie ist das möglich?

Ich verstehe, dass ich die Arbeit des Eingangs in der ursprünglichen Schaltung (Mikrofon zu Operationsverstärker) völlig ignoriere, aber ich verstehe auch, dass der Eingang nur eine Reihe von Strömen und Spannungen ist, die sowieso einfach vom Operationsverstärker verstärkt werden.

Aus Impulsen wird Frequenz?

Ist das der Punkt, dass sie zu Impulsen werden und diese Impulse eine Frequenz haben?

BEARBEITEN: GetFrequency-Code hinzufügen Sie können den Quellcode des ArduinoFrequencyMeter sehen unter: https://github.com/arduino-libraries/AudioFrequencyMeter/blob/master/src/AudioFrequencyMeter.cpp

Hier ist die Quelle der Methode getFrequency():

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

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

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

  return frequency;
}

Es ist interessant, dass, wenn checkAmp nicht größer als amplitudeThreshold ist, es -1 zurückgibt. Es ist also wahrscheinlich, dass dies in dem Fall passiert, in dem ich alle -1 sehe.

Aufgrund der Art des Codes können Sie dieses Problem jedoch nicht von dem Problem unterscheiden, dass die Frequenz außerhalb des Bereichs liegt – da die Frequenz außerhalb des Bereichs auch denselben Wert zurückgibt.

Ich werde den Code wahrscheinlich irgendwann ändern und ihn für jeden Fall -1, -2, -3 zurückgeben lassen.

Etwas zum Nachdenken: Glauben Sie, dass es möglich wäre, sowohl Gleichstrom als auch Wechselstrom gleichzeitig im selben Stromkreis zu haben - einer überlagert den anderen?
Sie haben niemals Gleichstrom, es sei denn, Ihr Gerät wird für immer eingeschaltet sein und war für immer eingeschaltet.
@brhans Das ist eine gute Frage und nur weil ich über Themen wie Kondensatoren und (sehr wenig Lektüre) über Dioden (zum Schutz vor Wechselstrom) gelesen habe, weiß ich, dass es stimmt, dass Sie beide haben können. Aber ich verstehe es auch nicht.
@PlasmaHH Das macht für mich Sinn ... wenn die Schaltung ein- und ausschaltet, befindet sie sich in einem Wechselstromzustand, bis sie ihren Gleichstrom-Stabilisierungspegel erreicht, denke ich, oder?
In Ihrer Schaltung (ich habe die folgende Schaltung erstellt:) haben Sie 5 V und A0 auf Ihrem Pot transponiert, sodass Sie kein variierendes Signal auf dem ADC erhalten, wenn Sie den Pot drehen.
@HandyHowie Das ist ein Fehler, den ich im Schaltplan gemacht habe. Ich schrieb ein anderes Arduino-Programm, das ein analogRead() von A0 ausführte, um sicherzustellen, dass mein Pot tatsächlich wechselnde Spannungswerte sendete. Nachdem ich alles eingerichtet hatte, wechselte ich zurück zum getFrequency()-Sketch und bekam alle -1.0. Ich habe es nur nicht erwähnt, weil zu lange.
@PlasmaHH Wenn ich dann umgekehrt über Ihre Logik nachdenke, wäre es auch wahr, dass, wenn ich die Wechselstromfrequenz verlangsame, sie irgendwann zu Gleichstrom wird. Und das ist ein Teil dessen, was ich zu verstehen versuche - bei welcher Frequenz wird es zu Wechselstrom (wie viele Impulse pro Zeiteinheit?)
Ja, wenn Sie einen Wechselstrom unendlich stark verlangsamen, wird er zu Gleichstrom. Es gibt Frequenzen, die in nHz und darüber hinaus gemessen werden.
Wie funktioniert die Funktion getFrequency()? Hat es eine untere Grenze für die Frequenz, die es messen kann?
@ElliotAlderson Das ist eine großartige Frage, über die ich selbst nachgedacht habe. Ich werde die Quelle dieser Methode untersuchen und sehen, was ich mir einfallen lassen kann. Es ist nirgendwo dokumentiert, was ich finden kann. FYI- Ich glaube, die Quelle ist unter: github.com/arduino-libraries/AudioFrequencyMeter

Antworten (2)

"DC" ist so viel wie "reibungslos". Es gibt zwei Möglichkeiten, sie zu definieren:

  1. DC ist Nullfrequenz. Reibungslos ist null Reibung.

  2. Jede Frequenz, die für uns zu klein ist (dh zu lange Zeit), ist Gleichstrom. Jede Reibung, die zu klein ist, als dass wir uns um sie kümmern könnten, ist reibungslos.

Definition Nr. 1 ist eine schöne theoretische Definition. Es gibt keine Zweideutigkeit darüber, was es bedeutet: Null ist Null. Das findet man oft in Lehrbüchern.

Definition Nr. 2 ist praktischer. Kein natürlicher Zyklus hat eine Nullfrequenz, da seine Periode unendlich lang wäre. Jedes mechanische System hat eine gewisse Reibung. Aber in beiden Fällen können diese Effekte so gering sein, dass wir uns nicht darum kümmern. Wir können sie also so behandeln, als ob sie Null wären.

Welche Frequenz ist also die Grenzfrequenz für DC? Sie variiert mit jedem Problem und ist manchmal Ansichtssache. Ein Teil davon, ein EE zu sein, ist zu wissen, wann Sie davon ausgehen können, dass sich die Dinge im stabilen Zustand befinden.


Was Ihre Arduino-Frage betrifft ... Sie geben ihm ein Signal und es versucht, die Frequenz davon zu bestimmen. Es ist keine Magie; Da ist ein Algorithmus beteiligt. Der Algorithmus hat eine minimale und maximale Frequenz; Sie haben Recht, dass es -1 zurückgibt, wenn das Signal über der maximalen oder unter der minimalen Frequenz zu liegen scheint.

Hier ist der Grund. Angenommen, die Software kann Frequenzen von nur 1 Hz lesen. Das heißt, im schlimmsten Fall müssten Sie 1 Sekunde warten (*Anmerkung 1), um die Frequenz zu finden.

Angenommen, Sie ändern die Mindestfrequenz auf 0,1 Hz. Die Wartezeit im schlimmsten Fall beträgt 10 Sekunden. Bei 0,001 Hz, 1000 Sekunden. Wenn sich die Frequenz der "idealen" Nullfrequenz von DC nähert, wird die Wartezeit unendlich.

Sie wollen nicht ewig warten, bis der Algorithmus Ihnen sagt, dass Sie bei DC sind. Daher wird -1 zurückgegeben, es sei denn, es hat eine Frequenz im richtigen Bereich gefunden.


(*Anmerkung 1) Ja, vielleicht 0,5 Sekunden wegen der Nyquist-Rate. Es ändert immer noch nichts an meinem Argument, dass die Wartezeit unendlich wird.

Das war eine fantastische und klare Erklärung der Dinge, die ich erlebe, aber (da ich eigentlich kein EE bin – ich bin ein Softwareentwickler) konnte nicht einmal wirklich verstehen, wie man die Fragen stellt. Vielen Dank, dass Sie mir geholfen haben, mehr Verständnis zu erlangen.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Abbildung 1. Potentiometeranschluss.

Ihre Potentiometer-Testschaltung ist falsch verdrahtet. Wenn in Abbildung 1a das Poti auf Minimum gedreht ist, schließen Sie die 5-V-Versorgung gegen GND kurz. Verdrahten Sie es stattdessen wie in Abbildung 1b, sodass A0 von 0 auf 5 V gewobbelt werden kann. Nur 5/10k = 0,5 mA fließen durch R2.

Wie würde der Code jemals die Frequenz von der Schaltung lesen? Wie könnte es jemals eine Frequenz in einem Gleichstromkreis geben? Wie ist das möglich?

Es ist möglich und in einigen Designs inhärent und in anderen Schaltungen absichtlich konstruiert.

Gleichstromquelle

schematisch

Simulieren Sie diese Schaltung

Abbildung 1. Ein netzbetriebenes DC-Netzteil liefert einen DC-Ausgang, jedoch mit einer Welligkeit von 100 oder 120 Hz. (Aus meiner Antwort auf Wie funktioniert der Filterkondensator in einer Gleichrichterschaltung? ).

Geben Sie hier die Bildbeschreibung ein

Abbildung 2. Simulatorergebnisse. (Klicken um zu vergrößern.)

  • Die obere blaue Kurve zeigt die Spannung aus der Stromversorgung und wird der Last zugeführt. Der Kondensator wird in jeder Netzhalbwelle aufgeladen, aber in den Lücken, in denen die Spannung abfällt, fällt die Spannung ab. Das Ergebnis ist eine Gleichspannung mit einer Wechselstromwelligkeit.

Audioverstärker

schematisch

Simulieren Sie diese Schaltung

Audioverstärker benötigen eine DC-Vorspannung für das Audiosignal (das AC ist), wenn der Verstärker von einer Single-Ended-Stromversorgung gespeist wird.

Abbildung 3. Der Operationsverstärker wird von einer einzigen Versorgung gespeist, sodass er keine negativen Eingangssignale akzeptieren oder negative Spannungen ausgeben kann.

Die Lösung für Abbildung 3 lautet:

  • Fügen Sie den DC-Sperrkondensator C1 am Eingang hinzu.
  • Den Operationsverstärker mit R1 und R2 auf halbe Versorgung vorspannen.
  • Mit OA1 verstärken. (In diesem Fall ist die Verstärkung 1 und es ist nur ein Pufferverstärker.)
  • Entfernen Sie die DC-Komponente mit C2.

Einfache alte Telefonanlage (POTS)

Geben Sie hier die Bildbeschreibung ein

Abbildung 4. Ein GPO 746-Telefon mit Wählscheibe überträgt Wechselstrom, der der 50-V-Gleichstromversorgung überlagert ist.

Ein weiterer bekannter Fall ist das Standardtelefon. Das Telefon wird mit 50 V Gleichstrom von der Vermittlungsstelle versorgt, aber Audio wird dem Gleichstrom überlagert und über die Leitung übertragen.

Danke das sind tolle Infos. Ich werde meine eigentliche Potentiometerschaltung zu Hause noch einmal überprüfen, aber ich glaube, ich habe sie nur falsch auf dem Schaltplan gezeichnet. Ich habe es mit einer anderen sehr einfachen analogRead () -Schaltung getestet und Werte von 7 - 1023 gelesen, als ich den Pot variiert habe, also denke ich, dass es richtig ist, aber ich werde es noch einmal überprüfen.