Schaltung, die Stromimpulse in Spannung umwandeln kann

Ich habe ein Anemometer, das Stromimpulse ausgibt. Ich kann es nicht auseinandernehmen, aber ich weiß, dass ein Fototransistor und eine LED parallel durch Löcher leuchten. Mir wurde gesagt, dass bei 30 m / s Wind 3 uS lange Stromimpulse über dem normalen Strom (durch die LED) liegen.

Mein Problem ist, diese Impulse auf einen Arduino zu übertragen oder diese Impulse in Spannung 0/1 umzuwandeln. Arduino ist für mich kein Problem, aber ich bin unerfahren im Schaltungsdesign.

Hast du einen Link zum Anemometer, damit die Spezifikation analysiert werden kann? Bleiben die Pulse konstant breit, aber die Pulsrate steigt mit der Windgeschwindigkeit?
Die Übersetzung von Strom -> Spannung kann grob mit einem Widerstand erfolgen, oder wenn der Strom sehr klein ist, richtig mit einem "Transimpedanzverstärker".
Andy aka: Leider nein, es ist ein proprietäres altes Stück
Die Frage kann ohne Angaben zu den "Impulsen" nicht beantwortet werden - wie groß ist die Amplitude?
@Leon Heller: Ich habe keine Ausrüstung, um Impulse zu messen - aber wie gesagt, es funktioniert so yoctopuce.com/pubarchive/2013-01/impulse_counter_1.jpg (Fototransistor ist parallel zu LED und Widerstand, also mit einem Drahtpaar verbunden )
Ich habe gesehen, dass der Frequenz-Spannungs-Konverter LM2907/LM2917 für genau den gleichen Zweck verwendet wird, den Sie benötigen
@ pjc50 vielen Dank, Widerstand funktioniert! Ich werde mir später Transimpedanzverstärker in Wiki ansehen
Überprüfen Sie, ob Sie die Impulse direkt in die Timer-Eingänge des Arduino leiten können, und lassen Sie den Timer die harte Arbeit zum Messen der Impulsperiode / -dauer / usw. erledigen. Das wäre viel einfacher und genauer als eine Umwandlung von Impuls zu V.
@DavidKessner: Gute Idee, aber es könnte schwierig sein, auf Arduino etwas so schnell mit einiger Genauigkeit zu timen: Diese Frage betrifft einen 20-MHz-Chip (Ardiono Uno ist 16 MHz), und bei einfachen "Ticks" ist nur eine Genauigkeit von 5,6 US möglich.
@ user22108: Ja, ich denke, Sie werden Ihre Frequenz definitiv etwas anderes transformieren wollen (z. B. Spannung): Ich glaube nicht, dass Arduino schnell genug ist, um Impulse von 3 uS mit irgendeiner Genauigkeit zu messen. Bei 16 MHz wird es sie insgesamt vermissen, denke ich.

Antworten (3)

Sie möchten keine Umwandlung von "Frequenz in Spannung". Das ist in der Regel knifflig, fehleranfällig und im Allgemeinen ein Hack einer Lösung.

Was Sie wirklich wollen, ist, die Impulse direkt in die MCU zu führen und die Frequenz direkt zu messen.

Hier ist ein App-Hinweis, wie man das genau mit den AtMega-MCUs macht. Wie Sie es tatsächlich mit der Arduino-Software machen, kann ich nicht beantworten.

AVR205: Frequenzmessung leicht gemacht mit Atmel tinyAVR und Atmel megaAVR

Anscheinend stehe ich korrigiert.
@angelatlarge <grins> :)

Ohne Spezifikationen wissen wir nicht, ob es einen One-Shot gibt, der zweimal pro Umdrehung 3 us (?) Impulse erzeugt (basierend auf dem mechanischen Diagramm), oder ob der Impuls vollständig von Scheibenausschnitten gesteuert wird. Aber worauf Sie sich verlassen können, sind zwei Impulse pro Umdrehung.

Es ist unwahrscheinlich, dass die Impulsfrequenz einen Arduino überfordert (wenn dies der Fall ist, haben Sie größere Probleme als die Elektronik!), sodass Sie Impulse in einer einfachen Schleife zählen könnten. Nehmen Sie einen Grund: Eine 1-kHz-Impulsfolge bedeutet ein Intervall von 1 ms zwischen den Impulsen. Denken Sie daran, dass wir sie nur zählen, nicht messen, also könnte eine äußerst ineffiziente Schleife sicherlich damit Schritt halten. 1000 Hz würden eine Anemometerdrehzahl von 500 U/s = 30000 U/min bedeuten! Ihr Anemometer würde vorher zerfallen.

