Frage:
Wie kann ich 128 (oder mehr) Magnete steuern?
goodguys_activate
2010-12-05 05:48:26 UTC
view on stackexchange narkive permalink

Ich muss 128 Magnetspulen mehrmals pro Sekunde einzeln ein- oder ausschalten. Ich möchte dies entweder von einem PC oder einem eingebetteten Gerät aus steuern.

Wie würden Sie mir empfehlen, dies zu tun? Vielleicht gibt es eine Möglichkeit, die Adressierung einer Gruppe von (8 oder 16) Magneten zu aktivieren und ihnen einen Einschalt- oder Ausschaltbefehl zu senden?

In Anbetracht dessen, was da draußen ist, was ist der einfachste Weg, dies zu tun? Was ist der beste oder am meisten bevorzugte Weg?

Ich betrachte diese Magnetventile, die jeweils etwa 50 US-Dollar kosten. Teilen Sie Informationen, wenn Sie billigere / bessere kennen. Der Zweck ist die Kontrolle eines Innenwasserfalls. Es ist Niederdruck, so dass das gesamte Wasser nach unten tropft.

http://www.ascovalve.com/Applications/ProductSearch/ProductInfo.aspx?productid=8262H001AC120/60,110/50D&userAction=view

Würde ein Sprinklerventil funktionieren? Benötigen Sie den Magneten, um eine 120-V-Spule zu verwenden, oder können Sie eine niedrigere Spannung (z. B. 6 V, 12 V) verwenden?
Ich kann eine niedrigere Spannung verwenden ... aber ein rein mechanisches (nicht computergesteuertes) Sprinklerventil wird es wahrscheinlich nicht schneiden. Was würde meine benötigte Spannung bestimmen?
Sprinklerventile sind nicht so einfach. Sie werden ohne erheblichen Druck nicht funktionieren und es dauert auch eine Weile, bis sie geschlossen sind.
Dies kann Ihnen eine bessere Vorstellung davon geben, woran ich arbeite: http://physics.stackexchange.com/questions/1642/low-pressure-pulsating-series-of-water-droplets
Ich denke nicht, dass handelsübliche Ventile schnell genug sind, um dies zu erreichen, es sei denn, sie sind groß genug, dass kleine Schwankungen der Betätigungszeit keine Rolle spielen. Ich denke, Sie müssen sich speziellere Ventile ansehen, die speziell für schnelle und gleichmäßige Ein- / Ausschaltzeiten entwickelt wurden. Wie Sie sie ein- oder ausschalten, ist wahrscheinlich das geringste Ihrer Probleme.
hier noch eine Spulenkanone?
Auf alibaba.com nach Lieferanten aus dem Fernen Osten bieten einige Wassermagnetventile für 7 USD ab einer Mindestbestellmenge von 100 an. Nur ein Gedanke. Beispiel: http://www.alibaba.com/product-gs/249331163/Water_engineer_solenoid_valve.html
Danke @Linker3000! - Ich frage mich, wie diese Ventile zu @mikeselectricstuffs Kommentar passen. Welche Art von Ventil wäre präzise genug (und physikalisch kühl genug), um einen häufigen präzisen Wechsel zu bewältigen? Aus Kostengründen gefällt mir Ihr Link am besten!
"Rapid Succession" könnte irreführend sein. Sie können die Magnetspulen nicht schnell genug schalten, um die Geschwindigkeit der digitalen Schnittstelle zu belasten. Das Problem liegt in den Hardwarekosten und im Design.
@reemrevnivek - Ich verstehe. Vielleicht sollte ich eine neue Frage stellen. Stört es Sie, mir zu helfen, die Frage richtig zu formulieren? Ich denke, dass dieses Forum (Elektronik) immer noch gut passt. Lassen Sie mich wissen, wenn Sie anders denken.
Es ist ein schönes Forum; Elektronik ist mehr als nur die digitale Schnittstelle. Ich habe eine Bearbeitung vorgenommen, die dazu beitragen soll, den Fokus eher auf die Benutzeroberfläche als auf die Geschwindigkeitsbeschränkungen zu richten.
Sie müssen wissen, wie groß die Magnete sind - Spannung / Strom.
Ich schaue mir diese an, die 6 bis 8W ziehen. Wenn Sie eine bessere / billigere kennen, die die Freisetzung von Wasser "Tröpfchen" kontrolliert, teilen Sie. 50 US-Dollar pro Einheit sind teuer
Sieben antworten:
markrages
2010-12-05 07:37:23 UTC
view on stackexchange narkive permalink

