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.
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
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.
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: -
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.
Andi aka
pjc50
Benutzer22108
Leon Heller
Benutzer22108
Kvegaoro
Benutzer22108
Benutzer3624
Engelgroß
Engelgroß