Das Pulszählen ist also kein Problem. Sie können entscheiden, ob Sie den Arduino nur zum Zählen von Impulsen benötigen oder mit dem Ergebnis eine schwerere Verarbeitung durchführen.

Lesen Sie im letzteren Fall das Datenblatt über Counter-Timer (Kapitel 15-17 für den ATmega328p, f/ex). Durch die Verwendung eines Zähler-Timers zählt die Hardware für Sie, während Ihr Programm nur gelegentlich den Zählerwert lesen muss, um die Geschwindigkeit zu ermitteln, und seine gesamte Rechenleistung für alles andere zur Verfügung steht, was Sie mit den Daten tun möchten.

Hier gibt es einige Verwirrung, also habe ich mir das Bild angesehen, das vom OP (unten) verlinkt ist.Geben Sie hier die Bildbeschreibung ein

Wenn die Einschaltdauer von "etwas" 3 us beträgt, kann dies einfach nicht durch die Lücken im Spinnrad verursacht werden - es muss sein, dass die LED pulsiert, um eine Gegenmaßnahme gegen das normale Eindringen von Sonnenlicht zu bieten. Das ist die einzige Erklärung, die mir einfällt.

Unter der Annahme, dass die LED mit einem asymmetrischen Arbeitszyklus bis zum möglicherweise 100-fachen der Markierungsperiode angesteuert wird, könnte es möglich sein, eine Schaltung zu konstruieren, die die Impulsfolgen in eine positive Spannung umwandelt und wenn das Opto "geschlossen" ist, kehrt es zurück 0V. Vielleicht so etwas: -

Geben Sie hier die Bildbeschreibung ein

Daher würde ich (angesichts aller Annahmen und Lesen zwischen den Zeilen) vorschlagen, dass die Fotodiode im Optokoppler mit einem Transimpedanzverstärker gepuffert wird und ihr Ausgang dann einen herkömmlichen AM-Detektor speist, der um eine Diode, einen Widerstand und einen Kondensator herum aufgebaut ist. Dieser Ausgang speist dann einen Komparator/Daten-Slicer und ist dann für einen Arduino-Eingang geeignet

Um die analoge Seite weniger hardwareintensiv zu machen, könnte die Impulsfolge des Transimpedanzverstärkers direkt einen Arduino-Eingang speisen, und die Software kann eine demodulierte Version "konstruieren", die gezählt werden kann.

Der Zähler wäre zwei Impulse pro Umdrehung (vorausgesetzt, das Bild ist repräsentativ) und dies sollte sich auf die Windgeschwindigkeit übertragen. Ich sage "sollte", weil es wahrscheinlich eine nichtlineare Beziehung zwischen Windgeschwindigkeit und Rotationsgeschwindigkeit gibt. Viel Glück mit diesem Projekt.

Bei orkanartigen Winden und unter der Annahme, dass sich das Rad mit Windgeschwindigkeit dreht, benötigt ein 1-mm-Schlitz 0,008 uS, um ihn zu passieren, gemäß meinen Berechnungen auf der Rückseite der Hülle
@angelatlarge - für mich sehen sie nicht wie 1-mm-Schlitze aus - ich denke, das Opto ist über den langen Schlitzen positioniert. Hey, es ist ein 2D versus 3D Ding!!!
Sicher, aber das bedeutet, dass ein 35-cm-Schlitz Ihnen in einem Hurrikan 3-uS-Impulse gibt, vorausgesetzt, meine Mathematik stimmt. Ich sage nur, dass 3uS nicht verrückt erscheinen, ohne dass die LED pulsiert.
Wenn der Schlitz/Schlitz 1 mm breit ist und sich in einem radialen Abstand von (z. B.) 10 cm befindet, beträgt der Umfang bei diesem Abstand etwa 630 mm, und dies bedeutet unter Verwendung von 0,008 us pro mm, 360 Grad umgerechnet in Zeit = 5,04 us oder 200.000 Umdrehungen pro Sekunde. Ich gebe dir zehn Minuten, um herauszufinden, was du falsch gemacht hast, LOL