Forum: Mikrocontroller und Digitale Elektronik Dimmen von LEDs in einem POV-Display


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Ludwig M. (ludwig_m0)


Angehängte Dateien:

Lesenswert?

Ich möchte mich gerne mit diesem Beitrag hier im Forum vorstellen.

In einem aktuellen Projekt beschäftige ich mich mit einem POV 
(persistence of vision) display. Ich bin schon recht weit gekommen – das 
Display läuft in einer ersten Version prima. Nun arbeite ich an einer 
Weiterentwicklung. Diesmal sollen 40 LEDs zum Einsatz kommen. Mein 
Problem besteht nun darin, die Helligkeit dieser LEDs per Arduino zu 
steuern.

Mein Aufbau sieht in etwa so aus:

* Stromversorgung induktiv per Royer Converter (der Artikel 
https://www.mikrocontroller.net/articles/Royer_Converter ist „Gold 
wert“).
* Der Rotor wird mit einem CD-drive-Motor angetrieben
* Das Display wird durch einen Arduino-nano gesteuert.
* Trigger per Hall Sensor A3144
* Pro Umdrehung werden pro LED 340 „Pixel“ nacheinander ausgegeben. Wenn 
man z.B. mit 10 Umdrehungen pro Sekunde arbeitet (ich nehme 
normalerweise weniger), so ergibt sich eine „Pixelfrequenz“ von 3400 Hz. 
Das schafft der nano ganz gut.
* In der Neuauflage möchte ich 2x20 LEDs verwenden (2x3mm, weiß). Die 
LEDs sollen über 5 Schieberegister TPIC6C595 (von TI) angesteuert 
werden, so dass genügend Strom zur Verfügung steht. Die LEDs laufen bei 
je 20 mA, Vorwärtsspannung 3,2 V.

Hier mein Problem:
Die LEDs sind unglaublich hell. Erstaunlich, was da heute geht. Ich 
würde sie daher gerne dimmen. Einstellung über den Arduino (der empfängt 
den Befehl per IR – Remote Control - auch das geht schon). Die Frage ist 
nur: WIE dimmen?

Lösungsansätze:
1. Zunächst fällt mir PWM ein, zumal der Arduino das ja nativ sogar 
mitbringt. Allerdings befürchte ich, dass die Pulse der LEDs durch die 
Rotation des Displays sichtbar werden würden. Um das zu verhindern, 
bräuchte man eine hohe PWM-Frequenz. Wenn man von den 3400 Hz 
Pixelfrequenz ausgeht, so wäre m.E. mindestens die 50 oder 100-fache 
PWM-Frequenz notwendig. Dies würde also z.B. 340 KHz entsprechen. Kann 
der Arduino 340 kHz PWM? Ich müsste dann den Strom aller LEDs zusammen 
schalten – Strom maximal 400 mA – und das bei 340 kHz – nicht ganz 
trivial, oder?
Dennoch würde mir diese Lösung sehr gut gefallen – da eben alles 
Digitaltechnik wäre (da fühle ich mich wohl).

2. Der alternative Ansatz wäre die Regelung des LED-Stroms. Mir fehlt 
allerdings eine Idee, wie man das sinnvoll machen könnte. Die 
Schieberegister haben pro bit einen open drain DMOS -Ausgang, über die 
ich die LEDs schalte. Siehe Bild. Im Prinzip könnte man nun U_LED 
regeln, aber wie? Habt Ihr eine Idee?

Ich bin sehr auf Eure Gedanken gespannt. Danke für Euer Feedback, Ludwig

: Bearbeitet durch User
von MaWin (Gast)


Lesenswert?

Ludwig M. schrieb:
> WIE dimmen?

PWM geht nicht, weil durch die Bewegung dann ein Pixel nicht mehr so 
breit wie ein Pixel wird, sondern schmaler.

Also nimm statt TPIC6B595 und Vorwiderständen besser 
CAT4016=DN13C=STP16CP05=PCA9626B bei dem die Helligkeit über nur 1 
Widerstand gesteuert wird und wähle den passenden Widerstand bzw. 
schalte per uC um

von Ludwig M. (ludwig_m0)


Lesenswert?

Vielen Dank für den Hinweis auf den CAT4016. Den Chip kannte ich noch 
nicht und er ist definitiv sehr interessant. Mir gefällt, dass er 16 bit 
hat und dass er eben mit nur einem Widerstand auskommt. Beim 595 braucht 
man die doch lästigen Widerstandsnetzwerke. Den Widerstand beim CAT4016 
zur Stromeinstellung für die LEDs zu schalten sollte irgendwie gehen - 
mal sehen. Ich beschaffe mir mal ein paar 4016 - schade, dass es den nur 
als SMD gibt - nicht so ideal für Breadboard (damit fange ich an, bevor 
ich ein PCB mache).

Ich bin inzwischen noch etwas der PWM nachgegangen. Vielleicht geht es 
ja doch mit etwas niedrigerer Frequenz (sagen wir mal 60 kHz). Wenn ich 
das richtig verstehe, kann der Arduino nano das schon, allerdings 
reduziert sich dann die Auflösung der PWM. Das wiederum sollte kein 
großes Problem sein, denn ich kann die Helligkeit ja in ein paar wenigen 
Stufen (z-B- 4 oder 8) einstellen.

Für die Steuerung der LEDs habe ich eine sehr simple Idee: der TPIC6C595 
hat einen Steuereingang „Output enable“ (G) - damit kann man alle LEDs 
ausschalten, bzw. auf den Registerwert setzen. Genau diesen Eingang 
würde ich mit dem PWM-Signal versorgen, that‘s it. Der Rest ist 
Software. Einfacher geht nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.