Forum: Mikrocontroller und Digitale Elektronik LED Matrix Betrieb?


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 Eric vauwee (Gast)


Lesenswert?

Hallo liebe Community,,

BMir ist eine 16x48 LED Matrix zugeflogen.

Ich würde diese gerne mit einem Arduino Nano betreiben.

Verbuat isnd auf der LED Matrix 12 Module (8x8), ULN2003 Transitor 
Arrays und HC191 an (CLK) und HC164 Cascade (DATA).

Ich habe an dem Modul zwei Stecker mit den Anschlüssen; 1 Data next 
Modul,  2 Clock, 3 Data, 4 Load und 5 GND.

Wie kann ich diese nun betreiben? Hat jemand vielleicht ein Beispiel 
Sketch? Da hier kein klassischer Maxwell LED Treiber verbaut ist bin ich 
mir unsicher ob ich mit den klassischen Sketches aus der 
Beispielbibliothek diese betreiben kann.


Vielen Dank für die Hilfe.

von MaWin (Gast)


Lesenswert?

Eric vauwee schrieb:
> Da hier kein klassischer Maxwell LED Treiber verbaut ist bin ich
> mir unsicher ob ich mit den klassischen Sketches aus der
> Beispielbibliothek diese betreiben kann

So ist das bei Kinderspielzeug Arduino.

Man lebt so abgeschottet von der wirklichen Welt,
daß man sich in ihr nicht mehr zurecht findet.

Mir würde erst mal Sorgen machen, daß deine Module am Stecker keine 
Versorgungsspannung haben.

Wenn du den gefunden hast, verbinde Data Next Modul mit Data des 
nächsten Moduls, dann hast du nur noch:

DATA, CLOCK und LOAD.

Dann würde mir Sorgen machen, daß die Module zwar zählen, aber nicht 
decodieren in 8 Reihen. Wahrscheinlich hast du da einen Chip übersehen.

Bei jedem LOAD geht es also zur nächsten Reihe, bloss wann fängt es bei 
Reihe 0 an ? Nach dem Einschalten der Versorgung, oder gibt es ein REST 
oder wird LOAD unterschiedliche decodiert (LOAD while CLOCK oder so).

Egal wie, ein Bit anlegen, ein mal CLOCK, nächsten bit, nochmal Clock 
bis zum 96 bit, und dann CLOCK und LOAD zeigt eine Zeile an. Bevor die 
durchbrennt, muss man schon die nächste einschieben und das nächste LOAD 
kommen, nach dem 8. LOAD geht es bei der ersten Reihe weiter.

Das ist nicht viel anders, als fertige Chips es machen, aber fertige 
Sketches werden nicht passen. Wie gesagt, es fehlt auch noch das 
definierte Zurückstellen auf Reihe 0.

von Falk B. (falk)


Lesenswert?

@ Eric vauwee (Gast)

>Verbuat isnd auf der LED Matrix 12 Module (8x8), ULN2003 Transitor
>Arrays und HC191 an (CLK) und HC164 Cascade (DATA).

Mach ein gescheites Bild und schick es uns. Ebenso wäre ein gezeichneter 
Schaltplan nett.

>Ich habe an dem Modul zwei Stecker mit den Anschlüssen; 1 Data next
>Modul,  2 Clock, 3 Data, 4 Load und 5 GND.

>Wie kann ich diese nun betreiben?

Wie die allermeisten LED-Matrixen. Daten seriell reinschieben und 
und anzeigen lassen, das Ganze per Multiplex.

> Hat jemand vielleicht ein Beispiel
>Sketch?

Nö.

> Da hier kein klassischer Maxwell LED Treiber verbaut ist bin ich
>mir unsicher ob ich mit den klassischen Sketches aus der
>Beispielbibliothek diese betreiben kann.

Wahrscheinlich nicht. Dazu braucht man einen Schaltplan, den man per 
Reverse Engineering vom Board gewinnen muss.

