serielle Schnittstelle und Elekrtonik Frage
-
Hiho,
ich wollte ein Relai über die serielle Schnittstelle ansprechen. Ich habe ein paar Stunden bei google gesucht, aber nichts gefunden. Kennt einer ein Tutorial, bei dem einem erklärt wird, wie man 2 LEDs zum blinken bringt, die an den Com port angeschlossen sind (evtl über winApi, bitte C kein C++ :))
Ich habe folgende intressante Seite gefunden: http://www.elexs.de/platine.htm
Sich solch eine Platine selber zu bauen sollte kein Problem sein, nur weiss ich nicht, wie ich nun einzelne Pins ansteuern kann.Im Endeffekt will ich nur ein Relai aktivieren, welches durch einen kurzen Stromstoss einen kleinen Motor aktiviert (sollte es im Elektro Laden geben :)), und bei einem erneuten Stromstoss diesen wieder deaktiviert (mit 2 Drähten und einer Batterie ist das ja auch kein Problem). Nur will ich das am besten über ein C Programm steuern.
Evtl will ich das noch erweitern, inde sich ein Poti mitdreht (mit dem Motor), wodurch ich dann immer errechnen kann, wie weit der Motor gedreht ist (also soll noch ein Wert wieder in die serielle Schnitstelle zurück kommen).Falls es so etwas (sammt Lötanleitung) für eine USB Schnitstelle gibt würde ich mich auch freuen.
Kann mit jemand helfen?
Thx,
iuiz
-
Erster Tip such hier in den Foren noch mal danach, ich meine diese Frage ist in den letzten 6 Wochen schon mal gestellt worden.
Signale die man an der COM-Schnittstelle setzen kann sind RTS und DTR.
Die unten aufgeführten herausgerupften Codezeilen sollen dir helfen die entsprechen Stellen in der Hilfe zu finden.
Es sind WINAPI FunktionenDCB Dcb; HANDLE hCom1; int fSuccess; char *pcComPort={"COM1"}; // Herstellen der Verbindung zum Comport hCom1 = CreateFile( pcComPort, GENERIC_READ | GENERIC_WRITE, 0, // comm devices must be opened w/exclusive-access NULL, // no security attributes OPEN_EXISTING, // comm devices must use OPEN_EXISTING 0, // not overlapped I/O NULL // hTemplate must be NULL for comm devices ); //Lesen des Device Control Blocks fSuccess = GetCommState(hCom1,&Dcb); //Setzen der gewünschten Werte für RTS und DTS Dcb.fRtsControl=RTS_CONTROL_ENABLE; Dcb.fRtsControl=RTS_CONTROL_DISABLE; Dcb.fDtrControl=DTR_CONTROL_ENABLE; Dcb.fDtrControl=DTR_CONTROL_DISABLE; // Schreiben des DCB fSuccess = SetCommState(hCom1, &Dcb); // Trennen der Verbindung zum Comport Achtung, das Trennen bewirkt das Abschalten aller Signale am Comport CloseHandle(hCom1);
Wenn du in einer Schleife das Folgende aufrufst sollten die beiden an RTS und DTR angschlossenen LED´s blinken
Dcb.fRtsControl=RTS_CONTROL_ENABLE; Dcb.fDtrControl=DTR_CONTROL_DISABLE; fSuccess = SetCommState(hCom1, &Dcb); Dcb.fRtsControl=RTS_CONTROL_DISABLE; Dcb.fDtrControl=DTR_CONTROL_ENABLE; fSuccess = SetCommState(hCom1, &Dcb); Dcb.fRtsControl=RTS_CONTROL_ENABLE; Dcb.fRtsControl=RTS_CONTROL_ENABLE; fSuccess = SetCommState(hCom1, &Dcb); Dcb.fDtrControl=DTR_CONTROL_DISABLE; Dcb.fRtsControl=RTS_CONTROL_DISABLE; fSuccess = SetCommState(hCom1, &Dcb);
-
Motor mit Getriebe und Poti dran - das ist ein Servo aus dem Modellbaubereich. Gibt es ab 8,-Euro. Rückmelden der angefahrenen Stellung ist dann auch nicht nötig. Gesteuert wird es mit einem pos. Impuls von (meistens) 1,5 ms +/-0,5ms, der sich alle (ca.) 20 ms wiederholt.
Oder Du kauft ein Servo ohne Elektronik nur mit Motor, Getriebe und Poti (bei Conrad) und mußt Dich dann alleine um Ansteuerung und Rückmeldung kümmern. Externe Stromverversorgung ist in jedem Fall nötig. Das von Dir geforderte Relais ist ein "Stromstoß"-Relais oder ein bistabiles Relais, kein normales.
Wenn Du selber löten kannst, dann suche mal auf der HP bei Burkhard Kainka nach dem Windows-Universalinterface. Es kann mit VB (alles dabei) und C (die Header-Datei dazu ist auch irgenwo im Netz) angesteuert werden.Blackbird
-
@iuiz
Siehe Konsolen FAQ für Ansteuerung der COM-Schnittstellen. Da gibts einmal eine Klasse für C++ (Ströme lenken) und Funktionen für C (DOS-Compiler ist dabei unbedingt notwendig).
-
Danke!
Ich hab mir gerade das in der Konsolen FAQ angesehen (http://www.c-plusplus.net/forum/viewtopic.php?t=39312) und will mal sehen, das ich daraus was machen kann. Morgen geh ich dann erstmal in den elektro laden, ausser ich finde noch ne alte Maus, von der ich den Stecker klauen kann :).
Mal hoffen, dass das was wird.
Thx,
iuiz
-
Hallo,
eine kleine Anmerkung zum Thema aus elektrotechnischer Sicht. Die serielle Schnittstelle, besonders die Steuerleitungen RTS und DTS sind eigentlich dazu gedacht einen Pegel bereitzustellen. Eine Ansteuerung von LED´s klappt damit immer, da hier je nach Vorwiderstand nur 30-50 mA Strom fließen. Wenn Du da ein Relais dranklemmst solltest Du darauf achten, dass das Relais nur einen minimalen Stromverbruch an der Spule hat. Ansonsten macht sich der UART Baustein der seriellen von dannen
Probier das lieber mit einer externen Schnittstellenkarte im PC aus. Kostet im Bastelladen umme Ecke so 7 - 9 Euros.
Gruss Uwe