Mit PC oder Notebook:

Messen, steuern, regeln per USB

Anwendungen für die Baugruppe
Technik-Kurzinfo:

Der Wunsch, ein (älteres) Notebook zur Steuerung, Regelung oder als Datenlogger zu verwenden bzw. einen elektrischen Verbraucher PC-gesteuert ein- bzw. auszuschalten, ist der Grund für diese Bauanleitung. Mit digitalen und analogen Ein- und Ausgängen ausgestattet, ist dieses Wochenendprojekt universell einsetzbar. Gewonnene Informationen lassen sich in Excel importieren und als Grafik darstellen.

Designziel war eine vielfältig nutzbare Baugruppe zur Steuerung und Regelung fast beliebiger digitaler und analoger Abläufe, solange die Datenaquisition nicht in Hochgeschwindigkeit erfolgen muss. Es stehen digitale Ausgänge zur Verfügung, davon sind zwei schon mit Relais verbunden. Digitale Eingänge lassen genug Spielraum, um TTL-Zustände zu erfassen. Dazu gibt es einen analogen Ausgang (0 bis 5 V) und vier analoge Eingänge. Die Kommunikation auf Seiten des PC sollte so simpel sein wie nur möglich, doch über das zukunftssichere USB erfolgen. Befehlsgeber ist immer der PC. Unter Windows wird vermutlich ein selbst geschriebenes, auf die speziellen Bedürfnisse des Anwenders zugeschnittenes Programm ablaufen, etwa, um einen Motor oder anderes zu steuern. Der Fantasie sind keine Grenzen gesetzt. Nichtprogrammierer finden mit dem bereitgestellten, auf der Heft-CD gespeicherten universellen Bedienersoftware ein geeignetes Betätigungsfeld. Eine interessante Alternative stellt die manuell Eingabe der Kommandos über ein beliebiges Terminalprogramm dar. Der Befehlssatz ist simpel und einprägsam. Dazu einige Beispiele:

Beispiele:

Auf die Abfragekommando „?" und „I" liefert die Platine umgehend eine Antwort, etwa den Wert der vier analoge Eingänge (z.B. „AnalogIn128,23,45,67") bzw. („DigIn00011111"). Für spezielle Einsatzfälle, etwa einer Motorregelung oder einer Heizungsteuerung vereinfacht sich die Programmierung der Hardware, die beispielsweise in Delphi- oder als Visual-Basic-Programm erfolgen kann, da die Kommunikation aus der Sicht der Software lediglich eine serielle Schnittstelle anspricht. Die dazu notwendigen USB-Treiber für Windows und andere Betriebssysteme wie Linux und MAC-OS sind frei verfügbar unter [1]. Laden Sie dort die virtuellen Com-Port-Treiber (VCP) für ihr Betriebssystem. Die Installation der Treiber beginnt nach Anschluss der Platine an einen USB-Port, danach erkennt Windows eine neue Hardware und erzeugt eine virtuelle Schnittstelle, z.B. COM7 etc..

Alles drauf

Welche Möglichkeiten bietet die Schaltung? Sieben digitale Ausgänge sind vorhanden, zwei davon sind auf je ein Relais geführt. Je Relais lassen sich gleichzeitig zwei Verbraucher kontrollieren. Zwar darf die geschaltete Spannung bis zu 250 V (Gleich- oder Wechselspannung) und die Leistung maximal 60 Watt betragen, doch sind die Relais eher dazu geeignet, nachgeschaltete Koppelrelais anzusprechen als unmittelbar 230-V-Verbraucher zu schalten. Die verbleibenden fünf digitalen Ausgänge sind gepuffert und bis zu 500 mA belastbar. Je Ausgang gibt es eine LED, die den jeweiligen Status des digitalen Ausgangs optisch signalisiert. Fünf digitale Eingänge (TTL-Pegel) stehen zum Anschluss allerlei Gerätschaften zur Verfügung. Spannungen von Null bis 5 Volt verarbeiten vier analoge Eingänge. Ein analoger Ausgang komplettiert die Baugruppe.

Das Schaltbild