FTDI-USB-Chip + verkettetes 595-Schieberegister. Setzen Sie für jedes Relais einen separaten Transistor ein.

Weitere Details:

Hier wird eine Kette von 74hc595 beschrieben: http: //www.arduino .cc / de / Tutorial / ShiftOut (Es werden nur zwei angezeigt, aber das Konzept kann auf eine beliebige Anzahl von 595 erweitert werden.)

Um die Kette anzutreiben, werden drei Signale benötigt. Daten, Latch und Clock.

Sie können einen FTDI-Part im "Bitbang" -Modus verwenden, um drei Signale von der Computersteuerung zu generieren. Um das FTDI im Bitbang-Modus zu verwenden, verwenden Sie libftdi (Sie können auch die offiziellen FTDI-Treiber verwenden, aber libftdi ist meiner Erfahrung nach weniger problematisch). Ein FT232R verfügt über genügend Pins, um dies zu tun. FTDI verkauft einen DIP-Breakout und Sparkfun verkauft auch einige Breakouts.

alt text

Beachten Sie, dass Sie 128 2N2222s und 128 330 Ohm-Widerstände benötigen. (Sie können Widerstands-Arrays erhalten, die möglicherweise einfacher zu verwalten sind.)

Ich habe die Schaltung unter der Annahme einer 12-V-Versorgung für Ihre Relais und nicht weniger als 24-Ohm-Spulen gezeichnet. Ist dies nicht der Fall, benötigen Sie möglicherweise einen stabileren Transistor oder MOSFETs mit Logikpegel. Der 2222 ist ungefähr so ​​billig wie ein Transistor, und wenn Sie 128 Stück kaufen, macht das einen Unterschied.

Ich habe keine Bypass-Kappen oder den genauen 232R-Anschluss gezeigt. Lesen Sie das Datenblatt.

OK, ich habe gerade den Magneten gesehen, den Sie steuern möchten. 2N2222 funktioniert nicht. Sie müssen 120 VAC an den Magneten schalten. Sie können also entweder ein kleines Relais (mit 2N2222) zum Schalten der 120 V verwenden oder ein Halbleiterrelais verwenden, das Logikeingänge aufnimmt und direkt mit dem 595-Ausgang verbindet.

OK, hier ist der Code, um dies mit libftdi zu steuern. Pinbelegung im Quellcode. apt-get installiere libftdi-dev und kompiliere dann wie folgt: "gcc test_595.c -lftdi"

  / * Dieses Programm wird unter der GPL, Version 2 * / # include <stdio.h> vertrieben #include <ftdi.h> # define HC595_CT (1) // Anzahl der 595 Chipsint main (int argc, char ** argv) {struct ftdi_context ftdic; int f, i;
