Forum: Mikrocontroller und Digitale Elektronik 74HC595 Verständnisfrage


von Kay (Gast)


Lesenswert?

Hallo,

habe mir schon die Suche hier im Forum zu Hilfe genommen. Habe nur noch
eine kleine Verständnisfrage zum Schieberegister 74HC595. Wenn ich eine
LED Matrix wie hier :

http://home.wanadoo.nl/electro1/avr/images/dotmat.gif

aufbaue, dann nehm ich 2 Schieberegister. mit dem 1. steuere ich die
Anoden an und mit dem 2. Schieberegister steuere ich die Kathoden über
Transistoren gegen masse an.

ist das richtig ?

mfg Kay

von Stefan (Gast)


Lesenswert?

Im Roboternetz.de Bascom Forum hab ich eben was dazu gelesen

von Kay (Gast)


Lesenswert?

hi,

kann sein, ich hab da was reingeschrieben. ich habe aber nur was wegen
der Ansteuerung gefragt. hier wollte ich was zur hardware fragen.

mfg Kay

von Oryx (Gast)


Lesenswert?

Hallo Kay,
sollte so gehen. An die Vorwiderstände für die LEDs und die Basis wirst
du ja gedacht haben.
Immer nur einen Transistor durchschalten und das passende Muster auf
die LEDs geben.


Oryx

von Kay (Gast)


Lesenswert?

Hallo Oryx,

also an die Vorwiderstände für die LEDs und die Basis habe ich gedacht
:-) Wieso nur einen Transistor durchschalten ? wenn ich alle LEDs
einschalten will, muss ich ja alle Transistoren durchschalten, damit
alle Kathoden auf masse liegen und die Leds angehen oder ?

mfg Kay

von Oryx (Gast)


Lesenswert?

Hallo Kay,
schalte alle Transistoren durch(also Pin 1, 3, 10, 7, 8).
Jetzt schalte deinen Pin 4. Es werden wohl alle LEDs in der Reihe
leuchten.

Also die Reihen der Reihe nach durchschalten(wenn Pin 10 auf GND),
den Pin 4 einschalten. Dann leuchtet die im Bild angegebene LED.

Deshalb heist das Ding auch LED-Matrix.

Oryx

von Kay (Gast)


Lesenswert?

Hi Oryx,

genauso wollte ich das auch machen. hab mich vielleicht etwas falsch
ausgedrückt. trotzdem danke. weißt Du zufällig, wie ich das ding mit
bascom ansteuern kann ????? bräuchte da dringend hilfe

mfg Kay

von Oryx (Gast)


Lesenswert?

Hallo Kay,
ich mache in C und C++.

Oryx

von leo9 (Gast)


Lesenswert?

Über die Ansteuerung brauchst du dir vorerstkeine Sorgen machen, mit den
Schieberegistern ist die Schaltung nicht realisierbar. Die HC595 können
maximal 7mA liefern. In den Matrixen sind meist LEDs mit Inenn=20mA
drin. Durch das zeitliche Multiplexen kommst du auf einen Dutycycle von
maximal 20% (wenn du nur eine Stelle ansteuern willst, bei drei oder
vier Ziffern wirds noch schlechter). Somit bleiben bei der LED ca.
3,5mA über (etwas salopp formuliert ;-) und die wird wahrscheinlich nur
noch glimmen.

grüsse leo9

von Kay (Gast)


Lesenswert?

hallo leo9,

ich benutze Low Current LEDs und benutze an den ausgängen des 74HC595
einen Treiber namens ULN2803. müsste dann doch funktionieren oder ?

mfg Kay

von leo9 (Gast)


Lesenswert?

Hallo Kay,

die Transis verwendest du von den Kathoden gegen Masse, dort sind sie
absolut notwendig, da ja dort der 7-fache LED-Strom auftreten kann (es
könnten ja alle Punkte einer Spalte ein sein).
Die Anoden werden direkt aus den Schieberegistern gespeist?

Die effektive Helligkeit deiner LEDs kannst du nur ausprobieren,
dimensioniere den Vorwiderstand aber auf jedenfall auf max. 7mA. Wenn
du nur eine Stelle ansteuerst bleibt pro LED eben ein effektiver Strom
von 7/5 = 1,4mA über (in meiner oberen Berechnung mit 3,5mA hab ich
irgendwie falsch gedacht). Ob die Low-Current LED mit dem quasi halben
Strom ausreichend hell leuchtet kannst du nur ausprobieren.

Eventuell wäre auch eine Lösung die Anoden direkt an den uP
anzuschließen. Die meisten AVRs können gut 20mA.

Wenn du detailierte Fragen bezüglcih Ansteuerung hast kannst du dich
gerne melden, ich hab vor kurzem ein ähnliches Projekt mit Mega 8 und
Schieberegistern in Bascom realisiert. (Bin aber mittlerweile zu c
konvertiert, weil dort einfach der effektivste Code rauskommt).

grüsse leo9

