Mini-I/O

Bisweilen werden „gerade mal schnell“ nur 1-2 Digitalausgänge benötigt. Leicht ansteuerbar, mit 24 Volt, für Schaltschrank-Geraffel und Relais.

Mit einem PC mit paralleler oder serieller Schnittstelle kaum ein Problem. Auch für 'nen Raspberry nicht. Nur eben diese schnittstellenverarmten PCs sind der Graus.

Zumeist ist noch eine umständliche externe Stromversorgung vonnöten.

Für Matlab, mit FT232R-Modul

Problemstellung

Gesucht: 1 Ventilsteuerung (Flüssigkeit oder Gas) aus Matlab. Ventil: 24 V, 100 mA. Das sind immerhin 2,4 W, das Teil wird heiß.

Weiter gedacht: Ich denke mal, ich leg's für 2 Ventile aus. Von Matlab aus ist eine serielle Schnittstelle am einfachsten anzusprechen. Lösungsmöglichkeiten:

  1. USB-Seriell-Konverter (von Reichelt, Ebay, Mediamarkt) und Transistor-Schaltstufe. Erfordert externes Netzteil. Maximal 2 (mit BREAK 3) Ausgänge. Liefe auch mit echter serieller Schnittstelle.
  2. FT232R-Modul (von Ebay) und Transistor-Schaltstufe. Externes 24-V-Netzteil oder (cleverer) Transverter 5 V → 24 V. USB erforderlich. Maximal 2 (mit BREAK 3) Ausgänge. Keine Firmware zu programmieren.
  3. Mikrocontroller-Modul mit USB. Praktisch ein Arduino Uno oder Leonardo. Externes 24-V-Netzteil oder (cleverer) Transverter 5 V → 24 V mit Mikrocontroller-Unterstützung (PWM + A/D-Wandler zur Spannungsmessung + Analogvergleicher zur Überstromabschaltung). USB erforderlich. Firmware zu programmieren. Auf viele Ein/Ausgänge erweiterbar.
  4. Wie 3. jedoch mit PIC16F1454/5/9 im Durchsteck-Gehäuse. Nur 1 (Universal-)Leiterplatte erforderlich, nicht 2 Geräte oder Platinen. Programmiergerät erforderlich.

Die Wahl fiel auf Lösung 2. Aber nur deshalb, weil dieser (= mein) Urlader mit I/O-Funktion zum Zeitpunkt noch nicht zur Verfügung stand. Heute (2017) wäre Punkt 4 mein Favorit.

Aufbau

Die Herstellung einer Leiterplatte ist zurzeit nicht möglich oder organisatorisch zu aufwändig. Daher der Pragmatismus mit der Lochstreifenplatte.

Wie üblich wurde nur Kram aus der Bastelkiste verbaut, keine neuen Sachen. Bis auf die Crimpkontakte für die Ventile, im Foto in der Mitte. Die ungewöhnlichen Bauteilbezeichnungen sind kein Muss beim Nachbau. So wurden Transistoren u.a. nach ihrer Anschlussfolge ausgewählt, für die günstige Bestückung auf der Lochstreifenplatte.

Für den Transverter diente die Vorlage aus dem Internetzteil- und Konverter-Handbuch, Bild 13.2.1 B (rechts). Statt der Stromregelung erfolgt Spannungsregelung mit einer Z-Diode D1.

Als Transformator L1 wurde eine 33-µH-Rollenkerndrossel mit einer Koppelwicklung mit 10 Windungen CuL-Draht versehen. Die Koppelwicklung bildet die Sekundärseite mit den Anschlüssen 3 und 4. Die Wicklungsanfänge — genauer, der Windungssinn untereinander — sind genau einzuhalten, sonst funktioniert der Transverter nicht.

Schaltplan. Erstaunlich: 6 Transistoren aber nur 4 Widerstände

Der Transverter begrenzt die Spannung bei 25 V und nimmt dabei 15 mA auf. Schwingfrequenz ≈1 MHz. Zieht ein Ventil an, bricht die Spannung auf immer noch ausreichende 19 V zusammen, die Frequenz auf ≈100 kHz, und die Schaltung nimmt ≈600 mA auf. Zu viel für USB, theoretisch. Man sollte nur jeweils 1 Ventil einschalten.

Aufbau-Foto mit Verdrahtung

Da die Ansteuerung mit High-aktiven Signalen hier ungünstig ist, wurden noch schnell mal zwei MOSFETs zur Invertierung eingesetzt. Die kleine Platine wurde damit endgültig voll.

Aufbauplan für Lochstreifenplatine

Inbetriebnahme

Wie bei allen USB-Seriell-Adaptern sollte der USB-Port nicht gewechselt werden, damit die COM-Nummer gleich bleibt. Der Treiber kann von FTDI heruntergeladen werden; bei Windows XP (aber nicht bei Windows 7) wird der Treiber vom Windows-Update-Server bereit gehalten.

Damit beim Anstecken nicht allzu viele Signalspiele auf DTR bzw. RTS herauskommen, sollte (unbedingt!) die PnP-Gerätesuche abgeschaltet werden. Dafür gibt es im Geräte-Manager, COMx→Eigenschaften unter „Erweitert“ ein entsprechendes Ankreuzfeld.

Der Zugriff unter Matlab erfolgt mit:
s=serial('com6')		% Schnittstelle öffnen
fopen(s)			% erforderlich!
s.RequestToSend='on'		% Ventil am Stecker „RTS“ einschalten
s.RequestToSend='off'		% Ventil ausschalten
s.DataTerminalReady='on'	% Ventil am Stecker „DTR“ einschalten
s.DataTerminalReady='off'	% Ventil ausschalten
fclose(s)
delete(s)			% Schnittstellenverbindung kappen
clear s				% Variable aufräumen

ULN2003 als Aufwärtswandler

Bastelidee: Ein ULN2003 mit seinen integrierten Freilaufdioden bietet sich als Aufwärtswandler zur Bereitstellung der 24 V als auch zum Schalten induktiver Lasten an! Wegen des Spannungsabfalls am Darlingtontransistor ist der Wirkungsgrad eher schlecht, daher nur für kleine Leistungen geeignet.

Bastelvorschlag in Durchsteck- oder SMD-Gehäusen

Interessant hierbei ist, dass keine Dioden benötigt werden; die Gleichrichterdiode ist im ULN2003 bereits enthalten, und Schottky ist bei 24 V nicht mehr so ausschlaggebend. Der Shunt überwacht den Summenstrom, und der Spannungsteiler die Ausgangsspannung. Im USB-Schlafmodus wird der Aufwärtswandler sowie die Lasten abgeschaltet, um die 500 µA Ruhestrom einzuhalten.

Eine MOS-Entsprechung des beliebten ULN2003 gibt es nicht. Dann muss man's aus einzelnen Logic-Level-nMOS-Transistoren sowie Dioden aufbauen: Als Transistoren bieten sich IRLML6344 an, als Diode MBRS140, für die Elektromagneten 1N4148.