optimaler Tiefpass durch Versuch und Irrtum?

Nach dem Öffnen einer alten Webcam fand ich ein Objektiv mit einer magnetischen Fassung, die für den Autofokus verwendet wird. Eine Spule bewegt die Linse ein und aus, um die Schärfe einzustellen.

Ich habe diese Funktion kürzlich auf dem Raspberry Pi-Kameramodul installiert. Jetzt möchte ich das Magnetfeld der Spule digital mit einem PWM-Signal steuern, das von einem einfachen RC-Tiefpassfilter in ein analoges Signal übersetzt wird, siehe hier

Im Moment verwende ich einen 30uF Elko und ein einstellbares Potentiometer zwischen 0 und 1k Ohm, um das digitale PWM-Signal zu filtern. Das digitale Signal des Mikrocontrollers wird nicht direkt gefiltert, sondern zunächst in einen Schrittmotortreiber eingespeist, um die Pins des Mikrocontrollers zu schützen. Der digitale Ausgang des PWM wird dann der RC-Schaltung zugeführt.

Der Autofokus funktioniert, obwohl er etwas langsam ist. Und das Problem liegt in der relativ langsamen Reaktion des Stellglieds. Um etwas genauer zu sein: Bei einer PWM-Frequenz von 8 kHz und einer Änderung des Tastverhältnisses um 5 Prozent beträgt die Reaktion der Spule 0,4 Sekunden, um sich selbst anzupassen.

Ich weiß, dass es schwierig ist, ohne Rückkopplungsschleife eine superschnelle Reaktion zu erzielen, aber ich wäre mit 0,1 Sekunden zufrieden, wenn dies nur durch Ändern einiger Komponenten und Werte erreicht werden könnte. (Eine andere Option wäre, die richtige Menge an Überschwingen zu finden) Grundsätzlich Die RC-Schaltung soll nur die digitale PWM-Wellenform in eine bestimmte Spannung umwandeln. Es dauert einige Zeit, bis sich das Signal auf eine bestimmte Spannung eingependelt hat. Je flacher die Ausgangsspannung sein soll, desto langsamer reagiert das Filter. Die Ausgabe des Signals sollte so flach wie möglich sein, um das Objektiv ruhig zu halten. Also muss ich einen Kompromiss finden. Was ich auch intuitiv erwarte, ist, dass je höher die PWM-Frequenz, desto besser? Wenn es zu hoch ist, ist natürlich auch die Verlustleistung hoch. Und wenn an der Spule kein Strom anliegt, bewegt sich die Linse nicht.

Leider kann ich dir die Daten der Spule jetzt nicht nennen, ich weiß nur, dass sie einen ohmschen Widerstand von 30 Ohm hat. Aber auch das Gewicht des Objektivs, das Magnetfeld des Dauermagneten, die tatsächliche Induktivität, die Federkonstante der Schließfeder usw. Das sind so viele Unbekannte, dass es zu schwierig wäre, eine optimale Einstellung vorherzusagen.

Nun meine Frage an Sie, ob es möglich ist, variable Widerstände und Kondensatoren zu verwenden und einfach durch Ausprobieren die optimale Einstellung zu finden? Und wenn ja, welche Art von Komponenten würdet ihr empfehlen?

Übrigens: Die Spule ist im Moment ziemlich laut (8khz). Nicht, dass es langweilig wäre. Aber normalerweise macht ein Autofokus dieses Geräusch nicht, zumindest nicht der in meinem Smartphone. Eigentlich wäre mir eine laute, aber schnelle Reaktion lieber, als eine leise Schnecke.

Wie hast du festgestellt, welche Spannung verwendet werden soll? Es wäre hilfreich gewesen, das Antriebssignal zu untersuchen, bevor Sie es aus der Webcam genommen haben. Haben Sie Zugriff auf einen Funktionsgenerator?
Ja, ich weiß, ich war dumm. Ich hatte eigentlich nicht damit gerechnet, dass der Autofokus funktioniert. Ich werde versuchen, die gleiche Webcam irgendwo zu bekommen und sie zu öffnen, ohne etwas zu beschädigen. Im Moment habe ich keinen Zugriff auf ein fortschrittliches Elektrotechnik-Tool. Es gibt einen im Fablab, also nächste Woche werde ich es tun. Für welchen Zweck?
Vielleicht würde ein Schema helfen - ich vermute, dass eine verrauschte Spule auf einen ineffektiven Tiefpass-RC-Filter hinweist. Ein Filter kann unnötig sein. Die mechanische Masse des sich bewegenden optischen Elements kann eine ausreichende Filterwirkung bereitstellen. Können Sie die PWM-Frequenz über den hörbaren Bereich (>20 KHz) erhöhen?
Wenn Sie einen Funktionsgenerator haben, ist es einfacher, mit verschiedenen Wellenformen, Arbeitszyklen, Frequenzen usw. zu experimentieren. Dann wissen Sie, was Ihr Ziel für eine fest verdrahtete Lösung ist. In einer funktionierenden Webcam sehen zu können, was tatsächlich in die Spule gelangt, würde Ihnen einen Vorsprung verschaffen, also schnappen Sie sich auch ein Oszilloskop.
@glen_geek Ich habe es ohne Filter versucht, aber ich kann hier ein stechendes Geräusch (selbst bei 100% Einschaltdauer ???) feststellen, das mit dem Tiefpassfilter nicht auftritt. Möglicherweise ist das PWM-Signal vom Himbeer-Pi nicht sauber, da der Himbeer-Pi kein Echtzeitsystem ist. Ich kann mit der PWM-Frequenz höher gehen, aber dies erhöht die CPU-Auslastung.

