Forum: Mikrocontroller und Digitale Elektronik Autosampler ansteuern


von Dominik R. (drdontknow)


Lesenswert?

Hallo,

ich habe einen alten Autosampler, ein Arm, der sich in 2 Achsen bewegen 
kann und dann eine Kanüle in ein Probenröhrchen drückt. Das Ganze dient 
der Dosierung von Flüssigkeiten über der Zeit. Mit dem Versuchsaufbau 
kann man dann Verschiedenes aufzeichnen z. B. Durchbruchkurven von 
Aktivkohle, Ionenaustauschern oder Trennvorgänge in Chromatografiesäulen 
etc.

Das Gerät hat eine feste Schrittweite. Das heißt, es gibt zwei Eingänge 
Reset und Step. Wird Reset mit GND verbunden, fährt es in die 
Nullposition. Wird Step mit GND verbunden fährt eine Position weiter. 
Ist die letzte Position erreicht, fährt es ebenfalls in die 
Nullposition.

Laut Hersteller handlet es sich um ein TTL-Signal. Über den Eingängen 
und GND liegt eine Spannung von 4,9V an. Es reicht nur ein kurzer Impuls 
(ca. 0,1sec) um einen vollständigen Zyklus auszulösen. Im 
ausgeschalteten Zustand haben die Eingänge einen Widerstand von 1kOhm

Mein Ziel ist es das Gerät mit einem PC anzusteuern. Dazu habe ich 
bereits eine Schaltung ausprobiert, die Schaltung mit der das Lämpchen 
an und ausgeschaltet werden kann:
http://www.o-bizz.de/qbtuts/com-port/index.htm

Nur habe ich anstatt eines BD137 Transistors ein 2N2222A aus der 
Bastelkiste verwendet. Im Prinzip funktioniert es. Wenn ich die 
Steuerleitungen der RS232 Schnittstelle kurz (0,1sec) anschalte, wird 
entweder ein Step oder ein Reset ausgelöst.

Aber nach etwa 5 Minuten (jedoch unregelmäßig) fährt der Sampler zurück 
auf die Nullposition. Ist die Schaltung nicht mit Gerät verbunden bewegt 
es sich auch nicht.
Meine Vermutung ist, dass die Schaltung nicht so stabil ist und der 
Transistor schaltet ab und zu. Was bei einem Lämpchen ja nicht unbedingt 
auffällt.

Daher meine Frage ob jemand einen Vorschlag zur Optimierung der 
Schaltung hat.

von Krampmeier (Gast)


Lesenswert?

Ich würde empfehlen, einen Optokoppler dazwischen zuschalten (z.B. 
CNY-17). Damit wäre schonmal der Ground Loop unterbrochen. Der Koppler 
sollte nah am Eingang Deines Gerätes sein. Eine lange Leitung am 
empfindlichen Eingang wirkt als Antenne. Wenn es dann immer noch 
Störungen gibt, einen kleinen RC-Tiefpass an den Eingang hängen (z.B. 
100R / 100 nF) oder Ferritperlen auf die Leitungen ziehen (sowohl 
einzeln als auch gemeinsam).

von Lehrmann M. (ubimbo)


Lesenswert?

Dominik R. schrieb:
> Laut Hersteller handlet es sich um ein TTL-Signal.

Dann sollte man auch die 'Erwartungen' des TTL-Levels erreichen.
http://de.wikipedia.org/wiki/Transistor-Transistor-Logik
Das solltest du Messtechnisch verifizieren.
Wieviel kann deine Spannungsquelle leisten?

Dominik R. schrieb:
> Dazu habe ich
> bereits eine Schaltung ausprobiert, die Schaltung mit der das Lämpchen
> an und ausgeschaltet werden kann:
> http://www.o-bizz.de/qbtuts/com-port/index.htm

Wenn du die 12V Versorgungsspannung verwendest, dann besteht Gefahr, 
dass du deine Gerätschaft zerstörst.

Dominik R. schrieb:
> Nur habe ich anstatt eines BD137 Transistors ein 2N2222A aus der
> Bastelkiste verwendet.

das ist ok

Dominik R. schrieb:
> Wenn ich die
> Steuerleitungen der RS232 Schnittstelle kurz (0,1sec) anschalte, wird
> entweder ein Step oder ein Reset ausgelöst.

