Steuerung des Stroms durch mehrere LEDs linear und effizient

Ich habe etwa 100 Infrarot-LEDs mit jeweils einem angrenzenden Fototransistor, um kleine Unterschiede in der Entfernung mehrerer Objekte zu erkennen ( QRE1113 ).

Da sich die Objektmaterialien unterscheiden, möchte ich in der Lage sein, die Intensität jedes Emitters separat zu kalibrieren, um dies auszugleichen. Da der Ausgang jedes Fototransistors mit einer sehr hohen Abtastrate (~ 50 ksps) gemessen wird, kann ich keinen PWM-Controller verwenden, da diese normalerweise bei etwa 20 kHz arbeiten und daher den Stromfluss durch jeden IR-Emitter direkt steuern müssen.

Da ich diese Kalibrierungsphase gerne über I2C durchführen möchte, war meine Idee, ein digitales Potentiometer wie das MCP4451 als Rheostat zu verwenden. Es hat 4 Kanäle und so dachte ich daran, es als Strombegrenzungswiderstand für 4 LEDs zu verwenden. Während dies einerseits ansprechend ist (niedriger Preis, einfache Einrichtung), sehe ich zwei Hauptprobleme:

  1. Alle erschwinglichen Digitalpotentiometer haben einen Bereich von mindestens 5kΩ. Ich brauche einen Bereich von etwa 400Ω. Durch die Verwendung eines Parallelwiderstands könnte ich die Reichweite anpassen, aber die resultierende Reichweite wäre nicht mehr linear. Obwohl keine perfekte Linearität erforderlich ist, möchte ich in der Lage sein, vernünftige Anpassungen in allen Regionen vorzunehmen, und nicht nur am Ende der niedrigen Stromstärke.

  2. Effizienz. Ich treibe all diese von einer 5-V-Quelle und ohne Kalibrierungshardware konnte ich 3 LEDs mit einem Widerstand in Reihe schalten. Daher lag der durchschnittliche Stromverbrauch pro LED bei etwa 30 mW, was großartig ist. Bei diesem Ansatz würde jede LED mit ihrem Widerstand für sich allein stehen, was zu einer zusätzlichen Erwärmung von 100 mW für den LED-Betrieb bei 30 mW führen würde.

In der folgenden Grafik sehen Sie die resultierende Beziehung aus der Schleifereinstellung des MCP4415 zum resultierenden Gesamtwiderstand und LED-Durchlassstrom. Die Berechnungen gelten für die Verwendung eines parallelen 680-Ω-Widerstands und eines 68-Ω-Widerstands in Reihe (um das Maximum festzulegen):

Schleifereinstellung auf Widerstand und Durchlassstrom

Verwandte Schaltung:

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Mein Hauptproblem ist definitiv das nichtlineare Schleifer-Widerstands-Verhältnis, der Wirkungsgrad ist nur zweitrangig. Ich bin für alle Lösungen offen, kann mir aber nicht für jede LED einen eigenen LED-Controller leisten, da mein Budget begrenzt ist, weshalb mir der MCP4415 als ansprechende Lösung erschien (~25€ um alle LEDs anzusteuern).

EDIT: Ich möchte einige Aspekte klarstellen:

  • Ich möchte den Strom für jede LED separat und linear von 10 mA bis 30 mA in mindestens 64 Schritten steuern können. Ich benötige für keinen dieser Werte absolute Präzision, sondern nur einen ungefähr einheitlichen Weg, um diesen Bereich zu durchlaufen, um die Helligkeit für die LED linear einzustellen.
  • Effizienz ist nicht mein oberstes Ziel. Funktionalität und Kosten sind die wichtigsten Faktoren.
  • Ich hatte gehofft, etwas Ähnliches wie das MCP4415 verwenden zu können, da es billig ist und nicht die ganze Zeit aktiv angeschlossen werden muss (es behält seinen Wert zumindest bis zum Herunterfahren).
  • Meine Kalibrierungsphase tritt einmal beim Start auf, wo ich den korrekten Strom iterativ annähere, indem ich die Rückkopplung des Fototransistors verwende.
  • Das 5-V-Netzwerk versorgt hauptsächlich diese LEDs und einige Logik-ICs. Bei Bedarf kann ich auf eine andere Spannung umschalten.

EDIT 2: Zusätzliche Antworten auf Fragen aus den Kommentaren.