von Eric vauwee (Gast)


Lesenswert?

MaWin schrieb:

> Mir würde erst mal Sorgen machen, daß deine Module am Stecker keine
> Versorgungsspannung haben.

Der Stecker ist natürlich da, habe diesen jetzt aussen vor gelassen da 
mir klar war wie zu belegen ;)

> Wenn du den gefunden hast, verbinde Data Next Modul mit Data des
> nächsten Moduls, dann hast du nur noch:
>
> DATA, CLOCK und LOAD.

Die gnaze Matrix ist ein riesen Klopper PCB, habe somit kein "next 
modul". Ich gehe mal davon aus das beide DATA Lines zu verbinden sinnlos 
ist...?


Vielen Dank für den hilfreichen Beitrag und die schnelle Antwort!

von Eric vauwee (Gast)


Angehängte Dateien:

Lesenswert?

Falk B. schrieb:
> Mach ein gescheites Bild und schick es uns. Ebenso wäre ein gezeichneter
> Schaltplan nett.

Bild von der Rückseite ist im Anhang für einen Schaltplan würde ich eine 
Weile brauchen. Vorderseite ist nur LEDs.

Ich habe im Netz zu dieser Matrix diesen BASCOM Code gefunden:
http://pastebin.com/qfV5hGHt
(Verlinkt weil ich hier nicht 50 Zeilen Code spammen will)

Vielen Dank für die Hilfe!

von Falk B. (falk)


Lesenswert?

@ Eric vauwee (Gast)

>Bild von der Rückseite ist im Anhang für einen Schaltplan würde ich eine
>Weile brauchen. Vorderseite ist nur LEDs.

Ok, aber man sieht nicht alle Details, um daraus einen Schaltplan zu 
generieren. Es wird aber grob so sein, dass eine Handvoll 
Schieberegister ala 74HC595 drauf und dort seriell die Daten 
reingetaktet werden. Die Steuern das Bitmuster für eine Zeile an. Ein 
Schieberegister wird einen 1:8 oder 1:16 Dekoder für die 16 Zeilen 
ansteuern, auch diese Daten müssen seriell reingetaktet werden. Mit dem 
LOAD Puls werden alle seriellen Daten ins parallele Ausgangsregister 
übernommen und werden damit aktiv. Sprich, die Daten für die neue Zeile 
bzw. die neue Zeile wird aktiv.

>Ich habe im Netz zu dieser Matrix diesen BASCOM Code gefunden:
>http://pastebin.com/qfV5hGHt
>(Verlinkt weil ich hier nicht 50 Zeilen Code spammen will)

Ja, das ist aber nur ein Ansatz. Was der 191er dort macht, ist mit etwas 
unklar. Und auch warum man 164er Schieberegister genommen hat, die haben 
kein Ausgangsregister!

von MaWin (Gast)


Lesenswert?

Eric vauwee schrieb:
> habe somit kein "next modul".

Ach so, ich dachte das sind 8x8 Module.

Deine ist kriminellerweise 16-fach gemultiplext, da werden sich noch 2 
74HC138 verbergen.

> nach dem 8. LOAD geht es bei der ersten Reihe weiter

Es geht also erst nach der 16. Reihe wieder mit der ersten weiter.

von Michael U. (amiga)


Lesenswert?

Hallo,

164er sind auch auf der "Pearl"-Werbe-Laufschrift drauf.
http://www.pearl.de/a-PE9441-2430.shtml
Alle Zeilentreiber werden ausgeschaltet, alle Spaltenwerte werden in die 
164er Kette geschoben und dann die nächste Zeile für x ms aktiviert. 
Dann wieder alles aus usw.
Ist ein Mega8 drauf, die 7 Zeilen Zeilen werden dort über SMD-Mosfets 
direkt vom AVR gesteuert.

Gruß aus Berlin
Michael

: Bearbeitet durch User
von Matrix (Gast)