vorzeichenloser char buf [2 * 8 * HC595_CT + 1]; // Latch-Impuls, 8 * HC595_CT-Taktimpulse if ((f = ftdi_init (&ftdic)) < 0) {fprintf (stderr, "ftdi_init failed \ n"); return f; } f = ftdi_usb_open (&ftdic, 0x0403, 0x6001); if (f < 0 && f! = -5) {fprintf (stderr, "ftdi-Gerät kann nicht geöffnet werden:% d (% s) \ n", f, ftdi_get_error_string (&ftdic)); Ausfahrt (-1); } printf ("ftdi open erfolgreich:% d \ n", f); // FTDI-Kabelzuweisungen: #define BIT_DATA (1<<0) // 1: orange. TXD, "Daten" // 2: gelb. RXD, nicht verwendet # define BIT_CLOCK (1<<2) // 4: grün. RTS, "Uhr" #define BIT_LATCH (1<<3) // 8: braun. CTS, "Latch" ftdi_enable_bitbang (&ftdic, BIT_DATA | BIT_CLOCK | BIT_LATCH); // setze Null * buf = 0; f = ftdi_write_data (&ftdic, buf, 1); vorzeichenloses Zeichen * b = buf; vorzeichenlose Zeichendaten; vorzeichenloser Zeichenstatus; if (argc == 2) {data = atof (argv [1]); } else {data = 0x5a; } printf ("Daten senden% d \ n", Daten); für (i = 0; i<8; i ++) {state = (Daten & (128L>>i))? BIT_DATA: 0; * b ++ = Zustand; state | = BIT_CLOCK; * b ++ = Zustand; } * b ++ = BIT_LATCH; f = ftdi_write_data (&ftdic, buf, (b-buf)); ftdi_disable_bitbang (&ftdic); ftdi_usb_close (&ftdic); ftdi_deinit (&ftdic);}  

Und hier ist ein Bild meines Testaufbaus:

alt text

(ich habe das verwendet TTL-232R-3V3 -Kabel.)

Ich bin ein bisschen neu in all dem und ich unterrichte fast alles selbst. Kannst du mir etwas mehr erzählen? IE-spezifische Produkte oder andere Tipps. Ich durchsuche jetzt alle FTDI-Produkte nach der richtigen USB-Lösung.
Ich werde die Schaltung später für Sie skizzieren.
FT245 ist wahrscheinlich besser als FT232
Welchen Vorteil bietet der 245 gegenüber dem 232R?
Dieser Magnet ist in einer Vielzahl von Spulenspannungen von 6 V bis 240 V erhältlich. Ich würde wahrscheinlich die 12-V-Spule wählen, wie zum Beispiel die 8262G002 12 / DC. Die 120-V-Spule hatte jedoch eine Leistung von 6 bis 8 W, sodass etwas Größeres als eine 2n2222 möglicherweise sicherer ist.
@markrages - FT245 hat mehr E / A. Da der Bit-Bang-Modus alle E / A gleichzeitig aktualisiert, können Sie mehrere Schieberegister parallel ausführen.
Das obige Schema benötigt außerdem Bypass-Kappen für jeden IC (0,1 uF Keramik).
Möglicherweise müssen Sie größer als 0,1 uF werden oder zusätzliche Kappen haben, da die Schaltung einige ziemlich große Ströme schaltet.
FT245 kann 8 E / A-Leitungen bit-knallen. FT232R kann 8 E / A-Leitungen bit-knallen. Zähle ich falsch?
+1 - Sehr schön. Minimale Teile und Erfahrung erforderlich mit einem zuverlässigen Ergebnis.
Was ist mit Triacs zur Steuerung der Magnete?
@Thomas, Sie würden immer noch einen Optoisolator benötigen, um den Triac anzutreiben. Mit anderen Worten, Sie würden Ihr eigenes Halbleiterrelais rollen. Ich habe das schon einmal gemacht und es funktioniert, aber vorgefertigte SSRs sind jetzt wirklich wettbewerbsfähig: http://www.futurlec.com/RelSS.shtml
Um das zu erweitern, was W5VO gesagt hat: Ein 2N2222 funktioniert in dieser Anwendung einfach nicht.Unter der Annahme von ~ 9 Watt für die Spule bedeutet dies bei 12 Volt einen Spulenstrom von 750 mA, und die gezeigte Schaltung liefert nicht so viel Strom wie ein Sättigungspegel.Und während wir uns die Dinge ansehen, ist die 1N4148-Flyback-Diode WAAAY zu klein.Schließlich frage ich mich, ob Sie über die Systemanforderungen nachgedacht haben.Wenn Sie aus irgendeinem Grund alle Ventile gleichzeitig einschalten müssen, sind 128 x 0,75 oder 96 Ampere erforderlich.Das ist eine ziemlich große 12-Volt-Versorgung.
Connor Wolf
2010-12-06 11:27:58 UTC
view on stackexchange narkive permalink

Gereinigtes Schema mit Feinheiten (Bypass-Kappen, PIN-Nummern usw.):