Lassen Sie mich zunächst klarstellen, dass dies kein kommerzielles Projekt ist, sondern nur ein persönliches Projekt. Außerdem bin ich Informatiker und kein Elektroniker, also bedenken Sie das bitte. (Daher gibt es keine Spezifikation, der ich folgen muss) - Ich bin offen für alle Vorschläge.

Anwendung zeigen. Und welche Entfernung und Reichweite des Reflexionsvermögens?

Objekte sind aus Holz und können nicht bemalt oder modifiziert werden. Daher variiert der Reflexionsgrad über verschiedene Objekte (dunkle Flecken usw.).

Am engsten sind es etwa 3 mm (+-1 mm), am weitesten etwa 13 mm (+-2 mm). Die Verfahrstrecke beträgt also für jedes Objekt etwa 9-10 mm. Alles ist Holz, daher haben alle Maße diese hohen Toleranzen. Die Leiterplatte ist bereits am weitesten von den Objekten entfernt. Ich kann diese Abstände wahrscheinlich nicht ändern (vielleicht -+ 1mm).

Ich habe 12-Bit-ADCs, die die Fototransistoren messen, und ich möchte nur so wenig Präzision wie möglich verschwenden. Daher möchte ich die IR-LED so einstellen, dass der Nahpunkt (3mm) bei allen Objekten in etwa den gleichen ADC-Wert hat. Ungefähr gleich ist alles, was ich brauche - ich möchte nur nicht, dass ein ADC 3000 am Nahpunkt und ein anderer 3500 misst. Die Fernpunkte sind nicht wichtig.

Grundsätzlich haben Sie einige schlechte Interpretationen von Datenblättern, Annahmen und damit schlechte Entscheidungen getroffen. hFE = CTR (effektiv) = IcON/If variiert von 0,2 % bis 0,9 % bei 10 mA bei 1 mm unter Verwendung eines polierten Alaunspiegels. Was ist Ihre Spezifikation für die Fehlertoleranz? Und welche Variation der Chiphöhe? 0,1 mm maximal? 0,05 mm?

Ich verstehe, das ist auch der Grund, warum ich kalibrieren können möchte. Alle Toleranzinformationen, die ich sammeln konnte, sind oben aufgeführt.

Bezüglich Chiphöhe: Ich muss alle Chips handlöten, gehe also von pessimistischen 1 mm aus.

Sie sagen 3 IRs in Reihe, aber dann 1 R pro IR-LED ??? Keine in Serie anzeigen?

Entschuldigung, wenn ich mich unklar ausgedrückt habe. Ich meinte einen Widerstand pro 3 LEDs in Reihe, das ist das aktuelle Design (unten). Was ich meinte war, dass ich sie nicht in Reihe schalten kann, wenn ich sie separat steuern möchte.

Insgesamt habe ich 90 Sensoren, also wiederholt sich dieses Muster 30 Mal.

Aktuelles Design

Kommentare sind nicht für längere Diskussionen gedacht; diese Konversation wurde in den Chat verschoben . Alle erzielten Schlussfolgerungen sollten in die Frage und/oder die Antwort(en) zurückbearbeitet werden.
Wenn Sie CMOS verwenden, um LEDs (Hi- oder Low-Side) anzusteuern, kann Req des CMOS von 20 bis jeweils 60 Ohm variieren, abhängig von Vdd des ARM-Chips oder Mikrochips usw. (Vol / Iol = Req) @ Vdd variiert mit Vdd
Ungefähr gleich ist alles, was ich brauche - ich möchte nur nicht, dass ein ADC am nahen Punkt 3000 und ein anderer 3500 misst. - Ich weiß, das ist nicht das, was Sie gefragt haben, aber es könnte einfacher sein, alle LEDs gleich hell zu machen eine gut geregelte Stromversorgung, und kalibrieren Sie dann einfach die ADC-Messwerte beim Start und verarbeiten Sie ihre Messwerte nach, um das zu kompensieren, was Sie während der Kalibrierung gemessen haben. Bei manchen Objekten könnte man auf diese Weise ein wenig an Präzision verlieren, aber ich bezweifle, dass dies sowieso die größte Quelle für Ungenauigkeiten ist. Nur Sie können diesen Anruf tätigen, aber es lohnt sich, darüber nachzudenken :)
@marcelm Nun, ich habe um Vorschläge gebeten ;) - Also ja, das kann ich tun. Es gibt nur ein Problem, das bestehen bleiben würde, und das ist, dass ich nichts tun kann, wenn meine Werte übersteuern, dh meine Helligkeit für ein Objekt zu hoch ist. Aber da es momentan keine andere praktikable Lösung gibt, denke ich, dass ich hier keine wirkliche Wahl habe, oder?

