- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Motor an Serieller-schnittstelle

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Die serielle Schnittstelle hat nicht nur RxD (pin2) und TxD (pin3), sondern auch noch DSR (pin6), DCD (pin1), CTS (pin, RI(pin9) (alles Eingänge) und DTR (pin4), RTS (pin7) (alles Ausgänge). Masse ist Pin 5.
    Diese Leitungen dien(t)en der Flußsteuerung mit Modems, Terminals usw.

    Die kann man per Software (von 16bit-DOS bis WinXP!) permanet setzten und abfragen. Ohne irgendwelche Verrenkungen mit Treibern und so.
    Erforderlich ist nur ein MAX232, wenn man TTL-Pegel (+5V) haben will. Wer mit der Spannung -10V (eingeschaltet) und +10V (ausgeschaltet) bei einer Stromergiebigkeit von ca. 5mA zufrieden ist, kann direkt an die Pins ran.

    Unter C lautet der Befehl zum Setzten: EscapeCommFunktion ().

    Hier ein kleines Beispiel, wie man über COM 1 das Pin 7 zwei Sekunden einschaltet, 2 Sekunden ausschaltet und danach dauerhaft einschaltet. Nach weiteren 2 Sekunden beendet sich das Programm. Läuft unter allen Microsoft-OS.

    Code:
    #include <windows.h>
    
    int main (void)
    {
    	HANDLE hPort; 
    
    	hPort =  CreateFile ("COM1", 
    		GENERIC_WRITE,
    		0,
    		0,
    		OPEN_EXISTING,
    		0,
    		0);
    
    	EscapeCommFunction (hPort, SETRTS); // RTS setzten
    	Sleep (2000);
    	EscapeCommFunction (hPort, CLRRTS); // RTS rücksetzten
    	Sleep (2000);
    	EscapeCommFunction (hPort, SETRTS); // RTS setzten
    	Sleep (2000);
    
    	CloseHandle (hPort);
    
    	return (0);
    }
    Blackbird

  2. #12
    Gast
    @Blackbird: darum geht es doch hier, wenn man den Motor an RTS anschliesst kann man ihn in der Drehrichtung ändern, da +-10V Pegel, wenn man noch ein Relais an einen anderen Port anschliesst, so kann man dann auch den Motor an und ausschlaten. Kann es eigentlich sein, das dein Programm unter Windows läuft, da es eine Kommandozeilenapplikation ist? Denn unter Windows mit GUI dürfte es Probleme geben, oder? Ich kenne mich mit C nun nicht so gut aus.

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    @Gast,

    Die Polarität der Pins gegenüber Masse kann nicht zum Richtungssteuern verwendet werden.
    Auch ging es @Douglas um ein Pulsweiten-Steuerung. Die kann er mit zeitgesteuerten Ein- und Ausschalten EINER Leitung realisieren. Zur Richtungssteuerung würde ich einfach ein Relais mit 2 Wechseln an einem weiteren Pin nehmen (mit Verstärker natürlich).

    Die PWM-Methode über die Pins hat aber einen Nachteil: das Task-Scheduling von Windows verlängert ab un zu mal einen Puls.

    Das Programmbeispiel ist u.a. auch für die DOS32-Konsole unter allen Windows geeignet. Unter der GUI von Windows laufen die Befehle genauso. Nur ist die main-Funktion eine andere.

    Ob C, C++ Delphi oder Pascal for Windows: die Funktionen der seriellen Schnittstelle sind für ALLE Compiler und Programmiersprachen unter Windows zugänglich (man muß sie nur finden in der Windows-API).

    Unter W95 und W98 kann man sogar noch die "alten" DOS-16bit-Befehle inport() und outport() (bzw. inp() und outp() für Borland-Compiler) benutzen.


    Blackbird

  4. #14
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Ort
    Aachen
    Alter
    38
    Beiträge
    100
    warum kann ich denn die richtung nicht durch die polarität des pins gegenüber masse durchführen ? Ob ich nun + und Gnd oder Gnd und + habe, ist das gleiche wie + und gnd und - und gnd.

  5. #15
    Gast
    Die Polarität der Pins gegenüber Masse kann nicht zum Richtungssteuern verwendet werden.
    Vorwärts, Stop, Rückwärts sind 3 Zustände. Die Ausgänge der seriellen Schnittstelle (und auch der Parallelen) haben aber nur 2 Zustände.
    Um auf 3 Zustände zu kommen muß man also 2 Ausgänge mit je 2 Zuständen (2 ^ 2 = 4) verwenden.


    Blackbird

  6. #16
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    15.09.2004
    Ort
    Aachen
    Alter
    38
    Beiträge
    100
    Moment, es geht hier nur um das Richtungssteuern. Wobei man sicherlich durch einstellen eines bestimmten Taktverhältnisses, wie bei PWM auch den Motor dazubringen kann stehen zu bleiben, aber normalerweise benötigt man noch ein Relais, das ist richtig, aber nur zum ein und ausschalten. Habe ich vorher schonmal als Gast erwähnt...

  7. #17
    Gast
    Wir haben aneinander vorbeigeredet ... und meinten das gleiche

    PWM mit Serial direkt erzeugen geht zwar, ist aber nicht konstant (Task-Scheduling).

    Es gibt noch einen Trick, wie man exakte (stufige) Takte/Zeiten mit Windows unabhängig vom Task-Scheduling erzeugen kann. Etwas Hardware ist da aber notwendig.

    Werden jedoch nur einmalige Pulse erzeugt, so kann die Prozeß-Priorität für die Ausgabe kurzzeitig hoch gesetzt werden. Dann sind die Pulse auch konstant lang.

    Blackbird

  8. #18
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    09.06.2004
    Ort
    Aachen
    Beiträge
    2.674
    Dann könnte man doch den L293 D nehmen! Ein Ausgang zur Richtungssteuerung, und ein PWM-Ausgang (wenn das klappt). Wenn er steht ist es ja egal, in welche Richtung er fahren würde.

  9. #19
    Gast
    Ich glaube man kann auch durch das setzen von Registern PWM Signale konstant erzeugen, das geht dann über die Baudrate und ist nicht ganz einfach

  10. #20
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    07.07.2004
    Ort
    um Berlin
    Beiträge
    346
    @Gast,
    das geht nur unter 16-Bit-DOS! Und da auch nur mit dem "Trick" der Prozesspriorität. Setzen der Register ist jedoch ganz einfach:

    int _outp( unsigned short port, int databyte );

    COM1 hat meistens 0x3F8. Je nach UART sind dann bis zu 8 weitere Register (0x3F9, 0x3FA, ...) ansprechbar (schreiben und lesen), mit denen man so ziemlich alles einstellen kann (Baurdrate, Interrupt, Bytelänge, ...).

    Und nichts anderes darf dann laufen auf dem DOS-Rechner.

    Unter W95/W98 geht es schon nicht mehr, die Registerzugriffe sind zwar immer noch erlaubt, aber das Task-Scheduling läßt keine sichere Zeiteinstellung mehr zu.

    Blackbird

Seite 2 von 3 ErsteErste 123 LetzteLetzte

Benutzer, die dieses Thema gelesen haben: 0

Derzeit gibt es keine Benutzer zum Anzeigen.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test