Eine simple Ansteuerung der Hardware bedingt einen Mikroprozessor, welcher die als ASCII-Zeichenkette empfangenen Kommandos interpretiert und entsprechend reagiert. Gewählt wurde ein Atmel ATTiny 2313, weil dieser leicht zu programmieren ist und die Anforderungen weit übererfüllt. Der sitzt in der Mitte der Schaltung, einen Quarz benötigt er aufgrund eines internen RC-Oszillators nicht. Getaktet wird er mit 8 MHz. Um ihm herum sind die IC der Leitungstreiber ULN2803, des AD- und DA-Wandlers PCF8591P und des USB-zu-Seriell-Wandlers FT232RL angeordnet. Die Spannungsversorgung sichert ein 78S05 oder ein pinkompatibler Low-Drop-Regler (z.B. L4940V5). Es tut auch ein einfacher 7805 (ohne S). Wichtig ist, dass dieses Dreibein fünf Volt liefert und genug Strom für den speziellen Anwendungsfall, falls damit weitere Platinen versorgt werden. Im Spannungseingang sehen wir einen Gleichrichter. Er verzeiht das Verpolen der Spannungsversorgung von 12 V, kostet aber euch etwas Spannung, genau die, die an den Dioden jeweils abfällt.

Wer auf den Gleichrichter verzichten möchte, sollte ihn nicht einbauen und durch eine Diode in Reihe zum positiven Spannungsversorgungseingang ersetzen. Die Masseleitung wird mit einem Draht überbrückt. Das ist insbesondere anzuraten, wenn geplant ist, weitere Platinen an die Schaltung anzuschließen, deren Spannungsversorgung ein anderes Massepotenzial erwarten lässt. Dabei würden Ausgleichströme fließen, die zur Zerstörung von Bauteilen führen können. Zum besseren Verständnis: Keine Probleme gibt es, wenn diese Platine weitere mit 5-V-Spannung versorgt. Sollen jedoch andere Platinen angeschlossen werden, die ein eigenes Netzteil verwenden, ist sicherheitshalber der Gleichrichter durch eine Diode zu ersetzen. Dieser einfachere Verpolungsschutz wird in die +12-V-Leitung eingefügt.

Das USB-zu-Seriell-Interface – die Verbindung zwischen Mikroprozessor und USB – ist mit einem modernen IC FT232RL realisiert. Leider gibt es das Ding nur im SMD-Gehäuse. So kommen wir um etwas SMD-Löten nicht herum. Zum Einsatz kommt die einzig verfügbare Gehäusevariante, die mit einem üblichen Lötkolben zu bewerkstelligen ist. Als kleiner Ausgleich für die Mühen benötigt das IC nur wenige externe SMD-Bauelemente, die schnell auf die Platine gelötet sind. Zwei LED – je eine für Senden und Empfang – signalisieren Betrieb auf dem USB-Bus. 2-mA-LED sind ok, bei Änderung der Vorwiderstände sind bei veränderter Dimensionierung auch 20-mA-LED möglich. Weil die Schaltung eine eigene Spannunsgversorgung aufweist, wird das USB-IC im „self powered mode" betrieben, bezieht seine Spannung also nicht aus dem USB-Bus, belastet ihn nicht.

Über die Leitungen MISO, MOSI, SCK, RESET und GND ist der ISP-Stecker mit dem Controller verbunden. Der wird benötigt, falls der Prozessor in der Schaltung programmiert wird. Die Pinbelegung ist kompatibel zum in Atmel-Kreisen bekannten STK200. Wer einen programmierten Prozessor hat, erhältlich bei mir (siehe Impessum), kann sich die Bestückung des ISP-Verbinders sparen.

Test der analogen Eingänge mit einem Potentiometer : Nicht vergessen, auf der Kupferseite den Lötklecks zwischen AGND und GND zu setzen! Ungenutzte analoge Eingänge sollten mit einem Jumper auf Masse gelegt werden.

Fünf Ports des Controllers sind mit der Schaltung für die digitalen Eingänge verbunden. Jeder Eingang ist durch einen Spannungsteiler und einer Zenerdiode (4,7 V) vor Überspannung bis ungefähr 15 Volt geschützt. Bei 5 Volt (TTL-Pegel) im Eingang verringert der Spannungsteiler den Pegel auf etwa 3,4 Volt, genug, um als logisch high zu gelten. Ein invertierender Schmitt-Trigger formt ein steilflankiges TTL-gerechtes Rechtecksignal. Falls ein Anwender den Prozessor selbst programmieren möchte, ist die Invertierung der digitalen Eingänge berücksichtigen: Der 74HCT14 arbeitet invertierend, formt aus Low ein High und umgekehrt.

Acht digitalen Ausgänge – vom Prozessor werden sieben gesteuert – sind mit einem Leitungstreiber ULN2803 gepuffert. Jeder der acht Treiber leistet 500 mA, genug für eine LED und ein Relais oder eine ähnliche Last. Sieben Portpins führen vom Prozessor zum ULN2803, mehr waren nicht mehr frei. Der übrige, achte Eingang des ULN2803 ist auf der Platine über ein Lötpad zugänglich. Hier kann z.B. ein Lötstift eingesetzt und ein beliebiges TTL-Signal zugeführt werden.