Antworten (1)

Wie wäre es mit einer OPAMP-Stromquelle, die von einer modulierten variablen Spannung von PWM gespeist wird?

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Die Idee ist, dass der OA1 den Strom so regelt, dass die Spannung an Rsense gleich Vin wird, wodurch der Strom durch die LED proportional zu Vin wird. OA2 fungiert als Pufferverstärker für diese variable Spannung, die durch PWM erzeugt und auf Quasi-DC gefiltert werden kann.

OA2 bietet eine Möglichkeit, Vin mit Ihrem digitalen Signal Vmod zu modulieren. Die Modulation wird invertiert: Wenn Vmod hoch ist, fällt Vin auf Null, während Vmod = 0 dazu führt, dass Vin proportional zum PWM-Tastverhältnis eingestellt wird.

Ich weiß Ihre Antwort sehr zu schätzen, aber dies scheint mir nur für wenige LEDs eine gute Lösung zu sein, da ich in meinem Fall ständig 100 verschiedene PWM-Signale bereitstellen müsste - eines für jeden dieser Schaltkreise pro LED. Wenn ich das nicht von einem µC aus machen möchte, müsste ich mir für jeden davon zusätzlich einen Timer-IC besorgen und das von mir erwähnte digitale Potentiometer verwenden, das den programmierten Wert behält. Alles in allem scheint dies in dieser Größenordnung sehr kompliziert und teuer zu werden. Ich hatte gehofft, es mit nur wenigen zusätzlichen Komponenten zu schaffen.
@nyronium Sie können weiterhin Ihre digitalen Potis anstelle des PWM- und Tiefpassfilters verwenden, indem Sie triviale Spannungsteiler verwenden. Ich glaube nicht, dass Sie eine Lösung mit wesentlich weniger Komponenten finden werden, es sei denn, es gibt einen bestimmten IC, der genau das tut, was Sie wollen. Sie benötigen eine Modulation, die ohne aktive Komponente nicht möglich ist. Sie könnten OA1 fallen lassen und Q1 direkt an Vin anschließen, wodurch der Widerstand als spannungsgesteuerte Stromquelle eines armen Mannes fungiert, aber das ist so ziemlich alles, was Sie an Vereinfachungen tun können.
Anfangs dachte ich, dass es einen wirklich einfachen Weg geben könnte, der mir nicht bewusst war. Aber das scheint so einfach zu sein, wie es nur geht, und obwohl dieses Design für meinen Anwendungsfall zu groß ist, denke ich, dass es die Frage beantwortet. Danke schön.
@nyronium Beachten Sie, dass Sie meine Antwort nicht akzeptieren müssen, wenn sie nicht wirklich hilft. Mir ist zwar kein besserer Weg dafür bekannt, aber jemand anderes könnte es tun. Wenn Sie keine akzeptierte Antwort haben, kann dies zusätzliche Aufmerksamkeit auf Ihre Frage lenken, obwohl meiner Erfahrung nach nur wenige Benutzer eine Liste mit Fragen ohne akzeptierte Antwort durchgehen, wenn sie nach einer neuen Herausforderung suchen. Leider gehen die meisten Leute (einschließlich mir) normalerweise durch die HNQ-Liste und eine weitere nutzlose Antwort auf eine Frage, die bereits mehr als 10 Mal beantwortet wurde.
Nun, ich habe Ihre Antwort akzeptiert, weil Sie die Frage beantwortet haben, die ich gestellt habe. Ich bin mir bewusst, dass dies die Wahrscheinlichkeit anderer Antworten verringert, aber während der Diskussion bemerkte ich, dass sich die Leute in Details verlieren, die nicht wichtig sind, weil ich denke, dass ich zu viele unzusammenhängende Informationen bereitgestellt habe. Ich denke, meine Frage wäre besser angekommen, wenn ich etwas in der Art von "Einfachste Stromquelle für 10-30mA geregelt durch 5k-Potentiometer" gestellt hätte . Das würde alle unnötigen Folgefragen beseitigen. Aber ich denke, dafür ist es zu spät, da es sofort als Duplikat gekennzeichnet würde.
@nyronium Fragen, die sich auf eine einzige Lösung konzentrieren und nicht genügend Kontext bieten, werden manchmal auch schlecht aufgenommen (denken Sie an Bemerkungen wie „Ist das Hausaufgabe?“ und „Bist du mit diesem Topf verheiratet?“). Nun ja.