Inhaltsverzeichnis:

Seriell gesteuerter Motor mit variabler Geschwindigkeit - Gunook
Seriell gesteuerter Motor mit variabler Geschwindigkeit - Gunook

Video: Seriell gesteuerter Motor mit variabler Geschwindigkeit - Gunook

Video: Seriell gesteuerter Motor mit variabler Geschwindigkeit - Gunook
Video: L298N | how to control dc motor with Arduino | Motor speed and direction control 2024, Juli
Anonim
Seriell gesteuerter Motor mit variabler Drehzahl
Seriell gesteuerter Motor mit variabler Drehzahl

Steuern Sie die Geschwindigkeit eines kleinen Gleichstrommotors mit nichts als der seriellen Schnittstelle Ihres Computers, einem einzelnen MOSFET und etwas trivialer Software. (Der MOSFET und der serielle Port bilden die "Geschwindigkeitssteuerung"; Sie benötigen immer noch einen Motor und eine geeignete Stromversorgung für diesen Motor; während der serielle Port die Spannung zum Ein- und Ausschalten eines Mosfets liefern kann, kann er t liefern den Strom, der von einem typischen Motor benötigt wird.)

Schritt 1: Sehen Sie sich die Schaltung an

Schau dir die Schaltung an
Schau dir die Schaltung an

Wir werden die Pulsweitenmodulation mit einem generischen N-Kanal-Leistungs-MOSFET durchführen, der mit dem Sendedaten-Pin vom RS232-Port des Computers verbunden ist. Wenn der serielle Port im Leerlauf ist, befindet sich der Pin im Zustand "1", der, wenn er in RS232 übersetzt wird, etwa -12 V beträgt (je nach Treiber kann er näher an -9 V oder -5 V liegen) und Der Transistor wird ganz ausgeschaltet sein. Wenn wir "0"-Bits am seriellen Port übertragen, geht der RS232-Pin auf +12V oder so, was ausreicht, um die meisten Mosfets ziemlich gut einzuschalten.

Wenn wir viele "0" bis hintereinander senden, ist der Motor fast vollständig EIN und der Motor läuft schnell. Wenn wir hauptsächlich "1"-Bits übertragen, läuft der Motor langsamer.

Schritt 2: Verdrahten Sie es

Verdrahten Sie es
Verdrahten Sie es

Da es nur eine einzige Komponente und nur wenige Verbindungen gibt, können Sie einfach Drähte "freeform" hinzufügen.

MOSFETs sind statisch empfindlich, seien Sie also etwas vorsichtig, aber nur sehr wenig ist kritisch.

Schritt 3: Einrichten von Dateien mit PWM-Werten

Einrichten von Dateien mit PWM-Werten
Einrichten von Dateien mit PWM-Werten

Eine Möglichkeit, den Motor zu steuern, ohne irgendeine Software schreiben zu müssen, besteht darin, einige Dateien mit entsprechenden Bytes (mit mehr oder weniger 0 Bits) vorzubereiten und sie einfach auf den COM-Port zu kopieren, an dem Sie den Motor angeschlossen haben. Ich habe mehrere Dateien vorbereitet (mit Emacs, aber was auch immer für Sie funktioniert, ist in Ordnung):

  • 0.pwm:: enthält 5000 NULL-Zeichen (Steuerungs-Leerzeichen auf den meisten Tastaturen)[br] Dies ist ungefähr so nahe der "vollen Geschwindigkeit", wie wir mit dieser Technik erreichen können.
  • 1.pwm:: enthält 5000 Control-A-Zeichen (ascii 01) (ein "1"-Bit pro Zeichen)
  • 3.pwm:: enthält 5000 Control-C-Zeichen (ascii 03) (zwei "1" Bits pro Zeichen)
  • 7.pwm:: enthält 5000 Control-G-Zeichen (ascii 07) (drei "1" Bits pro Zeichen)
  • 15.pwm:: enthält 5000 Steuer-O-Zeichen (ascii 15) (vier "1" Bits pro Zeichen)
  • 31.pwm:: enthält 5000 control-_ Zeichen (ascii 31) (fünf "1" Bits pro Zeichen)
  • 63.pwm:: enthält 5000 "?" Zeichen (ascii 63) (sechs "1" Bits pro Zeichen)
  • 127.pwm:: enthält 5000 DEL-Zeichen (ascii 127) (sieben "1"-Bits pro Zeichen)

(Jetzt, wo ich Bilder gezeichnet habe, werden Sie feststellen, dass die tatsächlichen Bitmuster nicht ideal sind. Da rs232 seriell zuerst LSB überträgt, möchten wir wirklich Nullen anstelle von Einsen verschieben. Eine Übung für den Schüler!)

Schritt 4: Spielen Sie mit DOS: Konfigurieren Sie Ihren COM-Port und kopieren Sie die Dateien

Spielen Sie mit DOS: Konfigurieren Sie Ihren COM-Port und kopieren Sie die Dateien
Spielen Sie mit DOS: Konfigurieren Sie Ihren COM-Port und kopieren Sie die Dateien