Beim Basteln ist es sinnvoll, die Zustände der digitalen Ausgänge optisch zu kennzeichnen. Dazu dienen acht 3mm-LED vom Typ 2 mA. Die Vorwiderstände sind entsprechend berechnet. Wie beschrieben, leistet jeder digitale Ausgang max. 500 mA, die LED „kosten" daher nur wenig der wertvollen „Kraft". Wer auf LEDs verzichten will, bestückt sie und die Vorwiderstände nicht. Zwei digitale Ausgänge führen zu Relais.

Jedes Relais schaltet zweimal um, die Spannung darf 250V (AC/DC) betragen, maximal darf 60 W über die Relaiskontakte fließen. Auch wenn es das Relais kurzzeitig vertragen mag, Verbraucher, die am Lichtnetz hängen, sollten damit aus Gründen der Sicherheit auf keinen Fall geschaltet werden. Das erledigen Koppelrelais besser: Das auf der Platine befindliche Relais steuert ein Koppelrelais, das wiederum den Verbraucher ein- bzw. ausschaltet. Mit Stecken des Jumpers JP1 schalten alle digitalen Ausgänge auf high - ein Test der LED und des ULN2803.

Noch ein letzter Satz zu den Relais im Schaltbild: Die Ausgänge sind mit „NC" und „NO" gekennzeichnet. „NC" bedeutet „normally closed" (in Ruhestellung des Relais geschlossen) und „NO" heißt „normally open" (in Ruhestellung offen).

Die analoge Seite der Schaltung ist mit einem PCF8591 realisiert. Er beherbergt vier analoge Eingänge, die über einen integrierten Multiplexer auf den AD-Wandler führen. Der ist 8 Bit breit und liefert somit 256 Werte zwischen Null und 5 Volt in Schritten von 5 V / 256 = 0,0195 V. Als Schmankerl verfügt das IC über einen analogen Ausgang, ebenfalls ein 8-Bitter. Null bedeutet Null Volt, 255 gibt nahezu 5 Volt an analogen Ausgang aus. Mit ihm lässt sich z.B. ein Frequenzwechselrichter ansteuern, der wiederum einen Drehstrommotor regelt. Eine andere Anwendung des digitalen Ausgangs wäre die Bereitstellung einer Steuerspannung für einen VCO oder ähnliche Zwecke. Die Kommunikation zwischen Mikroprozessor und PCF8591 geschieht über die Leitungen SDA (Daten) und SCL (Takt). Sie bilden den serielle I2C-Bus. Die analoge Masse (AGND) kann von GND abweichen, ist über SJ2 auf der Leiterbahnseite der Platine mit einem Lötklecks jedoch schnell mit GND verbunden. Es wurde also kein Jumper vorgesehen, zwei Kupferflächen stehen sich auf der Platine nah gegenüber, die man bei Bedarf mit etwas Lötzinn verbinden kann. Der Anschluss OSC des PCF8591 wird nicht verwendet, ist aber über ein Lötpad zugänglich.

Aufbau

Die Bestückung der Platine beginnt mit dem FT232RL, umgeben von etwas „Hühnerfutter" (SMD-Kondensator und SMD-Widerstände) in dessen Nähe. Pin 1 des FT232RL zeigt Richtung der Vorwiderstände und der beiden LEDs (RxLED, TxLED). Danach kommen die die – bei einer einseitigen Platine – unvermeidlichen Drahtbrücken an die Reihe, gefolgt von den Widerständen, Kondensatoren und LEDs. DIL-IC werden gesockelt. Die Bestückung komplettiert sich mit dem Spannungsregler, der USB-Buchse (Typ B), den Relais und was übrig bleibt. Die IC zu diesem Zeitpunkt noch nicht in die Fassungen setzen. Beachten Sie bitte das zuvor zum Gleichrichter gesagte.

Inbetriebnahme

Prüfen Sie die Lötarbeit mit einer Lupe sorgfältig auf Lötspritzer, Kurzschlüsse und Unterbrechungen (Haarrisse) der Platine. Nach Anlegen einer Spannung von 12 Volt sollte am Ausgang des 78S05 5 Volt plusminus 100 mV zu messen sein. Prüfen Sie, ob diese Spannung an den entsprechenden Punkten der DIL-IC anliegt, z.B. am Prozessor Pin 20 und den anderen IC. Drücken Sie das ULN22803 in die Fassung und schließen Jumper 1, die LED sollten leuchten. Ist das nicht der Fall, bitte die Spannung prüfen und besonders die Einbaulage der LED. Ist der Prozessor im Norden zu sehen, zeigen die Anoden der 8 LED am ULN2803 nach Süden. Die beiden LED für Rx und Tx in der Nähe der USB-Buchse werden so eingesetzt, dass die Anode zum Platinenrand, also nach Norden zeigt.

