Pages: 1 [2] 3 4   Go Down
Author Topic: 4 zu 16 Decoder in anderer Form  (Read 2014 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Faraday Member
**
Karma: 79
Posts: 2727
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Du verstehst das falsch. Denke nicht in dem Sinne als ob du da irgendwas durch schiebst. Das Schieben dient nur dazu um aus einem seriellen Ausgang 16 parallel Ausgänge zu machen. Davon bekommst du gar nichts mit.

Du hast eine Funktion wie shiftOut(byte) in der IDE. Die schiebt dir dann das Byte raus und es erscheint an den SR Ausgängen. Wenn man das zweimal macht hat man 16 Ausgänge. Wenn du eine neue Zeile der Wertetabelle willst werden zwei neue Bytes rausgeschoben.
« Last Edit: July 06, 2013, 12:55:51 pm by Serenifly » Logged

Wien
Offline Offline
Edison Member
*
Karma: 23
Posts: 1658
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

genau. Du schreibst IMMER 16 werte rein. und natürlich geht das viel schneller. noch viel schneller als Du es zb von anzeigen auf alten stereoanlagen kennst.

gruß stefan
Logged

Offline Offline
Faraday Member
**
Karma: 79
Posts: 2727
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Also kann ich die werte Seriell reinladen und die Ausgabe erst aktivieren, wenn alle da sind? Oder versteh ich das jetzt falsch?
Schau dir mal das Datenblatt an. Die Schieberegister sind intern gelatcht. Das heißt sie haben einen Zwischenspeicher und der wird erst raus geschrieben wenn ein Latch Enable Signal kommt.

Siehe hier:
http://arduino.cc/en/Reference/ShiftOut

Code:
   digitalWrite(latchPin, LOW);
    shiftOut(dataPin, clockPin, LSBFIRST, data1);  
    shiftOut(dataPin, clockPin, LSBFIRST, data2);
    digitalWrite(latchPin, HIGH);


Mit "2Hz ist alle 500ms. Das ist eine Ewigkeit." gehe ich davon aus, dass das auch schneller geht?
Ja, wesentlich schneller. Genau kann ich es dir nicht sagen, aber wahrscheinlich ein paar hundert kHz. Die Limitierung kommt daher dass jeder Wert einzeln durch die ganzen Flip-Flops geschoben werden muss (ähnlich einem Ripple-Counter) und natürlich den µC Takt. Aber so schnell brauchst du das dann doch nicht smiley
« Last Edit: July 06, 2013, 01:11:42 pm by Serenifly » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entschuldigt mein Unwissen.

Habe mir nun das Datenblatt genau angeschaut vom 74HC595...

Der wird es wohl werden... Also min 2 davon.

Damit probier ich es dann.

Bin noch Frischling auf dem ganzen Gebiet. Den Schiebetakt erzeuge ich am Besten im Board um das mit den Daten sauber hinzubekommen. Richtig?
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Offline Offline
Faraday Member
**
Karma: 79
Posts: 2727
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das ist in der IDE schon implementiert. Du musst da um nichts kümmern. Du definierst nur den Daten-Pin, den Clock-Pin und Latch-Pin.

Alles hier mit Beispiel beschrieben:
http://arduino.cc/en/Reference/ShiftOut
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Vielen Dank nochmal!

Ihr seid mir eine sehr große Hilfe.
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Schieberegister kommt nicht in Frage.
Die geforderte Funktion kann nicht erfüllt werden.

Das ganze soll am Ende eine "Balken"-Anzeige mit LEDs werden.
Um eine möglichst hohe Auflösung des darzustellenden Analogwertes hinzubekommen, brauche ich eben so viele Pins. Das Analogsignal ändert sich sehr schnell und die Anzeige soll mit min 2Hz aktualisiert werden.

Ansteigender Wert ist ja kein Problem mit dem Schieben. Das Absinken jedoch smiley-roll-blue

Die Daten werden seriell in das Schieberegiste hineingeschoben und paralell an den Ausgängen ausgegeben.
Die Taktfrequenz kann für des Schieberegister 100Mhz betragen. Der Arduino kann mit der SPI-Schnittstelle bei 1/4 Systemtakt teoretisch 16 Bit (2 Schieberegister) fast bis auf 250kHz Wiederholrate kommen. Weil Du die Daten auch berechnen mußt, wird es eher in der Nähe von 10kHz sein. Um auf 2Hz zu kommen mußt Du der Arduino viel Warten  smiley-wink smiley-wink

Das Problem ist eher, daß der 74HC595 nur 70 mA Gesamtstrom an allen Ausgängen geben kann ( wenden dieses Limits an den Spannungsversorgung bzw Masse-Pin). Darum mußt Du um 8 LED ansteuern zu können den LED-Strom auf 8mA begrenzen, einen  Treiber , zB den ULN2803 dazwischenschalten oder einen  TPIC6C595N verwenden (kostet zwar ein vielfaches des 74HC595 genaugesagt um die 2€)

Grüße Uwe

Logged

Offline Offline
Faraday Member
**
Karma: 79
Posts: 2727
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ja, da mit Strom wollte ich auch gerade schreiben und musste erst mal nachgucken smiley

Die machen zwar bis zu 35mA pro Ausgang, was sich erst mal super anhört, aber dann insgesamt nur 70mA. Das kommt darauf an was du da genau dranhängen hast. 3mm LEDs oder eine kleine Bargraph-Anzeige würden gehen.

Normalerweise treibt man aber keine LEDs mit Logik-ICs. Weiß nicht wieso man da in diesen Beispiel nicht hinschreibt, dass es etwas hingepfuscht ist. Die 220 Ohm da, lassen nämlich den Strom zu hoch werden, aber es funktioniert halt gerade noch so.
« Last Edit: July 06, 2013, 01:19:30 pm by Serenifly » Logged

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Entschuldigt mein Unwissen.

Habe mir nun das Datenblatt genau angeschaut vom 74HC595...

Der wird es wohl werden... Also min 2 davon.

Damit probier ich es dann.

Bin noch Frischling auf dem ganzen Gebiet. Den Schiebetakt erzeuge ich am Besten im Board um das mit den Daten sauber hinzubekommen. Richtig?

Für Unwissen brauchst Du Dich nicht zu entschuldigen. Wir alle haben mal klein angefangen und sind auch keine Allwissenden.
Ich ausgenom..auah, äh auch ich.  smiley-wink smiley-wink smiley-wink smiley-wink
Grüße Uwe
« Last Edit: July 06, 2013, 02:19:07 pm by uwefed » Logged

AREA COLOGNE
Offline Offline
Edison Member
*
Karma: 15
Posts: 1065
I am 1 of 10 who understands binary
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ao mit einem Aufwändigen Programm bin ich mit shiftout auf120hz gekommen wegen des großen Programms . Mit shiftput via spi kam ich dann auf 1khZ bei 8 schieberegistern hinterieinader.
Gruß
Der Dani.

Deine zwie hz sind locker zu machen. Der alte zustand bleibt ja bei schieberegisten anstehen bis du die neuen daten drin hast und dann den "ausgabe" pin aktivierst. Und das kannst du mit normalen shifout mindestens 100mal in der Sekunde machen.
Logged

So ist das Leben:
Manchmal bis du das Denkmal, manchmal die Taube!

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Das wäre meine nächste Frage gewesen... Also mit dem alten Zustand smiley-cool

Ich bestelle mir mal eine handvoll und probier es denn mal aus.
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Forum Moderator
BZ (I)
Offline Offline
Brattain Member
*****
Karma: 234
Posts: 20193
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wünsch Dir gutes Gelingen.
Uwe
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Danke!

Hab noch ein IC gefunden, womit es realisierbar wäre.

LM3914 - damit ist eine Balkenanzeige möglich.

Bau mir das ganze natürlich über ein arduino+SR, da ich sowieso ein wenig rechnen muss und es interessanter ist.
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Offline Offline
Faraday Member
**
Karma: 79
Posts: 2727
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Für den LM3914 brauchst du aber ein Analog-Signal um ihn ansteuern. Und der Arduino hat keinen D/A-Wandler. Das kommt darauf an was da genau angezeigt werden soll. Wenn die Anzeige-Werte erst irgendwie berechnet werden müssen geht das nicht. Aber als Voltmeter z.B. wäre das natürlich interessant. Lautstärke-Regelung ließe sich auch machen, aber da muss man die Spannung entsprechend anpassen.
« Last Edit: July 08, 2013, 02:24:49 am by Serenifly » Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 73
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ich weiß. Ohne Anpassung nicht verwendbar.

Zur Not PWM-Ausgang und den Arithmetischen Mittelwert zur Wertvorgabe nehmen...

Aber ich bleibe beim SR smiley-cool
Logged

Um Dinge zu erleben, die du noch nie erlebt hast, ist es nötig Dinge zu tun, die du noch nie getan hast

Pages: 1 [2] 3 4   Go Up
Jump to: