Einen sehr kleinen Gleichstrommotor mit PWM steuern?


8

Ich habe einen sehr kleinen Gleichstrommotor (von einem Walkman), ich möchte die Geschwindigkeit von einem Mikrocontroller aus steuern. Dazu möchte ich einen MOSFET in Reihe schalten und ein PWM-Signal an sein Gate anlegen, um die Drehzahl des Motors zu ändern.

Ich habe den L & R des Motors = 4,7 mH, 11,5 Ohm (Tao 0,41 ms) gemessen.

Wenn ich ein paar Experimente mit dem Motor unter Verwendung eines Tischnetzteils durchführe, kann ich sehen, dass er von einer Spannung von 0,2 V bis zu etwa 0,4 V gut läuft - das ist der gesamte Bereich, den ich benötige.

Die Stromversorgung, die ich dafür habe, ist auf 1,8 V eingestellt (wird für den digitalen Teil der Schaltung verwendet), was die Verwendung von Standard-MOSFETs etwas schwierig macht, da ich die für die Gatesättigung erforderliche Spannung nicht liefern kann. Ich kaufte ein paar P-Kanal - MOSFETs wie diese .

Obwohl ich gedacht hätte, dass dieses Setup funktionieren würde (Vcc -> Motor -> FET -> GND), kann ich keine gute Auflösung über die Steuerung erzielen und ich bekomme nicht so viel Drehmoment vom Motor wie ich verwendet habe zu bekommen, wenn von einer Gleichstromversorgung betrieben.

Ich bin mir nicht sicher, welche Frequenz Ich sollte verwenden und bin mir nicht sicher, welche anderen Parameter überprüft werden müssen, damit dies wie beabsichtigt funktioniert. Jede Hilfe hierzu wird geschätzt.

* UPDATE * Nach Olins Antwort habe ich die von ihm vorgeschlagene Schaltung gebaut. Ich habe einen 2N3904-Transistor mit einem 180-Ohm-Widerstand parallel zu einer 4,7-nF-Kappe verwendet. Angeschlossen ist die Kollektorspannung, wenn mit PWM-Code 100 (von 256) gearbeitet wird. Vcc ist 1,8V.

Geben Sie hier die Bildbeschreibung ein


1
Warum nicht stattdessen einen BJT verwenden? Es ist ein kleiner Motor, und Sie erhalten leicht ein 0,6-V-Signal, um ihn einzuschalten.
JIm Dearden

@JImDearden Ich habe 2N5088 ausprobiert, aber der Spannungsabfall am Transistor war so groß, dass fast keine Spannung an den Motor angelegt wurde, sodass er nur summte und sich nicht bewegte.
user34920

1
Versuchen Sie es mit einem Schalttransistor wie dem 2N3904 mit einem 1k-Basiswiderstand. Außerdem benötigen Sie eine Flyback-Diode am Motor mit so viel Induktivität und Überspannung. 1 kHz sollte für die PWM in Ordnung sein.
Jon

Antworten:


8

Die einfachste Lösung wäre die Verwendung eines Low-Side-NPN-Schalters:

Sie sagen, der Gleichstromwiderstand des Motors beträgt 11,5 Ω, sodass der maximale Strom, den er ziehen kann, 1,8 V / 11,5 Ω = 160 mA beträgt. Tatsächlich nimmt der Transistor einige 100 mV auf, wodurch der maximal mögliche Strom gesenkt wird. Dies ist also ein sicheres Maximum, auf das ausgelegt werden kann. Stellen Sie fest, dass der Transistor für eine Verstärkung von mindestens 50 geeignet ist, sodass wir mindestens 160 mA / 50 = 3,2 mA Basisstrom benötigen. 5 mA sind dann ein gutes Ziel, um sicherzustellen, dass der Transistor im eingeschalteten Zustand fest gesättigt ist. Stellen Sie den BE-Abfall auf 700 mV ein, sodass im eingeschalteten Zustand 1,1 V über dem Widerstand verbleiben. 1,1 V / 5 mA = 220 Ω.

C1 dient zum Beschleunigen des Ein- und Ausschaltens. (220 Ω) (4,7 nF) = 1 us, was die Zeitkonstante C1-R1 ist.

Die PWM-Frequenz sollte schnell genug sein, damit sich der Strom durch den Motor in jeder Ein- und Ausschaltphase nur wenig ändert. Die durch die PWM verursachte Welligkeit ist eine Wechselspannung, die der durchschnittlichen Gleichspannung überlagert ist. Nur die Gleichspannung bewegt den Motor. Die Wechselstromkomponente verursacht kein Drehmoment, nur Wärme. Sie möchten sie daher im Verhältnis zum Gleichstrom niedrig halten. Im Allgemeinen lassen Sie Motoren etwas über der menschlichen Hörgrenze laufen, was normalerweise auch schnell genug ist, um die AC-Komponente klein zu halten. Bei 25 kHz beträgt die PWM-Periode beispielsweise 40 µs, was Ihnen eine ausreichende Auflösung von jedem vernünftigen PWM-Peripheriegerät in einem Mikrocontroller bieten sollte.

Als Antwort auf die Ablaufverfolgung des Kollektorbereichs hinzugefügt

