DC-Motorsteuerung mit BJT

Versuch, die Drehzahl eines Gleichstrommotors zu steuern (MFA 918D100112/1 gefunden auf https://www.rapidonline.com/mfa-918d100112-1-gearbox-motor-100-1-4mm-shaft-12-24v-37- 1224 ) mit PWM-Pin auf Arduino verbunden mit der Basis eines npn BJT (2N3904 https://www.onsemi.com/pub/Collateral/2N3903-D.PDF ). Dies ist die vorgeschlagene Schaltung:Geben Sie hier die Bildbeschreibung ein

Ich bin mir nicht sicher, welche Widerstandswerte ich wählen soll. Wie ich richtig verstanden habe, wird R2 als schwacher Pulldown-Widerstand verwendet, wenn die Basis schwebt, und R1 wird verwendet, um sicherzustellen, dass ein Vbe 0,7 V für die Sättigung beträgt, wenn der Arduino-Pin 5 V liefert. R3 wird als Strombegrenzungswiderstand verwendet um den Transistor nicht zu braten.

Wie wähle ich die richtigen Werte für die Widerstände? Ich hoffe ich habe die Theorie richtig verstanden.

Haben Sie darüber nachgedacht, eine Flyback-Diode parallel zum Motor hinzuzufügen? Der Motor hat eine Spule und mit Impulsen verursacht er jedes Mal, wenn der Impuls ausgeht, riesige Spannungsspitzen am Transistorkollektor.
Wählen Sie R1 so, dass der Strom durch die Q1-Basis ausreicht, um ihn zu sättigen. R2 sollte wahrscheinlich im Bereich von 100 kOhm liegen. R3 kann 0 sein, es sei denn, Sie müssen einen gewissen Einschaltstrom vom Motor begrenzen. Auch Diode über dem Motor. Mit einem N-MOSFET anstelle von NPN für Q1 sind Sie höchstwahrscheinlich besser dran.

Antworten (3)

Einige Dinge müssen Sie lösen.

  1. Der von Ihnen verlinkte Motor läuft mit 12 bis 24 V. Nicht die 3 V, die Sie in Ihrer vorgeschlagenen Schaltung zeigen.
  2. Der NPN-Transistor 2N3904 ist für diese Anwendung ungeeignet. Sie sind typischerweise gut für bis zu ~200mA, während der Motor einen Laststrom von 300mA spezifiziert und dieser wird wachsen, wenn mehr Last auf den Motor gelegt wird.
  3. Ein Widerstand in Reihe mit dem Motor wird nicht wirklich funktionieren. Sie müssen die Motorwicklungen den Strom begrenzen lassen und dann einen Transistor (hoffentlich einen MOSFET) auswählen, der den Strom verarbeiten kann.
  4. Wenn Sie eine induktive Last mit aktivem Schalten ansteuern, benötigen Sie sicherlich eine Freilaufdiode über dem Motor, da sonst der induktive Kick zum Abschaltzeitpunkt Ihren Transistor tötet.
  5. Verwenden Sie einen MOSFET und Sie können die Stromlast am Arduino-Ausgang begrenzen.

Ok @elecstud ... der Ball liegt jetzt bei dir.

Hier ist die Schaltung, die diskutiert wird:

Es gibt eine Reihe von Problemen.

  1. R3 ist sinnlos und verschwendet nur Strom. Sie modulieren den Motorantrieb bereits mit PWM, daher kann ich nicht einmal erraten, was Ihrer Meinung nach R3 erreichen soll.
  2. Sie haben die Flyback-Catch-Diode über dem Motor vergessen. Ohne sie wird der Transistor in kurzer Zeit braten. Das Beste wäre ein Schottky in Rückwärtsrichtung über dem Motor. Der geringere Spannungsabfall eines Schottky ergibt einen etwas höheren Wirkungsgrad.
  3. R2 ist viel zu niedrig. Sein Hauptzweck besteht darin, sicherzustellen, dass der Transistor ausgeschaltet bleibt, wenn nichts den Eingang ansteuert. 100 kΩ können dies erreichen, ohne während des normalen Betriebs einen übermäßigen Strombedarf zu haben.
  4. R1 hängt davon ab, was der digitale Ausgang liefern kann. Abbildung: Der BE-Abfall von Q1 beträgt 700 mV. Wenn der digitale Ausgang im hohen Zustand auf 3,3 V geht, verbleiben 2,6 V an R1. Nehmen wir an, der digitale Ausgang kann 10 mA liefern, wenn er hoch ist. Jetzt verwenden Sie das Ohmsche Gesetz, um R1 zu finden. (2,6 V)/(10 mA) = 260 Ω. Alles andere als das zieht mehr Strom, als der digitale Ausgang in diesem Beispiel liefern kann.
  5. Sie müssen den maximalen Motorstrom und die Verstärkung des Transistors berücksichtigen, um zu sehen, ob diese Schaltung überhaupt funktioniert. Nehmen wir an, der Basisstrom beträgt 10 mA, wenn er eingeschaltet ist. Wenn der Transistor eine garantierte Mindestverstärkung von 50 hat, kann er 500 mA Motorstrom unterstützen. Das klingt klein, besonders für den Start, es sei denn, es handelt sich um einen sehr kleinen Motor.
  6. Ein BJT ist hier aufgrund möglicher Verstärkungsprobleme und seiner Sättigungsspannung ohnehin keine gute Wahl. Bei einer Versorgungsspannung von nur 3 V ist der Sättigungsabfall des Transistors um etwa 200 mV erheblich. Das ist genau dort ein Verlust von 7 %.

    Ich würde so etwas wie den IRLML2502 FET verwenden. Er sinkt auf unter 80 mΩ bei 3,3-V-Gate-Ansteuerung und 45 mΩ bei 5-V-Gate-Ansteuerung. Treiben Sie sein Gate direkt vom digitalen Ausgang. R1 ist dann nicht erforderlich, und R2 von 100 kΩ verhindert, dass das Gate aufschwimmt, stört aber nicht.

Scheint eine späte Frage zu sein. Was bringt Sie für Punkt 5 dazu, 10 mA als Beispiel für den Basisstrom zu nehmen? Wenn wir einen höheren Wert nehmen, sollte der Ic-Wert dann nicht höher sein?

Anstelle von BJT ist die Verwendung eines MOSFET effektiv, da der von Ihnen verwendete Transistor (2N3903) einen maximalen Kollektorstrom von 200 mA hat, während die Motorspezifikationen uns sagen, dass der Laststrom 300 mA beträgt.

Geben Sie hier die Bildbeschreibung ein

Wie Michael auch sagte, verwenden Sie eine Batterie mit 3 V, während der Motor 12-24 Volt benötigt, wie in der Spezifikation angegeben. Sie müssen also eine Batterie durch eine neue mit 12 V oder 24 V Kapazität ersetzen.

Um zu verhindern, dass Transistoren induktive Lasten braten, benötigen Sie entweder MOSFET oder BJT, eine Flyback-Diode, keinen Strombegrenzungswiderstand. Weil induktive Lasten Spannungsspitzen erzeugen, wenn Sie den Stromkreis ausschalten, und es wird Ihren Transistor braten. Sie müssen also einen Pfad für diese Spannungsspitzen bereitstellen, nachdem der Stromkreis abgeschaltet wurde. Deshalb wird hier eine Flyback-Diode verwendet.

Hier ist die empfohlene Schaltung für Ihre Anforderung

Geben Sie hier die Bildbeschreibung ein

BEARBEITEN: Wie Trevor in einem Kommentar erwähnte, wird Rgate Resistor (R2) in einer Schaltung hinzugefügt.

Dir fehlt der Serien-Gate-Widerstand ...