Steuerung eines Gerätes über die seriele Schnittstelle



  • Hallo,

    Ich möchte an der Serielen Schnitstelle einen Motor anschließen (indirekt). Genauer gesagt soll an der Serrielen Schnittstelle an Pin x und Pin y eine Spannung angelegt werden. Diese Spannung soll den Strom für den Motor einschalten. Hat jemmand Ahnung wie man sowas realiesieren kann. Und womit ???

    Ich habe bisher in C++ geprogt, bräuchte also eine Libary oder etwas ähnliches??

    Kann mir jemmand helfen?



  • welches Betriebssystem?



  • Arghs, warum immer seriell ??? Die parallele Schnittstelle eignet sich viel besser für sowas.



  • Wohl unter Windows, ich habe mich nicht auf die seriele Schnitstelle festgelegt Parralel (wenns sein muss auch USB) sind auch möglich. Ich habe wie gesagt keine Ahnung wie und womit man sowas realisiert.



  • Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum WinAPI verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Kleines Code-Schnipsel für COM1:

    HANDLE hCom = CreateFile ("COM1", GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL);                    
    EscapeCommFunction(hCom, SETDTR); // Setzen DTR (Pin 4 bei 9pol., Pin 20 bei 25pol.)
    EscapeCommFunction(hCom, CLRDTR); // Rücksetzen DTR
    

    CloseHandle () nicht vergessen.

    Blackbird



  • Und was hat mir das ganze jetzt gebracht, ich bin jetzt genauso schlau wie vorher.

    Ich müsste jetzt wissen wie ich etwas mit dem serielen Port anstellen kann, initialiesirungen bringen mich nicht weiter.



  • Das von Blackbird war doch kein Code zur Initialisierung, sondern zeigt, wie du ein Pin setzen und wieder löschen kannst (also, wie du dort das Potential verändern kannst) - sollte doch eigentlich genau das sein, was du haben wolltest.

    Vor einiger Zeit gab es doch mal einen schön ausgearbeiteten Thread über Motoransteuereungen mit Schaltplan, etc. - scheint aber irgendwie verschwunden zu sein (oder ich bin nur zu blöd ihn zu finden 🙄 )



  • Wie soll man mit der Funktion EscapeCommFunction() bitte einen Motor steuern???
    Ich habe bei Elektronk auch nicht den vollen Durchblick,(ich entwickel nur die Software, den Rest baut jemmand anders). Bin also de facto zu blöd das mit dem Potential zu kapieren.

    Es wäre wirklich net wenn jemmand mir das nochmal erklären würden. Wie kann ich mehrere Pins setzen, wie kriege ich raus welches Pin das am Ausgang ist (Verkabelung), und was meint ihr mit Potenzial veränderung (Vielleicht kenne ichs unter einem anderem Namen?) 😉

    Danke im Voraus



  • flammenvogel schrieb:

    Wie soll man mit der Funktion EscapeCommFunction() bitte einen Motor steuern???

    Das hat Blackbird doch oben geschrieben?

    flammenvogel schrieb:

    [...]und was meint ihr mit Potenzial veränderung (Vielleicht kenne ichs unter einem anderem Namen?) 😉

    Das bedeutet, dass du die Spannung am Pin änderst, also z.B. von 0V auf 12V.
    Du solltest allerdings beachten, dass die serielle Schnittstelle AFAIK mit -12V und +12V arbeitet. Ich weiß nicht, wie du den Motor ansteuern willst, aber der Schalter sollte auf die negative Spannung vorbereitet sein.



  • Du kannst eben (wenn ich das bisher in den Diskussionen richtig verstanden hatte) entweder die Steuerleitungen (DTR, RTS)verwenden, die du mit einer speziellen Funktionen setzen kannst (EscapeCommFunction), oder du verwendest die Datenleitung(en?), die du mit WriteFile bearbeiten kannst 😉

    Hoffe, das stimmt auch - hab damit nämlich noch nie was gemacht 🤡



  • Na bravo, also muss ich dem Kram ausprobieren und nachmessen. Es kennt nicht jemmand noch zufällig ein Schaubild mit der Pinbelegung der serielen Schnitstelle ???





  • Das ist schon nicht schlecht, aber wie oben schon beschrieben brauche ich ein Schaubild, wo ich sehen kann welches Pin was ist. Auf der Seite sind nur Nummern für die Position, ich brauche am besten wirklich ein Bild.



  • hi,

    machs ueber die parallele, is viel einfacher. dafuer gibts auch genug matral wenn man mal googled.
    ich selbst bin auch durch google sehr weit gekommen und steuer meine eisenbahn mit dem pc (progs (server + client) und interface natuerlich selbst gebaut).

    so schwer is das nicht wenn man sich etwas mit beschaeftigt. vielleicht solltet ihr erstmal klaeren was der motor alles machen soll und wieviel steuerleitungen ihr braut. vielleicht braucht ihr noch informationen die vom motor zuruueck an den pc gehen sollen. dann solltet ihr euch mal ne idee machen wie das programm mit der elektronic kommuniziert, soll heissen, nich das einer das interface baut und danach wird versucht die software dazu anzupassen oder umgekehrt.

    gruss
    msp



  • Je mehr ich darüber nachdenke ist es vielleicht wirklich sinnvolller das über die Parrallele Schnittstelle zu machen. Ich bin absoluter Anfänger in solchen sachen.

    Kann jemmand mal ein paar Sachen zur parralenen Schnitstelle posten.

    Der Motor soll sich jeweils in beide Richtungen (links und rechts), und in 3-4 verschiedenen Geschwindigkeitstufen bewegen können.



  • @flammenvogel:
    Nagut, noch mal von vorn:

    Von 3-4 Geschwindigkeitsstufen und vorwärts/rückwärts war in Deinem Eingangspost nicht die Rede. Und Deine Frage bezog sich auf die Verwendung einer Lib oder nicht Lib - nicht auf die Hardware.

    @msp:
    Ob Parallel oder Seriell ist hier egal. In jedem Fall muß von einem "rein digital" arbeitenen Ausgang (+12V --> -12V bei seriell oder 0V --> +5V bei parallel) auf einen quasi analogen Ausgang umgesetzt werden.
    Die Leistungsverstärkung für den Motor betrachte ich als gelöst, so habe ich den Eingangspost von @flammenvogel verstanden.

    Die serielle wie auch die parallele Schnittstelle bieten diegitale Ausgänge und digitale Eingänge, die man per Software setzen und abfragen kann.
    Serial: 3 Ausgänge 4 Eingänge
    Parallel: 11 Ausgänge 5 Eingänge (bei EPP auch 13 Eingänge, weil bidirektional)
    Die serielle Schnittstelle kann zusätzlich noch eine Anzahl Bits (5 bis 😎 seriell ausgeben und auch empfangen. Die parallele nicht.

    Seriell hat den Vorzug der Kurzschlußsicherheit und der Überlastungsfestigkeit, die Parallele nicht (Basteln auf eigene Gefahr!)

    Eine Geschwindigkeitsregelung wird IMMER stufig erfolgen müssen. Bei 8 Bit sind es 256 Stufen bei 2 Bit sind es 4 Stufen. Eine "quasi analoge" Spannung erhält man mit gewichteten Widerständen oder einem R-2R-Netzwerk.
    Für die Vor/Rück-Steuerung ist dann ein weiteres Bit nötig. Seriell würde also reichen.

    @flammenvogel, Literatur und Schaltungen gibt es reichlich im Netz, sicher jedoch nicht passend für Deine Aufgabenstellung.
    Entweder du modifizierst eine Schaltung oder entwickelst eine eigene. Wenn dann noch Fragen sind - ich beantworte sie gerne.

    Blackbird



  • @Blackbird
    Das mit der Steuerung leuchtet mir ein. Wenn die Elektronik-Leute das mit dem Umsetzen von Bits hinkriegen, um sowas wie Stufensteuerung zu machen, habe ich keine Einwände.

    Wie kann ich das jetzt aber Programieren?

    (Beispiel Code wäre nicht schlecht) oder Link zu weiterführender Literatur. Ich habe selber schon bei Google geguckgt. Allerdings wähle ich meistens die Suchwörter so ******** das da nichts bei rauskommt.



  • Ohne Hardware, oder die Kenntnis, wo Du was anschließen willst, kannst Du (noch) nichts programmieren.
    Ein allgemeines Programmbeispiel ("Code-Schnipsel"), das die Ansteuerung eines Pins der seriellen Schnittstelle illustriert, habe ich schon gepostet. Parallel-Ausgabe erfolgt mit dem Interfacenamen "LPT1" statt "COM1" und mit WriteFile (...) statt EscapeCommFunction (...). Das gilt für W32-Systeme, für 16-Bit-Systeme kannst Du mit oup(), inp() (oder outport() und inport() ) arbeiten.
    Suche einfach in der Hilfe zu Deiner IDE nach den aufgeführten Funktionen und Du bekommst (fast) immer eine Code-Beispiel.

    Wie und wo Du dann diesen Code verwendest, hängt ganz von Deinem Programm ab. Ist es eine GUI, ein Consolen-Prog, willst Du mit Threads arbeiten, soll's dauernd im Hintergrund laufen, steuerst Du den Motor über Tasten, Mouse, Joystick an, ...?

    Blackbird



  • Tja das Problem ist das ich selber noch nicht weiß wo ich was anschließen will.

    Die Fähigkeiten die das Ding haben soll habe ich ja schon gepostet.

    Ich benutze Dev-Cpp, das Ding hat keine eigene Referenz zu C++ (IMHO). Ich werde woll einen Kanal zur steurung vorwärts rückwärts. Einen weiteren wenn für an/aus und noch einen für den Speed (ich weiß nicht wie ich das realiesieren soll, elektrotechnisch).

    Wegen der Hardware, wenn die seriele Schnittstelle einen Überspannungsschutz hat werde ich wohl die seriele nehmen. Solange die Anzahl der Leitungen das hergibt.
    Ist der Kram sonst vom Motherboard abhängig, das Prog soll auf mehreren PCs laufen.

    Der Motor wird wohl keine Signale zurück zum PC senden.

    Wäre trozdem für etwas Beispiel Code dankbar, am besten eine Funktion die den Motor anschaltet und den Kanal für vorwärts anschaltet. Speed Steuerung kann vorerst vernachlässigt werden. Die Pin belegung ist mir vorerst egal, so wie es euch grade in den Kram passt. <- Bin froh wenn ich überhaupt was kriege an Code.


Anmelden zum Antworten