Testen Sie das USB-Interface: Legen Sie Spannung an die Platine an, stecken ein USB-Kabel in die Buchse, Windows sollte nach wenigen Sekunden eine neue Hardware melden. Installieren Sie den zuvor geladenen USB-Treiber [1]. Windows erzeugt einen virtuellen ComPort, z.B. COM3 oder COM8. Die Zahl kann variieren. Welcher ComPort erzeugt wurde, ist Im Windows-Gerätemanager zu sehen (Start > Systemsteuerung > System > Gerätemanager > dort unter ComPorts nachsehen). Ist das soweit in Ordnung, ist es an der Zeit, den Prozessor einzusetzen und zu programmieren (falls nicht schon geschehen).

Windows Software

Ein erster Test ist mit einem Terminalprogramm möglich. Starten Sie z.B. das Hyperterm, das mit Windows geliefert wird oder ein Terminalprogramm ihrer Wahl. Wählen Sie den virtuellen COMPort und stellen folgende Parameter ein: 19200 Baud, 8 Datenbits, No Parity, 1 Startbit. Im Terminalfenster geben Sie anschließend z.B. „S1" ein, ohne Anführungszeichen, aber mit großem S. Das Relais 1 sollte klicken und eine LED leuchten. Mit „R1" klickt das Relais erneut, die LED erlischt. Geben Sie das Kommando „?", der Prozessor sollte antworten und die analogen Eingänge abfragen und z.B. so antworten: „AnalogIN0,0,3,129". Beachten Sie: Nicht benötigte analoge Eingänge sind mit einem Jumper kurzzuschließen, das Layout des Steckverbindern lässt dies bequem zu. Der geund hierfür ist einfach: Floaten die analogen Eingänge, liefert das PCF8591P Fantasiewerte.

Ein Programm, das evtl. hilfreich sein kann, ist Com_TxRx. Es dient zur Fehlersuche, indem es jede Sekunde den selben Befehl an den Prozessor schickt und die vom Prozessor empfangenen Antworten anzeigt. Damit kann die Funktion des USB-Schaltkreises und der Prozessor getestet werden. Das Intervall ist einstellbar. Nach dem Start ist zuerst die Baudrate auf 19200 Baud einzustellen und der ComPort zu wählen, den Com_TxRx daraufhin automatisch öffnet. Dann einen Befehl, z.B. „?" in die obere Zeile eingeben und einmal senden oder links das Senden im Intervall veranlassen.

„Steuerprogramm MSR Platine" ist das Steuerprogramm zur Platine. Mit einem Mausklick setzt der Anwender digitale Ausgänge oder bestimmt die Spannung am analogen Ausgang. Weiterhin informiert die Software jede Sekunde über Veränderungen an den digitalen und analogen Eingängen, dessen Werte es zyklisch abfragt und anzeigt.

„MSR_USB_Relegung" ist ein Programm, das eine einfache Regelung demonstriert. Abgefragt wird der analoge Eingang vier und mit einem Sollwert verglichen. Ist der Wert höher oder niedriger als der gewünschte Wert, wird einer der beiden digitalen Ausgänge 1 oder 2 kurzzeitig gesetzt. Da hier die Relais angeschlossen sind, kann hier z.B. ein Motor oder anderes geschaltet werden, um die Regelung zu steuern. Die Einschaltzeit der Relais ist über das Feld „Impulsdauer" justierbar. Schließlich liefert der analoge Ausgang eine Korrekturspannung, etwa für einen Frequenzwechselrichter oder anderes. Das Programm ist auch ohne Hardware nutzbar, wenn der Istwert manuell verändert wird. In den Feldern sind nur Zahlenwerte erlaubt. Nach den Start ist zuerst der ComPort zu wählen, der daraufhin geöffnet wird und die Regelung beginnt ihr Werk.

Die drei Windows-Programme wurden mit Delphi 7 geschrieben und sind als Sourcecode und als ausführbare EXE-Datei als Download erhältlich. Dasselbe gilt für die Firmware - die Software, die auf dem Prozessor gespeichert ist. Sie wurde mit Bascom-AVR geschrieben und kann mit der kostenlosen Bascom-AVR-Demo von mscelec.com beliebig bearbeitet und neu übersetzt werden.

Download von Dateien zu diesem Projekt

In der Datei msr_usb.zip sind die Original EAGLE-Dateien, Schaltbilder, Bestückungspläne, Bascom-Code (Basic), Firmware, die Windows-Programme und deren Delphi-Sourcen, Layouts und einiges mehr enthalten.

Und hier geht es zum Download.





Zur Hauptseite

Copyright Michael Wöste