Zwei 8-Kanal-Relaiskarten mittels BCD zu Dezimal-Decoder am Raspberry

  • Hallo,
    nachdem ich kürzlich stolzer Besitzer eines Rapi’s geworden bin, wollte ich ihn natürlich auch einer sinnvollen Verwendung zuführen. Diese fand ich in der Bewässerung meines Gartens.
    Also schnell mal eine 8-Kanal-Relaiskarte (Affiliate-Link) gekauft und :danke_ATDE: Dank:danke_ATDE: dieses Forums zum Laufen bekommen.
    Jetzt musste ich jedoch schmerzlich erfahren, dass mein Garten doch etwas größer ist als bisher angenommen… 8 Relais reichen nicht wirklich aus, besser wären 10. Eine weitere Karte mit zwei Relais könnte ich über einen zusätzlichen ULN2803A sicherlich noch einbinden, da ich noch zwei GPIO’s frei habe. Diese sind jedoch GPIO 14&15 (UART), deswegen möchte ich da nicht wirklich ran. Außerdem wären ein paar Relais mehr für die Zukunft nicht schlecht. Also stelle ich mir zwei 8-Kanal-Relaiskarten am Rapi vor. Diese würde ich gerne über zwei BCD zu Dezimal-Decoder (z.Bsp. CD4028BE oder SN74LS42N), zusammen mit einem Inverter (damit ich 16 Ausgänge erhalte) ansteuern. Dann bräuchte ich nur 4 RPIO’s dafür. Leider hält sich mein Verständnis für solche IC’s in Grenzen. Ich sehe meinen Rapi schon qualmen, wenn ich weiter drauf los frickle und diesen Weg einschlage. Über den I2C-Bus möchte ich nicht gehen. Meine Suche, bezüglich BCD zu Dezimal-Decodern an einem Rapi, über Google und der Forum-Suche, brachten nicht wirklich Licht ins Dunkle - ob, wie und welche IC’s ich anschließen kann.
    Kennt jemand ein ähnliches Projekt, wo zwei 8-Kanal-Relaiskarten an einem Rapi, über BCD zu Dezimal-Decoder, angeschlossen wurden/werden?


    VG
    STorte

  • 74HC4028 wäre die Antwort versorgt mit 3,3V brauchen keinen Inverter und treiben die 2x ULN 2803a direkt mit 3,3V am Eingang


    du brauchtst nur 6 GPIO, 4 für die BCD Eingänge und je einen für das Enable für jeden 74HC4028
    oder nimmst gleich einen 74HC154 Hexdecoder (der gibt aber negativ aus und braucht für jeden Ausgang den Inverter)


    ABER die schalten immer nur 1 Ausgang je IC, 2 oder 4 zur Zeit sind nicht möglich

    lasst die PIs & ESPs am Leben !
    Energiesparen:
    Das Gehirn kann in Standby gehen. Abschalten spart aber noch mehr Energie, was immer mehr nutzen. Dieter Nuhr
    (ich kann leider nicht schneller fahren, vor mir fährt ein GTi)

    Edited once, last by jar ().

  • Wie waer's mit einem Schieberegister ?


    Das wuerde bloss 2-3 Pins fuer eine beliebige Anzahl Ausgaenge brauchen.


    Im Moment kann ich gerade keine Typen benennen, aber so weit ich mich
    erinnere, war das auch schon mal ein Thema im Forum. Oder Google hilft
    sicher auch gerne.

  • Hallo,
    habe mir einmal die Varianten mit dem Portexpander (MCP23S17) und den Schieberegistern zu Gemüte geführt... Naja, ich habe es versucht.
    Bei beiden Varianten sehe ich jetzt schon einige Probleme bei der Programmierung, wenn ich auf die Idee kommen sollte mehrere Relais, für eine unterschiedliche Dauer, ansteuern zu wollen. Aber das sind Probleme, welche ich erst später genauer betrachten werde. (Besser wäre eine Möglichkeit 16 Ausgänge über je eine eigene Adresse ansteuern zu können...:denker: )
    Ich habe mich erst einmal für die Variante mit den Schieberegistern entschieden. Als Schieberegister wählte ich den M74HC959, bin mir jedoch nicht sicher ob der M74HCT595 eine bessere Wahl wäre.


    Hier zur Theorie wie ich es mir denke, dass es unter Umständen funktionieren könnte:
    Alle VCC's auf 5V und die Eingänge: SI, SCK und RCK bekommen 3,3V (zum Steuern) von den GPIO's . (Ist es besser die VCC's (der Schieberegister) auf 3,3V zu legen, oder ist das egal?)
    SCLR wurde auf 5V gelegt (oder besser 3,3V?) da ich es noch nicht vor habe die Register über einen GPIO zurück zu setzen, sondern diese leer schiebe.
    G liegt auf Masse.
    Sollte das Ganze bis hier funktionieren und sich nix in Rauch verwandelt haben, wie stelle ich dann sicher, dass beim Einschalten der ganzen Angelegenheit, also wenn ich den Rapi starte und das Skript für die Steuerung noch nicht läuft, die Ausgänge der Schieberegister alle Low sind? Kann ich dieses erreichen, indem ich eine RC-Kombi einsetze? Also: 5V --> Widerstand --> SCLR --> Kondensator --> Masse? Ich glaube jedoch gelesen zu haben, dass dadurch nur die (Schiebe-)Register gelöscht und nicht die Ausgänge auf Low gesetzt werden. Wie geht es richtig?


    Ich habe eine Zeichnung als pdf angehängt, so wie ich es mir vorstelle - erst einmal ohne RC-Glied.


    :danke_ATDE:
    STorte


    Rasp2 - Schematic.pdf

  • Na jetzt sag nicht, die Sache mit dem Schieberegister ist einfacher als der MCP23S17 zu handhaben. Die 16 GPIOs kannst Du sauber einzeln ansprechen. Da gibt es wenn es einfach werden soll fertige Bilbliotheken für c und Python. WiringPi unterstützt den Portextender auch.
    Wenn Du es mit I²C versuchst, bietet sich der MCP23017 an. Mit dem arbeite ich lieber, weil er sich per Hardware adressieren lassen kann und man so GPIOs "ohne Ende" bekommt.

  • Nö sage ich ja auch nicht. Im Prinzip nehmen sich momentan beide Varianten nicht viel (für mich). Wahrscheinlich gibt es auch für Schieberegister fertige Bibliotheken, da man sie ja auch irgendwie per SPI ansprechen kann (glaube ich jedenfalls irgendwo gelesen zu haben). Den einzigen Vorteil, welchen ich jetzt gerade bei der MCP23S17-Variante sehe, ist, dass dort die Ausgänge, beim Einschalten, einen definierten Zustand haben und ich muss nicht so viel löten. Die Programmiererei ist für mich in beiden Fällen so ungefähr gleich (so mehr oder weniger), was sich aber erst zeigen wird, wenn ich programmiere...