ich erhalte bei meiner Drehzahlmessung Störsignale. Diese Störsignale verursachen Fehlmessungen.
Als Drehzahlsensor dient ein LJ18A3-8-Z/BX. Die "Schaltnocken" an der Welle sind ausreichend hoch, eine Metallerkennung zwischen den Nocken möchte ich ausschließen. Der Drehzahlsensor hat eine eigene (exklusive) Spannungsversorgung und ist per Optokoppler (PC817) an die Steuerung (ESP Devkit V4) angebunden. Siehe beiliegendes Bild.
Ebenso habe ich ein Foto von meiner Oszi Messung angehängt. Diese Peaks sehe ich sowohl vor dem Optokoppler als auch danach. Ein Tausch des Drehzahlsensors brachte keine Änderung. Das Kabel zum Sensor ist ca 1m lang und ungeschirmt. Des weiteren hängt noch eine Waage (HX711) an der Steuerung dran, die aber tadellos funktioniert.
Wie kann ich diese Peaks verhindern oder ausfiltern?
Was hängt denn da noch an der 12V-Stromversorgung von diesem Sensor mit dran? Ist da vielleicht ein Motor mit dran oder etwas anderes was solche Störungen erzeugen könnte?
Wie kann ich diese Peaks verhindern oder ausfiltern?
"Verhindern" läßt sich nicht beurteilen, da mußt Du selber suchen. Aber ein passender Kondensator am Eingang des Controllers beseitigt den kurzen Impuls hinreichend.
samples.add(durationHigh+durationLow);// nur gute Werte werden hinzugefügt
9
}
Es filtert zwar die kurzen Peaks aus, da aber durch den Highpeak das Lowsignal geteilt wird (es werden die Flanken ausgewertet) sind die Lowsignale zu kurz.
ein passender Kondensator am Eingang des Controllers beseitigt den
kurzen Impuls hinreichend.
Werde ich versuchen. Ich vermute der Kerko soll zwischen Eingang und Masse. Siehe beiliegender Schaltplan.
Welche Größe könnte euren Erfahrungen nach passen?
Was hängt denn da noch an der 12V-Stromversorgung von diesem Sensor mit
dran? Ist da vielleicht ein Motor mit dran oder etwas anderes was solche
Störungen erzeugen könnte?
Nein das ist nichts mit dran, der Sensor wird exklusiv von einem Netzteil versorgt.
Als Drehzahlsensor dient ein LJ18A3-8-Z/BX. Die "Schaltnocken" an der
Welle sind ausreichend hoch, eine Metallerkennung zwischen den Nocken
möchte ich ausschließen.
Warum verwendest du einen kapazitiven Sensor für Schaltnocken einer Welle und nicht einen Hall-Sensor? Aus welchem Material ist die Welle?
Wie ist die Versorgungsspannung vom Sensor abgeblockt? Sind die Störungen auch auf der Versorgung zu sehen?
Welche Größe könnte euren Erfahrungen nach passen?
Auf Deinem Foto kann ich keine Informationen über Zeitbasis und Amplitude erkennen. 100 nF ist immer ein guter Wert ;-)
Alternativ kann man auch immer den längeren '1' Pegel durch mehrfache Abtastung auswerten. Aber bei der mickymouse-Programmiersprache kann man wohl keine Aussage zum realen Timing treffen.
Auf Deinem Foto kann ich keine Informationen über Zeitbasis und
Amplitude erkennen.
Die Amplitude ist ca 3 V. Ich vermute "M: 10ms" ist die Zeitbasis. Das Ergäbe eine Periodendauer von ca 30 ms. Es sind zwei Schaltnocken auf der Welle (wegen Vermeidung von Unwucht) das ergäbe eine Drehzahl von 1000 rpm. Dies ist die Höchstdrehzahl der Maschine
12V Drehzahlmeldung lässt mich vermuten das ist im Auto.
Ist dem so?
Sag mal mehr zu der Applikation.
Es handelt sich um eine fette Wirbelstrombremse deren Spulen mit einem 150A IGBT angesteuert werden. Die Bremse kann einen Traktor mit 250 PS mühelos abwürgen. Die Spulen der Bremse wurden zum Zeitpunkt der Drehzahlmessung jedoch nicht angesteuert.
Ich habs mit der Arduino IDE 2.x geschrieben.
Die Funktion "pulseIn()" habe ich bei einem früheren Projekt schon benutzt und brachte die besten Ergebnisse. Dort hatte ich allerdings nicht mit diesen Peaks zu kämpfen
Für einen RC Entpreller bräuchte ich (wenn ich den Text richtig verstanden habe) noch einen zusätzlichen Widerstand. Die Werte müsste ich noch berechnen.
>samples.add(durationHigh+durationLow);// nur gute Werte
9
>werdenhinzugefügt
10
>}
11
>
Es filtert zwar die kurzen Peaks aus, da aber durch den Highpeak das
Lowsignal geteilt wird (es werden die Flanken ausgewertet) sind die
Lowsignale zu kurz.
Du filterst doch falsche Werte raus. Wie können diese in die Auswertung gelangen?
Offensichtlich nicht - sonst würde es im Automobilbereich Hersteller geben, die kapazitive Sensoren für die Erfassung der Nockenwellendrehung einsetzen.
Offensichtlich nicht - sonst würde es im Automobilbereich Hersteller
geben, die kapazitive Sensoren für die Erfassung der Nockenwellendrehung
einsetzen.
Lenk doch nicht vom Thema ab. Der TO hat diese Sensoren und sie liefern u.a. die benötigten Impulse.
Für einen RC Entpreller bräuchte ich (wenn ich den Text richtig
verstanden habe) noch einen zusätzlichen Widerstand. Die Werte müsste
ich noch berechnen.
Du hast schon zwei Widerstände in der Schaltung; die sollten reichen.
Probieren reicht hier völlig aus und sollte längst passiert sein.
[/c]
Es filtert zwar die kurzen Peaks aus, da aber durch den Highpeak das
Lowsignal geteilt wird (es werden die Flanken ausgewertet) sind die
Lowsignale zu kurz.
Du filterst doch falsche Werte raus. Wie können diese in die Auswertung
gelangen?
Ich filtere nur die HighPeaks aus. Ich müsste aber den ganzen Zyklus (Bestehend aus Highsinal, dem Lowsignal bis zum Peak, den Highpeak selbst und den Rest des Lowsignals) verwerfen. Habe aber keine Idee, wie ich das Bewerkstelligen sollte.
Am Sinnvollsten wäre die Ursache zu beseitigen, da mir das aber nicht gelingt, werde ich versuchen die Peaks herauszufiltern.
selbst und den Rest des Lowsignals) verwerfen. Habe aber keine Idee, wie
ich das Bewerkstelligen sollte.
Am Sinnvollsten wäre die Ursache zu beseitigen, da mir das aber nicht
gelingt, werde ich versuchen die Peaks herauszufiltern.
Dann nimm einen anderen Sensor, anstatt an den Symptomen herum zu doktor'n. Das wird doch hinten und vorne sonst nichts Gescheites.
Nun ich hätte die Last eher in den Kollektorkreis gelegt.
Hintergrund befindet sich die LAst im Emitterkreis muss die Basis auch deutlich höher mit Spannung angesteuert werden. Da das aber nur ein einfacher Optokoppler ist wird das hier schwierig.
Befindet sich die Last hingegen im Kollektorkreis kann man interne Pullups nutzen und das Steuersignal an der Basis bleibt recht identisch mit 0,6-0,7V
Weiß ich nicht. Aber offensichtlich ist Dein Fabrikat wohl nichts wert.
Die Dinger soll es ja auch von unterschiedlichen Herstellern geben (bei gleicher Bezeichnung). Da wäre es halt eine Idee, mal nach anderen Herstellern/Fabrikaten zu schauen.
Oder die mechanische/geometrische Anordnung der beteiligten Teile ist bei Dir möglicherweise arg ungünstig.
pulseIn() ist nicht für Drehzahlmessung geeignet und entprellt auch nicht.
Wie der Name schon sagt, mißt sie die Pulsdauer, Du aber willst die Periodendauer. Sie ist außerdem blockierend programmiert, d.h. die Ausführung bleibt für die Messung stehen oder rennt ins Timeout.
Du solltest erstmal anzeigen, wie lang die Störnadeln typisch sind, bei der gewählten Auflösung ist das nicht zu erkennen.
Und dann sagen oder anzeigen, in welchem Bereich (min/max) Du die Drehzahl messen willst. Dann kann man sinnvolle Filterregeln aufstellen.
Der 100nF kann richtig oder falsch sein, das kann man nicht erkennen. Eine Filterung in Software ist in jedem Fall besser, er ist also überflüssig.
Eine Filterung in Software ist in jedem Fall besser,
Banales Filtern? Autokorrelation ist angesagt!
Auf keinen Fall die Ursache mit 100 nF 'bekämpfen'. Das wäre viel zu einfach und würde göttliche Entprellroutinen deklassieren.
Hallo,
das Projekt musste krankheitsbedingt eine Weile ruhen.
Ich habe mir das Signal primärseitg (vor dem Optokoppler) mit dem Oszi angesehen, siehe Oszi3.jpg. Das 0 Signal ist nicht stabil.
Vermutlich enthält der Näherungssensor nur einen (Feldeffekt?)Transistor der die Signalleitung auf Masse schaltet oder eben nicht. Ich habe deshalb einen zusätzlichen Widerstand (1 kOhm) eingebaut der das 0 Signal auf 12V zieht. Einen 100 nF Kerko habe ich ihr auch spendiert, siehe schaltplan1.png.
Vermutlich enthält der Näherungssensor nur einen (Feldeffekt?)Transistor
der die Signalleitung auf Masse schaltet oder eben nicht.
Natürlich.
Ich habe
deshalb einen zusätzlichen Widerstand (1 kOhm) eingebaut der das 0
Signal auf 12V zieht. Einen 100 nF Kerko habe ich ihr auch spendiert,
siehe schaltplan1.png.
Jetzt sieht das Signal besser aus (Oszi4.jpg)
Weiß ich nicht. Aber offensichtlich ist Dein Fabrikat wohl nichts wert.
Oh Mann. Jetzt hast du ihm gegeben. Alle doof ausser dir.
Auch das zuvor gestörte Signal lässt sich mit minimalen Kenntnissen im Programmieren softwaretechnisch zuverlässig auswerten. Man muss halt programmieren können.
Nun, das saubere Signal, geht sogar bei naiver Programmierung.
Das ist Deine Interpretation.
Aber wenn ein Sensor solch komische Spikes liefert, dann würde ich solch einen Sensor oder die ganze Anordnung nun nicht unbedingt als zuverlässig betrachten, womit auch der versuchte Workaround nicht unbedingt zuverlässig sein könnte.
Er liefert jetzt halt den Beleg, dass dein Vorwurf, es läge am von ihm gewählten schlechten zu billigen Sensor, falsch und unbegründet war, denn es lag am vergessenen pull up Widerstand.
Vorher konnte man auch schon ahnen dass dein Vorwurf völlig aus der Luft gegriffener Unsinn war, aber nun hat man halt den Beleg.