Antworten (1)

Ich würde die Mechanismusspule mit einer PWM einer Frequenz antreiben, die deutlich über dem Audiobereich liegt und mindestens das 20-fache der mechanischen Reaktionszeit beträgt. Der PWM-Treiberchip, den Sie jetzt haben, kann dies möglicherweise tun, und wenn Sie keinen finden, der dies kann. Die Spule leistet hervorragende Arbeit, indem sie die PWM auf ihren äquivalenten analogen Wert reduziert, genauso wie jeder PWM-Direktmotorantrieb funktioniert.

Sie möchten eine saubere PWM-Wellenform haben, die von Zähler-/Timer-Hardware oder von einem dedizierten PWM-Generator-Chip angetrieben wird. (Es gibt tatsächlich einfache I 2 C-Generator-Chips, die Sie mit dem Pi verbinden könnten). Eine softwaregenerierte PWM weist wahrscheinlich zu viele Störungen auf und unterbricht Aktualisierungslatenzen, um eine saubere Wellenform zu erzeugen.

Eine wirklich nette Sache an diesem Ansatz ist, dass Sie die PWM auf jede gewünschte Einstellung ändern können und entsprechende Aktionen erhalten. Dann können Sie einen Algorithmus in der Software in Betracht ziehen, der die PWM weiter als ihren Zielwert einstellt, um den Mechanismus in Bewegung zu setzen, und sich dann auf den Zielwert verjüngt, um sich in der endgültigen Position niederzulassen. Mit ein wenig Fummelei sollte sich die Leistung des Overdrives ohne echte Rückkopplung einstellen lassen, solange die Antriebsspannung und die mechanische Belastung gleich bleiben.

Haben Sie einen Vorschlag zur Gestaltung des Überschwingsignals? zum Beispiel eine spitze Spitze zum Ziel + Überschwingen und ein exponentieller Abfall zum Ziel?
Sie müssten charakterisieren, wie dies zu tun ist. Der erste Prozess besteht darin, ein Gefühl für die Sprungantwort des Systems zu bekommen, indem man einfach in einem Schritt den minimalen auf den maximalen Antrieb und in einem Schritt den maximalen auf den minimalen Antrieb anwendet und misst, wie schnell sich der Mechanismus in diesem Modus tatsächlich bewegen kann. Bewerten Sie gleichzeitig auch, wie lange es dauert, bis sich der Mechanismus in der Endposition einpendelt, während er um die Zielposition oszilliert. Diese geben Ihnen einen Hinweis darauf, wie viel Overdrive effektiv sein wird und wie lange Sie den Overdrive möglicherweise auf den Zielwert zurückrampen möchten.
Aber ich habe keine Ahnung, wie ich die mechanische Reaktion überwachen soll. Die einzige mir bekannte Möglichkeit, Informationen über die Position des Objektivs zu erhalten, besteht darin, Bilder zu streamen und dann die Schärfe zu messen, aber ich bin begrenzt in der Bildrate und durch die Tatsache, dass die Schärfemessungen sehr verrauscht sind. Und ich werde die Oszillation nicht kompensieren können, indem ich einfach ein paar schicke PWM-Signale anlege. Ich denke, dazu ist eine Art Feedback erforderlich.
Ja, eine ordnungsgemäße Bewertung würde eine Art Positionsrückmeldung vom Mechanismus erfordern. Das könnte ziemlich knifflig sein, aber eine kluge Person hier kann vielleicht etwas vorschlagen. Eine Sache, die mir einfiel, war die Verwendung eines sehr kleinen LDS (linearer Verschiebungssensor), der einen beweglichen Kern mit sehr geringer Masse hat, der direkt mit dem Linsenrahmen gekoppelt werden könnte.