Ich empfehle eine Nutzung des LPT-Ports mit der von dir genannten 
Schaltung.

Rein intuitiv kommt mir der Basiswiderstand zwar ok aber evtl. ein 
bisschen zu groß vor. Versuch es mal mit 1k.

Dominik R. schrieb:
> Aber nach etwa 5 Minuten (jedoch unregelmäßig) fährt der Sampler zurück
> auf die Nullposition. Ist die Schaltung nicht mit Gerät verbunden bewegt
> es sich auch nicht.
> Meine Vermutung ist, dass die Schaltung nicht so stabil ist und der
> Transistor schaltet ab und zu. Was bei einem Lämpchen ja nicht unbedingt
> auffällt.

Ich glaube weniger, dass es mit der Schaltung, als mit der Ansteuerung 
der Schaltung zu tun hat. Der serielle Port kann da unter umständen 
etwas zickig sein. Ich empfehle daher einen Umstieg auf LPT-Port. In 
Q-Basic sieht das dann so aus:
[code]
OUT 888, 1   'an
OUT 888, 0   'aus
[code]
für Bit0, D0, Pin 2
http://j.techgsm.com/img/testers/lpt_signals.gif

Alternativ kommt natürlich in frage, dass beispielsweise unsauber 
gelötet wurde (darum alle Lötpunkte nochmals nachlöten und durchpiepsen 
mit Durchgangsprüfer), dass die Kabel zu lange sind, ...

Zum Schutze des Computers ist desweiteren eine galvanische Trennung in 
Form eines Optokopplers von Vorteil :
http://www.mikrocontroller.net/articles/Optokoppler
http://de.wikipedia.org/wiki/Galvanische_Trennung

Poste des weiteren bitte ein Bild deiner Schaltung + des Gesamtaufbaus

Noch sehr wichtig: Sind die Massen (Schnittstelle=PC mit der 
Transistor-Schaltung) verbunden ?! Das sollten sie dringendst sein. Wenn 
du einen Optokoppler einsetzt, dann entfällt das logischer Weise.

mfG

von Dominik R. (drdontknow)


Angehängte Dateien:

Lesenswert?

Danke für die Ratschläge,
ein zu langes Kabel kann wirklich das Problem sein. Ich habe das Kabel 
mit dem Gerät „geerbt“ und es ist etwa 2 m lang. Die Schaltung ist im 
Stecker der Schnittstelle versteckt. Eine extra Kiste wollte ich wegen 
Strom und Flüssigkeit vermeiden.
@Krampmeier:
Ein Optokoppler klingt gut. Habe ich leider nur gerade nicht zur Hand. 
Jedoch noch ein paar IR-LEDs und Fototransistoren.  Mit etwas 
Schrumpfschlauch lässt sich bestimmt etwas unkonventionelles basteln.
 Den Tiefpass (da musste ich erstmal googeln, ich bin nicht vom Fach) 
kann ich ausprobieren wenn der Optokoppler immer noch nicht hilft.

@Lehrmann:
Die 12 Volt klemme ich natürlich nicht an den Autosampler. Die Eingänge 
sind direkt an den  Kollektor der Transistoren geschaltet.
Auch ist die Masse von Schnittstelle und Gerät sind verbunden. (siehe 
Abbildung)
Die Schaltung habe ich auch schon durchgepiept und an allen Teilen dabei 
mal gewackelt. Ich habe erstmal an meinen nur dürftigen 
Elektronikfähigkeiten gezweifelt. Einen Wackler konnte ich nicht finden.

Ich bin Leider auf die RS232 Schnittstelle angewiesen, da ich sie über 
Visual Basic anspreche. Ich steh zwar auf das gute alte QBasic. Nur soll 
der Versuchsaufbau auch von anderen genutzt werden und die brauchen Maus 
und Windows um es bedienen zu können. Ich weiß nicht genau wie ich den 
LPT-Port über VB.net anspreche. Kann ich aber mal nach suchen.

Sollte die Schnittstelle wirklich „rumzicken“, hoffe ich das die 
Ansprechzeit meines Optokopplers Marke Eigenbau lang genug ist.
Wenn nicht versuche ich mit einem Tiefpass alle Signale unter 0,5 sec 
„abzuwürgen“. Ein Step Zyklus dauert 2-5 sec , ein Reset bis zu 10 sec.