alt text

Mit dem FT245 können Sie verwenden mehrere kürzere Schieberegisterketten, da Sie mehr E / A haben.

Ich habe es nicht so gezeichnet, aber da sind Sie. Wie auch immer, der Schaltplan wird in Altium Designer erstellt. Wenn Sie die Schaltplandateien möchten, kann ich sie Ihnen senden, aber Sie benötigen die Software, um sie zu öffnen.

Dies ist ein verbessertes Schema für die Antwort von Markrages, richtig? Sie sollten es dort wahrscheinlich nur als Bearbeitung einfügen.
Mein Beispielcode benötigt 1 + 2 * 8 * N FTDI-Perioden für eine volle Schicht. 16 595 würden also 257 Perioden dauern. Der FT232R verwendet nur die asynchrone Baudrate zum Takten in Bitbang-Samples. Bei 115200 Baud beträgt eine Registeraktualisierung also 2,24 ms.
Im Idealfall ja, aber die USB-Schnittstelle ist der langsame Teil. Ich habe ein Projekt, das auf einem FT245 im Bit-Bang-Modus basiert, und ich erhalte ~ 10 Updates pro Sekunde. Jetzt mache ich das in Python, also gibt es fast definitiv einen gewissen Interpreter-Overhead, aber ich kann mir nicht vorstellen, dass Sie besser als 1000 Updates pro Sekunde sind, wenn man bedenkt, dass jedes Update ein vollständiges USB-Paket benötigt. Wenn Sie in C nichts anderes tun, als den Befehl FT_Write vom Treiber aus aufzurufen, kann ich nicht sehen, dass er viel schneller ist.
Sie wissen, dass Sie mehr als ein Byte gleichzeitig schreiben können, oder?
Im Bit-Bang-Modus? Nein, ich habe es nicht bemerkt. Na egal, dann. Mist.
Hahahahaha. Fühle ich mich nicht schlau? Wie auch immer, ich habe diese in einer Anwendung verwendet, in der mehrere Verbindungen zur Hardware bestehen. Der wichtige Aspekt ist also die Laufzeit bis zu den E / A-Pins und nicht der Rohdurchsatz. Grundsätzlich bewirkt ein Hardware-Schreibvorgang, dass das Gerät über einen anderen Kanal antwortet, und die Antwortzeit war alles, was ich mir angesehen habe.
Jep. Latenz ist der Killer mit USB, 1 ms Best-Case. Ich bin nicht sicher, welches Abfrageintervall die FTDI-Chips anfordern.
Wie bei der Markrages-Schaltung ist der 2N2222 dem Job nicht gewachsen.Sicher, die Datenblätter geben einen absoluten Maximalstrom von 1 A an, aber das ist einfach zu nahe.Für eine Sättigung bei einem Strom von ~ 750 mA benötigen Sie 75 mA Basisstrom, und ein 74HC595 bietet dies auf keinen Fall.Ich bin jedoch mit der verbesserten Flyback-Diode einverstanden.
@WhatRoughBeast - Wenn Sie mehr Strom benötigen, verwenden Sie entweder einen Darlington oder einen FET.Ich habe den Transistor nicht zu genau ausgewählt.
krapht
2010-12-05 12:08:59 UTC
view on stackexchange narkive permalink

Gibt es einen Grund, warum ein 7- bis 128-Decoder nicht geeignet wäre? Die Verwendung eines FTDI-Chips und eines seriellen Schieberegisters scheint ein Overkill zu sein.

Ja. Mit einem reinen Decoder können Sie jeweils nur 1 Ventil öffnen.
Wie teuer sind Verriegelungsrelais?
akohlsmith
2011-02-21 09:26:27 UTC
view on stackexchange narkive permalink

Welche Lösung Sie auch verwenden, ich würde empfehlen, einen Blick auf die Stromversorgung für dieses Biest zu werfen. Sie haben das Potenzial, versehentlich wirklich viel Strom zu ziehen (Kurzschluss eines Transistors aufgrund eines Transienten, ein Taktfehler, der eine '1' für viele, viele Ausgänge usw. einstellt) - Einzelne PTCs an jeder Spule schützen eine einzelne Spule und ich würde auch entweder einen Shunt-Widerstand mit niedrigem Ohm (0,1?) oder einen Hall-Effekt-Stromsensor vorschlagen, der die Stromversorgung des gesamten Treiberabschnitts unterbricht, wenn eine Überlast erkannt wird. Ein Operationsverstärker, der die Überlastung im Laufe der Zeit integriert, ist wahrscheinlich ein gutes Hardware-Trip-Design, aber Sie können dies auch in einem Mikro tun, wenn dies Ihr Ding ist.

kenny
2010-12-05 07:14:01 UTC
view on stackexchange narkive permalink

Ich würde 16 von diesen oder etwas Ähnlichem in Serie fahren. Nicht sicher, wie Sie Ein / Aus bestimmen möchten, aber ein Low-End-8-Pin-PIC (

Tim Williscroft
2011-02-21 07:47:15 UTC
view on stackexchange narkive permalink

Matrix-Laufwerk.

Mutiplexen Sie sowohl Ihre Quellen als auch Ihre Senken.

Schließen Sie die Magnete in Arrays an. (Zeilen &-Spalten)

viel weniger Elektronik.

Schaltungen können wie abgebildet sein, aber Sie können mit viel weniger auskommen, wenn Sie sie zusammenfassen.

Dies würde die Adressierung eines einzelnen Magneten ermöglichen. Das OP möchte jedoch alle Magnete gleichzeitig steuern.
@markrages würde ein Magnet den Unterschied bemerken?
Mal sehen, nehmen wir an, Sie haben einen 9x8-Multiplex und treiben den Magneten 1/9 der Zeit an. Mit einer Fangdiode am Magneten kann eine Weile Strom fließen, wobei der Magnet geschlossen bleibt. Nehmen wir keine Verluste an, dann wollen wir die äquivalente Energie als Gleichstrom des Magneten in den Magneten einbringen. Fahren Sie es also mit der Nennspannung * 9. (um den Nennstrom zu erhalten, di / dt = v / L). 24-V-Magnete würden also 216-V-Treiber benötigen. Wenn Sie unter der Spannung bleiben, über der die Spule einen Lichtbogen bildet, funktioniert dies möglicherweise.
LEDs können leicht gemultiplext werden, da sie in Sperrrichtung offen sind. Für Magnetspulen benötigt jeder aus diesem Grund einen Vorwiderstand.
@markrages: Wenn jeder Magnet sowohl eine Seriendiode zur Versorgung als auch eine Reverse-Parallel-Catch-Diode hatte, sollte Multiplexing sinnvoll sein, obwohl 9: 1 ein bisschen viel zu sein scheint. Meine Neigung wäre, wenn die Anwendung dies zulässt, die Verwendung eines 4: 1-Kabelmultiplex mit einem Tastverhältnis von 12,5% für die meisten Magnete. Jede Reihe mit Magneten, die neu erregt wurden, würde kurzzeitig ein Tastverhältnis von 62,5% erhalten. Dies würde leicht schwankende "Greif" -Operationen des Magneten erfordern, würde aber eine schöne Reduzierung der Schaltkreise ermöglichen.
Abhängig von der Spannung kann es auch möglich sein, zwei Reihen mit einem Tastverhältnis von 37,5% "greifen" zu lassen oder einfach alle Reihen mit einem Tastverhältnis von 25% zu versorgen und zu prüfen, ob sie damit "greifen" könnten.
user3045
2011-02-21 08:55:37 UTC
view on stackexchange narkive permalink

Wenn Sie alternativ ein wenig Geld zum Verbrennen haben, können Sie jederzeit in einen Fez Domino investieren und den I2C-Bus auf 320 E / A erweitern.

Der Fez Domino ist ein eingebettetes C # -Gerät. Die im PDF erwähnte E / A-Karte verwendet jedoch einen Standard-I2C-Bus, der bei den meisten uCs üblich ist.



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 2.0-Lizenz, unter der er vertrieben wird.
Loading...