Die Grundform der Wellenform sieht gut aus, daher scheint der Transistor richtig zu schalten und die Spannung wird richtig an den Motor angelegt.

Die Spitzen beim Ausschalten sind besorgniserregend. Möglicherweise handelt es sich um Oszilloskopartefakte. Wenn Ihre Oszilloskopspur jedoch korrekt ist, funktioniert die Diode nicht oder ist nicht richtig angeschlossen. Die Spitzen sollten nicht mehr als ein Volt oder so über der Versorgung liegen.

D1 verhindert nicht nur, dass der Transistor frittiert, sondern bewahrt auch einen Großteil des Motorstroms während der Ausschaltzeit. Der erste ist notwendig und der zweite erhöht die Effizienz.

Hinzugefügt 2

Bei genauerer Betrachtung Ihrer Oszilloskopspur sehe ich, dass die Kollektorspannung bei ausgeschaltetem Motor 2,48 V beträgt. Sie sagen, die Versorgung beträgt 1,8 V, sodass die Ausschaltspannung 680 mV über der Versorgung liegt. Das bedeutet haben Sie nicht beim Aufbau der Schaltung wie ich sagte. Sie haben offensichtlich eine gewöhnliche Siliziumdiode verwendet, wahrscheinlich eine langsame wie eine 1N400x. Die langsame Einschaltzeit der Diode erklärt die Spannungsspitze und reduziert die Gesamtantriebspegel bei einem bestimmten PWM-Arbeitszyklus ein wenig. Es wird auch eine Zeit lang ein Durchschießen verursachen, wenn der Transistor wieder eingeschaltet wird, da die Diode noch leitet. Eine Schottky-Diode weist im Kontext dieser Schaltung einen geringeren Vorwärtsabfall und eine effektive sofortige Rückwärtswiederherstellung auf.

Das System sollte im Allgemeinen immer noch funktionieren, aber versuchen Sie es mit einer Schottky-Diode, wie ich sie angegeben habe.


Ich habe diese Schaltung gerade zusammengebaut. PWM-Frequenz ist ungefähr 31KHz. Ich habe einen 2N3904-Transistor mit einem 180-Ohm-Widerstand an der Basis und einer 4,7-nF-Beschleunigungskappe verwendet. Ich habe eine 8-Bit-PWM-Auflösung von meiner MCU. Bei ungefähr Code 100 (von 256) kann ich sehen, dass der Motor anfängt, sich zu drehen. Irgendwelche Gedanken darüber, wie man die Auflösung erhöht? Vielleicht etwas DC-Offset zur Basis hinzufügen? Ich möchte auch darauf hinweisen, dass die Motoren mit Code 100 laufen, jedoch etwas schneller als die min. Geschwindigkeit, die ich brauche. Ich kann den PWM-Code nicht senken, da er stoppt.
user34920

danke Olin für die nette Antwort. Würden Sie die Wahl von C1 näher erläutern? Sie sprechen von der Zeitkonstante. Ich verstehe, dass sie ungefähr 1/10 der Schaltperiode betragen sollte, aber ich würde erwarten, dass die Größe C1 allein für die Ein- / Ausschaltzeit von Bedeutung ist, da sie eine "sofortige" Ladung liefert.
Vladimir Cravero

1
@vlad: Beim Einschalten zusätzliche Gebühren in die Basis zu werfen und beim Ausschalten einige der freien Träger auszusaugen, sind beides kurzfristige Ereignisse. Sie dauern wahrscheinlich nur einige 100 ns nach jeder Kante. Sie möchten die Zeitkonstante etwas länger, aber auch kurz genug, damit die Kappe vor der nächsten Flanke "zurückgesetzt" wird. 1 uns schien ein guter Kompromiss zu sein, aber viele Faktoren können eine Rolle spielen, die schwer vorherzusagen sind. Ich würde mit den angezeigten Werten beginnen, dann die Wellenformen betrachten und bei Bedarf anpassen.
Olin Lathrop

@user: Sehen Sie sich die Kollektorwellenform an. Vielleicht laufen die Dinge nicht wie beabsichtigt. Was macht der Motor mit einer variierenden Gleichspannung? Gibt es eine Spannung, wo sie beginnt, aber dann nicht zu schnell geht?
Olin Lathrop

@OlinLathrop Ich habe ein Foto der Kollektorwellenform hinzugefügt (diese Messung wird über die CE des Transistors durchgeführt). Bei Verwendung einer Gleichstromversorgung beginnt sich der Motor mit 0,2 V zu drehen, und diese Drehzahl ist diejenige, die ich mindestens haben möchte (ca. 50-60 U / min).
user34920

0

Nehmen wir an, Sie haben grundlegende Erfahrungen mit Mikrocontrollern und können eine Schaltung aufbauen.

Der einfachste Weg, den Motor anzutreiben, ist die Verwendung einer H-Brücke, eines Stromerfassungswiderstands und einer PWM. Grundsätzlich erlaubt die H-Brücke die Verwendung von 3,3 V oder 5 V, was auch immer am bequemsten ist.

Abhängig von der Anwendung können Sie sogar die aktuelle Steuerung überspringen. Wahrscheinlich verursachen Sie auch dann keinen Schaden, wenn der Motor blockiert.

Benötigen Sie übrigens eine Geschwindigkeits- oder Positionskontrolle?

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.