Vielen Dank
 Gruß Dominik

von Lehrmann M. (ubimbo)


Lesenswert?

Dominik R. schrieb:
> Ich bin Leider auf die RS232 Schnittstelle angewiesen, da ich sie über
> Visual Basic anspreche.

Das dürfte das Problem sein - dir werden andere Treiber und 
Betriebssysteminterna mit reinfunken. In VB geht es übrigens genauso, 
einfach die Adresse des RS232 durch die des LPT ersetzten. Ich nehme an, 
du verwendest IO.dll oder ähnliche Konsorten.
http://www.vbarchiv.net/workshop/workshop_77-ansteuerung-des-lpt-port.html

von Dominik R. (drdontknow)


Angehängte Dateien:

Lesenswert?

Nein, ich verwende nicht die IO.dll. Vb.net hat eine fertige Komponente 
"SerialPort" Über die können die Steuerleitung geschaltet/ eingelesen 
werden. Für den LPT-Port gibt so etwas leider nicht.

Da ich auch zunächst vermutet Windows wackelt an den Pins herum. Habe 
auch schon einen alten 486er mit DOS 6.11 ausprobiert und es mit 
nostalgischem QBasic probiert. Das Problem blieb.

Ich habe mal eine Zeichnung vom Versuchsaufbau dran gehängt. Ein Foto 
wäre unschön da zur Zeit nur der Autosampler und ein Rechner da steht. 
Wir fangen mit dem Problemkind an.

Gruß Dominik

von Lehrmann M. (ubimbo)


Lesenswert?

Dominik R. schrieb:
> Ein Foto
> wäre unschön da zur Zeit nur der Autosampler und ein Rechner da steht.
> Wir fangen mit dem Problemkind an.

Da würde man dann die Verdrahtung usw sehen =) das wäre das Wichtige ...

Nächster Tipp: anderes Mainboard / Computer versuchen. Vielleicht hat 
der serielle Treiber was abbekommen.


Dominik R. schrieb:
> Nein, ich verwende nicht die IO.dll.

Das wäre VB5/6 gewesen.

Dominik R. schrieb:
> Vb.net hat eine fertige Komponente
> "SerialPort" Über die können die Steuerleitung geschaltet/ eingelesen
> werden.

Das ist richtig ... inwiefern das zuverlässig ist entzieht sich meiner 
Kenntniss.

Dominik R. schrieb:
> Für den LPT-Port gibt so etwas leider nicht.

Bis WinXP weise ich ausdrücklich nochmals auf Inpout32.dll hin. Da geht 
sehrwohl:
http://www.vbarchiv.net/workshop/workshop_77-ansteuerung-des-lpt-port.html
http://www.vb-magazin.de/forums/forums/t/4127.aspx
Solltest du das nicht auf .net portieren können (was Dank der dll nun 
wirklich nicht zu kompliziert ist) kann ich dir zum verhassten 
Microsoftsupport raten:
http://support.microsoft.com/kb/823179
da steht wirklich so gut wie alles mit Beispielen ausgeschmückt =)

Mach bitte trtozdem mal ein Foto von deiner Transistorschaltung ... und 
mach eine manuellen Versuch, ob nicht der Sampler irgendeinen Defekt 
hat.

von Dominik R. (drdontknow)


Angehängte Dateien:

Lesenswert?

Hallo,

ich bin inzwischen etwas weiter. Ich habe eine IR-LED und ein 
Fototransistor mit Schrumpfschlauch zu einem Optokoppler umfunktioniert. 
Wie die andere Schaltung funktioniert das erstmal. Der Autosampler steht 
jetzt bis morgen hoffentlich immer noch auf seiner Position. Das Kabel 
vom Sampler zur Schaltung habe ich von 2 m auf 20 cm gekürzt.

Leider brauche ich jetzt eine extra Kiste doch die Klebe ich an die 
Rückseite vom Sampler. Zudem ist auf der Platine noch genug Platz um 
einen Tiefpass zu integrieren und das geplante Magnetventil zu schalten.

Und Fotos habe ich angefügt damit meine Lötkünste begutachtet werden 
können. Die habe ich vor 20 Jahren in einem 
Schülersommerferienschnupperkurs bei Bosch erlangt.