von Oryx (Gast)


Lesenswert?

Hi,

bei
http://www.semiconductors.philips.com/pip/74HCT595.html
laut Philips Datenblatt Seite 8:
Io +- 35mA
VCC or GND current +- 70 mA

Da jeder Ausgang nur eine LED treiben muss, sehe ich da kein Problem.
Die 9mA sind nicht ganz abwegig, wenn es auf die Schaltzeiten ankommt.
Bei den Leuchtdioden sind ein paar nSek. aber wohl egal.

Oryx

von leo9 (Gast)


Lesenswert?

@oryx,
leider steht aber keine Ausgangsspannung für diesen Strom dabei, auf
Seite 9 siehst du dass bereits bei 4mA bis 700mV am Schalttransistor
abfallen. Bei 35mA sieht der Wert sicher noch schlechter aus, leider
fehlen die entsprechenden Diagramme im Datenblatt. Laut der Übersicht
auf deinem link kann der HC übrigends etwas mehr Strom als der HCT.

Sollange Kai sich nicht äußert, wie viele Stellen er ansteuern will,
kann man über den Duty-Cycle eh nur spekulieren und die Effektivität
der LEDs spielt auch noch mit. Alles in allem kann die Schaltung
ausreichen um eine entsprechende Helligkeit zu erreichen, wenns seriös
sein soll würde ich entweder Transis oder stärkere Treiber einsetzen.

grüsse leo9

von Kay (Gast)


Lesenswert?

Hallo Leo9,

wenn ich die Anoden direkt an den AVR schalte, dann brauch ich bei ca.
520 LEDs ( zusammgeschaltet zu ner Matrix ) 26 Portpins. das ist e
bissl viel. deswegen will ich ja das Schieberegister. kann ich denn
nicht hinter jedes Schieberegister einen ULN2803 (500mA max) schalten ?
müsste doch auch gehen. Ich will insgesamt 576 Leds zu ner Matrix
zusammenschalten. also 24*24. dafür brauche ich 6 Schieberegister. von
den Portpins gehe ich zu den ersten 3 Schieberegistern, von dort über 3
ULN2803 an die Anoden. Die Kathoden schalte ich über die anderen 3
Schieberegister und Transistoren gegen masse. So stell ich mir das vor.
Bitte um Berichtigung :-))

Jetzt weiß ich halt nur nicht, wie ich das mit Bascom realisieren soll
? Da wäre ich dankbar wenn du mir vielleicht nen codebeispiel für 1
Schieberegister geben könntest. damit könnte ich experimentiern und
dann selbst weitermachen.

danke
gruß Kay

von leo9 (Gast)


Lesenswert?

Die ULN2803 sind npn-Arrays, d.h. sie können "irgendwas" gegen Masse
Schalten - in diesem Fall die Kathoden. Von V+ zu den Anoden brauchst
du aber pnp-Transisitoren. Die sind als array praktisch nicht zu
bekommen und wenn dann nur zwei oder drei pro Gehäuse, da würde ich
Einzeltransistoren verwenden. Auch würde ich den ULN2804 gegen ULN2004
ersetzen, hat zwar nur 7 Transistoren ist dafür preisgünstiger und
leichter zu bekommen.

Ob man bei 24 Spalten noch eine vernünftige Helligkeit von den LEDs
bekommt ist fraglich, allgemein spricht man von 10% Duty-Cycle.

