Wie steuere ich 200 Relais mit einem Mikrocontroller?

Ich möchte 200 Relais steuern, ich möchte einen AVR-Controller verwenden. Da ich keine Pins mehr habe, dachte ich daran, den Mikrocontroller (für Routinen und solche Dinge) an ein FPGA anzuschließen und den Ausgang des FPGA zur Steuerung des Relais zu verwenden.

Ist das eine gute Idee oder gibt es eine andere Möglichkeit, die einfacher und effizienter zu implementieren ist?

Mehr Informationen wären nützlich. 1) Wechseln viele Relais gleichzeitig oder wird immer nur ein Relais umgeschaltet? 2) Wie schnell müssen die Relais aktualisiert werden?
Es gibt mehrere kostengünstige Optionen, aber bei jeder gibt es Kompromisse. Zu wissen, was Ihnen wichtig ist, würde uns helfen, Sie in eine gute Richtung zu lenken.
IMO, es hängt davon ab, wie schnell Sie diese Relais steuern können möchten. Der einfachste Weg ist die Verwendung einiger Arten oder serieller Controller, I2C oder SPI sind die gebräuchlichsten und einfachsten, aber für 200 benötigen Sie 25 Controller mit jeweils 8 Relais.

Antworten (2)

Sie sollten eine Art Adressierungssystem oder Demultiplexer verwenden. Es gibt Demultiplexer-Chips, die Sie verwenden können. Wenn Sie beispielsweise genügend Demultiplexer verwenden, um 256 Ausgänge von 8 Adressleitungen zu erhalten, können Sie bis zu 256 Relais verwenden, vorausgesetzt, die Relais ziehen genügend Strom, um davon angetrieben zu werden. Und Sie wollen eine Möglichkeit, die Daten zwischenzuspeichern.

Wenn Sie genug Pins haben, würde ich es so machen:

Ihre Schaltung verfügt über 5 Adressleitungen, 8 Datenleitungen und eine Taktleitung, die es Ihrem Mikroprozessor ermöglichen, bis zu 256 Relais zu steuern.

Damit Ihr Mikroprozessor die Relais steuert, würde er ein Byte wie folgt an die Schaltung ausgeben:

  1. Setzen Sie ein Byte (8 Bit) auf die Datenleitungen Ihrer Schaltung
  2. Stellen Sie die Adresszeilen ein und bestimmen Sie, an welchen Stapel von 8 Relais Sie die Daten senden möchten.
  3. Nehmen Sie die Uhrlinie hoch und dann niedrig.

Wenn Sie 256 Relais steuern möchten, benötigen Sie bei einem Datenbus von 8 Bit 5 Adressleitungen. Zwischen allen fünf Adresszeilen können die verschiedenen Kombinationen einen von 32 Standorten auswählen, wobei jeder „Standort“ 8 Ihrer Relais darstellt, deren Daten über die 8 Datenleitungen einstellbar sind. 8 x 32 = 256.

Für die Decoder könnten Sie den 54154 oder ähnliches verwenden. Jeder davon hat 4 Eingänge und 16 Ausgänge. Sie würden zwei davon benötigen. Oder Sie könnten so etwas wie 7411138 verwenden, das 3 Eingänge und 8 Ausgänge hat. das pdf ist hier . Es gibt ein Beispiel für den Aufbau einer Schaltung mit 5 Adressen und 32 Ausgängen mit mehreren Chips - genau das möchten Sie.

Dann würden Sie 32 Stück 8-Bit-Latches , wie den 74374, und auch 32 Stück oktale Darlington-Treiber benötigen , die den Spulenstrom des Relais verarbeiten würden. Es gibt jedoch einige Oktal-Latch-Treiber-ICs , die diese beiden Anforderungen vereinen. (Das ist für 256 Relais. Für 200 würden Sie 25 brauchen, nicht 32)

Sie könnten die Relais nicht direkt von einem FPGA mit Strom versorgen, da sie zu viel Strom ziehen würden und durch die Spitze beschädigt würden, die die Relaisspule beim Abschalten erzeugt. Sie müssten also 32 oktale Darlington-Treiber sowie das FPGA haben.

Ist es nicht besser, einfach verschiedene CPLDs und einen Mikrocontroller für das Timing und dergleichen zu verwenden und einen FET zwischen den CPLDs und Relais zu verwenden?
Jeder für sich; Sie könnten ein CPLD verwenden, es ist eine Frage der Präferenz. Und FETs zwischen dem CPLD und den Relais würden funktionieren, aber Sie würden Dioden benötigen, die über den Relaisspulen in Sperrrichtung vorgespannt sind, da die Sperrspannungsspitze sonst die FETs und möglicherweise die CPLDs beschädigen würde. Der Vorteil, kein CPLD zu verwenden, besteht darin, dass Sie die Schaltung auf verschiedene Platinen aufteilen können, was die Energieverwaltung vereinfachen kann. (200 Relais verbrauchen eine Menge Strom und Platz, ich nehme an, Sie möchten es aufteilen).

CPLD-Geräte sind pro Pin billig, aber Sie sind möglicherweise besser dran, einen modulareren Ansatz zu verwenden, wie z.

Welche Methode Sie auch verwenden, Sie müssen auf das Layout achten, insbesondere auf die Erdung, da Sie mit erheblichen Strömen von den Spulen und möglicherweise erheblichen EMI von den Kontakten zu tun haben. Wenn Sie viele Platinen haben, kann es sich lohnen, die Opto-Isolation von Datenleitungen pro Platine in Betracht zu ziehen.

Wenn eine so lange Kette (Taktversatz!) Und eine galvanische Verbindung der Masse machbar ist (abhängig von der Anzahl der Relais, die "auf einmal" schalten), wäre der TPIC meine Wahl. Andernfalls sind IO-Extender wie MCP23017 + Optokoppler/Treiber für jedes Relais möglicherweise die bessere Wahl.
@WoutervanOoijen Ja, 200 Relais, die gleichzeitig schalten, klingen nach einem Rezept für eine Katastrophe. 8 könnte in Ordnung sein, besonders mit Isolation. Wenn die TPICs oder andere SRs verwendet werden, gibt es keinen Grund (außer dem Einsparen von Pins), nur eine Kette zu verwenden - 25 oder 13 wären besser.
Die Verwendung von CPLD ist wirklich praktisch, denn wenn ich irgendetwas getan habe, muss ich nur neu programmieren. Denken Sie, dass es besser ist, CPLDs zu verwenden oder mehr Zeit zu verbringen, bevor Sie mit dem Projekt beginnen, um komplizierte kombinatorische Schaltungen zu entwerfen?
Die Schaltungen sind sehr einfach, logischerweise kann nicht viel schief gehen, was durch das Reparieren der Treiber-Firmware nicht behoben wird. Modularität ist schön, wenn sich die Spezifikation ändern könnte. Ist das Hinzufügen von 10 Relais teuer oder billig? Die größte Sorge, die mit großer Wahrscheinlichkeit wahr wird, ist das Festlegen von Leiterplatten und das Auffinden eines EMI-Problems wie Flattern oder intermittierender Betrieb oder Resets. Die Verwendung mehrerer CPLDs würde auch funktionieren.