Gestern habe ich den ganzen Tag über einen Eingang und einen Ausgang an 
der Schnittstelle verbunden gehabt und über die vb.net-Komponente alle 
Pin Änderungen aufgezeichnet. Es kamen nur keine Ungewollten.
Wenn jetzt nicht die Fehlsignallänge der Schnittstelle unterhalb der 
Nachweisgrenze liegt, dürfte der Fehler in meiner ursprünglichen 
Schaltung, dem Kabel oder sonst was liegen. Zudem trat der Fehler 
(ungewolltes Reseten) bereits an zwei Rechnern mit unterschiedlichem 
Betriebssystem und Programmiersprachen auf (DOS 6.11, Qbasic; WinXP, 
vb2010).

Die InpOut32.dll verursachte bei mir nur Fehlermeldungen. Aber mein 
Studium, was das angeht, war auch nicht sehr intensiv. Meine Erfahrung 
mit vb.net Komponenten sind sehr gut. USB-RS232 Konverter, USB-UART 
Konverter lassen sich bequem ansprechen. Wobei sich die USB-Geräte 
irgendwann abschalten.

Der LPT-Port hat mehr Ein- und Ausgänge. Ist für mich als Laie nicht 
ganz so abgesichert, den könnte ich und hätte ich auch schon gebraten.

Gruß Dominik

von Matthias Kernmeier (Gast)


Lesenswert?

Dominik R. schrieb:
> Und Fotos habe ich angefügt damit meine Lötkünste begutachtet werden
> können.

Was ist daran so besonders????
Lötkünste?

Wenn du Winzige SMD Bauformen schön lötest- dann sind das Lötkünste

von Arno Nyhm (Gast)


Lesenswert?

Schonmal etwas von Ironie/Sarkasmus gehört?
...zumal die Lötstellen gar nicht mal so schlecht sind - ansonsten immer 
schön an die eigenen Anfänge erinnern.

Mein eigentliches anliegen - Es könnte am Photo liegen, aber: Sind die 
Leiterbahnen zwischen Sender/Empfänger der selbstgebauten Optokoppler 
überhaupt aufgetrennt?!
Einen Pullup scheinen die Eingänge ja schon intern zu besitzen, daher 
würde ein Transistor/Optokoppler in der Minimalvariante durchaus 
ausreichen.

Etwas wundert mich aber ganz allgemein: Du schreibst von zwei Eingängen, 
Step und Reset - Mappt der Autosampler denn die X/Y-Koordinaten 
automatisch linear, dh. springt am Ende einer Reihe automatisch in die 
nächste Zeile?
Oder gibt es für X- als auch Y-Achse jeweils einen Step/Reset-Eingang?
Und weiter: Was ist mit der Z-Achse? Du schreibst von Probenröhrchen mit 
Septum - das will ja durchstochen werden, auch muss die Verweilzeit der 
Kanüle im Rörchen ja irgendwie gestellt werden, etc. - kurz: wie 
steuerst Du die Y-Achse des Samplers bzw. wie will sie gesteuert 
werden?!

von Dominik R. (drdontknow)


Lesenswert?

Hallo

Der Autosampler hat erfolgreich den 24 Stundentest mit der 
fotographierten Schaltung bestanden, d.h. 24h ohne ungewollten Reset. 
Nochmal Danke für die Tipps.

die Leiterbahnen sind getrennt. Ein Schnupperkurs beim Fotographen kann 
ich ja auch noch machen.

Die Z-Achse, Einstechtiefe, lässt sich mit einem Zählwerk von 10mm-59mm 
einstellen. Auf dem Foto nur noch als schwarze Kiste auf der rechten 
Seite des Samplers zu erkennen.

Der Autosampler fährt in einem festen Raster (26mm in X und Y) in der 
Draufsicht (Zeilen römisch, Spalten buchstabiert, Abfahrreihenfolge 
arabsich):

      A B C D E F G H I J K L
I     1 9
II    2 10
III   3 11
IV    4 12
V     5 13
VI    6 ....
VII   7
VIII  8

Bei jedem Step wird die Kanüle zuerst hochgefahren. Dann wird in X und Y 
verfahren, nach erreichen der nächsten Position wird die Kanüle wieder 
eingestochen und sie verweilt dort bis zum nächsten Step/Reset.

Gruß Dominik

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.