Hi :) Vor nicht allzu langer Zeit hab ich mir beim Wucherpreis-Elektronikhändler meines Vertrauens dieses Schieberegister geleistet: CD4015B. Mit 3 davon würde ich gerne meinen Arduino um 24 Output Pins erweitern (22 wenn man die verbrauchten Pins abzieht). Mein Aufbau ist simpel: Jedes Schieberegister kriegt Spannung und Erdung und alle Resetpins sind mit Minus verbunden. Alle Clockpins hängen gemeinsam an einem Arduino-Digitalpin. Data A vom ersten Register ist mit einem Digitalpin des Arduinos verbunden. Danach hab ich immer den letzen Outputpin eines Registers mit dem Datapin des nächsten verbunden. Also Q4 A mit Data B am ersten IC; Q4 B vom ersten IC mit Data A vom zweiten IC und so weiter. Wenn ich jz mit einem simplen Arduino-Sketch versuche, 24 High-bits in den Aufbau zu shiften, wird zwar das erste Register ganz voll (A und B bereich), danach bleiben alle anderen ICs völlig leer. Ich hatte Angst, die Bauteile wären evtl kaputt, also hab ich anstelle des ersten ICs eines der baugleichen anderen verwendet und kam zum gleichen Ergebnis. Im Datenblatt steht auch, dass sich die Bauteile eignen, um auf über 8 bits erweitert zu werden. Meine Breadboard Verkabelung hab ich jz schon mehrmals überprüft und ich kann keinen Fehler finden. Hat jemand hier vllt eine Idee, was mein Problem sein könnte? Danke für eure Hilfe :) Link zum Datenblatt: https://asset.conrad.com/media10/add/160267/c1/-/de/000172715DS01/datenblatt-172715-cd4015be-logik-ic-schieberegister-push-pull-schieberegister-pdip-16.pdf EDIT: Schaltplan angehängt
:
Bearbeitet durch User
Moritz T. schrieb: > EDIT: Schaltplan angehängt Programm (.c, .ino) anhängen wäre auch ne prima Idee.
Hallo, Moritz! Deinen Arduino so zu erweitern, müsste zwar funktionieren, ist aber nicht sehr elegant. Denn die Schieberegister haben kein Latch, mit dem die reingeschobenen Daten synchron auf Ausgänge gegeben werden. Alle angeschlossene Peripherie kriegt also die durchgeschobenen Nullen und Einsen mit. Wenn es sich "nur" um LEDs handelt, die du leuchten lassen willst, ist es relativ unkritisch, weil das menschliche Auge das nicht bemerken wird, wenn es schnell genug passiert. Willst du aber mehr damit machen, solltest du über einen Portexpander nachdenken. Via SPI oder I²C gibt es gute und günstige, z. B. von Microchip, die sich für solche Zwecke eignen. Wenn dein Anspruch jetzt eher akademisch ist, würde ich mal ganz langsam takten, so mit 1 Hz etwa, und schauen, ob die erste Eins nach vier Takten auch auf Q4A ankommt und nach acht Takten auf Q4B zu sehen ist UND auf DATA/A vom nächsten IC anliegt. (Nach deiner Beschreibung funktioniert das erste Byte ja.) Dann muss sie eigentlich mit dem nächsten Takt auch auf Q1A ausgegeben werden. Viele Grüße Jochen
Im Übrigen würde ich den Fehler, falls ein IC defekt ist, dann eher beim zweiten Schieberegister vermuten, nicht beim ersten. Wenn U3 ja alles durchschiebt, wäre U2 eine mögliche Fehlerquelle und ein Tausch sinnvoller gewesen. Aber du wirst dich schon rantasten. Die ganze Logik kannst du ja so langsam bedienen, dass du alle Pins in Ruhe mit dem Multimeter durchklingeln kannst.
Moritz T. schrieb: > Hat jemand hier vllt eine Idee, was mein Problem sein könnte Schaltplan sollte funktionieren, hast du Abblockkondensatoren verbaut und hängt an den Ausgängen schon was dran (wie eine LED oder so ?) Tip das ganze langsam mit 1 Hz durchzutakten und LED über mindestens 1k Widerstände anzuschliessen ist klug.
Danke für die ganzen Antworten! Dass die Register keinen Latch haben wusste ich schon und das ist für meine Anwendung auch relativ unkritisch :) Das mit dem Testen durch umsetzen der ICs hab ich bisschen schlecht formuliert, ich hab natürlich die Bauteile getauscht und jedes einzelne an erster stelle probiert (und die selben jweils an den anderen stellen) Den Sketch hänge ich auch gleich an, ist aber nichts spektakuläres. Danke auf jeden Fall für eure Hilfe und dass ihr mir die Korrektheit des Schaltplans bestätigen konntet. Ich denke, ich werde es einfach mit dem Vorschlag von schoenf versuchen, also langsam bits einclocken und schauen, wo genau das problem liegen könnte.
Moritz T. schrieb: > Hier der Arduino Sketch Da haben wir das Problem doch schon: "Shifts out a byte of data one bit at a time." sagt die Doku zu shiftOut. Musst du also dreimal aufrufen für drei Bytes. Viele Grüße Jochen
Oh well ._. Naja, wer lesen kann ist eben klar im Vorteil... Jetzt hat es auf jeden Fall geklappt, vielen Dank euch allen :)
Dann erwähne ich noch den SN74LS595, der hat 8 Bits am Stück und ein Latch.
Dann erwähne ich den TCA6424. Kein Schieberegister, aber ein I2C-Portexpander mit gleich 24 Bit. Oder den PCA9539 oder PCA9555 mit 16 Bit, die sogar als Ein- oder Ausgänge verwendet werden können.
Wo ihr schonmal am erwaehnen seit, ueblicherweise hat man dafuer immer den CD4094 genommen weil der ein Latch hat. Olaf
Oder 74hc595... Heute auch komplett mit Code: https://www.makerblog.at/2015/01/das-schieberegister-74hc595-am-arduino/
Moritz T. schrieb: > um 24 > Output Pins erweitern (22 wenn man die verbrauchten Pins abzieht). Die beiden Pins sind nicht "verbraucht", die kannst du auch noch als Ausgänge nutzen! Dann hängen halt zwei Verbraucher an einem Ausgang.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.