Ich würde an deiner Stelle mal eine Schaltung aufbauen mit der du die
LEDs mit unterschiedlichen Signalen versorgen kannst (Dauerein, 10% und
4% (enstpricht 25 Spalten) und unterschiedliche Vorwiderstände
einsetzt. Wenn du mal den notwendigen Strom kennst, können wir die
Schaltung entsprechend auslegen.

grüsse leo9

von Kay (Gast)


Lesenswert?

Hallo Leo9,

ich werde nächste woche wahrscheinlich die 576 LEDs bekommen. werde sie
dann zu ner Matrix schalten. Dann geh ich hin und schalte ich pnp
transistoren hinter die 3 Schieberegister für die Anoden und npn
transistoren für die Kathoden. dann dürfte ich doch keine probleme mehr
bekommen. Aber wie gesagt, ich fange mal klein an und bau mal erst 1
Schieberegister mit bascom ansteuern. bitte helf mir da auch nochmal.
ich komme mit dem DataSheet vom 595N net klar

danke
gruß Kay

von leo9 (Gast)


Lesenswert?

ich würde die Matrix und die Transistoren noch nicht zusammenlöten, du
kennst die notwendige Dimensionierung noch nicht.
Test erst bis zu wie "wenig" Duty-Cycle du deine LEDs ansteuern
kannst um noch ausreichende Helligkeit zu erhalten. Danach kannst du
festlegen wieviele Spalten deine Matrix haben darf und davon sind die
Transistoren abhängig, pnp werden wohl Wald und Wiesen Typen sein, aber
bei den Spaltentreibern sehe ich Probleme.
Sollten die 4% reichen wäre das ein theoretischer LED-Strom von
3mA/4%*100% = 75mA für die gleiche Leistung, das wird die LED nicht
aushalten, also nehmen wir mal die Hälfte als Pulsstrom durch eine LED
an. Wenn alle Spalten leuchten muß der Spaltentransi 24*37mA=740mA
aushalten, das wird der ULN nicht lange aushalten.
Senkst du jetzt den Spaltenstrom auf 500mA (und hast damit keine
Reserve in der Dimensionierung) bekommt eine einzelne LED nur gute 20mA
und das Stromäquvalent für Dauerein liegt bei 0,8mA (20mA/100*4) und
damit wird vermutlich auch eine LOW-Current nicht mal glimmen.

Die Ansteuerung steht doch eh im Datenblatt:
Initialisierung:
MR auf Low, warten
MR auf High
OE auf Low
Shift auf Low
Strobe auf Low
DS auf Low
wenn du nun ein byte ausgeben willst:
for i = 1 to 8
  if (byte and 1) = 1 then
    DS = High
  else
    DS = Low
  end if
  Shift = High
  Shift = Low
  byte = byte / 2  // um ein bit nach rechts schieben
next i
Strobe = High
strobe = Low

grüsse leo9

von Kay (Gast)


Lesenswert?

Hi leo9,

sorry, das ich dich schon wieder nerve, aber ich komme mit dem Code
nicht klar. Wie müsste der Aussehen, damit am Schieberegister folgender
Zustand ist : 10101010 ?

ich werde Dich dann auch in Ruhe lassen :-)

danke
Kay

von Wolf-Ruediger Juergens (Gast)


Lesenswert?

Kay, schau dir mal die Application note AN102 auf
http://www.mcselec.com/applicat.htm an dort wird findest du Basic
Source für die 595 Ansteuerung mit BASCOM

Wolf

von Kay (Gast)


Lesenswert?

Danke Wolf werde es da mal probieren.

gruß Kay

von Kay (Gast)


Lesenswert?

Hi,

bin schon wieder hier. ich habe mir mal die *.bas von Mcselec gezogen.
Aber ich komme damit net klar.da wird die serielle genutzt um die
schieberegister anzusteuern. und dann ist die Doku in Englisch. Ist net
ganz mein Fall. aber da werde ich durchmüssen. Wenn vielleicht sich
jemand mit Basom und Schieberegistern auskennt und dann noch Zeit hat,
mir etwas beizubringen, dann würde ich mich freuen, wenn er sich melden
würde.

danke
Kay

von Dirk (Gast)


Lesenswert?

Hi,

wo ist den dein Problem bei dem Beispielsprg?


Ich hatte mal hier im Forum eine LED MATRIX mit zwei Schieberegistern
74HC595 und Treibern gestellt(Hardwareschematic).

Beim Source koennte ich dir ein bischen unter die arme greifen. Ich
kann aber nur helfen wenn du konkrete Fragen stellst.


Mfg

Dirk

von leo9 (Gast)


Lesenswert?

Hallo Kay,

das hab ich doch schon weiter oben erläutert:
byte = &b10101010
wenn der 1-er auf Q7 raus soll, mußt du bei der Abfrage Bit 7 prüfen
(if byte and 128 = 128); für MR, OE, Shift, Strobe und DS mußt du die
verwendeten Pins einsetzen und =High wird in basic zu set und =Low wird
als reset geschrieben.

Was isz daran noch unklar, die Syntax von Bascom wirst du ja
hoffentlich können, ansonsten schließe ich mich Dirk an: auf konkrete
Fragen wirst du sinnvolle Antworten bekommen, je allgemeiner desto
weniger.

grüsse leo9

von Kay (Gast)


Lesenswert?

Hi Dirk,

habe es so aufgebaut wie es im Source steht. habe aber nur 1
Schieberegister. Wenn ich einschalte, dann leuchten alle LED´s. LED´s
sind über einen 1kOhm Widerstand gegen VCC geschaltet. also ist der
Zustand von Q0 bis Q7 = 0 !! es tut sich aber nichts anderes

mfg Kay

von Kay (Gast)


Lesenswert?

hi,

habe das Schieberegister so wie hier angeschlossen:

http://wiki.mikrocontroller.net/Porterweiterung_mit_SPI.htm

wenn ich mit ponyprog meinen Chip auslese oder beschreibe, dann tut
sich mal wenigstens was an den LEDs. juhuuuuuu. jetzt müsste ich nur
noch per SPI das Schieberegister steuern können. Aber da werde ich
versuchen mich selbst durchzuschlagen. Will euch net weiter stören.

mfg Kay

von Wolf-Rüdiger Jürgens (Gast)


Angehängte Dateien:

Lesenswert?

Kay, probiere mal den angehängten Bascom Source.
3 HC595 als Porterweiterung an Port D2, D3, D4

Wolf

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.