Forum: Projekte & Code Larson Scanner mit 2 Schieberegister (Arduino UNO rev3)


von Nick R. (kamayo)


Angehängte Dateien:

Lesenswert?

Hallo,

dies ist mein erstes Projek was ich zum größten Teil selber Programmiert 
habe.

Da ich wirklich sehr neu auf den ganzen Gebiet bin, bitte ich euch darum 
über den Aufbau und den Code zu schauen und mir Anregungen zu geben was 
ich in Zukunft besser machen kann.
Vielleicht sind auch sogar Fehler enthalten die ich selber nicht bemerkt 
habe.

Das Projekt ist ein Larson-Scanner gesteuert über 2 Schiebegerister mit 
PWM.
Nähere Beschreibung siehe Code.

Vielen Dank schonmal und noch ein schönes WE.

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Warum mit zwei 74HC596 statt mit einem 'spi led driver'?

TLC5926, TLC5927, FD9802, STP16CPC26, STP16CPC05, … und die LEDs 
leuchten auch nach ein paar Jahren (Alterung, veränderliche V_F) noch 
gleich hell. Und weniger Bautele sind es obendrein.

Charlieplexing ginge natürlich auch, falls man einen 'led driver' sparen 
will.

: Bearbeitet durch User
von Nick R. (kamayo)


Lesenswert?

Torsten C. schrieb:
> Warum mit zwei 74HC596 statt mit einem 'spi led driver'?
>
> TLC5926, TLC5927, FD9802, STP16CPC26, STP16CPC05, … und die LEDs
> leuchten auch nach ein paar Jahren (Alterung, veränderliche V_F) noch
> gleich hell. Und weniger Bautele sind es obendrein.
>
> Charlieplexing ginge natürlich auch, falls man einen 'led driver' sparen
> will.

Ich selber habe mich die letzten Wochen nur mit Schieberegistern 
beschäftigt und vorher habe ich nur einzelne LED's programmiert 
(Lauflichter etc.) zum Einstieg in µC.
Daher habe ich keine anderen Bauteile da gehabt und muss auch ehrlich 
sagen das ich das Charlieplexing zum ersten mal höre.
Was ich schon gesehen habe ist Multiplexing mit Transistoren. Welches 
der beiden Verfahren ist denn besser und welches einfacher?

Werde es mir morgen auf jeden fall genauer durchlesen und mal 
ausprobieren.
Bin gespannt ob es auf anhieb klappt.

Den spi led driver habe ich mir eben mal angeschaut (Datenblatt) nach 
meinen ersten Eindruck würde ich fast sagen das es grob das selbe 
Funktionsprinzip ist wie bei den Schieberegistern.
Liege ich damit richtig ?

Gruß Nicky

von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Nick R. schrieb:
> grob das selbe Funktionsprinzip ist wie bei den Schieberegistern

Ja, nur 16 LEDs mit einem Chip
und ohne Widerstände.

Widerstände machen einigermaßen konstanten Strom.

Led-Driver machen Konstantstrom.

Nick R. schrieb:
> Was ich schon gesehen habe ist Multiplexing mit Transistoren.

Eine LED, die 10% der Zeit mit 200mA betrieben wird, leuchtet nicht so 
hell wie eine LED, die 100% der Zeit mit 20mA betrieben wird.

Dieses Argument spricht sowohl gegen Multiplexing als auch gegen 
Charlieplexing.

Meiner Meinung nach sind Led-Driver das Mittel der Wahl. Sie werden 
auch in den großen LED-Screens an Häuser-Fassaden eingesetzt, weil sie 
die preiswerteste und beste Lösung sind:

https://learn.adafruit.com/32x16-32x32-rgb-led-matrix
^^ hier allerdings mit Multiplexing und Konstantstrom!

Aber es gibt in unserer Community bestimmt noch andere Meinungen. Ich 
bin gespannt und lerne gern noch was dazu.

Ein Colorduino geht auch ganz gut, den kann man auch für monochrome LEDs 
nutzen, der macht zwar auch Multiplexing, kann mehr LEDs als Du für 
Deinen kurzen Knight Rider benötigst. Vielleicht willst Du ihn ja noch 
länger machen. ;-)

: Bearbeitet durch User
von Nick R. (kamayo)


Lesenswert?

Torsten C. schrieb:
> Ja, nur 16 LEDs mit einem Chip
> und ohne Widerstände

Ah ok ich glaube das Datenblatt muss ich mir morgen mal in Ruhe durch 
lesen denn beim durch blättern habe ich nix gefunden was die 
Ausgangsspannung der Pins betrifft, hängt auch damit zusammen das ich 
noch nicht all zu viele Datenblätter in der Hand hatte.

Torsten C. schrieb:
> Dieses Argument spricht sowohl gehen Multiplexing als auch gegen
> Charlieplexing

Da werde ich mal versuchen mich in die Thematik mit den spi led drivern 
ein zu arbeiten, man kann ja schon ziemlich schöne Projekte damit 
machen.

Bezüglich der länge solcher LED-Ketten, gibt es da eigentlich auch ein 
Ende weil die Geschwindigkeit nicht mehr ausreicht der Microkontroller 
um die Daten an die jeweiligen Register, Treiber oder sonstiges zu 
senden ?

: Bearbeitet durch User
von Torsten C. (torsten_c) Benutzerseite


Lesenswert?

Nick R. schrieb:
> die Ausgangsspannung der Pins

Die hat ein gewisses Minimim von ca. 200mV und hängt für jeden Pin 
einzeln von der Vorwärtsspannung der daran angeschlossenen LED und von 
R_ext ab.

Es gibt halt …
… keine "Ausgangsspannung der Pins" sondern
… einen "Ausgangsstrom der Pins", bestimmt durch R_ext.
                 ¯¯¯¯¯
Genau das ist ja der Punkt!

Nick R. schrieb:
> Bezüglich der länge solcher LED-Ketten, gibt es da eigentlich auch ein
> Ende

Bei PWM musst Du die Kennlinie des Auges (LED-Fading) beachten. Das 
gewünschte Kontrast-Verhältnis zwischen der dunkelsten Stufe und 100% 
ergibt die kürzeste PWM-Zeit, und die wiederum bestimmt Deine 
Refresh-Rate. Irgendwann flimmert es, wie bei KFZ-Rückleuchten.

Falls Du Multiplexing einsetzen willst: 'Bit Angle Modulation' (BAM) 
hilft bei gegen Flackern und wurde in vielen Beiträgen diskutiert, zum
Beispiel im Beitrag "Ansteuern von 300 RGB-LEDs".

BAM ist hier beschrieben:
https://www.mikrocontroller.net/attachment/207919/BitAngleModulation.pdf

: Bearbeitet durch User
von Nick R. (kamayo)


Lesenswert?

Torsten C. schrieb:
> einen "Ausgangsstrom der Pins", bestimmt durch R_ext.

Das habe ich nun verstanden und auch im Datenblatt gefunden. Danke

Das flackern hatte ich Anfangs noch wo ich mit delay gearbeitet habe was 
ich dann runtergesetzt habe bis kein flackern mehr zu sehen war.

Werde nun aber erstmal bissel schlafen und alles setzen lassen waren 
viele neue Sachen auf einmal :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.