Lesenswert?

es werden erst sechs bytes reingetaktet (zeileninhalt), dann ein byte 
welches die zeile binär codiert darstellt reingetaktet und dann load, 
das ganze 16 mal und dann wieder von vorn.
diese anzeigen gibt es derzeit bei ebay.

von Matrix (Gast)


Lesenswert?

Den Bascom Code habe ich verfasst.
Fragen hierzu können hier gestellt werden.

von Matrix (Gast)


Lesenswert?

191_load Alias Portd.2
sind alias Bezeichner für bestimmte I/O Pins
191_load = 1 heist also Port D2 ist logisch 1

Datenbyte = &B11001100
ist der Inhalt einer Zeile eines 8x8 Moduls
das Byte wird zur Demonstration einfach wiederholt und so ergibt sich 
ein Streifenmuster

Datenbyte.a
ist ein Bit des Bytes
jenachdem welchen Wert der Schleifenzähler hat das 1 ... 8 Bit eines 
Bytes

For A = 0 To 7
  164_clk = 0
  164_data = Zeile.a
  164_clk = 1
Next A
taktet seriell den Binärwert der aktuellen Zeile raus
Zeile.a ist wieder Bit des Bytes der Variable "Zeile"
a enspricht dem Schleifenzähler A
Beispiel: 3. Zeile ---> die Variable "Zeile" hat den Wert 00000011

von avrhd (Gast)


Lesenswert?

Hallo, ich habe auch ein solches LED Modul erworben und möchte es mit 
meinem alten STK200 ansteuern.
Dazu schrieb ich das hier zitierte Beispiel-BASCOM-Programm in AVR 
Assembler um.
Meine Programm soll ein beliebiges Bitmuster über die SPI des AT90S8515 
auf die 16x48 LED Matrix geben.
Bevor ich das laufen lasse und Spannung an das Modul gebe meine Frage:

Ich plane 125 Hz Zeilen Multiplex Frequenz, ist das zu langsam?
Gibt es eine Multiplex-Untergrenze, bei der die LEDs durchbrennen 
können?

Wo gibt es einen Schaltplan zur 16x48 LED Matrix?
Hersteller Webseite?

von Matrix (Gast)


Lesenswert?

Ich habe im Beispiel-Code der Einfachheit halber den Refresh in der 
Main-Loop durchgeführt.
In meiner produktiven Variante habe ich mit einem Timer gearbeitet.
Jeder Timeraufruf schreibt eine Zeile, mit jedem Timeraufruf wird die 
Zeile um 1 erhöht.
Ich nutzte den 8Bit Timer0 mit Prescale 64

von Matrix (Gast)


Lesenswert?

1
$regfile = "m32def.dat"
2
$crystal = 8000000
3
4
$hwstack = 150
5
$swstack = 200
6
$framesize = 200
7
8
Config Portc = Output
9
10
191_load Alias Portc.5
11
164_data Alias Portc.6
12
164_clk Alias Portc.7
13
14
Dim Datenbyte As Byte
15
Dim Zeile As Byte
16
Dim A As Byte
17
Dim B As Byte
18
19
Config Timer0 = Timer , Prescale = 64
20
On Ovf0 Tim0_isr
21
Enable Timer0
22
Enable Interrupts
23
Start Timer0
24
25
Datenbyte = &B11001100
26
27
Do
28
Loop
29
End
30
31
Tim0_isr:
32
Timer0 = 6000
33
  Zeile = Zeile + 1 : If Zeile = 16 Then Zeile = 0
34
  191_load = 0
35
  For B = 1 To 6
36
    For A = 0 To 7
37
    164_clk = 0
38
    164_data = Datenbyte.a
39
    164_clk = 1
40
    Next A
41
  Next B
42
43
For A = 0 To 7
44
  164_clk = 0
45
  164_data = Zeile.a
46
  164_clk = 1
47
Next A
48
49
191_load = 1

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.