9600 bps ist eine übliche Bitrate. Es passt gut zu "ungefähr" einem Byte pro Millisekunde, also entspricht es in diesem Fall einer PWM-Frequenz von 1000 Hz, die meiner Meinung nach für kleinere Motoren in Ordnung sein sollte. Sie können mit verschiedenen Bitraten experimentieren, um zu sehen, wie die Dinge funktionieren, was einer der Vorteile dieser Methode ist. Erstellen Sie ein DOS-Fenster (oder "Eingabeaufforderung") (vorausgesetzt, Sie verwenden ein Windows-Betriebssystem) und konfigurieren Sie Ihren Com-Port wie:mode com1: 9600, n, 7, 1"Das sagt dem Kommunikationsport, dass er mit 9600bps laufen und 7 Bits in jedem Zeichen senden soll (um mit unseren 7 verschiedenen Bitlängen übereinzustimmen.) Das "n" bedeutet KEINE Parität, Dies sind also die einzigen Datenbits. Die "1" bedeutet, dass es ein "Stopp"-Bit geben wird, das uns daran hindert, den Motor vollständig einzuschalten (na ja.) Jetzt können Sie den Motor mit Befehlen einschalten like:copy 0.pwm com1:Da wir 5000 Zeichen mit etwa 1 pro Millisekunde senden, sollte sich der Motor für etwa 5 Sekunden mit nahezu voller Geschwindigkeit einschalten. Wenn Sie weniger als 5 Sekunden benötigen, erstellen Sie eine kürzere Datei, können Sie tun: 127.pwm com1 kopieren: um den Motor mit der niedrigstmöglichen Geschwindigkeit zu betreiben. Mit dem Setup, das ich hatte, würde sich der Motor überhaupt nicht mit etwas "langsamer" als 31.pwm drehen, aber YMMV (ich glaube k Ich hatte einen 12-V-Motor, der mit 5 V-Batterien betrieben wurde.) Mit dem COPY-Befehl können Sie Dateien aneinanderreihen. Wenn Sie also möchten, dass Ihr Motor schneller und dann wieder langsamer wird, können Sie Folgendes tun: 31.pwm+15 kopieren. pwm+7.pwm+0.pwm+7.pwm+15.pwm+31.pwm com1:

Schritt 5: Steuern Sie den Motor aus einem Programm

Steuern Sie den Motor über ein Programm
Steuern Sie den Motor über ein Programm

Wenn Sie ein Programm schreiben, können Sie COM1: wahrscheinlich als Datei öffnen und einfach so schreiben, als ob es eine andere Datei wäre. Es scheint sehr praktisch zu sein, die Zeiträume, in denen der Motor eingeschaltet ist, durch die Ausgabe einer bestimmten Anzahl von Zeichen zu bestimmen. Vergessen Sie nicht, dass das System sehr wahrscheinlich die Zeichen, die Sie an die serielle Schnittstelle senden, zwischenspeichert. Nur weil ein WRITE-Aufruf zurückkehrt, bedeutet dies nicht, dass der Motor fertig ist, was Sie ihm gesagt haben. Da wir mit den Com-Port-Signalen nichts "Ausgefallenes" machen, sollten Sie nicht die geheimnisvollen Optionen untersuchen müssen, die es möglicherweise unterstützt. (Wenn Sie jedoch herausfinden können, wie Sie eine BREAK-Sequenz an den COM-Port senden, ist dies ein kontinuierlicher "0"-Zustand und treibt den Motor VOLLSTÄNDIG an; mehr als das Senden von fortlaufenden 0-Zeichen.)

Wenn Ihre Programmiersprache keine Ausgabe an COM1: zulässt, können Sie den Motor möglicherweise immer noch steuern, indem Sie DOS "aufrufen", um Kopierbefehle auszuführen. (OK. Ich habe Visual Basic Express 2005 von Microsoft heruntergeladen (das kostenlos ist) und es geschafft, eine horizontale Bildlaufleiste an die Motordrehzahl zu binden, die über die serielle Schnittstelle gesteuert wird. zip angehängt. Es hat wahrscheinlich mehr als es braucht, um das Programm zu duplizieren auf Ihrem System, aber ich konnte nicht genau herausfinden, welche Bits benötigt wurden. Das Programm ist sowohl vereinfacht als auch schwieriger zu verstehen (sorry), da es Multithreading ist. Ein Thread gibt nur an die serielle Schnittstelle aus, und die Hauptthread liest die Bildlaufleiste und aktualisiert die vom seriellen Thread verwendeten Informationen.)

Schritt 6: Experimentieren Sie

Experiment!
Experiment!

Wenn die Dinge grundsätzlich funktionieren, bietet dies viel Spielraum zum Experimentieren.

  • Repariere meine Bitmuster!
  • Spielt die Bitrate eine große Rolle?
  • Müssen Sie die Breite der "Ein"- und "Aus"-Impulse steuern oder reicht es einfach aus, ihr Verhältnis zu steuern?
  • Wenn Sie nur das Verhältnis steuern müssen, können Sie Mehrzeichenfolgen mit höheren Bitraten in Betracht ziehen, um mehr Geschwindigkeitsstufen zu erzielen. Die Ausgabe von 0 gefolgt von 127 wäre ungefähr halb eingeschaltet.
  • Dies sollte auch zum Dimmen von Taschenlampenbirnen funktionieren.

Empfohlen: