Lichtschranke an Computer anschließen



  • Hallo!

    Ein Freund von mir und ich machen zusammen eine Facharbeit für das Abitur. Und zwar gibt es bei uns an der Schule eine Schiene mit 8 Lichtschranken. Durch diese fährt ein kleines Gefährt. Das ganze war an einen DOS Rechner angeschlossen. Dieser wertete die Dauer zwischen den ausgelösten Lichtschranken in Diagrammen aus, wie t/v, t/x, t/a etc.

    Nun sollen wir die Lichtschranke mit Windows bedienen.

    Ich dachte mir für jede Lichtschranke legt man eine Leitung auf einen PIN der parallelen Schnittstelle. Nun schaue ich am Computer einfach, wie lange eine bestimmte Lichtschranke ausgelöst ist und messe die Zeiten zwischen den Schranken. Dann kann ich ja alles ausrechnen, was ich benötige.

    Nur ist das realisierbar wie ich mir das vorstelle? Kann ich Spannung an LPT1 anlegen, und diese über den Computer abfragen?

    Wenn ein Gefährt von 1cm Breite durch die Lichtschranke fährt, und ich die Dauer der ausgelösten Lichtschranke messe, kann ich ja sehr genau die Momentangeschwindigkeit berechnen. Nur ist LPT1 schnell genug dafür?
    Kann ich das alles so realisieren oder würdet ihr einen anderen Weg vorschlagen?

    Gruß,
    Kevin



  • Mir ist noch nicht ganz klar, was das in Assembler zu suchen hat, aber:

    Wenn Du genaue Ergebnisse willst, ist ein DOS-Rechner sicher deutlich besser geeignet, als ein Windows-System, da "echtzeit-fähiger".

    Win wäre dann eher als 2.Rechner für graphische Auswertung/whatever zu gebrauchen, der die Mess-Info vom DOS-Rechner holt.

    Ansonsten weiß ich aber auch nicht, was man an einer Lichtschranke "bedienen" soll... 😕

    Nun sollen wir die Lichtschranke mit Windows bedienen.



  • Wie ist das system an den Dos rechner angebunden? auch über den Paralelport? ober eine einsteckkarte? oder über irgend eine inteligente Zwischenlogick die bereits das messen übernimmt, die am Com port hängt?

    Wie gesagt wurde Windows ist nicht gerade Echtzeitfähig. es kann dir durchaus passieren, dass dein programm für mehrere ms einfach schlafengelegt wird, weil windows meint er müsse was anderes machen. Auserdem wird unter windows dann warscheinlich noch ein spezieller treiber benötigt, damit ihr direckt auf den parlelport zugreifen könnt, weil windows sowas eigentlich verbietet. (sowas gibts glaub ich schon irgendwo im netz)

    gruss



  • Hm... IMHO kriegt man das ohne eine externe Logik zum Messen so oder so nicht sonderlich genau hin (KA, wie genau es sein muss), ich weiss nun auch nicht, wie der Parallelport angebunden ist und wie hoch da die Durchsatzraten sind. 22Khz sollten noch drin sein.
    Ansonsten koennte ueber einen speziellen Treiber das ganze via DMA auch unter Windows mit einer *relativ* simplen Schaltung funktionieren.
    Der geringste Aufwand wuerde sich aber tatsaechlich immer noch bei direkter Messung der Pin-Zustaende (zB. ueber die RTC gesteuert) unter DOS ergeben.



  • Ich meine nicht bedienen sondern Daten auslesen.

    Mein Physiklehrer meinte heute, wir müssen das Teil über USB an den Rechner anschließen.

    Nur wie interagiert man mit USB über ASM/C++?
    So einfach wie über COM1?

    Müssen also zur Zeitmessung wohl einen Minikontroller bauen, oder?

    Gruß,
    Kevin



  • Surkevin schrieb:

    Nur wie interagiert man mit USB über ASM/C++?
    So einfach wie über COM1?

    ROFL! Viel Spaß, Kollege! 🕶 😋



  • Surkevin schrieb:

    Mein Physiklehrer meinte heute, wir müssen das Teil über USB an den Rechner anschließen.

    Also ihr bastelt keine eigene Lichtschranke, sondern nehmt dieses fertige Teil?
    Ansonsten wuerde ich empfehlen: Lasst es gleich, bevor ihr euch blamiert.
    Ein echtes USB-Geraet zu entwickeln ist fuer eine Abi-Facharbeit IMHO eindeutig ein Stueckchen zu hoch gegriffen.



  • <IRONIE>
    Wie man USB windowsseitig einbindet? eigentlich kein grosses Problem. Windows sollte das geräht erkennen können, ist ja schlieslich USB. Dazu wird nur der passende Treiber benötigt, fals ein standart Treiber nicht ausreicht. ( HID währe da z.B. eine möglichkeit) Da windows jetzt das Geräht kennt, ist es nun relativ einfach, mit der entsprechenden API oder den Passenden Treiber mit der HW zu kommunizieren.

    Und die Messelektronik. Nun ja da müssen wir nur nen USB - Stack implementieren und die entsprechenden endpoints bedienen. Das einfachste ist, man besogt sich gleich nen fertigen Stack, der Kostet halt nur ein bischen. Dazu dann noch vileicht ein kleines Betriebsystem? Die Messchleife für die Lichtschranken wird dabei noch das schwierigste sein.
    </IRONIE>

    Ich frag mich nur wieso Physikleher so wenig ahnung von Technik haben. USB sollte er sich mal aus dem Kopf schlagen. Da gibts so vile stolpersteine sowohl im controler als auch bei windows, ... Ader wenn es umbeding sein muss verarscht in halt und nehmt nen usb rs232 converter auseinander. klebt das dann an eure elektronik mit RS232 interface. Von aussen hat die kiste dann ein USB anschluss. Wird aber von Windows als COM schnitstelle erkannt und kann von windows auch als solche angesprochen werden. Und der Lehrer hat sie USB - Kabel.

    gruss

    Termite



  • Hallo!

    Wow, ich wusste gar nicht, dass es so kompliziert ist, über USB zu kommunizieren. Könnt ihr mal ein paar schwere Probleme angeben, zu denen es wahrscheinlich kommen wird?

    Und dieser COM->USB Adapter wird von Windows als COMAdapter erkannt? Wie wird der dann angesprochen? Wohl nicht als COM1? (=

    Vielen Dank für den Tipp! Wird wohl das einzig sinnvolle sein?

    Welche leichten Kommunizierungsmöglichkeiten zwischen einfacher Elektronik und Computer gibt es noch ausser COM/LPT?

    Vielen Dank,
    Gruß,
    Kevin



  • Doch der wird als com1 angesprochen, wenn du das so willst.

    Start->Einstellungen->Systemsteuerung->System->Hardware->Gerät-Manager->Anschlüsse
    Dort dann den Anschnluss auswählen und unter Eingenschaften->Anschlusseinstellungen->Erweitert-> den gewünschten port einstellen. Und schon liegt com1 auf com256 wenn man will. 😃

    Progleme die auftreten können bei USB.
    1. Wie debugst du die USB Schnitstelle? PC - Seitig gibts ggf passende Treiber die sowas ermöglichen. Controlerseitig kann man sicher auch was in die software einfliesen lassen um zu sehen was da eigentlich raus und rein geht. Nur wie kontrollierst du was da wirklich über die Leitung geht? oder wie kontrollierst du ob dein Controller wirklich auf die Signale vom PC oder USB-Hub reagiert?

    2. Implementieren der USB - Schnitstelle / Protokolls auf dem Controller. Da ist ein Definiertes Protokoll vorgegeben, das eingehalten werden muss. Enumeration, Bulktransfer, ...

    Selbst MS hat es teilweise noch nicht geschaft USB in Ihrem OS sauber zu implementieren. Es gibt selbst da Fehler bei denen einem die Haare zu berge stehen. Das schnelle ziehen und stecken eines USB MassStorage devices kann zum absturtz des USB - Systems führen. Absturtz heist hier, das nur ein Reset das system wieder auf die Beine bringt. Und schnell heist bei denen bis zu 5 Sekunden 😮

    und andere alternativen als LPT und COM die einfach zu programieren sind gibt es keine, zumindest keine die ich kenne.

    ggf schaut euch mal den IO-Warrior an. ggf kann man damit einen schnitstellenadapter basteln. zum direckten auslesen taugt er zwar nicht.

    gruss Termite



  • Danke. Werden es dann wohl mit einem COM->USB Adapter machen. Wird wohl das einfachste sein. Den Mikrocontroller für die Zeitmessung zu programmieren wird ein Spaß *g*



  • auch übrigens befor ich es vergesse. Bitte kein krummen Baudraten verwenden, die kann so ein Adapter leider nicht. (bin mit sowas auch schon mal auf die Nase gefallen) Also schön bei den alt bekannten 9600 14400 19200 ... bleiben bzw nachschauen was die können. Zur not könnt ihr ja immer noch ne normale RS232 Leitung dazwischen hängen ( zum vergleich )



  • Surkevin schrieb:

    Welche leichten Kommunizierungsmöglichkeiten zwischen einfacher Elektronik und Computer gibt es noch ausser COM/LPT?

    ISA-Karten lassen sich auch sehr schoen per Hand basteln. Wollte ich der Vollstaendigkeit halber nur mal gesagt haben.

    Na dann noch viel Spass beim Gefrickel mit dem µ-Comtroller. 😃



  • falls ihr euch doch für etwas einfacheres wie etwa den parallelport entscheiden solltet, guckt ihr diese seite: http://www.lvr.com/parport.htm



  • Danke!
    Aber ich denke, wir werden den COM->USB Adapter verwenden.


Anmelden zum Antworten